{"version":3,"sources":["webpack:///./node_modules/ste-core/dist/events/Subscription.js","webpack:///./node_modules/ste-core/dist/index.js","webpack:///./node_modules/vue-element-resize-detector/dist/vue-element-resize-detector.common.js","webpack:///./node_modules/ste-core/dist/management/EventManagement.js","webpack:///./node_modules/ste-simple-events/dist/SimpleEventList.js","webpack:///./node_modules/ste-core/dist/dispatching/EventListBase.js","webpack:///./src/components/widgets/CiiWidget/ChartView.vue?2903","webpack:///./node_modules/ste-core/dist/events/PromiseSubscription.js","webpack:///./node_modules/ste-core/dist/dispatching/SubscriptionChangeEventHandler.js","webpack:///./node_modules/ste-core/dist/dispatching/PromiseDispatcherBase.js","webpack:///./node_modules/highcharts/modules/stock.js","webpack:///./node_modules/ste-simple-events/dist/SimpleEventHandlingBase.js","webpack:///./src/components/DashboardControlDialog.vue?fbfd","webpack:///./node_modules/highcharts-vue/dist/highcharts-vue.min.js","webpack:///./src/components/widgets/VesselDataWidget/index.vue?3c7f","webpack:///./src/components/widgets/VesselDataWidget/VesselDataGraph.vue?346f","webpack:///./node_modules/ste-core/dist/dispatching/DispatcherWrapper.js","webpack:///./node_modules/ste-core/dist/dispatching/DispatchError.js","webpack:///./src/components/widgets/FoulingOverviewWidget/index.vue?cd9e","webpack:///./src/components/widgets/NotificationWidget/index.vue?d059","webpack:///./src/views/Dashboard.vue?837e","webpack:///./src/components/DashboardControlDialog.vue?6a32","webpack:///./src/components/widgets/WelcomeWidget.vue?52d7","webpack:///./src/components/widgets/WelcomeWidget.vue","webpack:///./src/components/widgets/WelcomeWidget.vue?32ec","webpack:///./src/components/widgets/WelcomeWidget.vue?4f7e","webpack:///./src/components/DashboardControlDialog.vue","webpack:///./src/components/DashboardControlDialog.vue?0d7f","webpack:///./src/components/DashboardControlDialog.vue?86f9","webpack:///./src/components/widgets/MapWidget.vue?4106","webpack:///./src/mixins/itemMixin.js","webpack:///./src/components/widgets/MapWidget.vue","webpack:///./src/components/widgets/MapWidget.vue?03e1","webpack:///./src/components/widgets/MapWidget.vue?9815","webpack:///./src/components/3rdPartyComponents/VueResponsiveDash/Dashboard.vue?d111","webpack:///./src/components/3rdPartyComponents/VueResponsiveDash/models/Dashboard.model.ts","webpack:///src/components/3rdPartyComponents/VueResponsiveDash/Dashboard.vue","webpack:///./src/components/3rdPartyComponents/VueResponsiveDash/Dashboard.vue?0491","webpack:///./src/components/3rdPartyComponents/VueResponsiveDash/Dashboard.vue","webpack:///./src/components/3rdPartyComponents/VueResponsiveDash/DashLayout.vue?645a","webpack:///./src/components/3rdPartyComponents/VueResponsiveDash/models/DashItem.model.ts","webpack:///./src/components/3rdPartyComponents/VueResponsiveDash/models/Layout.model.ts","webpack:///./src/components/3rdPartyComponents/VueResponsiveDash/DashItem.vue?a97e","webpack:///./node_modules/@interactjs/utils/domObjects.js","webpack:///./node_modules/@interactjs/utils/isWindow.js","webpack:///./node_modules/@interactjs/utils/window.js","webpack:///./node_modules/@interactjs/utils/is.js","webpack:///./node_modules/@interactjs/utils/browser.js","webpack:///./node_modules/@interactjs/utils/arr.js","webpack:///./node_modules/@interactjs/utils/clone.js","webpack:///./node_modules/@interactjs/utils/extend.js","webpack:///./node_modules/@interactjs/utils/raf.js","webpack:///./node_modules/@interactjs/utils/normalizeListeners.js","webpack:///./node_modules/@interactjs/core/Eventable.js","webpack:///./node_modules/@interactjs/utils/domUtils.js","webpack:///./node_modules/@interactjs/utils/rect.js","webpack:///./node_modules/@interactjs/utils/getOriginXY.js","webpack:///./node_modules/@interactjs/utils/hypot.js","webpack:///./node_modules/@interactjs/core/BaseEvent.js","webpack:///./node_modules/@interactjs/core/options.js","webpack:///./node_modules/@interactjs/core/InteractEvent.js","webpack:///./node_modules/@interactjs/utils/misc.js","webpack:///./node_modules/@interactjs/utils/pointerUtils.js","webpack:///./node_modules/@interactjs/core/isNonNativeEvent.js","webpack:///./node_modules/@interactjs/core/InteractStatic.js","webpack:///./node_modules/@interactjs/core/Interactable.js","webpack:///./node_modules/@interactjs/core/InteractableSet.js","webpack:///./node_modules/@interactjs/utils/pointerExtend.js","webpack:///./node_modules/@interactjs/core/events.js","webpack:///./node_modules/@interactjs/core/PointerInfo.js","webpack:///./node_modules/@interactjs/core/Interaction.js","webpack:///./node_modules/@interactjs/core/interactablePreventDefault.js","webpack:///./node_modules/@interactjs/core/interactionFinder.js","webpack:///./node_modules/@interactjs/core/interactions.js","webpack:///./node_modules/@interactjs/core/scope.js","webpack:///./node_modules/@interactjs/interact/index.js","webpack:///./node_modules/@interactjs/actions/drag/plugin.js","webpack:///./node_modules/@interactjs/actions/drop/DropEvent.js","webpack:///./node_modules/@interactjs/actions/drop/plugin.js","webpack:///./node_modules/@interactjs/actions/gesture/plugin.js","webpack:///./node_modules/@interactjs/actions/resize/plugin.js","webpack:///./node_modules/@interactjs/actions/plugin.js","webpack:///./node_modules/@interactjs/auto-start/InteractableMethods.js","webpack:///./node_modules/@interactjs/actions/index.js","webpack:///./node_modules/@interactjs/auto-start/base.js","webpack:///./node_modules/@interactjs/auto-start/dragAxis.js","webpack:///./node_modules/@interactjs/auto-start/hold.js","webpack:///./node_modules/@interactjs/auto-start/plugin.js","webpack:///./node_modules/@interactjs/auto-start/index.js","webpack:///src/components/3rdPartyComponents/VueResponsiveDash/DashItem.vue","webpack:///./src/components/3rdPartyComponents/VueResponsiveDash/DashItem.vue?9968","webpack:///./src/components/3rdPartyComponents/VueResponsiveDash/DashItem.vue?e4a3","webpack:///src/components/3rdPartyComponents/VueResponsiveDash/DashLayout.vue","webpack:///./src/components/3rdPartyComponents/VueResponsiveDash/DashLayout.vue?393d","webpack:///./src/components/3rdPartyComponents/VueResponsiveDash/DashLayout.vue?cdf9","webpack:///./src/components/widgets/VesselDataWidget/index.vue?ddfc","webpack:///./src/components/widgets/WidgetEditDialog.vue?ebb7","webpack:///./src/components/widgets/WidgetEditDialog.vue","webpack:///./src/components/widgets/WidgetEditDialog.vue?7820","webpack:///./src/components/widgets/WidgetEditDialog.vue?4de5","webpack:///./src/components/widgets/LogVariablesColumn.vue?4a59","webpack:///./src/components/widgets/LogVariablesColumn.vue","webpack:///./src/components/widgets/LogVariablesColumn.vue?2663","webpack:///./src/components/widgets/LogVariablesColumn.vue?d218","webpack:///./src/components/widgets/VesselDataWidget/VesselDataTable.vue?7d35","webpack:///./src/components/widgets/VesselDataWidget/VDataTableCalculationMethodHeaders.ts","webpack:///./src/components/widgets/VesselDataWidget/VesselDataTable.vue","webpack:///./src/components/widgets/VesselDataWidget/VesselDataTable.vue?d971","webpack:///./src/components/widgets/VesselDataWidget/VesselDataTable.vue?a563","webpack:///./src/components/widgets/VesselDataWidget/VesselDataGraph.vue?76f9","webpack:///./src/components/widgets/VesselDataWidget/VesselDataGraph.vue","webpack:///./src/components/widgets/VesselDataWidget/VesselDataGraph.vue?b8b9","webpack:///./src/components/widgets/VesselDataWidget/VesselDataGraph.vue?b951","webpack:///./src/components/widgets/VesselDataWidget/index.vue","webpack:///./src/components/widgets/VesselDataWidget/index.vue?0b06","webpack:///./src/components/widgets/VesselDataWidget/index.vue?77a0","webpack:///./src/components/widgets/PerformanceStatus/index.vue?ea07","webpack:///./src/components/widgets/PerformanceStatus/VTableData.ts","webpack:///./src/components/widgets/PerformanceStatus/StatusTooltip.vue?df42","webpack:///./src/components/widgets/PerformanceStatus/StatusTooltip.vue","webpack:///./src/components/widgets/PerformanceStatus/StatusTooltip.vue?91d4","webpack:///./src/components/widgets/PerformanceStatus/StatusTooltip.vue?6ed3","webpack:///./src/components/widgets/PerformanceStatus/index.vue","webpack:///./src/components/widgets/PerformanceStatus/index.vue?74ae","webpack:///./src/components/widgets/PerformanceStatus/index.vue?71ce","webpack:///./src/components/widgets/NotificationWidget/index.vue?d9b2","webpack:///./src/components/widgets/NotificationWidget/VTableData.ts","webpack:///./src/components/widgets/NotificationWidget/WarningTooltip.vue?0b66","webpack:///./src/components/widgets/NotificationWidget/WarningTooltip.vue","webpack:///./src/components/widgets/NotificationWidget/WarningTooltip.vue?17bd","webpack:///./src/components/widgets/NotificationWidget/WarningTooltip.vue?be3c","webpack:///./src/components/widgets/NotificationWidget/CriticalTooltip.vue?9a76","webpack:///./src/components/widgets/NotificationWidget/CriticalTooltip.vue","webpack:///./src/components/widgets/NotificationWidget/CriticalTooltip.vue?8406","webpack:///./src/components/widgets/NotificationWidget/CriticalTooltip.vue?2318","webpack:///./src/components/widgets/NotificationWidget/index.vue","webpack:///./src/components/widgets/NotificationWidget/index.vue?a49b","webpack:///./src/components/widgets/NotificationWidget/index.vue?f153","webpack:///./src/components/widgets/FoulingOverviewWidget/index.vue?7447","webpack:///./src/components/widgets/FoulingOverviewWidget/VTableData.ts","webpack:///./src/components/widgets/FoulingOverviewWidget/TableRecord.vue?00f8","webpack:///./src/components/widgets/FoulingOverviewWidget/TableRecord.vue","webpack:///./src/components/widgets/FoulingOverviewWidget/TableRecord.vue?78b1","webpack:///./src/components/widgets/FoulingOverviewWidget/TableRecord.vue?b56b","webpack:///./src/components/widgets/FoulingOverviewWidget/index.vue","webpack:///./src/components/widgets/FoulingOverviewWidget/index.vue?509d","webpack:///./src/components/widgets/FoulingOverviewWidget/index.vue?cd91","webpack:///./src/components/widgets/CiiWidget/index.vue?992d","webpack:///./src/components/widgets/CiiWidget/TableView.vue?32f5","webpack:///./src/components/widgets/CiiWidget/VTableData.ts","webpack:///./src/components/widgets/CiiWidget/TableView.vue","webpack:///./src/components/widgets/CiiWidget/TableView.vue?d503","webpack:///./src/components/widgets/CiiWidget/TableView.vue?5921","webpack:///./src/components/widgets/CiiWidget/ChartView.vue?9af2","webpack:///./src/components/widgets/CiiWidget/ChartView.vue","webpack:///./src/components/widgets/CiiWidget/ChartView.vue?f5dd","webpack:///./src/components/widgets/CiiWidget/ChartView.vue?d1a2","webpack:///./src/components/widgets/CiiWidget/index.vue","webpack:///./src/components/widgets/CiiWidget/index.vue?4208","webpack:///./src/components/widgets/CiiWidget/index.vue?bb63","webpack:///./src/views/Dashboard.vue","webpack:///./src/views/Dashboard.vue?c38e","webpack:///../../../src/components/VBanner/VBanner.ts","webpack:///../../../src/components/VSpeedDial/VSpeedDial.ts","webpack:///./src/views/Dashboard.vue?7d3f","webpack:///./src/components/LoadingTextWave.vue?b4c3","webpack:///./src/components/widgets/PerformanceStatus/index.vue?089f","webpack:///./src/components/widgets/MapWidget.vue?fe93","webpack:///./src/components/widgets/LogVariablesColumn.vue?f8a2","webpack:///./src/components/widgets/WidgetEditDialog.vue?d3b5","webpack:///./node_modules/ste-core/dist/dispatching/DispatcherBase.js","webpack:///./src/components/3rdPartyComponents/VueResponsiveDash/DashItem.vue?e2f3","webpack:///./src/components/3rdPartyComponents/VueResponsiveDash/DashLayout.vue?e4a8","webpack:///./src/assets/images/dashboardillustration.jpg","webpack:///./src/components/widgets/CiiWidget/index.vue?2a45","webpack:///./node_modules/ste-core/dist/handling/HandlingBase.js","webpack:///./src/views/Dashboard.vue?ad6b","webpack:///./src/components/LoadingTextWave.vue?a635","webpack:///src/components/LoadingTextWave.vue","webpack:///./src/components/LoadingTextWave.vue?640c","webpack:///./src/components/LoadingTextWave.vue?fc23","webpack:///./node_modules/ste-simple-events/dist/NonUniformSimpleEventList.js","webpack:///./node_modules/ste-simple-events/dist/SimpleEventDispatcher.js","webpack:///./src/components/widgets/WelcomeWidget.vue?4530","webpack:///./node_modules/ste-simple-events/dist/index.js","webpack:///./src/components/DashboardControlDialog.vue?c906"],"names":["Object","defineProperty","exports","value","Subscription","handler","isOnce","this","isExecuted","executeAsync","scope","args","fn","setTimeout","apply","SubscriptionChangeEventDispatcher","HandlingBase","PromiseDispatcherBase","PromiseSubscription","DispatchError","EventManagement","EventListBase","DispatcherWrapper","DispatcherBase","DispatcherBase_1","enumerable","get","DispatchError_1","DispatcherWrapper_1","EventListBase_1","EventManagement_1","HandlingBase_1","PromiseDispatcherBase_1","PromiseSubscription_1","Subscription_1","SubscriptionChangeEventHandler_1","module","modules","installedModules","__webpack_require__","moduleId","i","l","call","m","c","d","name","getter","o","r","Symbol","toStringTag","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","browserDetector","options","reporter","batchProcessor","getState","stateHandler","Error","addListener","element","listener","listenerProxy","isIE","proxy","attachEvent","getObject","contentDocument","defaultView","addEventListener","buildCssTextString","rules","seperator","important","join","trim","makeDetectable","callback","debug","injectObject","OBJECT_STYLE","positionCheckPerformed","style","window","getComputedStyle","width","offsetWidth","height","offsetHeight","mutateDom","alterPositionStyles","position","setProperty","removeRelativeStyles","getNumericalValue","replace","warn","onObjectLoad","getDocument","state","checkForObjectDocumentTimeoutId","clearTimeout","objectElement","objectDocument","document","createElement","cssText","tabIndex","type","setAttribute","onload","data","appendChild","startSize","add","uninstall","detachEvent","removeChild","detector","version","isAnyIeVersion","agent","navigator","userAgent","toLowerCase","indexOf","ieVersion","undef","v","div","all","getElementsByTagName","innerHTML","isLegacyOpera","opera","idCount","generate","idHandler","eventListeners","getListeners","id","undefined","push","removeListener","listeners","len","length","splice","removeAllListeners","idGenerator","getId","setId","set","utils","getOption","defaultValue","isDetectable","markAsDetectable","isBusy","busy","markBusy","quiet","noop","log","error","console","attachFunction","f","arguments","forEach","collection","result","Batch","batch","size","topLevel","bottomLevel","level","process","fns","getSize","asyncProcess","autoProcess","asyncFrameHandler","isProcessing","addFunction","processBatchAsync","processBatch","processingBatch","forceProcessBatch","localAsyncProcess","cancelFrame","requestFrame","cancel","raf","force","hasState","scrollbarSizes","getScrollbarSizes","styleId","detectionContainerClass","initDocument","targetDocument","injectScrollStyle","child","container","body","insertBefore","firstChild","widthSize","clientWidth","heightSize","clientHeight","containerClass","injectStyle","method","head","styleElement","getElementById","containerAnimationClass","containerAnimationActiveClass","addAnimationClass","className","addEvent","el","cb","removeEvent","removeEventListener","getExpandElement","childNodes","getShrinkElement","Array","slice","unshift","isDetached","isInDocument","ownerDocument","contains","isUnrendered","getStyle","elementStyle","top","right","bottom","left","widthCSS","heightCSS","storeStartSize","initListeners","storeStyle","storeCurrentSize","lastWidth","lastHeight","getExpandChildElement","getWidthOffset","getHeightOffset","getExpandWidth","getExpandHeight","getShrinkWidth","getShrinkHeight","positionScrollbars","expand","shrink","expandWidth","expandHeight","shrinkWidth","shrinkHeight","scrollLeft","scrollTop","injectContainerElement","onAnimationStart","onRendered","injectScrollElements","getLeftTopBottomRightCssText","rootContainer","scrollbarWidth","scrollbarHeight","containerContainerStyle","containerStyle","concat","expandStyle","shrinkStyle","expandChildStyle","shrinkChildStyle","containerContainer","expandChild","shrinkChild","dir","onExpandScroll","onShrinkScroll","onExpand","onShrink","registerListenersAndPositionElements","updateChildSizes","updateDetectorElements","done","sizeChanged","areElementsInjected","w","h","notifyListenersIfNeeded","isFirstNotify","lastNotifiedWidth","lastNotifiedHeight","handleRender","handleScroll","finalizeDomMutation","ready","install","prop","initState","cleanState","elementUtilsMaker","listenerHandlerMaker","idGeneratorMaker","idHandlerMaker","reporterMaker","batchProcessorMaker","objectStrategyMaker","scrollStrategyMaker","isCollection","obj","isArray","toArray","array","isElement","nodeType","defaultIdHandler","globalOptions","callOnAdd","detectionStrategy","eventListenerHandler","elementUtils","desiredStrategy","importantCssRules","strategyOptions","onReadyCallbacks","listenTo","elements","onResizeCallback","elementsReady","onReadyCallback","currentScript","scripts","err","res","exec","stack","src","readyState","__webpack_exports__","elementResizeDetector","match","elementResizeDetectorMaker","erd","strategy","binding","vnode","componentInstance","$emit","detail","elm","dispatchEvent","CustomEvent","unbind","Vue","directive","unsub","propagationStopped","SimpleEventList","ste_core_1","SimpleEventDispatcher_1","super","SimpleEventDispatcher","_events","event","createDispatcher","__1","count","_dispatch","sub","_subscriptions","ev","nargs","ps","execute","cleanup","a","L","Highcharts","y","_modules","D","correctFloat","E","css","x","defined","b","pick","timeUnits","z","G","e","g","H","A","Q","tickPixelInterval","O","chart","time","B","k","u","Number","MAX_VALUE","ordinal","breaks","getTimeTicks","F","shift","info","unitRange","hour","dateFormat","q","higherRanks","segmentStarts","translate","sort","Math","floor","abs","I","positions","C","old","min","transA","minPixelPadding","extendedOrdinalPositions","getExtendedPositions","getIndexOfPoint","ceil","Additions","findIndexOf","K","isXAxis","overscroll","max","dataMax","mouseIsDown","isInternal","eventArgs","trigger","userMin","horiz","isDirty","isOrdinal","adaptToUpdatedData","N","beforeSetTickPositions","tickInterval","postProcessTickInterval","xAxis","originalEvent","chartX","panning","series","mouseDownX","getExtremes","hoverPoints","closestPointRange","overscrollPointsRange","translationSlope","slope","index2val","val2lin","setState","fixedRange","navigatorAxis","toFixedRange","dataMin","setExtremes","cursor","test","preventDefault","M","index","offset","compose","lin2val","ordinal2lin","J","axis","ignoreHiddenSeries","visible","takeOrdinalPosition","processedXData","keepOrdinalPadding","forceOrdinal","getOverscrollPositions","groupIntervalFactor","constructor","currentDataGrouping","unitName","getGroupPixelWidth","getGroupIntervalFactor","xData","destroyGroupedData","getProcessedData","applyGrouping","dataGrouping","firstAnchor","anchor","lastAnchor","enabled","forced","approximation","units","processData","basePointRange","points","plotX","tooltipFormatter","arrayMax","arrayMin","isNumber","isString","setCompare","setCumulative","redraw","numberFormatter","tooltipOptions","changeDecimals","change","cumulativeSum","compare","cumulative","initCompare","initCumulative","dataModify","dataExtremes","activeYData","modifyValue","getCumulativeExtremes","userOptions","update","processedYData","compareStart","pointArrayMap","pointValKey","compareValue","setModifier","Infinity","reduce","compareBase","find","fireEvent","brokenAxis","setBreaks","hasBreaks","tickPositions","isInAnyBreak","S","connectNulls","yAxis","drawBreaks","breakArray","threshold","toUpperCase","from","to","point","brk","gapSize","gapUnit","isNull","stacking","stacks","stackKey","stackLabels","total","getGraphPath","R","keepProps","gappedPath","isInBreak","repeat","inclusive","lin2Val","val2Lin","findBreakAt","showPoints","forceRedraw","setAxisTranslation","unitLength","pointRangePadding","userMax","move","breakSize","staticScale","minPointOffset","Axis","Series","format","extend","merge","approximations","sum","hasNulls","average","averages","open","high","low","close","hlc","ohlc","range","groupAll","getDGApproximation","dataGroupInfo","start","cropStart","pointClass","optionsToObject","applyOptions","groupedXData","groupedYData","groupMap","P","groupData","generatePoints","groupPixelWidth","dateTimeLabelFormats","millisecond","second","minute","day","week","month","year","line","spline","area","areaspline","arearange","column","columnrange","candlestick","heikinashi","defaultDataGroupingUnits","is","allowDG","isStock","requireSorting","isCartesian","yData","plotSizeX","normalizeTimeTickInterval","startOfWeek","smoothed","middle","end","firstPoint","lastPoint","totalRange","allGroupedData","cropData","hasGroupedData","preventGraphAnimation","groupedData","destroy","hasProcessed","hasExtemesChanged","setDataGrouping","dataGroup","labelConfig","xDateFormat","isFooter","dateTime","getXDateFormat","styledMode","styledModeFormat","text","plotOptions","defaultOptions","useCommonDataGrouping","rangeSelector","selected","buttonOptions","__extends","setPrototypeOf","__proto__","plotClose","seriesTypes","extendStem","getPointPath","strokeWidth","round","shapeArgs","yBottom","plotHigh","drawSinglePoint","graphic","plotY","renderer","path","group","attr","pointAttribs","addClass","getClassName","drawPoints","init","fill","toYData","map","charAt","toPixels","tooltipPos","pos","plotTop","lineWidth","tooltip","pointFormat","states","hover","stickyTracking","animate","directTouch","pointAttrToOptions","stroke","registerSeriesType","plotOpen","resolveUpColor","color","upColor","resolveColor","getZone","useOhlcData","lineColor","upLineColor","reversed","shadow","isValid","hasNewShapeType","shape","symbolKey","stableSort","getPlotBox","onSeries","step","inverted","onKey","pointXOffset","barW","substr","opposite","stackIndex","anchorX","anchorY","circle","symbols","flag","getRendererType","circlepin","squarepin","distribute","objectEach","wrap","setClip","stackDistance","label","useHTML","markerGroup","isNew","align","textAlign","allowOverlapX","title","target","on","drawTracker","unbindMouseOver","raised","_y","fillColor","clip","sharedClipKey","sharedClips","pointRange","fontSize","fontWeight","forceCrop","invertible","noSharedTooltip","sorted","trackerGroups","buildKDTree","invertGroups","composed","axisMin","axisMax","scrollMin","scrollMax","scrollbar","vertical","startOnTick","endOnTick","shouldUpdateExtremes","DOMType","setRange","axisTitleMargin","titleOffset","scrollbarsOffsets","margin","isNaN","axisOffset","isTouchDevice","barBorderRadius","buttonBorderRadius","liveRedraw","minWidth","zIndex","barBackgroundColor","barBorderWidth","barBorderColor","buttonArrowColor","buttonBackgroundColor","buttonBorderColor","buttonBorderWidth","rifleColor","trackBackgroundColor","trackBorderColor","trackBorderWidth","destroyObjectProperties","chartY","scrollbarButtons","scrollbarGroup","scrollbarLeft","scrollbarRifles","scrollbarStrokeWidth","scrollbarTop","track","swapXY","addEvents","mouseDownHandler","mouseMoveHandler","mouseUpHandler","buttonToMinClick","buttonToMaxClick","trackClick","hasTouch","updatePosition","DOMEvent","cursorToScrollbarPosition","calculatedWidth","xOffset","barWidth","yOffset","scroller","removeEvents","drawScrollbarButton","rect","crisp","render","pointer","normalize","initPositions","grabbedCenter","touches","hasDragged","rendered","translateX","translateY","trackBorderRadius","hide","show","showFull","svg","isBoosting","pinchType","zoomType","zoomed","previousZoom","newMin","newMax","AdditionsClass","parse","clamp","erase","splat","filter","maskInside","handles","backgroundColor","borderColor","maskFill","setOpacity","outlineColor","outlineWidth","fillOpacity","dataLabels","marker","tickLength","gridLineColor","gridLineWidth","labels","crosshair","minPadding","maxPadding","tickWidth","zoomedMin","zoomedMax","shades","outlineHeight","outline","navigatorSize","navigatorSeries","navigatorOptions","navigatorGroup","navigatorEnabled","baseSeries","drawHandle","parseInt","drawOutline","drawMasks","renderElements","visibility","symbol","fake","minRange","maxRange","plotLeft","plotWidth","plotHeight","toValue","grabbedLeft","grabbedRight","fixedWidth","addMouseEvents","onMouseMove","onMouseUp","getPartsEvents","renderTo","eventsToUnbind","modifyNavigatorAxisExtremes","shadesMousedown","dragOffset","reversedExtremes","getUnionExtremes","handlesMousedown","otherHandlePos","fixedExtreme","pageX","triggerOp","keys","removeBaseSeriesEvents","updatedDataHandler","modifyBaseAxisExtremes","setBaseSeries","scrollbarEnabled","scrollbarOptions","isDirtyBox","isX","zoomEnabled","offsets","alignTicks","updateNavigatorSeries","unbindRedraw","addBaseSeriesEvents","addChartEvents","showInNavigator","enableMouseTracking","linkedTo","padXAxis","showInLegend","inactive","opacity","hasNavigatorData","initSeries","colors","setVisible","remove","getBaseSeriesMin","stickToMin","stickToMax","shouldStickToMin","pointStart","setData","axes","split","Navigator","legend","chartWidth","spacing","chartHeight","extraBottomMargin","getHeight","verticalAlign","layout","floating","legendHeight","setAxisSize","animation","callbacks","some","discardElement","pad","pInt","allButtonsEnabled","buttons","buttonSpacing","dropdown","buttonTheme","padding","inputBoxBorderColor","inputBoxHeight","inputBoxWidth","inputDateFormat","inputDateParser","inputEditDateFormat","inputEnabled","inputPosition","inputSpacing","buttonPosition","inputStyle","labelStyle","lang","rangeSelectorZoom","rangeSelectorFrom","rangeSelectorTo","defaultButtons","initialButtonGroupWidth","clickButton","_range","setSelected","forcedDataGrouping","frozenStates","preserveDataGrouping","minFromRange","deferredYTDClick","MIN_VALUE","getYTDExtremes","useUTC","_offsetMin","_offsetMax","selectedIndex","rangeSelectorButton","minInput","maxInput","blur","computeButtonRange","updateButtonStates","hasVisibleSeries","disabled","offsetMin","offsetMax","getInputValue","defaultInputDateParser","setInputValue","minDateBox","maxDateBox","getAttribute","inputTypeFormats","setInputExtremes","showInput","inputGroup","border","hideInput","isSafari","lastIndexOf","Date","getTimezoneOffset","UTC","drawInput","focus","boxShadow","fontFamily","onfocus","onblur","doc","activeElement","onchange","onkeypress","keyCode","onkeydown","onkeyup","dateBox","input","getPosition","buttonTop","inputTop","getTime","renderButtons","parentNode","minLabel","maxLabel","getBBox","alignElements","buttonGroup","isMS","currentButtonIndex","zoomText","paddingLeft","paddingRight","textContent","textStr","button","events","click","isActive","select","exporting","navigation","titleCollision","positionButtons","alignButtonGroup","placed","hasLoaded","spacingBox","handleCollision","alignAttr","marginTop","alignOptions","collapseButtons","expandButtons","showDropdown","hideDropdown","hasVisibleDropdown","subtitle","HTMLElement","date","RangeSelector","display","updateNames","setScale","getAxisMargins","extraTopMargin","marginBottom","overflow","showLastLabel","categories","getOptions","crosshairs","createAxis","stockChart","borderWidth","radius","_labelPanes","coll","isLinked","linkedParent","translatedValue","acrossPanes","transB","crispPolyLine","crossLabel","cross","logarithmic","tickPosition","snap","lin2log","labelAlign","colorIndex","borderRadius","labelGroup","formatter","isPointInside","forceCropping","Scrollbar","StockChart","Chart","Point","SimpleEventHandlingBase","SimpleEventList_1","isObject","isClass","isDOMElement","iterator","toString","TypeError","getOwnPropertySymbols","getOwnPropertyDescriptor","configurable","writable","getOwnPropertyDescriptors","defineProperties","ref","beforeDestroy","beforeUnmount","template","props","constructorType","String","default","required","Function","updateArgs","highcharts","deepCopyOnUpdate","Boolean","watch","deep","mounted","$refs","component","tagName","dispatcher","_subscribe","subscribe","_unsubscribe","unsubscribe","_one","one","_has","has","_clear","clear","_count","_onSubscriptionChange","onSubscriptionChange","message","_vm","_h","$createElement","_c","_self","staticClass","loadingState","loadingError","attrs","_v","_e","model","$$v","showRedesignNotification","expression","doNotShowRedesignNotificationAgain","$event","redesignNotificationAcknowledged","addNewWidget","toggleWidgetActive","scopedSlots","_u","editMode","_b","dashboard","activeWidgets","_l","widget","class","widgetMovedOrResized","tag","startupWidget","defaultWidth","defaultHeight","isFabInitial","isPersonalDashboard","isFabClicked","fabOpen","item","active","_g","fabAction","action","_s","icon","staticRenderFns","dialog","directives","rawName","dialogRootView","selectedWidgetType","defaultName","goToDetails","refInFor","multiple","saveWidgetName","switchToggle","handleDeleteWidget","addButtonEnabled","domProps","description","image","instructionsDialog","WelcomeWidget","__decorate","Prop","Component","VBtn","VCard","VCardText","VCol","VIcon","VRow","VSpacer","VToolbar","VToolbarTitle","Dashboard","getModule","DashboardModule","store","VesselDataWidgetConfig","VesselDataWidgetConfiguration","WidgetTypes","WidgetTypesModule","PerfStatus","PerformanceStatusWidgetModule","NotificationWidgetConfiguration","NotificationWidgetModule","CiiWidgetConfiguration","CiiWidgetModule","FoulingOverviewWidgetConfig","FoulingOverviewWidgetModule","DashboardControlDialog","widgetTypes","allAddable","activeDashboardWidgets","widgetsOfSelectedType","confirmDelete","confirmed","deleteWidget","usingConfig","VesselDataTable","VesselDataGraph","performanceStatus","notification","emissions","foulingOverview","deleteVesselDataWidgetConfig","configId","then","catch","deleteWidgetConfig","deleteCiiWidgetConfig","newName","internalValue","updateWidget","getVesselDataWidgetConfigById","config","newConfig","assign","configurationName","updateVesselDataWidgetConfig","Ref","components","ConfirmDialog","VCardActions","VCardTitle","VDialog","VDivider","VImg","VListItem","VSwitch","VTextField","VTooltip","moving","vessels","resized","inject","computed","$item","widthPx","heightPx","resizing","Vessels","VesselsModule","MapWidget","val","extendedVessels","vessel","hasDashboardEnabled","features","feature","Watch","mixins","itemMixin","Map","onResize","_t","autoHeight","_id","_layouts","_autoHeight","defaults","_width","bp","breakpoint","numberOfCols","setpoint","breakpointWidth","updateCurrentBreakpoint","ah","updateLayouts","breakpoints","matching","layouts","findIndex","newValue","inheritAttrs","rlocal","provide","$dashboard","currentBreakpoint","methods","createPropWatchers","created","$props","dragging","placeholderId","placeholderY","placeholderHeight","placeholderMaxWidth","JSON","stringify","placeholder","itemsFromLayout","$attrs","DashItem","maxWidth","minHeight","maxHeight","colWidth","rowHeight","draggable","resizable","resizeEdges","resizeHandleSize","moveHold","resizeHold","locked","_moved","_hover","_moving","_resizing","_onMoveStartEventDispatcher","_onMoveEventDispatcher","_onMoveEndEventDispatcher","_onResizeStartEventDispatcher","_onResizeEventDispatcher","_onResizeEndEventDispatcher","_colWidth","_rowHeight","_margin","_x","_left","getLeftFromX","_top","getTopFromY","_minWidth","_maxWidth","_minHeight","_maxHeight","_height","_widthPx","getWidthInPx","_heightPx","getHeightInPx","_draggable","_resizable","_resizeEdges","_resizeHandleSize","_moveHold","_resizeHold","_locked","updatePositionAndSize","mW","checkSizeLimits","dh","rh","rhs","dispatch","toItem","asEvent","deltaRect","transform","WebkitTransform","MozTransform","msTransform","OTransform","Layout","useCssTransforms","minRowHeight","maxRowHeight","minColWidth","maxColWidth","compact","initialItems","_itemBeingDragged","_itemBeingResized","_initalItemIds","_dashItems","_dragStartListeners","_dragListeners","_dragEndListeners","_resizeStartListeners","_resizeListeners","_resizeEndListeners","_breakpoint","_numberOfCols","_breakpointWidth","_useCssTransforms","_minRowHeight","_maxRowHeight","_minColWidth","_maxColWidth","_compact","bw","calculateWidth","updateDashItems","calculateHeight","mrh","rH","mcw","colWidthCalc","cw","ibd","ibr","getDashItemById","uct","maxY","bottomY","unDragStart","onMoveStart","itemDragging","unDrag","onMove","unDragEnd","onMoveEnd","itemDraggingComplete","unResizeStart","onResizeStart","itemResizing","unResize","unResizeEnd","onResizeEnd","itemResizingComplete","includes","items","compactLayout","syncItems","initialItemIdIndex","dashItem","itemBeingDragged","itemsCopy","placeholderIndex","moveItem","getXFromLeft","getYFromTop","itemBeingResized","getWidthFromPx","getHeightFromPx","d1","d2","checkForCollision","correctItemBounds","sortItems","compareWith","getLockedItems","out","compactItem","moved","getFirstCollision","collides","reverse","isUserAction","movingUp","collisions","getAllCollisions","collision","collisionIndex","moveItemFromCollision","colllidesWith","itemToMove","fakeItem","fromItem","keepSquare","classObj","resizableZIndex","domObjects","DocumentFragment","SVGElement","SVGSVGElement","SVGElementInstance","Element","Event","Touch","PointerEvent","blank","win","MSPointerEvent","thing","realWindow","createTextNode","getWindow","node","isWindow","rootNode","docFrag","func","number","bool","string","_window","nodeName","plainObject","browser","supportsTouch","supportsPointerEvent","isIOS7","isIOS","isIe9","isOperaMobile","prefixedMatchesSelector","pEventTypes","wheelEvent","DocumentTouch","pointerEnabled","platform","appVersion","appName","up","down","over","source","clone","dest","ret","request","lastTime","global","requestAnimationFrame","cancelAnimationFrame","vendors","vendor","currTime","now","timeToCall","token","search","acc","prefix","combinedTypes","fireUntilImmediateStopped","immediatePropagationStopped","types","eventList","subListener","_element","nodeContains","parent","closest","selector","matchesSelector","host","getParent","indexOfDeepestElement","deepestNodeIndex","deepestNodeParents","currentNode","deepestNode","currentNodeParent","deepestNodeParent","zIndexIsHigherThan","ancestryStart","getNodeParents","ownerSVGElement","currentNodeParents","commonIndex","parents","lastChild","previousSibling","limit","parentParent","higherNode","lowerNode","higherIndex","lowerIndex","matchesUpTo","getActualElement","correspondingUseElement","getScrollXY","relevantWindow","scrollX","documentElement","scrollY","getElementClientRect","clientRect","getBoundingClientRect","getClientRects","getElementRect","scroll","trySelector","querySelector","getStringOptionResult","getRect","resolveRectLike","functionArgs","returnValue","rectToXY","addEdges","edges","delta","actionOptions","actionName","actionOrigin","origin","originRect","BaseEvent","interaction","currentTarget","interactable","_interaction","timeStamp","_proxy","base","deltaSource","perAction","actions","phase","preEnd","relatedTarget","screenX","screenY","ctrlKey","shiftKey","altKey","metaKey","page","client","x0","y0","t0","dt","duration","clientX0","clientY0","velocity","speed","swipe","getOriginXY","starting","ending","prevEvent","coords","cur","pointers","downTime","hypot","getSwipe","angle","atan2","velocityY","velocityX","PI","overlap","warnOnce","warned","copyAction","pageY","clientX","clientY","dx","dy","copyCoords","setCoordDeltas","targetObj","prev","setCoordVelocity","setZeroCoords","isNativePointer","getXY","xy","getPageXY","getClientXY","getPointerId","pointerId","identifier","setCoords","pointerAverage","getTouchPair","changedTouches","touchBBox","minX","minY","maxX","touchDistance","sourceX","sourceY","touchAngle","getPointerType","pointerType","getEventTargets","composedPath","newCoords","isNonNativeEvent","phaselessTypes","phases","createInteractStatic","interact","interactables","new","globalEvents","getPointerAverage","getTouchBBox","getTouchDistance","getTouchAngle","use","plugin","usePlugin","isSet","context","eventType","off","stop","interactions","list","pointerMoveTolerance","addDocument","removeDocument","defaultContext","scopeEvents","_actions","_context","_win","_doc","_scopeEvents","_rectChecker","onstart","onmove","onend","oninertiastart","_defaults","optionName_","optionName","optionValue","updatePerActionListeners","checker","_backCompatOption","targetNode","eventTarget","testIgnore","ignoreFrom","testAllow","allowFrom","iEvent","fire","typeArg","listenerArg","addRemove","_onOff","actionName_","methodDict","methodName","setPerAction","setting","delegatedEvents","delegated","removeDelegate","selectorMap","addListeners","targetMappings","targetIndex","Interactable","mappingInfo","isSelector","found","inContext","pointerExtend","prefixedPropREs","deprecated","webkit","moz","_scope$document","targets","documents","eventsMethods","addDelegate","delegateListener","delegateUseCapture","supportsOptions","supportsPassive","optionalArg","capture","typeIsEmpty","typeListeners","delegates","delegate","matchFound","passive","fakeEvent","stopPropagation","stopImmediatePropagation","param","PointerInfo","downTarget","_ProxyValues","_ProxyMethods","idCounter","scopeFire","_rects","_scopeFire","prepared","downEvent","downPointer","_latestPointer","pointerIsDown","pointerWasMoved","_interacting","_ending","_stopped","simulation","doMove","signalArg","that","pointerIndex","updatePointer","pointerInfo","interacting","_doPhase","modification","endResult","duplicateMove","getPointerIndex","duplicate","curEventTarget","removePointer","endPhaseResult","curPointer","_now","_updateLatestPointer","beforeResult","_createPreparedEvent","_fireEvent","checkAndPreventDefault","docOptions","getDocOptions","onInteractionEvent","docEvents","finder","methodOrder","details","allowResume","firstNonActive","hasPointerId","gesture","methodNames","doOnInteractions","releasePointersOnRemovedEls","pointerDown","pointerMove","pointerUp","documentBlur","prevTouchTime","Interaction","arg","interactablePreventDefault","matches","changedTouch","searchDetails","getInteraction","invalidPointer","foundInteraction","onDocSignal","eventMethodName","eventMethod","eventOptions","random","isInitialized","listenerMaps","Eventable","interactStatic","InteractEvent","_plugins","onWindowUnload","unset","initScope","pluginIsInstalled","before","pluginIdRoot","otherId","getDocIndex","docIndex","_global","globalThis","drag","beforeMove","setOnEvents","lockAxis","startAxis","dragOptions","mouseButtons","dropState","dragEvent","dropzone","rejected","enter","activeDrops","deactivateEvent","dropzoneMethod","dropCheck","draggableElement","dropElement","dropCheckMethod","dynamicDrop","dragenter","dragleave","dropactivate","dropdeactivate","dropmove","drop","collectDrops","drops","accept","dropElements","querySelectorAll","dropzoneElement","fireActivationEvents","getActiveDrops","dragElement","activeDrop","getDrop","pointerEvent","validDrops","dropIndex","getDropEvents","_pointerEvent","dropEvents","leave","activate","deactivate","dragLeave","prevDropzone","dragEnter","dragmove","fireDropEvents","onEventCreated","dropResult","normalized","corrected","correctedType","ondrop","ondropactivate","ondropdeactivate","ondragenter","ondragleave","ondropmove","dropped","dropOverlap","horizontal","dragRect","cx","cy","overlapArea","overlapRatio","gesturable","updateGestureProps","distance","box","scale","ds","da","startDistance","startAngle","gestureOptions","resize","cursors","initCursors","defaultMargin","resizeChecker","resizeOptions","edge","checkResizeEdge","preserveAspectRatio","square","interactableElement","topleft","bottomright","topright","bottomleft","resizeEvent","previous","invert","current","startRect","swap","updateEventAxes","resizeAxes","NaN","cursorKey","getAction","defaultActionChecker","actionChecker","styleCursor","0","1","3","4","InteractableMethods","manualStart","maxPerElement","maxInteractions","autoStart","withinInteractionLimit","cursorElement","prepareOnDown","actionInfo","getActionInfo","prepare","prepareOnMove","startOnMove","setInteractionCursor","clearCursorOnStop","setCursor","validateAction","testIgnoreAllow","validateMatches","matchElements","matchElement","matchAction","pushMatches","forEachMatch","maxActions","autoStartMax","activeInteractions","interactableCount","elementCount","otherAction","prevCursorElement","cursorChecker","getCursor","beforeStart","absX","absY","targetOptions","currentAxis","getDraggable","checkStartAxis","thisAxis","hold","delay","getHoldDuration","autoStartHoldTimer","holdDuration","dragAxis","draggableZIndex","dragAllowFrom","dragIgnoreFrom","$layout","interactInstance","unWatch","resizingOrDragging","cssTransforms","cssStyle","cssTransform","cssTopLeft","resizeTop","resizeBottom","resizeLeft","resizeRight","resizeTopLeft","resizeBottomLeft","resizeTopRight","resizeBottomRight","defaultMinWidth","defaultMinHeight","setDraggable","setResizable","_onMoveStart","_onMove","_onMoveEnd","_onResizeStart","_onResize","_onResizeEnd","createDashItemWatchers","EMIT_PROPS","addDashItem","$watch","immediate","removeDashItem","addLayoutInstance","removeLayoutInstance","vesselDataWidgetTypeClass","widgetRef","isPartOfSharedDashboard","isDataLoading","WidgetEditDialog","VesselDataWidgetType","initialConfig","isModalActive","onModalOpen","onModalClose","onSaveWidgetName","panels","$set","onVesselChange","columns","isVesselDataWidgetTypeTable","onLogVariableFieldClick","openTimeSpanDialog","onColumnDelete","isAddColumnDisabled","addColumn","timeSpanError","closeEditDialog","saveConfig","isLogVariablesModalActive","selectedColumnIndex","selectedVessel","isTimeSpanModalActive","dialogWidth","isDialogExpanded","editingWidgetName","editWidgetName","cancelEditWidgetName","widgetName","staticStyle","widgetNameInitial","vesselsLoadingState","getElementsByClassName","PropSync","LoadingTextWave","syncColumn","isColumnMainVessel","selectedLogVariable","checkUnitError","isVesselLogVariablesLoaded","clickField","clearVariable","isUnitAccAllowed","selectedTimeSpan","validateColumnAccUnits","clickTimeSpanField","LogVariables","LogVariablesModule","LogVariablesColumn","accumulatedAllowedUnits","vesselId","validateLogVariablesByUnit","columnFirstVariable","logVariables","keyName","vesselLogVariable","variable","displayName","unit","caption","columnFirstVesselLogVariableUnitName","currentVesselLogVariable","variableIndex","vesselsLogVariables","calculationType","fromAndToDatesCalculationType","hasNotAllowedUnit","dateHelper","getFormatedDateTimeString","fromDate","toDate","formattedWidgetDateRange","hours","getDatesDiffAsHours","VFadeTransition","VList","VListItemTitle","VProgressCircular","tableHeaders","tableRowItems","customSort","header","subHeaderText","subHeaderTooltipText","stringifiedCalculationMethodForHeader","subHeader","tooltipText","moment","utc","updatedConfig","getConfigById","sortable","tableRow","column0","columnKey","matchedValue","cachedResults","stringifyResult","vesselDataWidgetConfigs","sortBy","isDesc","formatedA","numberHelper","parseLocaleNumber","formatedB","Intl","NumberFormat","maximumFractionDigits","logVariableDisplayPrecision","unitCaption","VDataTable","chartReady","HighchartStock","isChartLoaded","reflowTimer","reflow","getVesselsLogVariables","xAxisMaxAmount","vesselName","parseFloat","toFixed","logVariableName","stringifiedTimeSpan","getVesselNames","yAxisMaxTick","bar","pointPadding","headerFormat","textOutline","credits","maxPointWidth","responsive","condition","chartOptions","isScrollable","onWindowResize","VesselDataWidgetConfigurationModule","LogData","LogDataModule","Dash","User","UserModule","VesselDataWidget","selectedVessels","initialSelectedVessels","displayType","activeDashboard","userId","every","toggledVessel","fetchAllLogVariablesByVesselId","entries","logVariableIds","subtract","fetchLastReceivedLogData","isInteger","fetchLastVoyageAveraged","fetchLastVoyageAccumulated","fetchAveragedCalculatedLogData","fetchAccumulatedCalculatedLogData","hasColumnTimeSpan","fetchCalculatedLogData","columnIndex","values","columnLogVariables","logVariable","vesselLogVariables","getVesselLogVariables","matchingLogVariable","vlv","sequence","initDisplayNameOfConfig","updateVesselDataWidgetConfigColumnsSequence","extendedVesselsExpired","refreshExtendedVessels","initWidgetData","TimeSpanDialog","LogVariablesDialog","VesselSelect","VExpansionPanel","VExpansionPanelContent","VExpansionPanelHeader","VExpansionPanels","VSnackbar","tableRows","encodeURIComponent","statusIcon","status","rpm","sfr","statusName","formatDate","statusUpdated","statusMessage","StatusTooltip","Snackbar","SnackbarModule","PerformanceStatus","subStatuses","isDiagnosticActivated","longTrends","longTrend","diagnosticType","descriptionLong","statusCode","formatStatusCode","performanceStatusHelper","getPerformanceStatusImageSrc","performanceStatusUpdated","setCombinedStatuses","updateConfig","showSnackbar","row","calculateCombinedStatus","statuses","combinedStatus","getSortValueByStatus","addNewConfig","createNewConfig","notificationModuleEnabled","activeConditions","warningIncidents","amount","formatedDateString","openNotificationQueuedAt","conditionDetails","WarningTooltip","VBadge","criticalIncidents","CriticalTooltip","Incidents","IncidentsModule","NotificationWidget","conditions","isDeleted","openWarningIncidents","openCriticalIncidents","fetchConditionsForEachVessel","fetchConditionsByVesselId","vesselConditions","distinctAllOpenIncidents","incident","severity","FoulingStatus","foulingStatecolor","foulingStatusIcon","latestSpeedLoss","cumulativeAddedFuelConsumption","hullCoating","FoulingOverviewWidget","hullCoatingVessels","manufacturerName","typeName","brand","foulingConfigs","latestSpeedLossStatisticsForVessels","latestSpeedLossStatistics","isBenchmarking","speedLoss","trendEndValue","benchmark","greenZoneEnds","addedFuelConsumptionForVessels","usingDerivedStw","foulingConfig","useDerivedStw","addedFuelConsumptions","latestAddedConsumption","cumulativeAddedConsumption","toLocaleString","useManualBenchmark","BENCHMARKING","NOT_AVAILABLE","yellowZoneEnds","HIGH","MEDIUM","NORMAL","foulingStatus","vesselIds","promises","fetchFoulingConfigs","fetchHullCoatingForVessels","fetchLatestSpeedLossStatisticsForVessels","fetchAddedFuelConsumptionForVessels","Promise","getConfig","getFoulingDetails","TableRecord","dateRange","widgetComponentType","ciiData","vesselsNoDataList","componentViewTypes","onComponentViewTypeSelect","componentViewType","lastYears","ytd","isVesselSettingsRequired","openVesselSettingsDialog","closeVesselSettingsDialog","vesselSettingsDialog","vesselTypes","vesselType","isDeadweightRequired","deadweight","_n","grossTonnage","isSaveButtonDisabled","submitVesselSettings","ratingColor","ciiRating","ciiTrend","last7DaysAverage","ciiTrendStyles","imoNumber","vesselWeight","headers","TableView","useDeadweight","distanceTravelledInNm","co2EmissionsInGrams","attainedCii","referenceLine","requiredCii","rating","trend","isDowntrend","penultimate7DaysAverage","getExtendedVesselById","VChip","VProgressLinear","_m","averageAttainedCii","totalDistanceTravelled","totalEmittedCO2","ChartOptions","ChartView","chartLoaded","donutTitle","ctx","spacingTop","spacingBottom","spacingLeft","spacingRight","$this","averageRating","legendsAmount","allItems","legendItem","refresh","chartSettings","symbolPadding","symbolWidth","symbolHeight","symbolRadius","itemStyle","labelFormatter","pie","innerSize","legendItemClick","html","vesselsCiiDataList","filterVesselsByRating","cii","seriesData","ratingsAmount","averageGrade","letterGrade","grade","Cii","CiiModule","CiiWidget","selectedYear","yearToDate","widgetViewSelectTypes","currentVessel","isAnyVesselUpdated","showTable","showChart","getFormatedDateString","currentYear","getFullYear","yearsUntil2019","query","years","fetchYtd","fetchYear","evaluateAndSetCiiTrend","lastExportDate","fetchDays","last14Days","penultimate7Days","last7Days","updateCiiWidgetConfig","getCiiWidgetConfigById","fetchVesselsCiiData","updateVessel","fetchVesselTypes","VAlert","VCheckbox","VSelect","Taxonomy","TaxonomyModule","VesselGroups","VesselGroupsModule","FoulingOverviewWidgetConfiguration","DashboardView","startup","loadingTimeout","redesignNotificationSeen","$cookies","refreshVessels","refreshVesselGroups","getTaxonomyCategories","initializeDashboard","refreshVesselDataWidgetConfigs","refreshConfigs","refreshCiiWidgetConfigs","timeout","closeButton","$nextTick","dashboardRef","updateDashboardLayout","widgets","userIdsSharedWith","dashboardControlDialog","rows","cols","grid","j","createGrid","areal","tooBig","arealCounter","newEmptyVesselDataWidgetConfig","coordinates","getCoordinates","typeTemplate","addWidget","updatedDashboard","scrollAndHighlightElement","newElement","scrollIntoView","behavior","classList","DashLayout","PerformanceStatusWidget","VSheet","Mobile","Toggleable","app","iconColor","singleLine","sticky","classes","hasIcon","isMobile","isSticky","$slots","styles","$vuetify","application","convertToUnit","toggle","iconClick","genIcon","content","VAvatar","genText","genActions","children","getSlot","dismiss","genContent","genWrapper","attrs$","VExpandTransition","outlined","setBackgroundColor","Positionable","Transitionable","ClickOutside","direction","validator","openOnHover","transition","absolute","fixed","mouseenter","mouseleave","btnCount","componentOptions","Ctor","transitionDelay","activator","VBanner","VFabTransition","VSpeedDial","createSubscription","triggerSubscriptionChange","changes","_wrap","NonUniformSimpleEventList","SimpleEventHandlingBase_1","NonUniformSimpleEventList_1"],"mappings":"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","file":"js/chunk-1892b987.decb6ca1.js","sourcesContent":["\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.Subscription = void 0;\r\n/**\r\n * Stores a handler. Manages execution meta data.\r\n * @class Subscription\r\n * @template TEventHandler\r\n */\r\nclass Subscription {\r\n /**\r\n * Creates an instance of Subscription.\r\n *\r\n * @param {TEventHandler} handler The handler for the subscription.\r\n * @param {boolean} isOnce Indicates if the handler should only be executed once.\r\n */\r\n constructor(handler, isOnce) {\r\n this.handler = handler;\r\n this.isOnce = isOnce;\r\n /**\r\n * Indicates if the subscription has been executed before.\r\n */\r\n this.isExecuted = false;\r\n }\r\n /**\r\n * Executes the handler.\r\n *\r\n * @param {boolean} executeAsync True if the even should be executed async.\r\n * @param {*} scope The scope the scope of the event.\r\n * @param {IArguments} args The arguments for the event.\r\n */\r\n execute(executeAsync, scope, args) {\r\n if (!this.isOnce || !this.isExecuted) {\r\n this.isExecuted = true;\r\n var fn = this.handler;\r\n if (executeAsync) {\r\n setTimeout(() => {\r\n fn.apply(scope, args);\r\n }, 1);\r\n }\r\n else {\r\n fn.apply(scope, args);\r\n }\r\n }\r\n }\r\n}\r\nexports.Subscription = Subscription;\r\n","\"use strict\";\r\n/*!\r\n * Strongly Typed Events for TypeScript - Core\r\n * https://github.com/KeesCBakker/StronlyTypedEvents/\r\n * http://keestalkstech.com\r\n *\r\n * Copyright Kees C. Bakker / KeesTalksTech\r\n * Released under the MIT license\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SubscriptionChangeEventDispatcher = exports.HandlingBase = exports.PromiseDispatcherBase = exports.PromiseSubscription = exports.DispatchError = exports.EventManagement = exports.EventListBase = exports.DispatcherWrapper = exports.DispatcherBase = exports.Subscription = void 0;\r\nconst DispatcherBase_1 = require(\"./dispatching/DispatcherBase\");\r\nObject.defineProperty(exports, \"DispatcherBase\", { enumerable: true, get: function () { return DispatcherBase_1.DispatcherBase; } });\r\nconst DispatchError_1 = require(\"./dispatching/DispatchError\");\r\nObject.defineProperty(exports, \"DispatchError\", { enumerable: true, get: function () { return DispatchError_1.DispatchError; } });\r\nconst DispatcherWrapper_1 = require(\"./dispatching/DispatcherWrapper\");\r\nObject.defineProperty(exports, \"DispatcherWrapper\", { enumerable: true, get: function () { return DispatcherWrapper_1.DispatcherWrapper; } });\r\nconst EventListBase_1 = require(\"./dispatching/EventListBase\");\r\nObject.defineProperty(exports, \"EventListBase\", { enumerable: true, get: function () { return EventListBase_1.EventListBase; } });\r\nconst EventManagement_1 = require(\"./management/EventManagement\");\r\nObject.defineProperty(exports, \"EventManagement\", { enumerable: true, get: function () { return EventManagement_1.EventManagement; } });\r\nconst HandlingBase_1 = require(\"./handling/HandlingBase\");\r\nObject.defineProperty(exports, \"HandlingBase\", { enumerable: true, get: function () { return HandlingBase_1.HandlingBase; } });\r\nconst PromiseDispatcherBase_1 = require(\"./dispatching/PromiseDispatcherBase\");\r\nObject.defineProperty(exports, \"PromiseDispatcherBase\", { enumerable: true, get: function () { return PromiseDispatcherBase_1.PromiseDispatcherBase; } });\r\nconst PromiseSubscription_1 = require(\"./events/PromiseSubscription\");\r\nObject.defineProperty(exports, \"PromiseSubscription\", { enumerable: true, get: function () { return PromiseSubscription_1.PromiseSubscription; } });\r\nconst Subscription_1 = require(\"./events/Subscription\");\r\nObject.defineProperty(exports, \"Subscription\", { enumerable: true, get: function () { return Subscription_1.Subscription; } });\r\nconst SubscriptionChangeEventHandler_1 = require(\"./dispatching/SubscriptionChangeEventHandler\");\r\nObject.defineProperty(exports, \"SubscriptionChangeEventDispatcher\", { enumerable: true, get: function () { return SubscriptionChangeEventHandler_1.SubscriptionChangeEventDispatcher; } });\r\n","module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = \"fb15\");\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ \"18d2\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\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\n\nvar browserDetector = __webpack_require__(\"18e9\");\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\n\n/***/ }),\n\n/***/ \"18e9\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\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\n/***/ }),\n\n/***/ \"2cef\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\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\n\n/***/ }),\n\n/***/ \"49ad\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\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\n\n/***/ }),\n\n/***/ \"5058\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\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\n\n/***/ }),\n\n/***/ \"50bf\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\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\n\n/***/ }),\n\n/***/ \"5be5\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\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\n/***/ }),\n\n/***/ \"abb4\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\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};\n\n/***/ }),\n\n/***/ \"b770\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\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\n\n/***/ }),\n\n/***/ \"c274\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar utils = __webpack_require__(\"50bf\");\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\n/***/ }),\n\n/***/ \"c946\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\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\n\nvar forEach = __webpack_require__(\"b770\").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\n\n/***/ }),\n\n/***/ \"d6eb\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\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\n\n/***/ }),\n\n/***/ \"eec4\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar forEach = __webpack_require__(\"b770\").forEach;\nvar elementUtilsMaker = __webpack_require__(\"5be5\");\nvar listenerHandlerMaker = __webpack_require__(\"49ad\");\nvar idGeneratorMaker = __webpack_require__(\"2cef\");\nvar idHandlerMaker = __webpack_require__(\"5058\");\nvar reporterMaker = __webpack_require__(\"abb4\");\nvar browserDetector = __webpack_require__(\"18e9\");\nvar batchProcessorMaker = __webpack_require__(\"c274\");\nvar stateHandler = __webpack_require__(\"d6eb\");\n\n//Detection strategies.\nvar objectStrategyMaker = __webpack_require__(\"18d2\");\nvar scrollStrategyMaker = __webpack_require__(\"c946\");\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\n\n/***/ }),\n\n/***/ \"f6fd\":\n/***/ (function(module, exports) {\n\n// document.currentScript polyfill by Adam Miller\n\n// MIT license\n\n(function(document){\n var currentScript = \"currentScript\",\n scripts = document.getElementsByTagName('script'); // Live NodeList collection\n\n // If browser needs currentScript polyfill, add get currentScript() to the document object\n if (!(currentScript in document)) {\n Object.defineProperty(document, currentScript, {\n get: function(){\n\n // IE 6-10 supports script readyState\n // IE 10+ support stack trace\n try { throw new Error(); }\n catch (err) {\n\n // Find the second match for the \"at\" string to get file src url from stack.\n // Specifically works with the format of stack traces in IE.\n var i, res = ((/.*at [^\\(]*\\((.*):.+:.+\\)$/ig).exec(err.stack) || [false])[1];\n\n // For all scripts on the page, if src matches or if ready state is interactive, return the script tag\n for(i in scripts){\n if(scripts[i].src == res || scripts[i].readyState == \"interactive\"){\n return scripts[i];\n }\n }\n\n // If no match, return null\n return null;\n }\n }\n });\n }\n})(document);\n\n\n/***/ }),\n\n/***/ \"fb15\":\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n// ESM COMPAT FLAG\n__webpack_require__.r(__webpack_exports__);\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, \"resize\", function() { return /* reexport */ elementResizeDetector; });\n\n// CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js\n// This file is imported into lib/wc client bundles.\n\nif (typeof window !== 'undefined') {\n if (true) {\n __webpack_require__(\"f6fd\")\n }\n\n var i\n if ((i = window.document.currentScript) && (i = i.src.match(/(.+\\/)[^/]+\\.js(\\?.*)?$/))) {\n __webpack_require__.p = i[1] // eslint-disable-line\n }\n}\n\n// Indicate to webpack that this file can be concatenated\n/* harmony default export */ var setPublicPath = (null);\n\n// CONCATENATED MODULE: ./src/directive/elementResizeDetector.js\nvar elementResizeDetectorMaker = __webpack_require__(\"eec4\");\n\nvar erd = elementResizeDetectorMaker({\n strategy: \"scroll\" //<- For ultra performance.\n\n}); // this occurs once when the directive is attached to the element.\n\nfunction bind(el, binding, vnode) {\n var options = {};\n\n if (binding.value) {\n options = binding.value;\n }\n\n erd.listenTo(options, el, function (element) {\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (vnode.componentInstance) {\n vnode.componentInstance.$emit(\"resize\", {\n detail: {\n width: width,\n height: height\n }\n });\n } else {\n vnode.elm.dispatchEvent(new CustomEvent(\"resize\", {\n detail: {\n width: width,\n height: height\n }\n }));\n }\n });\n}\n\nfunction unbind(el) {\n erd.uninstall(el);\n}\n\n/* harmony default export */ var elementResizeDetector = ({\n bind: bind,\n unbind: unbind\n});\n// CONCATENATED MODULE: ./src/index.js\n\n/* harmony default export */ var src = ({\n install: function install(Vue) {\n Vue.directive(\"resize\", elementResizeDetector);\n }\n});\n\n// CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/entry-lib.js\n\n\n/* harmony default export */ var entry_lib = __webpack_exports__[\"default\"] = (src);\n\n\n\n/***/ })\n\n/******/ });\n//# sourceMappingURL=vue-element-resize-detector.common.js.map","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.EventManagement = void 0;\r\n/**\r\n * Allows the user to interact with the event.\r\n *\r\n * @export\r\n * @class EventManagement\r\n * @implements {IEventManagement}\r\n */\r\nclass EventManagement {\r\n /**\r\n * Creates an instance of EventManagement.\r\n * @param {() => void} unsub An unsubscribe handler.\r\n *\r\n * @memberOf EventManagement\r\n */\r\n constructor(unsub) {\r\n this.unsub = unsub;\r\n this.propagationStopped = false;\r\n }\r\n /**\r\n * Stops the propagation of the event.\r\n * Cannot be used when async dispatch is done.\r\n *\r\n * @memberOf EventManagement\r\n */\r\n stopPropagation() {\r\n this.propagationStopped = true;\r\n }\r\n}\r\nexports.EventManagement = EventManagement;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SimpleEventList = void 0;\r\nconst ste_core_1 = require(\"ste-core\");\r\nconst SimpleEventDispatcher_1 = require(\"./SimpleEventDispatcher\");\r\n/**\r\n * Storage class for multiple simple events that are accessible by name.\r\n * Events dispatchers are automatically created.\r\n */\r\nclass SimpleEventList extends ste_core_1.EventListBase {\r\n /**\r\n * Creates a new SimpleEventList instance.\r\n */\r\n constructor() {\r\n super();\r\n }\r\n /**\r\n * Creates a new dispatcher instance.\r\n */\r\n createDispatcher() {\r\n return new SimpleEventDispatcher_1.SimpleEventDispatcher();\r\n }\r\n}\r\nexports.SimpleEventList = SimpleEventList;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.EventListBase = void 0;\r\n/**\r\n * Base class for event lists classes. Implements the get and remove.\r\n *\r\n * @export\r\n * @abstract\r\n * @class EventListBaset\r\n * @template TEventDispatcher The type of event dispatcher.\r\n */\r\nclass EventListBase {\r\n constructor() {\r\n this._events = {};\r\n }\r\n /**\r\n * Gets the dispatcher associated with the name.\r\n *\r\n * @param {string} name The name of the event.\r\n * @returns {TEventDispatcher} The disptacher.\r\n *\r\n * @memberOf EventListBase\r\n */\r\n get(name) {\r\n let event = this._events[name];\r\n if (event) {\r\n return event;\r\n }\r\n event = this.createDispatcher();\r\n this._events[name] = event;\r\n return event;\r\n }\r\n /**\r\n * Removes the dispatcher associated with the name.\r\n *\r\n * @param {string} name\r\n *\r\n * @memberOf EventListBase\r\n */\r\n remove(name) {\r\n delete this._events[name];\r\n }\r\n}\r\nexports.EventListBase = EventListBase;\r\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ChartView.vue?vue&type=style&index=0&id=6d48161a&scoped=true&lang=scss&\"","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.PromiseSubscription = void 0;\r\n/**\r\n * Subscription implementation for events with promises.\r\n *\r\n * @export\r\n * @class PromiseSubscription\r\n * @implements {ISubscription}\r\n * @template TEventHandler The type of event handler.\r\n */\r\nclass PromiseSubscription {\r\n /**\r\n * Creates an instance of PromiseSubscription.\r\n * @param {TEventHandler} handler The handler for the subscription.\r\n * @param {boolean} isOnce Indicates if the handler should only be executed once.\r\n *\r\n * @memberOf PromiseSubscription\r\n */\r\n constructor(handler, isOnce) {\r\n this.handler = handler;\r\n this.isOnce = isOnce;\r\n /**\r\n * Indicates if the subscription has been executed before.\r\n *\r\n * @memberOf PromiseSubscription\r\n */\r\n this.isExecuted = false;\r\n }\r\n /**\r\n * Executes the handler.\r\n *\r\n * @param {boolean} executeAsync True if the even should be executed async.\r\n * @param {*} scope The scope the scope of the event.\r\n * @param {IArguments} args The arguments for the event.\r\n *\r\n * @memberOf PromiseSubscription\r\n */\r\n async execute(executeAsync, scope, args) {\r\n if (!this.isOnce || !this.isExecuted) {\r\n this.isExecuted = true;\r\n //TODO: do we need to cast to any -- seems yuck\r\n var fn = this.handler;\r\n if (executeAsync) {\r\n setTimeout(() => {\r\n fn.apply(scope, args);\r\n }, 1);\r\n return;\r\n }\r\n let result = fn.apply(scope, args);\r\n await result;\r\n }\r\n }\r\n}\r\nexports.PromiseSubscription = PromiseSubscription;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SubscriptionChangeEventDispatcher = void 0;\r\nconst __1 = require(\"..\");\r\n/**\r\n * Dispatcher for subscription changes.\r\n *\r\n * @export\r\n * @class SubscriptionChangeEventDispatcher\r\n * @extends {DispatcherBase}\r\n */\r\nclass SubscriptionChangeEventDispatcher extends __1.DispatcherBase {\r\n /**\r\n * Dispatches the event.\r\n *\r\n * @param {number} count The currrent number of subscriptions.\r\n *\r\n * @memberOf SubscriptionChangeEventDispatcher\r\n */\r\n dispatch(count) {\r\n this._dispatch(false, this, arguments);\r\n }\r\n}\r\nexports.SubscriptionChangeEventDispatcher = SubscriptionChangeEventDispatcher;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.PromiseDispatcherBase = void 0;\r\nconst __1 = require(\"..\");\r\n/**\r\n * Dispatcher base for dispatchers that use promises. Each promise\r\n * is awaited before the next is dispatched, unless the event is\r\n * dispatched with the executeAsync flag.\r\n *\r\n * @export\r\n * @abstract\r\n * @class PromiseDispatcherBase\r\n * @extends {DispatcherBase}\r\n * @template TEventHandler The type of event handler.\r\n */\r\nclass PromiseDispatcherBase extends __1.DispatcherBase {\r\n /**\r\n * The normal dispatch cannot be used in this class.\r\n *\r\n * @protected\r\n * @param {boolean} executeAsync `True` if the even should be executed async.\r\n * @param {*} scope The scope of the event. The scope becomes the `this` for handler.\r\n * @param {IArguments} args The arguments for the event.\r\n * @returns {(IPropagationStatus | null)} The propagation status, or if an `executeAsync` is used `null`.\r\n *\r\n * @memberOf DispatcherBase\r\n */\r\n _dispatch(executeAsync, scope, args) {\r\n throw new __1.DispatchError(\"_dispatch not supported. Use _dispatchAsPromise.\");\r\n }\r\n /**\r\n * Crates a new subscription.\r\n *\r\n * @protected\r\n * @param {TEventHandler} handler The handler.\r\n * @param {boolean} isOnce Indicates if the handler should only run once.\r\n * @returns {ISubscription} The subscription.\r\n *\r\n * @memberOf PromiseDispatcherBase\r\n */\r\n createSubscription(handler, isOnce) {\r\n return new __1.PromiseSubscription(handler, isOnce);\r\n }\r\n /**\r\n * Generic dispatch will dispatch the handlers with the given arguments.\r\n *\r\n * @protected\r\n * @param {boolean} executeAsync `True` if the even should be executed async.\r\n * @param {*} scope The scope of the event. The scope becomes the `this` for handler.\r\n * @param {IArguments} args The arguments for the event.\r\n * @returns {(IPropagationStatus | null)} The propagation status, or if an `executeAsync` is used `null`.\r\n *\r\n * @memberOf DispatcherBase\r\n */\r\n async _dispatchAsPromise(executeAsync, scope, args) {\r\n //execute on a copy because of bug #9\r\n for (let sub of [...this._subscriptions]) {\r\n let ev = new __1.EventManagement(() => this.unsub(sub.handler));\r\n let nargs = Array.prototype.slice.call(args);\r\n nargs.push(ev);\r\n let ps = sub;\r\n await ps.execute(executeAsync, scope, nargs);\r\n //cleanup subs that are no longer needed\r\n this.cleanup(sub);\r\n if (!executeAsync && ev.propagationStopped) {\r\n return { propagationStopped: true };\r\n }\r\n }\r\n if (executeAsync) {\r\n return null;\r\n }\r\n return { propagationStopped: false };\r\n }\r\n}\r\nexports.PromiseDispatcherBase = PromiseDispatcherBase;\r\n","/*\n Highstock JS v9.3.3 (2022-02-01)\n\n Highcharts Stock as a plugin for Highcharts\n\n (c) 2010-2021 Torstein Honsi\n\n License: www.highcharts.com/license\n*/\n'use strict';(function(a){\"object\"===typeof module&&module.exports?(a[\"default\"]=a,module.exports=a):\"function\"===typeof define&&define.amd?define(\"highcharts/modules/stock\",[\"highcharts\"],function(L){a(L);a.Highcharts=L;return a}):a(\"undefined\"!==typeof Highcharts?Highcharts:void 0)})(function(a){function L(a,r,y,t){a.hasOwnProperty(r)||(a[r]=t.apply(null,y))}a=a?a._modules:{};L(a,\"Core/Axis/OrdinalAxis.js\",[a[\"Core/Axis/Axis.js\"],a[\"Core/Globals.js\"],a[\"Core/Series/Series.js\"],a[\"Core/Utilities.js\"]],\nfunction(a,r,y,t){var l=t.addEvent,D=t.correctFloat,E=t.css,x=t.defined,b=t.error,m=t.pick,d=t.timeUnits,z=[],h;(function(h){function G(f,e,c,n,p,g,v){void 0===p&&(p=[]);void 0===g&&(g=0);var w={},Q=this.options.tickPixelInterval,O=this.chart.time,B=[],H,A,k=0,u=[],h=-Number.MAX_VALUE;if(!this.options.ordinal&&!this.options.breaks||!p||3>p.length||\"undefined\"===typeof e)return O.getTimeTicks.apply(O,arguments);var m=p.length;for(H=0;Hc;p[H]\n5*g||F){if(p[H]>h){for(A=O.getTimeTicks(f,p[k],p[H],n);A.length&&A[0]<=h;)A.shift();A.length&&(h=A[A.length-1]);B.push(u.length);u=u.concat(A)}k=H+1}if(F)break}if(A){A=A.info;if(v&&A.unitRange<=d.hour){H=u.length-1;for(k=1;kc?A-1:A;for(H=void 0;q--;)B=O[q],A=Math.abs(H-B),H&&A<.8*Q&&(null===k||A<.8*k)?(w[u[q]]&&!w[u[q+1]]?(A=q+1,H=B):A=q,u.splice(A,1)):H=B}return u}function I(f){var e=this.ordinal.positions;if(!e)return f;var c=e.length-1;if(0>f)f=e[0];else if(f>c)f=e[c];else{c=Math.floor(f);var n=f-c}return\"undefined\"!==typeof n&&\"undefined\"!==typeof e[c]?e[c]+(n?n*(e[c+1]-e[c]):0):f}function C(f){var e=this.ordinal,c=e.positions;if(!c)return f;var n=(f-(this.old?\nthis.old.min:this.min))*(this.old?this.old.transA:this.transA)+this.minPixelPadding;0f?n+p*f:c+p*(f-e)}return f}function q(f,e){var c=h.Additions.findIndexOf(f,e,!0);return f[c]===\ne?c:c+(e-f[c])/(f[c+1]-f[c])}function K(){this.ordinal||(this.ordinal=new h.Additions(this))}function a(){this.isXAxis&&x(this.options.overscroll)&&this.max===this.dataMax&&(!this.chart.mouseIsDown||this.isInternal)&&(!this.eventArgs||this.eventArgs&&\"navigator\"!==this.eventArgs.trigger)&&(this.max+=this.options.overscroll,!this.isInternal&&x(this.userMin)&&(this.min+=this.options.overscroll))}function F(){this.horiz&&!this.isDirty&&(this.isDirty=this.isOrdinal&&this.chart.navigator&&!this.chart.navigator.adaptToUpdatedData)}\nfunction N(){this.ordinal&&(this.ordinal.beforeSetTickPositions(),this.tickInterval=this.ordinal.postProcessTickInterval(this.tickInterval))}function u(f){var e=this.xAxis[0],c=e.options.overscroll,n=f.originalEvent.chartX,p=this.options.chart.panning,g=!1;if(p&&\"y\"!==p.type&&e.options.ordinal&&e.series.length){var v=this.mouseDownX,w=e.getExtremes(),Q=w.dataMax,O=w.min,B=w.max,H=this.hoverPoints,A=e.closestPointRange||e.ordinal&&e.ordinal.overscrollPointsRange;v=(v-n)/(e.translationSlope*(e.ordinal.slope||\nA));A={ordinal:{positions:e.ordinal.getExtendedPositions()}};var k=e.index2val,u=e.val2lin,d=void 0,h=d=void 0,q=void 0;A.ordinal.positions?1v?(h=A,q=e.ordinal.positions?e:A):(h=e.ordinal.positions?e:A,q=A),d=q.ordinal.positions,Q>d[d.length-1]&&d.push(Q),this.fixedRange=B-O,d=e.navigatorAxis.toFixedRange(void 0,void 0,k.apply(h,[u.apply(h,[O,!0])+v]),k.apply(q,[u.apply(q,[B,!0])+v])),d.min>=Math.min(w.dataMin,O)&&d.max<=Math.max(Q,B)+c&&e.setExtremes(d.min,\nd.max,!0,!1,{trigger:\"pan\"}),this.mouseDownX=n,E(this.container,{cursor:\"move\"})):g=!0}else g=!0;g||p&&/y/.test(p.type)?c&&(e.max=e.dataMax+c):f.preventDefault()}function M(){var f=this.xAxis;f&&f.options.ordinal&&(delete f.ordinal.index,delete f.ordinal.extendedOrdinalPositions)}function k(f,e){var c=this.ordinal,n=c.positions,p=c.slope,g=c.extendedOrdinalPositions;if(!n)return f;var v=n.length;if(n[0]<=f&&n[v-1]>=f)f=q(n,f);else{g||(g=c.getExtendedPositions&&c.getExtendedPositions(),c.extendedOrdinalPositions=\ng);if(!g||!g.length)return f;v=g.length;p||(p=(g[v-1]-g[0])/v);n=q(g,n[0]);f>=g[0]&&f<=g[v-1]?f=q(g,f)-n:fd||g-B[B.length-1]>d)&&(A=!0)}else e.options.overscroll&&(2===k?H=B[1]-B[0]:1===k?(H=e.options.overscroll,B=[B[0],B[0]+H]):H=c.overscrollPointsRange);A||e.forceOrdinal?(e.options.overscroll&&(c.overscrollPointsRange=H,B=B.concat(c.getOverscrollPositions())),\nc.positions=B,d=e.ordinal2lin(Math.max(p,B[0]),!0),O=Math.max(e.ordinal2lin(Math.min(g,B[B.length-1]),!0),1),c.slope=g=(g-p)/(O-d),c.offset=p-d*g):(c.overscrollPointsRange=m(e.closestPointRange,c.overscrollPointsRange),c.positions=e.ordinal.slope=c.offset=void 0)}e.isOrdinal=n&&A;c.groupIntervalFactor=null};f.findIndexOf=function(e,c,n){for(var p=0,g=e.length-1,v;p=(this.xAxis.min||0)){this.dataModify.compareValue=w;break}}}}function u(e,c){this.setModifier(\"compare\",e,c)}function M(e,c){e=K(e,!1);this.options.cumulative=this.userOptions.cumulative=e;this.update({},K(c,!0));this.dataModify?this.dataModify.initCumulative():this.points.forEach(function(c){delete c.cumulativeSum})}function k(e,c){this.setModifier(\"cumulative\",e,c)}var J=[];I.compose=function(e,c,n){if(-1===J.indexOf(e)){J.push(e);\nvar p=e.prototype;p.setCompare=F;p.setCumulative=M;D(e,\"afterInit\",a);D(e,\"afterGetExtremes\",G);D(e,\"afterProcessData\",N)}-1===J.indexOf(c)&&(J.push(c),c=c.prototype,c.setCompare=u,c.setModifier=C,c.setCumulative=k);-1===J.indexOf(n)&&(J.push(n),n.prototype.tooltipFormatter=q);return e};var f=function(){function e(c){this.series=c}e.prototype.modifyValue=function(){return 0};e.getCumulativeExtremes=function(c){var e=Infinity,p=-Infinity;c.reduce(function(g,c){c=g+c;e=Math.min(e,c,g);p=Math.max(p,\nc,g);return c});return[e,p]};e.prototype.initCompare=function(c){this.modifyValue=function(e,p){null===e&&(e=0);var g=this.compareValue;return\"undefined\"!==typeof e&&\"undefined\"!==typeof g?(e=\"value\"===c?e-g:e/g*100-(100===this.series.options.compareBase?0:100),\"undefined\"!==typeof p&&(p=this.series.points[p])&&(p.change=e),e):0}};e.prototype.initCumulative=function(){this.modifyValue=function(c,e){null===c&&(c=0);if(void 0!==c&&void 0!==e){var p=0g.to||b>\ng.from&&eg.from&&eg.from&&e>g.to&&eh&&q>=this.basePointRange&&(h=q),b=void 0;k--;)b&&!1!==b.visible||(b=d[k+1]),q=d[k],!1!==b.visible&&!1!==q.visible&&(b.x-q.x>h&&(b=(q.x+b.x)/2,\nd.splice(k+1,0,{isNull:!0,x:b}),u.stacking&&this.options.stacking&&(b=u.stacking.stacks[this.stackKey][b]=new a(u,u.options.stackLabels,!1,b,this.stack),b.total=0)),b=q);return this.getGraphPath(d)}var R=[];m.compose=function(m,a){-1===R.indexOf(m)&&(R.push(m),m.keepProps.push(\"brokenAxis\"),y(m,\"init\",K),y(m,\"afterInit\",d),y(m,\"afterSetTickPositions\",h),y(m,\"afterSetOptions\",b));if(-1===R.indexOf(a)){R.push(a);var u=a.prototype;u.drawBreaks=C;u.gappedPath=q;y(a,\"afterGeneratePoints\",G);y(a,\"afterRender\",\nI)}return m};var S=function(){function d(d){this.hasBreaks=!1;this.axis=d}d.isInBreak=function(d,b){var q=d.repeat||Infinity,k=d.from,h=d.to-d.from;b=b>=k?(b-k)%q:q-(k-b)%q;return d.inclusive?b<=h:b=b)break;else k.to=b)break;else if(d.isInBreak(m,b)){h-=b-m.from;break}}return h};d.prototype.findBreakAt=function(d,b){return t(b,function(b){return b.fromv;)B-=g;for(;B=c[0]);C++);for(C;C<=B;C++){for(;\"undefined\"!==typeof c[a+1]&&f[C]>=c[a+1]||C===B;){var z=c[a];p.dataGroupInfo={start:u?I:p.cropStart+I,length:A[0].length};var l=n.apply(p,A);p.pointClass&&!G(p.dataGroupInfo.options)&&(p.dataGroupInfo.options=R(p.pointClass.prototype.optionsToObject.call({series:p},p.options.data[p.cropStart+I])),m.forEach(function(g){delete p.dataGroupInfo.options[g]}));\"undefined\"!==typeof l&&(w.push(z),d.push(l),b.push(p.dataGroupInfo));I=C;for(z=0;z=e[0]){a=this.groupMap[0].start;\nz=this.groupMap[0].length;var K=void 0;q(a)&&q(z)&&(K=a+(z-1));e[0]={middle:e[0]+.5*A,end:e[0]+A,firstPoint:this.xData[0],lastPoint:K&&this.xData[K]}[C]}m&&\"start\"!==m&&A&&e[u]>=k-A&&(k=this.groupMap[this.groupMap.length-1].start,e[u]={middle:e[u]+.5*A,end:e[u]+A,firstPoint:k&&this.xData[k],lastPoint:this.xData[this.xData.length-1]}[m])}for(k=1;kw.max){if(!G(w.options.max)&&q(w.dataMax)&&w.max>=w.dataMax||w.max===w.dataMax)w.max=Math.max(p[p.length-1],w.max);w.dataMax=Math.max(p[p.length-1],w.dataMax)}}c.groupAll&&(this.allGroupedData=b,c=this.cropData(n,b,w.min,w.max,1),n=c.xData,\nb=c.yData,this.cropStart=c.start);this.processedXData=n;this.processedYData=b}else this.groupMap=null;this.hasGroupedData=g;this.currentDataGrouping=k;this.preventGraphAnimation=(v&&v.totalRange)!==(k&&k.totalRange)}};d.destroyGroupedData=function(){this.groupedData&&(this.groupedData.forEach(function(f,e){f&&(this.groupedData[e]=f.destroy?f.destroy():null)},this),this.groupedData.length=0)};d.generatePoints=function(){u.apply(this);this.destroyGroupedData();this.groupedData=this.hasGroupedData?this.points:\nnull};a.prototype.applyGrouping=function(f){var e=this;e.series.forEach(function(c){c.groupPixelWidth=void 0;c.groupPixelWidth=e.getGroupPixelWidth&&e.getGroupPixelWidth();c.groupPixelWidth&&(c.hasProcessed=!0);c.applyGrouping(!!f.hasExtemesChanged)})};a.prototype.getGroupPixelWidth=function(){var f=this.series,e=f.length,c,n=0,p=!1,g;for(c=e;c--;)(g=f[c].options.dataGrouping)&&(n=Math.max(n,S(g.groupPixelWidth,M.groupPixelWidth)));for(c=e;c--;)if(g=f[c].options.dataGrouping)if(e=(f[c].processedXData||\nf[c].data).length,f[c].groupPixelWidth||e>this.chart.plotSizeX/n||e&&g.forced)p=!0;return p?n:0};a.prototype.setDataGrouping=function(f,e){var c;e=S(e,!0);f||(f={forced:!1,units:null});if(this instanceof a)for(c=this.series.length;c--;)this.series[c].update({dataGrouping:f},!1);else this.chart.options.series.forEach(function(c){c.dataGrouping=f},!1);this.ordinal&&(this.ordinal.slope=void 0);e&&this.chart.redraw()};y(a,\"postProcessData\",a.prototype.applyGrouping);y(l,\"update\",function(){if(this.dataGroup)return I(24,\n!1,this.series.chart),!1});y(E,\"headerFormatter\",function(f){var e=this.chart,c=e.time,n=f.labelConfig,p=n.series,g=p.tooltipOptions,v=p.options.dataGrouping,w=g.xDateFormat,d=p.xAxis,b=g[f.isFooter?\"footerFormat\":\"headerFormat\"];if(d&&\"datetime\"===d.options.type&&v&&q(n.key)){var k=p.currentDataGrouping;v=v.dateTimeLabelFormats||M.dateTimeLabelFormats;if(k)if(g=v[k.unitName],1===k.count)w=g[0];else{w=g[1];var h=g[2]}else!w&&v&&d.dateTime&&(w=d.dateTime.getXDateFormat(n.x,g.dateTimeLabelFormats));\nw=c.dateFormat(w,n.key);h&&(w+=c.dateFormat(h,n.key+k.totalRange-1));p.chart.styledMode&&(b=this.styledModeFormat(b));f.text=m(b,{point:C(n.point,{key:w}),series:p},e);f.preventDefault()}});y(D,\"destroy\",d.destroyGroupedData);y(D,\"afterSetOptions\",function(f){f=f.options;var e=this.type,c=this.chart.options.plotOptions,n=x.defaultOptions.plotOptions[e].dataGrouping,p=this.useCommonDataGrouping&&M;if(c&&(k[e]||p)){n||(n=R(M,k[e]));var g=this.chart.rangeSelector;f.dataGrouping=R(p,n,c.series&&c.series.dataGrouping,\nc[e].dataGrouping,this.userOptions.dataGrouping,!f.isInternal&&g&&q(g.selected)&&g.buttonOptions[g.selected].dataGrouping)}});y(a,\"afterSetScale\",function(){this.series.forEach(function(f){f.hasProcessed=!1})});t.dataGrouping=P;\"\";return P});L(a,\"Series/HLC/HLCPoint.js\",[a[\"Core/Series/SeriesRegistry.js\"]],function(a){var r=this&&this.__extends||function(){var a=function(t,l){a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(a,l){a.__proto__=l}||function(a,l){for(var x in l)l.hasOwnProperty(x)&&\n(a[x]=l[x])};return a(t,l)};return function(t,l){function D(){this.constructor=t}a(t,l);t.prototype=null===l?Object.create(l):(D.prototype=l.prototype,new D)}}();return function(a){function t(){var l=null!==a&&a.apply(this,arguments)||this;l.close=void 0;l.high=void 0;l.low=void 0;l.options=void 0;l.plotClose=void 0;l.series=void 0;return l}r(t,a);return t}(a.seriesTypes.column.prototype.pointClass)});L(a,\"Series/HLC/HLCSeries.js\",[a[\"Series/HLC/HLCPoint.js\"],a[\"Core/Series/SeriesRegistry.js\"],a[\"Core/Utilities.js\"]],\nfunction(a,r,y){var t=this&&this.__extends||function(){var a=function(b,m){a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(d,b){d.__proto__=b}||function(d,b){for(var h in b)b.hasOwnProperty(h)&&(d[h]=b[h])};return a(b,m)};return function(b,m){function d(){this.constructor=b}a(b,m);b.prototype=null===m?Object.create(m):(d.prototype=m.prototype,new d)}}(),l=r.seriesTypes.column,D=y.extend,E=y.merge;y=function(a){function b(){var b=null!==a&&a.apply(this,arguments)||this;b.data=void 0;\nb.options=void 0;b.points=void 0;b.yData=void 0;return b}t(b,a);b.prototype.extendStem=function(b,d,a){var h=b[0];b=b[1];\"number\"===typeof h[2]&&(h[2]=Math.max(a+d,h[2]));\"number\"===typeof b[2]&&(b[2]=Math.min(a-d,b[2]))};b.prototype.getPointPath=function(b,d){d=d.strokeWidth();var a=b.series,h=d%2/2,m=Math.round(b.plotX)-h,G=Math.round(b.shapeArgs.width/2);var I=[[\"M\",m,Math.round(b.yBottom)],[\"L\",m,Math.round(b.plotHigh)]];null!==b.close&&(b=Math.round(b.plotClose)+h,I.push([\"M\",m,b],[\"L\",m+G,b]),\na.extendStem(I,d/2,b));return I};b.prototype.drawSinglePoint=function(b){var d=b.series,a=d.chart,h=b.graphic,m=!h;\"undefined\"!==typeof b.plotY&&(h||(b.graphic=h=a.renderer.path().add(d.group)),a.styledMode||h.attr(d.pointAttribs(b,b.selected&&\"select\")),d=d.getPointPath(b,h),h[m?\"attr\":\"animate\"]({d:d}).addClass(b.getClassName(),!0))};b.prototype.drawPoints=function(){this.points.forEach(this.drawSinglePoint)};b.prototype.init=function(){a.prototype.init.apply(this,arguments);this.options.stacking=\nvoid 0};b.prototype.pointAttribs=function(b,d){b=a.prototype.pointAttribs.call(this,b,d);delete b.fill;return b};b.prototype.toYData=function(b){return[b.high,b.low,b.close]};b.prototype.translate=function(){var b=this,d=b.yAxis,z=this.pointArrayMap&&this.pointArrayMap.slice()||[],h=z.map(function(b){return\"plot\"+(b.charAt(0).toUpperCase()+b.slice(1))});h.push(\"yBottom\");z.push(\"low\");a.prototype.translate.apply(b);b.points.forEach(function(a){z.forEach(function(m,I){m=a[m];null!==m&&(b.dataModify&&\n(m=b.dataModify.modifyValue(m)),a[h[I]]=d.toPixels(m,!0))});a.tooltipPos[1]=a.plotHigh+d.pos-b.chart.plotTop})};b.defaultOptions=E(l.defaultOptions,{lineWidth:1,tooltip:{pointFormat:'\\u25cf {series.name}
High: {point.high}
Low: {point.low}
Close: {point.close}
'},threshold:null,states:{hover:{lineWidth:3}},stickyTracking:!0});return b}(l);D(y.prototype,{animate:null,directTouch:!1,pointArrayMap:[\"high\",\"low\",\"close\"],pointAttrToOptions:{stroke:\"color\",\n\"stroke-width\":\"lineWidth\"},pointValKey:\"close\"});y.prototype.pointClass=a;r.registerSeriesType(\"hlc\",y);\"\";return y});L(a,\"Series/OHLC/OHLCPoint.js\",[a[\"Core/Series/SeriesRegistry.js\"]],function(a){var r=this&&this.__extends||function(){var a=function(t,l){a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(a,l){a.__proto__=l}||function(a,l){for(var t in l)l.hasOwnProperty(t)&&(a[t]=l[t])};return a(t,l)};return function(t,l){function D(){this.constructor=t}a(t,l);t.prototype=null===\nl?Object.create(l):(D.prototype=l.prototype,new D)}}();return function(a){function t(){var l=null!==a&&a.apply(this,arguments)||this;l.open=void 0;l.options=void 0;l.plotOpen=void 0;l.series=void 0;return l}r(t,a);t.prototype.getClassName=function(){return a.prototype.getClassName.call(this)+(this.open\\u25cf {series.name}
Open: {point.open}
High: {point.high}
Low: {point.low}
Close: {point.close}
'}});return a}(D);x(m.prototype,{pointArrayMap:[\"open\",\"high\",\"low\",\"close\"]});m.prototype.pointClass=a;r.registerSeriesType(\"ohlc\",m);E(l,\"init\",function(b){b=\nb.options;b.useOhlcData&&\"highcharts-navigator-series\"!==b.id&&x(this,{pointValKey:m.prototype.pointValKey,pointArrayMap:m.prototype.pointArrayMap,toYData:m.prototype.toYData})});E(l,\"afterSetOptions\",function(b){b=b.options;var a=b.dataGrouping;a&&b.useOhlcData&&\"highcharts-navigator-series\"!==b.id&&(a.approximation=\"ohlc\")});\"\";return m});L(a,\"Series/Candlestick/CandlestickSeries.js\",[a[\"Core/DefaultOptions.js\"],a[\"Core/Series/SeriesRegistry.js\"],a[\"Core/Utilities.js\"]],function(a,r,y){var t=this&&\nthis.__extends||function(){var b=function(a,d){b=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(b,a){b.__proto__=a}||function(b,a){for(var d in a)a.hasOwnProperty(d)&&(b[d]=a[d])};return b(a,d)};return function(a,d){function m(){this.constructor=a}b(a,d);a.prototype=null===d?Object.create(d):(m.prototype=d.prototype,new m)}}(),l=a.defaultOptions;a=r.seriesTypes;var D=a.column,E=a.ohlc,x=y.merge;y=function(b){function a(){var a=null!==b&&b.apply(this,arguments)||this;a.data=void 0;\na.options=void 0;a.points=void 0;return a}t(a,b);a.prototype.pointAttribs=function(b,a){var d=D.prototype.pointAttribs.call(this,b,a),m=this.options,l=b.opend)break}}}m.forEach(function(c,g){c.plotX+=k;if(\"undefined\"===typeof c.plotY||z)0<=c.plotX&&\nc.plotX<=F.len?z?(c.plotY=F.translate(c.x,0,1,0,1),c.plotX=D(c.y)?x.translate(c.y,0,0,0,1):0):c.plotY=(F.opposite?0:b.yAxis.len)+F.offset:c.shapeArgs={};if((u=m[g-1])&&u.plotX===c.plotX){\"undefined\"===typeof u.stackIndex&&(u.stackIndex=0);var v=u.stackIndex+1}c.stackIndex=v});this.onSeries=C}var z=[];b.compose=function(b){if(-1===z.indexOf(b)){z.push(b);var h=b.prototype;h.getPlotBox=a;h.translate=d}return b};b.getPlotBox=a;b.translate=d})(x||(x={}));return x});L(a,\"Series/Flags/FlagsSymbols.js\",\n[a[\"Core/Renderer/RendererRegistry.js\"],a[\"Core/Renderer/SVG/SVGRenderer.js\"]],function(a,r){function y(a){t[a+\"pin\"]=function(l,r,x,b,m){var d=m&&m.anchorX;m=m&&m.anchorY;\"circle\"===a&&b>x&&(l-=Math.round((b-x)/2),x=b);var z=t[a](l,r,x,b);if(d&&m){var h=d;\"circle\"===a?h=l+x/2:(l=z[0],x=z[1],\"M\"===l[0]&&\"L\"===x[0]&&(h=(l[1]+x[1])/2));z.push([\"M\",h,r>m?r:r+b],[\"L\",d,m]);z=z.concat(t.circle(d-1,m-1,2,2))}return z}}var t=r.prototype.symbols;t.flag=function(a,r,y,x,b){var m=b&&b.anchorX||a;b=b&&b.anchorY||\nr;var d=t.circle(m-1,b-1,2,2);d.push([\"M\",m,b],[\"L\",a,r+x],[\"L\",a,r],[\"L\",a+y,r],[\"L\",a+y,r+x],[\"L\",a,r+x],[\"Z\"]);return d};y(\"circle\");y(\"square\");a=a.getRendererType();a!==r&&(a.prototype.symbols.circlepin=t.circlepin,a.prototype.symbols.flag=t.flag,a.prototype.symbols.squarepin=t.squarepin);return t});L(a,\"Series/Flags/FlagsSeries.js\",[a[\"Series/Flags/FlagsPoint.js\"],a[\"Core/Globals.js\"],a[\"Series/OnSeriesComposition.js\"],a[\"Core/Renderer/RendererUtilities.js\"],a[\"Core/Series/SeriesRegistry.js\"],\na[\"Core/Renderer/SVG/SVGElement.js\"],a[\"Core/Utilities.js\"]],function(a,r,y,t,l,D,E){var x=this&&this.__extends||function(){var b=function(a,d){b=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(b,a){b.__proto__=a}||function(b,a){for(var d in a)a.hasOwnProperty(d)&&(b[d]=a[d])};return b(a,d)};return function(a,d){function q(){this.constructor=a}b(a,d);a.prototype=null===d?Object.create(d):(q.prototype=d.prototype,new q)}}();r=r.noop;var b=t.distribute,m=l.series,d=l.seriesTypes.column,\nz=E.addEvent,h=E.defined;t=E.extend;var K=E.merge,G=E.objectEach,I=E.wrap;E=function(a){function q(){var b=null!==a&&a.apply(this,arguments)||this;b.data=void 0;b.options=void 0;b.points=void 0;return b}x(q,a);q.prototype.animate=function(b){b&&this.setClip()};q.prototype.drawPoints=function(){var a=this.points,d=this.chart,q=d.renderer,m=d.inverted,u=this.options,l=u.y,k,C=this.yAxis,f={},e=[];for(k=a.length;k--;){var c=a[k];var n=(m?c.plotY:c.plotX)>this.xAxis.len;var p=c.plotX;var g=c.stackIndex;\nvar v=c.options.shape||u.shape;var w=c.plotY;\"undefined\"!==typeof w&&(w=c.plotY+l-(\"undefined\"!==typeof g&&g*u.stackDistance));c.anchorX=g?void 0:c.plotX;var Q=g?void 0:c.plotY;var O=\"flag\"!==v;g=c.graphic;\"undefined\"!==typeof w&&0<=p&&!n?(g&&c.hasNewShapeType()&&(g=g.destroy()),g||(g=c.graphic=q.label(\"\",null,null,v,null,null,u.useHTML).addClass(\"highcharts-point\").add(this.markerGroup),c.graphic.div&&(c.graphic.div.point=c),g.isNew=!0),g.attr({align:O?\"center\":\"left\",width:u.width,height:u.height,\n\"text-align\":u.textAlign}),d.styledMode||g.attr(this.pointAttribs(c)).css(K(u.style,c.style)).shadow(u.shadow),0this.calculatedWidth?b.minWidth:0;return{chartX:(a.chartX-this.x-this.xOffset)/(this.barWidth-b),chartY:(a.chartY-this.y-this.yOffset)/(this.barWidth-b)}};a.prototype.destroy=function(){var a=this,b=a.chart.scroller;a.removeEvents();[\"track\",\"scrollbarRifles\",\"scrollbar\",\"scrollbarGroup\",\"group\"].forEach(function(b){a[b]&&a[b].destroy&&(a[b]=a[b].destroy())});b&&a===b.scrollbar&&(b.scrollbar=null,m(b.scrollbarButtons))};\na.prototype.drawScrollbarButton=function(b){var d=this.renderer,q=this.scrollbarButtons,h=this.options,l=this.size,m=d.g().add(this.group);q.push(m);m=d.rect().addClass(\"highcharts-scrollbar-button\").add(m);this.chart.styledMode||m.attr({stroke:h.buttonBorderColor,\"stroke-width\":h.buttonBorderWidth,fill:h.buttonBackgroundColor});m.attr(m.crisp({x:-.5,y:-.5,width:l+1,height:l+1,r:h.buttonBorderRadius},m.strokeWidth()));m=d.path(a.swapXY([[\"M\",l/2+(b?-1:1),l/2-3],[\"L\",l/2+(b?-1:1),l/2+3],[\"L\",l/2+(b?\n2:-2),l/2]],h.vertical)).addClass(\"highcharts-scrollbar-arrow\").add(q[b]);this.chart.styledMode||m.attr({fill:h.buttonArrowColor})};a.prototype.init=function(a,b,d){this.scrollbarButtons=[];this.renderer=a;this.userOptions=b;this.options=z(t,D.scrollbar,b);this.chart=d;this.size=h(this.options.size,this.options.height);b.enabled&&(this.render(),this.addEvents())};a.prototype.mouseDownHandler=function(a){a=this.chart.pointer.normalize(a);a=this.cursorToScrollbarPosition(a);this.chartX=a.chartX;this.chartY=\na.chartY;this.initPositions=[this.from,this.to];this.grabbedCenter=!0};a.prototype.mouseMoveHandler=function(a){var b=this.chart.pointer.normalize(a),q=this.options.vertical?\"chartY\":\"chartX\",h=this.initPositions||[];!this.grabbedCenter||a.touches&&0===a.touches[0][q]||(b=this.cursorToScrollbarPosition(b)[q],q=this[q],q=b-q,this.hasDragged=!0,this.updatePosition(h[0]+q,h[1]+q),this.hasDragged&&d(this,\"changed\",{from:this.from,to:this.to,trigger:\"scrollbar\",DOMType:a.type,DOMEvent:a}))};a.prototype.mouseUpHandler=\nfunction(a){this.hasDragged&&d(this,\"changed\",{from:this.from,to:this.to,trigger:\"scrollbar\",DOMType:a.type,DOMEvent:a});this.grabbedCenter=this.hasDragged=this.chartX=this.chartY=null};a.prototype.position=function(a,b,d,h){var q=this.options.vertical,l=this.rendered?\"animate\":\"attr\",m=0;this.x=a;this.y=b+this.trackBorderWidth;this.width=d;this.xOffset=this.height=h;this.yOffset=m;q?(this.width=this.yOffset=d=m=this.size,this.xOffset=b=0,this.barWidth=h-2*d,this.x=a+=this.options.margin):(this.height=\nthis.xOffset=h=b=this.size,this.barWidth=d-2*h,this.y+=this.options.margin);this.group[l]({translateX:a,translateY:this.y});this.track[l]({width:d,height:h});this.scrollbarButtons[1][l]({translateX:q?0:d-b,translateY:q?h-m:0})};a.prototype.removeEvents=function(){this._events.forEach(function(a){K.apply(null,a)});this._events.length=0};a.prototype.render=function(){var b=this.renderer,d=this.options,h=this.size,l=this.chart.styledMode,m=b.g(\"scrollbar\").attr({zIndex:d.zIndex,translateY:-99999}).add();\nthis.group=m;this.track=b.rect().addClass(\"highcharts-scrollbar-track\").attr({x:0,r:d.trackBorderRadius||0,height:h,width:h}).add(m);l||this.track.attr({fill:d.trackBackgroundColor,stroke:d.trackBorderColor,\"stroke-width\":d.trackBorderWidth});this.trackBorderWidth=this.track.strokeWidth();this.track.attr({y:-this.trackBorderWidth%2/2});this.scrollbarGroup=b.g().add(m);this.scrollbar=b.rect().addClass(\"highcharts-scrollbar-thumb\").attr({height:h,width:h,r:d.barBorderRadius||0}).add(this.scrollbarGroup);\nthis.scrollbarRifles=b.path(a.swapXY([[\"M\",-3,h/4],[\"L\",-3,2*h/3],[\"M\",0,h/4],[\"L\",0,2*h/3],[\"M\",3,h/4],[\"L\",3,2*h/3]],d.vertical)).addClass(\"highcharts-scrollbar-rifles\").add(this.scrollbarGroup);l||(this.scrollbar.attr({fill:d.barBackgroundColor,stroke:d.barBorderColor,\"stroke-width\":d.barBorderWidth}),this.scrollbarRifles.attr({stroke:d.rifleColor,\"stroke-width\":1}));this.scrollbarStrokeWidth=this.scrollbar.strokeWidth();this.scrollbarGroup.translate(-this.scrollbarStrokeWidth%2/2,-this.scrollbarStrokeWidth%\n2/2);this.drawScrollbarButton(0);this.drawScrollbarButton(1)};a.prototype.setRange=function(a,d){var h=this.options,l=h.vertical,m=h.minWidth,t=this.barWidth,r=!this.rendered||this.hasDragged||this.chart.navigator&&this.chart.navigator.hasDragged?\"attr\":\"animate\";if(b(t)){var u=t*Math.min(d,1);a=Math.max(a,0);var z=Math.ceil(t*a);this.calculatedWidth=u=x(u-z);u=u?this.scrollbarRifles.hide():this.scrollbarRifles.show(!0);!1===h.showFull&&(0>=a&&1<=d?this.group.hide():this.group.show());this.rendered=!0}};a.prototype.shouldUpdateExtremes=function(a){return h(this.options.liveRedraw,r.svg&&!r.isTouchDevice&&!this.chart.isBoosting)||\n\"mouseup\"===a||\"touchend\"===a||!b(a)};a.prototype.trackClick=function(a){var b=this.chart.pointer.normalize(a),h=this.to-this.from,m=this.y+this.scrollbarTop,l=this.x+this.scrollbarLeft;this.options.vertical&&b.chartY>m||!this.options.vertical&&b.chartX>l?this.updatePosition(this.from+h,this.to+h):this.updatePosition(this.from-h,this.to-h);d(this,\"changed\",{from:this.from,to:this.to,trigger:\"scrollbar\",DOMEvent:a})};a.prototype.update=function(a){this.destroy();this.init(this.chart.renderer,z(!0,\nthis.options,a),this.chart)};a.prototype.updatePosition=function(a,b){1a&&(b=x(b-a),a=0);this.from=a;this.to=b};a.defaultOptions=t;return a}();D.scrollbar=z(!0,a.defaultOptions,D.scrollbar);return a});L(a,\"Core/Axis/NavigatorAxis.js\",[a[\"Core/Globals.js\"],a[\"Core/Utilities.js\"]],function(a,r){var y=a.isTouchDevice,t=r.addEvent,l=r.correctFloat,D=r.defined,E=r.isNumber,x=r.pick,b=function(){function a(a){this.axis=a}a.prototype.destroy=function(){this.axis=void 0};a.prototype.toFixedRange=\nfunction(a,b,h,m){var d=this.axis,t=d.chart;t=t&&t.fixedRange;var r=(d.pointRange||0)/2;a=x(h,d.translate(a,!0,!d.horiz));b=x(m,d.translate(b,!0,!d.horiz));d=t&&(b-a)/t;D(h)||(a=l(a+r));D(m)||(b=l(b-r));.7d&&(m?a=b-t:b=a+t);E(a)&&E(b)||(a=b=void 0);return{min:a,max:b}};return a}();return function(){function a(){}a.compose=function(a){a.keepProps.push(\"navigatorAxis\");t(a,\"init\",function(){this.navigatorAxis||(this.navigatorAxis=new b(this))});t(a,\"zoom\",function(a){var b=this.chart.options,\nd=b.navigator,l=this.navigatorAxis,m=b.chart.pinchType,t=b.rangeSelector;b=b.chart.zoomType;this.isXAxis&&(d&&d.enabled||t&&t.enabled)&&(\"y\"===b?a.zoomed=!1:(!y&&\"xy\"===b||y&&\"xy\"===m)&&this.options.range&&(d=l.previousZoom,D(a.newMin)?l.previousZoom=[this.min,this.max]:d&&(a.newMin=d[0],a.newMax=d[1],l.previousZoom=void 0)));\"undefined\"!==typeof a.zoomed&&a.preventDefault()})};a.AdditionsClass=b;return a}()});L(a,\"Core/Navigator.js\",[a[\"Core/Axis/Axis.js\"],a[\"Core/Chart/Chart.js\"],a[\"Core/Color/Color.js\"],\na[\"Core/Globals.js\"],a[\"Core/Axis/NavigatorAxis.js\"],a[\"Core/DefaultOptions.js\"],a[\"Core/Renderer/RendererRegistry.js\"],a[\"Core/Scrollbar.js\"],a[\"Core/Series/Series.js\"],a[\"Core/Series/SeriesRegistry.js\"],a[\"Core/Utilities.js\"]],function(a,r,y,t,l,D,E,x,b,m,d){y=y.parse;var z=t.hasTouch,h=t.isTouchDevice,K=D.defaultOptions,G=d.addEvent,I=d.clamp,C=d.correctFloat,q=d.defined,L=d.destroyObjectProperties,P=d.erase,F=d.extend,N=d.find,u=d.isArray,M=d.isNumber,k=d.merge,J=d.pick,f=d.removeEvent,e=d.splat,\nc=function(a){for(var g=[],c=1;cu&&(this.grabbedLeft?b=p.toPixels(c-u-n,!0):this.grabbedRight&&(e=p.toPixels(a+u+n,!0)));this.zoomedMax=I(Math.max(b,e),0,k);this.zoomedMin=I(this.fixedWidth?this.zoomedMax-this.fixedWidth:Math.min(b,e),0,k);this.range=this.zoomedMax-this.zoomedMin;k=Math.round(this.zoomedMax);b=Math.round(this.zoomedMin);f&&(this.navigatorGroup.attr({visibility:\"visible\"}),h=h&&!this.hasDragged?\"animate\":\"attr\",\nthis.drawMasks(b,k,l,h),this.drawOutline(b,k,l,h),this.navigatorOptions.handles.enabled&&(this.drawHandle(b,0,l,h),this.drawHandle(k,1,l,h)));this.scrollbar&&(l?(l=this.top-v,w=this.left-v+(f||!w.opposite?0:(w.titleOffset||0)+w.axisTitleMargin),v=d+2*v):(l=this.top+(f?this.height:-v),w=this.left-v),this.scrollbar.position(w,l,g,v),this.scrollbar.setRange(this.zoomedMin/(d||1),this.zoomedMax/(d||1)));this.rendered=!0}};b.prototype.addMouseEvents=function(){var a=this,c=a.chart,b=c.container,e=[],d,\np;a.mouseMoveHandler=d=function(c){a.onMouseMove(c)};a.mouseUpHandler=p=function(c){a.onMouseUp(c)};e=a.getPartsEvents(\"mousedown\");e.push(G(c.renderTo,\"mousemove\",d),G(b.ownerDocument,\"mouseup\",p));z&&(e.push(G(c.renderTo,\"touchmove\",d),G(b.ownerDocument,\"touchend\",p)),e.concat(a.getPartsEvents(\"touchstart\")));a.eventsToUnbind=e;a.series&&a.series[0]&&e.push(G(a.series[0].xAxis,\"foundExtremes\",function(){c.navigator.modifyNavigatorAxisExtremes()}))};b.prototype.getPartsEvents=function(a){var c=this,\ng=[];[\"shades\",\"handles\"].forEach(function(b){c[b].forEach(function(e,v){g.push(G(e.element,a,function(a){c[b+\"Mousedown\"](a,v)}))})});return g};b.prototype.shadesMousedown=function(a,c){a=this.chart.pointer.normalize(a);var b=this.chart,g=this.xAxis,e=this.zoomedMin,v=this.left,d=this.size,p=this.range,n=a.chartX;b.inverted&&(n=a.chartY,v=this.top);if(1===c)this.grabbedCenter=n,this.fixedWidth=p,this.dragOffset=n-e;else{a=n-v-p/2;if(0===c)a=Math.max(0,a);else if(2===c&&a+p>=d)if(a=d-p,this.reversedExtremes){a-=\np;var f=this.getUnionExtremes().dataMin}else var k=this.getUnionExtremes().dataMax;a!==e&&(this.fixedWidth=p,c=g.navigatorAxis.toFixedRange(a,a+p,f,k),q(c.min)&&b.xAxis[0].setExtremes(Math.min(c.min,c.max),Math.max(c.min,c.max),!0,null,{trigger:\"navigator\"}))}};b.prototype.handlesMousedown=function(a,c){this.chart.pointer.normalize(a);a=this.chart;var b=a.xAxis[0],g=this.reversedExtremes;0===c?(this.grabbedLeft=!0,this.otherHandlePos=this.zoomedMax,this.fixedExtreme=g?b.min:b.max):(this.grabbedRight=\n!0,this.otherHandlePos=this.zoomedMin,this.fixedExtreme=g?b.max:b.min);a.fixedRange=null};b.prototype.onMouseMove=function(a){var c=this,b=c.chart,g=c.left,e=c.navigatorSize,d=c.range,p=c.dragOffset,n=b.inverted;a.touches&&0===a.touches[0].pageX||(a=b.pointer.normalize(a),b=a.chartX,n&&(g=c.top,b=a.chartY),c.grabbedLeft?(c.hasDragged=!0,c.render(0,0,b-g,c.otherHandlePos)):c.grabbedRight?(c.hasDragged=!0,c.render(0,0,c.otherHandlePos,b-g)):c.grabbedCenter&&(c.hasDragged=!0,be+p-d&&(b=e+p-\nd),c.render(0,0,b-p,b-p+d)),c.hasDragged&&c.scrollbar&&J(c.scrollbar.options.liveRedraw,t.svg&&!h&&!this.chart.isBoosting)&&(a.DOMType=a.type,setTimeout(function(){c.onMouseUp(a)},0)))};b.prototype.onMouseUp=function(a){var c=this.chart,b=this.xAxis,g=this.scrollbar,e=a.DOMEvent||a,d=c.inverted,p=this.rendered&&!this.hasDragged?\"animate\":\"attr\";if(this.hasDragged&&(!g||!g.hasDragged)||\"scrollbar\"===a.trigger){g=this.getUnionExtremes();if(this.zoomedMin===this.otherHandlePos)var n=this.fixedExtreme;\nelse if(this.zoomedMax===this.otherHandlePos)var f=this.fixedExtreme;this.zoomedMax===this.size&&(f=this.reversedExtremes?g.dataMin:g.dataMax);0===this.zoomedMin&&(n=this.reversedExtremes?g.dataMax:g.dataMin);b=b.navigatorAxis.toFixedRange(this.zoomedMin,this.zoomedMax,n,f);q(b.min)&&c.xAxis[0].setExtremes(Math.min(b.min,b.max),Math.max(b.min,b.max),!0,this.hasDragged?!1:null,{trigger:\"navigator\",triggerOp:\"navigator-drag\",DOMEvent:e})}\"mousemove\"!==a.DOMType&&\"touchmove\"!==a.DOMType&&(this.grabbedLeft=\nthis.grabbedRight=this.grabbedCenter=this.fixedWidth=this.fixedExtreme=this.otherHandlePos=this.hasDragged=this.dragOffset=null);this.navigatorEnabled&&M(this.zoomedMin)&&M(this.zoomedMax)&&(c=Math.round(this.zoomedMin),a=Math.round(this.zoomedMax),this.shades&&this.drawMasks(c,a,d,p),this.outline&&this.drawOutline(c,a,d,p),this.navigatorOptions.handles.enabled&&Object.keys(this.handles).length===this.handles.length&&(this.drawHandle(c,0,d,p),this.drawHandle(a,1,d,p)))};b.prototype.removeEvents=function(){this.eventsToUnbind&&\n(this.eventsToUnbind.forEach(function(a){a()}),this.eventsToUnbind=void 0);this.removeBaseSeriesEvents()};b.prototype.removeBaseSeriesEvents=function(){var a=this.baseSeries||[];this.navigatorEnabled&&a[0]&&(!1!==this.navigatorOptions.adaptToUpdatedData&&a.forEach(function(a){f(a,\"updatedData\",this.updatedDataHandler)},this),a[0].xAxis&&f(a[0].xAxis,\"foundExtremes\",this.modifyBaseAxisExtremes))};b.prototype.init=function(b){var g=b.options,e=g.navigator,d=e.enabled,p=g.scrollbar,n=p.enabled;g=d?e.height:\n0;var f=n?p.height:0;this.handles=[];this.shades=[];this.chart=b;this.setBaseSeries();this.height=g;this.scrollbarHeight=f;this.scrollbarEnabled=n;this.navigatorEnabled=d;this.navigatorOptions=e;this.scrollbarOptions=p;this.outlineHeight=g+f;this.opposite=J(e.opposite,!(d||!b.inverted));var h=this;d=h.baseSeries;p=b.xAxis.length;n=b.yAxis.length;var m=d&&d[0]&&d[0].xAxis||b.xAxis[0]||{options:{}};b.isDirtyBox=!0;h.navigatorEnabled?(h.xAxis=new a(b,k({breaks:m.options.breaks,ordinal:m.options.ordinal},\ne.xAxis,{id:\"navigator-x-axis\",yAxis:\"navigator-y-axis\",isX:!0,type:\"datetime\",index:p,isInternal:!0,offset:0,keepOrdinalPadding:!0,startOnTick:!1,endOnTick:!1,minPadding:0,maxPadding:0,zoomEnabled:!1},b.inverted?{offsets:[f,0,-f,0],width:g}:{offsets:[0,-f,0,f],height:g})),h.yAxis=new a(b,k(e.yAxis,{id:\"navigator-y-axis\",alignTicks:!1,offset:0,index:n,isInternal:!0,reversed:J(e.yAxis&&e.yAxis.reversed,b.yAxis[0]&&b.yAxis[0].reversed,!1),zoomEnabled:!1},b.inverted?{width:g}:{height:g})),d||e.series.data?\nh.updateNavigatorSeries(!1):0===b.series.length&&(h.unbindRedraw=G(b,\"beforeRedraw\",function(){0d.indexOf(c)?(c&&(f(c,\"updatedData\",b.updatedDataHandler),delete c.navigatorSeries),a.chart&&a.destroy(),!1):!0});d&&d.length&&d.forEach(function(a){var f=a.navigatorSeries,w=F({color:a.color,visible:a.visible},u(v)?K.navigator.series:v);f&&!1===b.navigatorOptions.adaptToUpdatedData||(l.name=\"Navigator \"+d.length,p=a.options||\n{},h=p.navigatorOptions||{},w.dataLabels=e(w.dataLabels),n=k(p,l,w,h),n.pointRange=J(w.pointRange,h.pointRange,K.plotOptions[n.type||\"line\"].pointRange),w=h.data||w.data,b.hasNavigatorData=b.hasNavigatorData||!!w,n.data=w||p.data&&p.data.slice(0),f&&f.options?f.update(n,c):(a.navigatorSeries=g.initSeries(n),a.navigatorSeries.baseSeries=a,m.push(a.navigatorSeries)))});if(v.data&&(!d||!d.length)||u(v))b.hasNavigatorData=!1,v=e(v),v.forEach(function(a,c){l.name=\"Navigator \"+(m.length+1);n=k(K.navigator.series,\n{color:g.series[c]&&!g.series[c].options.isInternal&&g.series[c].color||g.options.colors[c]||g.options.colors[0]},l,a);n.data=a.data;n.data&&(b.hasNavigatorData=!0,m.push(g.initSeries(n)))});a&&this.addBaseSeriesEvents()};b.prototype.addBaseSeriesEvents=function(){var a=this,c=a.baseSeries||[];c[0]&&c[0].xAxis&&c[0].eventsToUnbind.push(G(c[0].xAxis,\"foundExtremes\",this.modifyBaseAxisExtremes));c.forEach(function(c){c.eventsToUnbind.push(G(c,\"show\",function(){this.navigatorSeries&&this.navigatorSeries.setVisible(!0,\n!1)}));c.eventsToUnbind.push(G(c,\"hide\",function(){this.navigatorSeries&&this.navigatorSeries.setVisible(!1,!1)}));!1!==this.navigatorOptions.adaptToUpdatedData&&c.xAxis&&c.eventsToUnbind.push(G(c,\"updatedData\",this.updatedDataHandler));c.eventsToUnbind.push(G(c,\"remove\",function(){this.navigatorSeries&&(P(a.series,this.navigatorSeries),q(this.navigatorSeries.options)&&this.navigatorSeries.remove(!1),delete this.navigatorSeries)}))},this)};b.prototype.getBaseSeriesMin=function(a){return this.baseSeries.reduce(function(a,\nc){return Math.min(a,c.xData?c.xData[0]:a)},a)};b.prototype.modifyNavigatorAxisExtremes=function(){var a=this.xAxis,c;\"undefined\"!==typeof a.getExtremes&&(!(c=this.getUnionExtremes(!0))||c.dataMin===a.min&&c.dataMax===a.max||(a.min=c.dataMin,a.max=c.dataMax))};b.prototype.modifyBaseAxisExtremes=function(){var a=this.chart.navigator,c=this.getExtremes(),b=c.dataMin,e=c.dataMax;c=c.max-c.min;var d=a.stickToMin,p=a.stickToMax,n=J(this.options.overscroll,0),f=a.series&&a.series[0],k=!!this.setExtremes;\nif(!this.eventArgs||\"rangeSelectorButton\"!==this.eventArgs.trigger){if(d){var h=b;var l=h+c}p&&(l=e+n,d||(h=Math.max(b,l-c,a.getBaseSeriesMin(f&&f.xData?f.xData[0]:-Number.MAX_VALUE))));k&&(d||p)&&M(h)&&(this.min=this.userMin=h,this.max=this.userMax=l)}a.stickToMin=a.stickToMax=null};b.prototype.updatedDataHandler=function(){var a=this.chart.navigator,c=this.navigatorSeries;a.stickToMax=a.reversedExtremes?0===Math.round(a.zoomedMin):Math.round(a.zoomedMax)>=Math.round(a.size);a.stickToMin=a.shouldStickToMin(this,\na);c&&!a.hasNavigatorData&&(c.options.pointStart=this.xData[0],c.setData(this.options.data,!1,null,!1))};b.prototype.shouldStickToMin=function(a,c){c=c.getBaseSeriesMin(a.xData[0]);var b=a.xAxis;a=b.max;var g=b.min;b=b.options.range;return M(a)&&M(g)?b&&0l-h,A=n=864E5*{month:28,year:365}[p]*k-q&&d-36E5<=864E5*{month:31,year:366}[p]*k+q?n=!0:\"ytd\"===p?(n=u-m+q===d,H=!c):\"all\"===p&&(n=g.max-g.min>=l-h,z=!c&&r&&n);p=\n!x&&(B||A||z||f);k=c&&n||n&&!r&&!H||c&&a.frozenStates;p?w=3:k&&(r=!0,w=2);v.state!==w&&(v.setState(w),e&&(e.options[b+1].disabled=p,2===w&&(e.selectedIndex=b+1)),0===w&&t===b&&a.setSelected())})};e.prototype.computeButtonRange=function(a){var c=a.type,b=a.count||1,e={millisecond:1,second:1E3,minute:6E4,hour:36E5,day:864E5,week:6048E5};if(e[c])a._range=e[c]*b;else if(\"month\"===c||\"year\"===c)a._range=864E5*{month:30,year:365}[c]*b;a._offsetMin=N(a.offsetMin,0);a._offsetMax=N(a.offsetMax,0);a._range+=\na._offsetMax-a._offsetMin};e.prototype.getInputValue=function(a){a=\"min\"===a?this.minInput:this.maxInput;var c=this.chart.options.rangeSelector,b=this.chart.time;return a?(\"text\"===a.type&&c.inputDateParser||this.defaultInputDateParser)(a.value,b.useUTC,b):0};e.prototype.setInputValue=function(a,b){var c=this.options,e=this.chart.time,d=\"min\"===a?this.minInput:this.maxInput;a=\"min\"===a?this.minDateBox:this.maxDateBox;if(d){var n=d.getAttribute(\"data-hc-time\");n=z(n)?Number(n):void 0;z(b)&&(z(n)&&\nd.setAttribute(\"data-hc-time-previous\",n),d.setAttribute(\"data-hc-time\",b),n=b);d.value=e.dateFormat(this.inputTypeFormats[d.type]||c.inputEditDateFormat,n);a&&a.attr({text:e.dateFormat(c.inputDateFormat,n)})}};e.prototype.setInputExtremes=function(a,b,e){if(a=\"min\"===a?this.minInput:this.maxInput){var c=this.inputTypeFormats[a.type],d=this.chart.time;c&&(b=d.dateFormat(c,b),a.min!==b&&(a.min=b),e=d.dateFormat(c,e),a.max!==e&&(a.max=e))}};e.prototype.showInput=function(a){var b=\"min\"===a?this.minDateBox:\nthis.maxDateBox;if((a=\"min\"===a?this.minInput:this.maxInput)&&b&&this.inputGroup){var c=\"text\"===a.type,e=this.inputGroup,f=e.translateX;e=e.translateY;var k=this.options.inputBoxWidth;d(a,{width:c?b.width+(k?-2:20)+\"px\":\"auto\",height:c?b.height-2+\"px\":\"auto\",border:\"2px solid silver\"});c&&k?d(a,{left:f+b.x+\"px\",top:e+\"px\"}):d(a,{left:Math.min(Math.round(b.x+f-(a.offsetWidth-b.width)/2),this.chart.chartWidth-a.offsetWidth)+\"px\",top:e-(a.offsetHeight-b.height)/2+\"px\"})}};e.prototype.hideInput=function(a){(a=\n\"min\"===a?this.minInput:this.maxInput)&&d(a,{top:\"-9999em\",border:0,width:\"1px\",height:\"1px\"})};e.prototype.defaultInputDateParser=function(a,b,e){var c=a.split(\"/\").join(\"-\").split(\" \").join(\"T\");-1===c.indexOf(\"T\")&&(c+=\"T00:00\");if(b)c+=\"Z\";else{var d;if(d=y.isSafari)d=c,d=!(6=d?\"+\"+F(-d)+\":00\":\"-\"+F(d)+\":00\")}c=Date.parse(c);q(c)||(a=a.split(\"-\"),c=Date.UTC(u(a[0]),u(a[1])-\n1,u(a[2])));e&&b&&q(c)&&(c+=e.getTimezoneOffset(c));return c};e.prototype.drawInput=function(a){function b(){var b=k.getInputValue(a),e=c.xAxis[0],d=c.scroller&&c.scroller.xAxis?c.scroller.xAxis:e,g=d.dataMin;d=d.dataMax;var f=k.maxInput,n=k.minInput;b!==Number(r.getAttribute(\"data-hc-time-previous\"))&&q(b)&&(r.setAttribute(\"data-hc-time-previous\",b),t&&f&&q(g)?b>Number(f.getAttribute(\"data-hc-time\"))?b=void 0:bd&&(b=d)),\"undefined\"!==\ntypeof b&&e.setExtremes(t?b:e.min,t?e.max:b,void 0,void 0,{trigger:\"rangeSelectorInput\"}))}var c=this.chart,e=this.div,f=this.inputGroup,k=this,h=c.renderer.style||{},l=c.renderer,u=c.options.rangeSelector,t=\"min\"===a,A=x.lang[t?\"rangeSelectorFrom\":\"rangeSelectorTo\"]||\"\";A=l.label(A,0).addClass(\"highcharts-range-label\").attr({padding:A?2:0,height:A?u.inputBoxHeight:0}).add(f);l=l.label(\"\",0).addClass(\"highcharts-range-input\").attr({padding:2,width:u.inputBoxWidth,height:u.inputBoxHeight,\"text-align\":\"center\"}).on(\"click\",\nfunction(){k.showInput(a);k[a+\"Input\"].focus()});c.styledMode||l.attr({stroke:u.inputBoxBorderColor,\"stroke-width\":1});l.add(f);var r=m(\"input\",{name:a,className:\"highcharts-range-selector\"},void 0,e);r.setAttribute(\"type\",E(u.inputDateFormat||\"%b %e, %Y\"));c.styledMode||(A.css(P(h,u.labelStyle)),l.css(P({color:\"#333333\"},h,u.inputStyle)),d(r,G({position:\"absolute\",border:0,boxShadow:\"0 0 15px rgba(0,0,0,0.3)\",width:\"1px\",height:\"1px\",padding:0,textAlign:\"center\",fontSize:h.fontSize,fontFamily:h.fontFamily,\ntop:\"-9999em\"},u.inputStyle)));r.onfocus=function(){k.showInput(a)};r.onblur=function(){r===y.doc.activeElement&&b();k.hideInput(a);k.setInputValue(a);r.blur()};var z=!1;r.onchange=function(){z||(b(),k.hideInput(a),r.blur())};r.onkeypress=function(a){13===a.keyCode&&b()};r.onkeydown=function(a){z=!0;38!==a.keyCode&&40!==a.keyCode||b()};r.onkeyup=function(){z=!1};return{dateBox:l,input:r,label:A}};e.prototype.getPosition=function(){var a=this.chart,b=a.options.rangeSelector;a=\"top\"===b.verticalAlign?\na.plotTop-a.axisOffset[0]:0;return{buttonTop:a+b.buttonPosition.y,inputTop:a+b.inputPosition.y-10}};e.prototype.getYTDExtremes=function(a,b,e){var c=this.chart.time,d=new c.Date(a),f=c.get(\"FullYear\",d);e=e?c.Date.UTC(f,0,1):+new c.Date(f,0,1);b=Math.max(b,e);d=d.getTime();return{max:Math.min(a||d,d),min:b}};e.prototype.render=function(a,b){var c=this.chart,e=c.renderer,d=c.container,f=c.options,n=f.rangeSelector,k=N(f.chart.style&&f.chart.style.zIndex,0)+1;f=n.inputEnabled;if(!1!==n.enabled){this.rendered||\n(this.group=e.g(\"range-selector-group\").attr({zIndex:7}).add(),this.div=m(\"div\",void 0,{position:\"relative\",height:0,zIndex:k}),this.buttonOptions.length&&this.renderButtons(),d.parentNode&&d.parentNode.insertBefore(this.div,d),f&&(this.inputGroup=e.g(\"input-group\").add(this.group),e=this.drawInput(\"min\"),this.minDateBox=e.dateBox,this.minLabel=e.label,this.minInput=e.input,e=this.drawInput(\"max\"),this.maxDateBox=e.dateBox,this.maxLabel=e.label,this.maxInput=e.input));if(f&&(this.setInputValue(\"min\",\na),this.setInputValue(\"max\",b),a=c.scroller&&c.scroller.getUnionExtremes()||c.xAxis[0]||{},z(a.dataMin)&&z(a.dataMax)&&(c=c.xAxis[0].minRange||0,this.setInputExtremes(\"min\",a.dataMin,Math.min(a.dataMax,this.getInputValue(\"max\"))-c),this.setInputExtremes(\"max\",Math.max(a.dataMin,this.getInputValue(\"min\"))+c,a.dataMax)),this.inputGroup)){var h=0;[this.minLabel,this.minDateBox,this.maxLabel,this.maxDateBox].forEach(function(a){if(a){var b=a.getBBox().width;b&&(a.attr({x:h}),h+=b+n.inputSpacing)}})}this.alignElements();\nthis.rendered=!0}};e.prototype.renderButtons=function(){var a=this,e=this.buttons,d=this.options,g=x.lang,f=this.chart.renderer,k=P(d.buttonTheme),h=k&&k.states,l=k.width||28;delete k.width;delete k.states;this.buttonGroup=f.g(\"range-selector-buttons\").add(this.group);var q=this.dropdown=m(\"select\",void 0,{position:\"absolute\",width:\"1px\",height:\"1px\",padding:0,border:0,top:\"-9999em\",cursor:\"pointer\",opacity:.0001},this.div);b(q,\"touchstart\",function(){q.style.fontSize=\"16px\"});[[y.isMS?\"mouseover\":\n\"mouseenter\"],[y.isMS?\"mouseout\":\"mouseleave\"],[\"change\",\"click\"]].forEach(function(c){var d=c[0],g=c[1];b(q,d,function(){var b=e[a.currentButtonIndex()];b&&C(b.element,g||d)})});this.zoomText=f.label(g&&g.rangeSelectorZoom||\"\",0).attr({padding:d.buttonTheme.padding,height:d.buttonTheme.height,paddingLeft:0,paddingRight:0}).add(this.buttonGroup);this.chart.styledMode||(this.zoomText.css(d.labelStyle),k[\"stroke-width\"]=N(k[\"stroke-width\"],0));m(\"option\",{textContent:this.zoomText.textStr,disabled:!0},\nvoid 0,q);this.buttonOptions.forEach(function(b,c){m(\"option\",{textContent:b.title||b.text},void 0,q);e[c]=f.button(b.text,0,0,function(e){var d=b.events&&b.events.click,g;d&&(g=d.call(b,e));!1!==g&&a.clickButton(c);a.isActive=!0},k,h&&h.hover,h&&h.select,h&&h.disabled).attr({\"text-align\":\"center\",width:l}).add(a.buttonGroup);b.title&&e[c].attr(\"title\",b.title)})};e.prototype.alignElements=function(){var a=this,b=this.buttonGroup,e=this.buttons,d=this.chart,f=this.group,k=this.inputGroup,h=this.options,\nl=this.zoomText,m=d.options,q=m.exporting&&!1!==m.exporting.enabled&&m.navigation&&m.navigation.buttonOptions;m=h.buttonPosition;var u=h.inputPosition,t=h.verticalAlign,r=function(b,c){return q&&a.titleCollision(d)&&\"top\"===t&&\"right\"===c.align&&c.y-b.getBBox().height-12<(q.y||0)+(q.height||0)+d.spacing[0]?-40:0},x=d.plotLeft;if(f&&m&&u){var z=m.x-d.spacing[3];if(b){this.positionButtons();if(!this.initialButtonGroupWidth){var y=0;l&&(y+=l.getBBox().width+5);e.forEach(function(a,b){y+=a.width;b!==\ne.length-1&&(y+=h.buttonSpacing)});this.initialButtonGroupWidth=y}x-=d.spacing[3];this.updateButtonStates();l=r(b,m);this.alignButtonGroup(l);f.placed=b.placed=d.hasLoaded}b=0;k&&(b=r(k,u),\"left\"===u.align?z=x:\"right\"===u.align&&(z=-Math.max(d.axisOffset[1],-b)),k.align({y:u.y,width:k.getBBox().width,align:u.align,x:u.x+z-2},!0,d.spacingBox),k.placed=d.hasLoaded);this.handleCollision(b);f.align({verticalAlign:t},!0,d.spacingBox);k=f.alignAttr.translateY;b=f.getBBox().height+20;r=0;\"bottom\"===t&&(r=\n(r=d.legend&&d.legend.options)&&\"bottom\"===r.verticalAlign&&r.enabled&&!r.floating?d.legend.legendHeight+N(r.margin,10):0,b=b+r-20,r=k-b-(h.floating?0:h.y)-(d.titleOffset?d.titleOffset[2]:0)-10);if(\"top\"===t)h.floating&&(r=0),d.titleOffset&&d.titleOffset[0]&&(r=d.titleOffset[0]),r+=d.margin[0]-d.spacing[0]||0;else if(\"middle\"===t)if(u.y===m.y)r=k;else if(u.y||m.y)r=0>u.y||0>m.y?r-Math.min(u.y,m.y):k-b;f.translate(h.x,h.y+Math.floor(r));m=this.minInput;u=this.maxInput;k=this.dropdown;h.inputEnabled&&\nm&&u&&(m.style.marginTop=f.translateY+\"px\",u.style.marginTop=f.translateY+\"px\");k&&(k.style.marginTop=f.translateY+\"px\")}};e.prototype.alignButtonGroup=function(a,b){var c=this.chart,e=this.buttonGroup,d=this.options.buttonPosition,f=c.plotLeft-c.spacing[3],k=d.x-c.spacing[3];\"right\"===d.align?k+=a-f:\"center\"===d.align&&(k-=f/2);e&&e.align({y:d.y,width:N(b,this.initialButtonGroupWidth),align:d.align,x:k},!0,c.spacingBox)};e.prototype.positionButtons=function(){var a=this.buttons,b=this.chart,e=this.options,\nd=this.zoomText,f=b.hasLoaded?\"animate\":\"attr\",k=e.buttonPosition,h=b.plotLeft,l=h;d&&\"hidden\"!==d.visibility&&(d[f]({x:N(h+k.x,h)}),l+=k.x+d.getBBox().width+5);this.buttonOptions.forEach(function(b,c){if(\"hidden\"!==a[c].visibility)a[c][f]({x:l}),l+=a[c].width+e.buttonSpacing;else a[c][f]({x:h})})};e.prototype.handleCollision=function(a){var b=this,c=this.chart,e=this.buttonGroup,d=this.inputGroup,f=this.options,k=f.buttonPosition,h=f.dropdown,l=f.inputPosition;f=function(){var a=0;b.buttons.forEach(function(b){b=\nb.getBBox();b.width>a&&(a=b.width)});return a};var m=function(b){if(d&&e){var c=d.alignAttr.translateX+d.alignOptions.x-a+d.getBBox().x+2,f=d.alignOptions.width,g=e.alignAttr.translateX+e.getBBox().x;return g+b>c&&c+f>g&&k.y=-a?0:-a),translateY:d.alignAttr.translateY+e.getBBox().height+10})};if(e){if(\"always\"===h){this.collapseButtons(a);m(f())&&u();return}\"never\"===h&&this.expandButtons()}d&&\ne?l.align===k.align||m(this.initialButtonGroupWidth+20)?\"responsive\"===h?(this.collapseButtons(a),m(f())&&u()):u():\"responsive\"===h&&this.expandButtons():e&&\"responsive\"===h&&(this.initialButtonGroupWidth>c.plotWidth?this.collapseButtons(a):this.expandButtons())};e.prototype.collapseButtons=function(a){var b=this.buttons,c=this.buttonOptions,e=this.chart,d=this.dropdown,f=this.options,k=this.zoomText,h=e.userOptions.rangeSelector&&e.userOptions.rangeSelector.buttonTheme||{},l=function(a){return{text:a?\na+\" \\u25be\":\"\\u25be\",width:\"auto\",paddingLeft:N(f.buttonTheme.paddingLeft,h.padding,8),paddingRight:N(f.buttonTheme.paddingRight,h.padding,8)}};k&&k.hide();var m=!1;c.forEach(function(a,c){c=b[c];2!==c.state?c.hide():(c.show(),c.attr(l(a.text)),m=!0)});m||(d&&(d.selectedIndex=0),b[0].show(),b[0].attr(l(this.zoomText&&this.zoomText.textStr)));c=f.buttonPosition.align;this.positionButtons();\"right\"!==c&&\"center\"!==c||this.alignButtonGroup(a,b[this.currentButtonIndex()].getBBox().width);this.showDropdown()};\ne.prototype.expandButtons=function(){var a=this.buttons,b=this.buttonOptions,e=this.options,d=this.zoomText;this.hideDropdown();d&&d.show();b.forEach(function(b,c){c=a[c];c.show();c.attr({text:b.text,width:e.buttonTheme.width||28,paddingLeft:N(e.buttonTheme.paddingLeft,\"unset\"),paddingRight:N(e.buttonTheme.paddingRight,\"unset\")});2>c.state&&c.setState(0)});this.positionButtons()};e.prototype.currentButtonIndex=function(){var a=this.dropdown;return a&&0f&&0>d||0c+d.width)&&(y?p=m=K(p,c,c+d.width):b=!0);b||r.push([\"M\",p,g],[\"L\",m,t])}):E.forEach(function(a){var b;p=a.pos;m=p+a.len;g=t=Math.round(l+d.height-I);\"pass\"!==y&&(gl+d.height)&&(y?g=t=K(g,l,l+d.height):b=!0);b||r.push([\"M\",p,g],[\"L\",m,t])}));a.path=0C&&r=d&&(y=-(m.translateX+e.width-\nd));m.attr({x:f+y,y:g,anchorX:c?f:this.opposite?0:h.chartWidth,anchorY:c?this.opposite?h.chartHeight:0:g+e.height/2})}});D.prototype.forceCropping=function(){var a=this.chart,b=this.options.dataGrouping;return!1!==this.allowDG&&b&&F(b.enabled,a.options.isStock)};a(y,\"update\",function(a){a=a.options;\"scrollbar\"in a&&this.navigator&&(P(!0,this.options.scrollbar,a.scrollbar),this.navigator.update({},!1),delete a.scrollbar)});return x});L(a,\"masters/modules/stock.src.js\",[a[\"Core/Globals.js\"],a[\"Core/Axis/OrdinalAxis.js\"],\na[\"Series/DataModifyComposition.js\"],a[\"Core/Scrollbar.js\"],a[\"Core/Chart/StockChart.js\"]],function(a,r,y,t,l){a.Scrollbar=t;a.StockChart=a.stockChart=l.stockChart;t.compose(a.Axis);r.compose(a.Axis,a.Series,a.Chart);y.compose(a.Series,a.Axis,a.Point)})});\n//# sourceMappingURL=stock.js.map","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SimpleEventHandlingBase = void 0;\r\nconst ste_core_1 = require(\"ste-core\");\r\nconst SimpleEventList_1 = require(\"./SimpleEventList\");\r\n/**\r\n * Extends objects with signal event handling capabilities.\r\n */\r\nclass SimpleEventHandlingBase extends ste_core_1.HandlingBase {\r\n constructor() {\r\n super(new SimpleEventList_1.SimpleEventList());\r\n }\r\n}\r\nexports.SimpleEventHandlingBase = SimpleEventHandlingBase;\r\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DashboardControlDialog.vue?vue&type=style&index=1&id=b19e2c62&scoped=true&lang=scss&\"","!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e(require(\"highcharts\"),require(\"vue\")):\"function\"==typeof define&&define.amd?define([\"highcharts\",\"vue\"],e):\"object\"==typeof exports?exports.HighchartsVue=e(require(\"highcharts\"),require(\"vue\")):t.HighchartsVue=e(t.Highcharts,t.Vue)}(window,function(r,n){return c={},o.m=i=[function(t,e){t.exports=r},function(t,e){t.exports=n},function(t,e,r){\"use strict\";r.r(e),r.d(e,\"Chart\",function(){return l}),r.d(e,\"default\",function(){return h});var e=r(0),c=r.n(e);function n(t,e){return function r(n,o,i){function t(t,e){!c.a.isObject(t,!i)||c.a.isClass(t)||c.a.isDOMElement(t)?n[e]=o[e]:n[e]=r(n[e]||c.a.isArray(t)?[]:{},t,i)}return c.a.isArray(o)?o.forEach(t):c.a.objectEach(o,t),n}({},t,e)}var o=r(1);function i(t){return function(t){if(Array.isArray(t))return a(t)}(t)||function(t){if(\"undefined\"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t[\"@@iterator\"])return Array.from(t)}(t)||function(t,e){if(t){if(\"string\"==typeof t)return a(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return\"Map\"===(r=\"Object\"===r&&t.constructor?t.constructor.name:r)||\"Set\"===r?Array.from(t):\"Arguments\"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?a(t,e):void 0}}(t)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function a(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r',props:{constructorType:{type:String,default:\"chart\"},options:{type:Object,required:!0},callback:Function,updateArgs:{type:Array,default:function(){return[!0,!0]}},highcharts:{type:Object},deepCopyOnUpdate:{type:Boolean,default:!0}},watch:{options:{handler:function(t){var e;(e=this.chart).update.apply(e,[n(t,this.deepCopyOnUpdate)].concat(i(this.updateArgs)))},deep:!0}},mounted:function(){var t=this.highcharts||e;this.options&&t[this.constructorType]?this.chart=t[this.constructorType](this.$refs.chart,n(this.options,!0),this.callback||null):this.options?console.warn(\"'\".concat(this.constructorType,\"' constructor-type is incorrect. Sometimes this error is caused by the fact, that the corresponding module wasn't imported.\")):console.warn('The \"options\" parameter was not passed.')}},t)},l=p(c.a,o.version||r.n(o).a.version);function h(t){var e=1}\r\n * @template TEventHandler The type of event handler.\r\n */\r\nclass DispatcherWrapper {\r\n /**\r\n * Creates an instance of DispatcherWrapper.\r\n * @param {ISubscribable} dispatcher\r\n *\r\n * @memberOf DispatcherWrapper\r\n */\r\n constructor(dispatcher) {\r\n this._subscribe = (fn) => dispatcher.subscribe(fn);\r\n this._unsubscribe = (fn) => dispatcher.unsubscribe(fn);\r\n this._one = (fn) => dispatcher.one(fn);\r\n this._has = (fn) => dispatcher.has(fn);\r\n this._clear = () => dispatcher.clear();\r\n this._count = () => dispatcher.count;\r\n this._onSubscriptionChange = () => dispatcher.onSubscriptionChange;\r\n }\r\n /**\r\n * Triggered when subscriptions are changed (added or removed).\r\n *\r\n * @readonly\r\n * @type {ISubscribable}\r\n * @memberOf DispatcherWrapper\r\n */\r\n get onSubscriptionChange() {\r\n return this._onSubscriptionChange();\r\n }\r\n /**\r\n * Returns the number of subscriptions.\r\n *\r\n * @readonly\r\n * @type {number}\r\n * @memberOf DispatcherWrapper\r\n */\r\n get count() {\r\n return this._count();\r\n }\r\n /**\r\n * Subscribe to the event dispatcher.\r\n *\r\n * @param {TEventHandler} fn The event handler that is called when the event is dispatched.\r\n * @returns {() => void} A function that unsubscribes the event handler from the event.\r\n *\r\n * @memberOf DispatcherWrapper\r\n */\r\n subscribe(fn) {\r\n return this._subscribe(fn);\r\n }\r\n /**\r\n * Subscribe to the event dispatcher.\r\n *\r\n * @param {TEventHandler} fn The event handler that is called when the event is dispatched.\r\n * @returns {() => void} A function that unsubscribes the event handler from the event.\r\n *\r\n * @memberOf DispatcherWrapper\r\n */\r\n sub(fn) {\r\n return this.subscribe(fn);\r\n }\r\n /**\r\n * Unsubscribe from the event dispatcher.\r\n *\r\n * @param {TEventHandler} fn The event handler that is called when the event is dispatched.\r\n *\r\n * @memberOf DispatcherWrapper\r\n */\r\n unsubscribe(fn) {\r\n this._unsubscribe(fn);\r\n }\r\n /**\r\n * Unsubscribe from the event dispatcher.\r\n *\r\n * @param {TEventHandler} fn The event handler that is called when the event is dispatched.\r\n *\r\n * @memberOf DispatcherWrapper\r\n */\r\n unsub(fn) {\r\n this.unsubscribe(fn);\r\n }\r\n /**\r\n * Subscribe once to the event with the specified name.\r\n *\r\n * @returns {() => void} A function that unsubscribes the event handler from the event.\r\n *\r\n * @memberOf DispatcherWrapper\r\n */\r\n one(fn) {\r\n return this._one(fn);\r\n }\r\n /**\r\n * Checks it the event has a subscription for the specified handler.\r\n *\r\n * @param {TEventHandler} fn The event handler that is called when the event is dispatched.\r\n *\r\n * @memberOf DispatcherWrapper\r\n */\r\n has(fn) {\r\n return this._has(fn);\r\n }\r\n /**\r\n * Clears all the subscriptions.\r\n *\r\n * @memberOf DispatcherWrapper\r\n */\r\n clear() {\r\n this._clear();\r\n }\r\n}\r\nexports.DispatcherWrapper = DispatcherWrapper;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.DispatchError = void 0;\r\n/**\r\n * Indicates an error with dispatching.\r\n *\r\n * @export\r\n * @class DispatchError\r\n * @extends {Error}\r\n */\r\nclass DispatchError extends Error {\r\n /**\r\n * Creates an instance of DispatchError.\r\n * @param {string} message The message.\r\n *\r\n * @memberOf DispatchError\r\n */\r\n constructor(message) {\r\n super(message);\r\n }\r\n}\r\nexports.DispatchError = DispatchError;\r\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=54dd3d3b&scoped=true&lang=scss&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=3767a8c0&scoped=true&lang=scss&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"dashboard-outer colorBackground\"},[(_vm.loadingState || _vm.loadingError)?[_c('div',{staticClass:\"dashboard-outer__loading\"},[_c('img',{attrs:{\"src\":require(\"../assets/images/danelec-logos/danelec-connect_negative.svg\"),\"alt\":\"danelec logo\",\"width\":\"200px\"}}),(_vm.loadingState)?_c('div',[_c('LoadingTextWave',{staticClass:\"mb-6\"}),(_vm.loadingTimeout)?_c('span',{staticClass:\"loading-message\",attrs:{\"onClick\":\"window.location.href=window.location.href\"}},[_vm._v(\" Loading is taking unusually long. You can wait, or try to \"),_c('a',{staticClass:\"text-decoration-underline white--text font-weight-bold\"},[_vm._v(\"refresh\")]),_vm._v(\" the page. \")]):_vm._e()],1):_c('span',{staticClass:\"mt-6 loading-message\",attrs:{\"onClick\":\"window.location.href=window.location.href\"}},[_vm._v(\" We apologize. Something went wrong, and the dashboard could not be loaded. \"),_c('a',{staticClass:\"text-decoration-underline white--text font-weight-bold\"},[_vm._v(\"Refresh?\")])])])]:[_c('v-dialog',{attrs:{\"width\":\"500\"},model:{value:(_vm.showRedesignNotification),callback:function ($$v) {_vm.showRedesignNotification=$$v},expression:\"showRedesignNotification\"}},[_c('v-card',[_c('v-toolbar',{attrs:{\"dense\":\"\",\"dark\":\"\",\"color\":\"primary\"}},[_c('v-toolbar-title',[_vm._v(\" Update notice: new front page \")])],1),_c('v-card-text',{staticClass:\"mt-3\"},[_vm._v(\" Danelec Connect has received a new front page. You can still access the old front page by navigating to \\\"Vessel Overview\\\" in the navigation sidebar. \")]),_c('v-card-actions',[_c('v-checkbox',{attrs:{\"label\":\"Do not show again\"},model:{value:(_vm.doNotShowRedesignNotificationAgain),callback:function ($$v) {_vm.doNotShowRedesignNotificationAgain=$$v},expression:\"doNotShowRedesignNotificationAgain\"}}),_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"primary\"},on:{\"click\":function($event){return _vm.redesignNotificationAcknowledged()}}},[_vm._v(\" Ok \")])],1)],1)],1),_c('DashboardControlDialog',{ref:\"dashboardControlDialog\",on:{\"addNewWidget\":_vm.addNewWidget,\"toggleWidgetActive\":_vm.toggleWidgetActive}}),_c('v-banner',{attrs:{\"single-line\":\"\",\"sticky\":\"\"},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('v-btn',{attrs:{\"small\":\"\",\"color\":\"accent\"},on:{\"click\":function($event){_vm.editMode = false}}},[_vm._v(\" Exit edit mode \")])]},proxy:true}]),model:{value:(_vm.editMode),callback:function ($$v) {_vm.editMode=$$v},expression:\"editMode\"}},[_vm._v(\" You are now in edit mode. You can move, resize and deactivate widgets. \")]),_c('dashboard',{staticClass:\"dashboard\",attrs:{\"id\":\"dashboardContainer\"}},[_c('dash-layout',_vm._b({ref:\"dashboardRef\",attrs:{\"id\":_vm.dashboard.id,\"margin\":{x:20, y:20},\"useCssTransforms\":true,\"debug\":false,\"compact\":false,\"breakpoint\":\"lg\",\"breakpointWidth\":400,\"numberOfCols\":30}},'dash-layout',_vm.dashboard,false),[(_vm.activeWidgets.length)?_vm._l((_vm.activeWidgets),function(widget,index){return _c('dash-item',_vm._b({key:widget.id,class:{ 'dash-content-disabled': _vm.editMode, 'scroll-margin-top': true },attrs:{\"draggable\":_vm.editMode,\"resizable\":_vm.editMode},on:{\"moveEnd\":_vm.widgetMovedOrResized,\"resizeEnd\":_vm.widgetMovedOrResized}},'dash-item',_vm.activeWidgets[index],false,true),[_c(widget.type.template,{tag:\"component\",attrs:{\"widgetRef\":widget}}),(_vm.editMode)?_c('div',{staticClass:\"dash-close-container\"},[_c('v-btn',{attrs:{\"color\":\"accent\",\"dark\":\"\",\"fab\":\"\",\"small\":\"\"},on:{\"click\":function($event){return _vm.toggleWidgetActive(widget)}}},[_c('v-icon',[_vm._v(\" mdi-close \")])],1)],1):_vm._e()],1)}):_c('dash-item',_vm._b({attrs:{\"draggable\":_vm.editMode,\"resizable\":_vm.editMode,\"id\":\"startupWidget\",\"width\":_vm.startupWidget.defaultWidth,\"height\":_vm.startupWidget.defaultHeight}},'dash-item',_vm.startupWidget,false,true),[_c(_vm.startupWidget.template,{tag:\"component\"})],1)],2)],1),_c('v-fab-transition',[_c('v-speed-dial',{staticClass:\"fab-button\",attrs:{\"absolute\":\"\",\"bottom\":\"\",\"right\":\"\",\"fixed\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(){return [_c('v-btn',{class:{'fab-button': true, 'fab-button__glow': _vm.isFabInitial},attrs:{\"color\":\"accent\",\"fab\":\"\",\"disabled\":!_vm.isPersonalDashboard},on:{\"click\":function($event){_vm.isFabClicked = true}},model:{value:(_vm.fabOpen),callback:function ($$v) {_vm.fabOpen=$$v},expression:\"fabOpen\"}},[(_vm.fabOpen)?_c('v-icon',[_vm._v(\" mdi-close \")]):_c('v-icon',[_vm._v(\" mdi-pencil \")])],1)]},proxy:true}])},[_vm._l((_vm.fabContent),function(item){return [(item.active && _vm.isPersonalDashboard)?_c('v-tooltip',{key:item.title,attrs:{\"disabled\":!item.disabled,\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('div',_vm._g({staticClass:\"d-inline-block\"},on),[_c('v-btn',{staticClass:\"fab-button__list-item white--text\",attrs:{\"disabled\":item.disabled,\"color\":\"accent\"},on:{\"click\":function($event){return _vm.fabAction(item.action)}}},[_c('span',[_vm._v(_vm._s(item.title))]),_c('v-icon',{staticClass:\"material-icons-outlined\"},[_vm._v(_vm._s(item.icon))])],1)],1)]}}],null,true)},[_c('span',[_vm._v(_vm._s(item.tooltip))])]):_vm._e()]})],2)],1)]],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('ConfirmDialog',{ref:\"confirmDelete\"}),_c('v-dialog',{attrs:{\"width\":\"700\"},model:{value:(_vm.dialog),callback:function ($$v) {_vm.dialog=$$v},expression:\"dialog\"}},[_c('v-card',[_c('v-toolbar',{attrs:{\"dark\":\"\",\"dense\":\"\",\"color\":\"primary\"}},[_c('v-btn',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.dialogRootView),expression:\"!dialogRootView\"}],attrs:{\"icon\":\"\"},on:{\"click\":function($event){_vm.dialogRootView = true}}},[_c('v-icon',[_vm._v(\"mdi-chevron-left\")])],1),_c('v-toolbar-title',[_c('v-btn',{attrs:{\"text\":\"\"},on:{\"click\":function($event){_vm.dialogRootView = true}}},[_vm._v(\" Dashboard control \")]),(!_vm.dialogRootView)?[_c('v-icon',[_vm._v(\"arrow_right\")]),_c('v-btn',{attrs:{\"text\":\"\"}},[_vm._v(_vm._s(_vm.selectedWidgetType.defaultName))])]:_vm._e()],2)],1),_c('div',{staticClass:\"d-flex flex-column px-5\"},[(_vm.dialogRootView)?_c('section',{staticClass:\"dialog__section\"},[_c('v-card-title',[_vm._v(\"Select a widget type to continue.\")]),_c('v-row',{staticClass:\"dialog__root-view\",attrs:{\"dense\":\"\"}},_vm._l((_vm.widgetTypes),function(type){return _c('v-col',{key:type.defaultName,staticClass:\"flex-shrink-1\",attrs:{\"cols\":\"3\"}},[(type.enabled)?_c('v-card',{staticClass:\"d-flex flex-column overflow-hidden\",attrs:{\"outlined\":\"\",\"height\":\"150\"},on:{\"click\":function($event){return _vm.goToDetails(type)}}},[_c('h3',{staticClass:\"primary--text text-center\"},[_vm._v(\" \"+_vm._s(type.defaultName)+\" \")]),_c('v-divider'),_c('v-icon',{staticClass:\"fill-height\",attrs:{\"size\":\"80\",\"color\":\"primary\"}},[_vm._v(\" \"+_vm._s(type.icon)+\" \")])],1):_vm._e()],1)}),1)],1):[_c('section',{staticClass:\"dialog__section mt-5\"},[_vm._l((_vm.widgetsOfSelectedType),function(widget){return _c('v-list-item',{key:widget.id},[_c('div',{staticClass:\"widget-controls\"},[_c('div',{staticClass:\"widget-controls__name\"},[_c('v-text-field',{ref:'textFieldName-' + widget.id,refInFor:true,attrs:{\"label\":\"Name\",\"value\":widget.name,\"placeholder\":widget.type.defaultName,\"disabled\":!widget.type.multiple,\"outlined\":\"\",\"dense\":\"\",\"hide-details\":\"\"},on:{\"change\":function($event){return _vm.saveWidgetName(widget)}}})],1),_c('div',{staticClass:\"widget-controls__switch\"},[_c('v-tooltip',{attrs:{\"top\":\"\",\"color\":\"primary\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('div',_vm._g({},on),[_c('v-switch',{attrs:{\"input-value\":widget.active,\"dense\":\"\",\"inset\":\"\"},on:{\"change\":function($event){return _vm.switchToggle(widget)}}})],1)]}}],null,true)},[_c('span',[_vm._v(\"Toggle widget visibility\")])])],1),_c('v-tooltip',{attrs:{\"top\":\"\",\"color\":\"primary\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('v-icon',_vm._g({attrs:{\"color\":\"red\"},on:{\"click\":function($event){return _vm.handleDeleteWidget(widget)}}},on),[_vm._v(\" mdi-delete-outline \")])]}}],null,true)},[_c('span',[_vm._v(\"Delete widget\")])])],1)])}),_c('v-list-item',[_c('v-tooltip',{attrs:{\"bottom\":\"\",\"disabled\":_vm.addButtonEnabled},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('div',_vm._g({staticClass:\"d-inline-block\"},on),[_c('v-btn',{attrs:{\"small\":\"\",\"color\":\"primary\",\"disabled\":!_vm.addButtonEnabled},on:{\"click\":function($event){return _vm.addNewWidget()}}},[_vm._v(\" Add new \"+_vm._s(_vm.selectedWidgetType.defaultName)+\" widget \"),_c('v-icon',{attrs:{\"right\":\"\",\"dark\":\"\"}},[_vm._v(\"add\")])],1)],1)]}}])},[_c('span',[_vm._v(\"There can only be one instance of this widget.\")])])],1)],2),_c('v-divider',{staticClass:\"my-3 px-3\"}),_c('h4',[_vm._v(\"Widget information\")]),_c('v-row',[_c('v-col',{attrs:{\"cols\":\"6\"}},[_c('span',{domProps:{\"innerHTML\":_vm._s(_vm.selectedWidgetType.description)}})]),_c('v-divider',{attrs:{\"vertical\":\"\"}}),_c('v-col',{staticClass:\"d-flex flex-column\",attrs:{\"cols\":\"6\"}},_vm._l((_vm.selectedWidgetType.images),function(image,index){return _c('v-img',{key:index,staticClass:\"mb-2\",attrs:{\"src\":image,\"contain\":\"\"}})}),1)],1)],_c('v-card-actions',{staticClass:\"mt-6\"},[(_vm.activeWidgets.length)?_c('a',{attrs:{\"text\":\"\"},on:{\"click\":function($event){_vm.instructionsDialog = true}}},[_vm._v(\" Dashboard instructions \")]):_vm._e(),_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"primary\",\"text\":\"\"},on:{\"click\":function($event){_vm.dialog = false}}},[_vm._v(\" Close \")])],1)],2)],1)],1),_c('v-dialog',{attrs:{\"width\":\"980\"},model:{value:(_vm.instructionsDialog),callback:function ($$v) {_vm.instructionsDialog=$$v},expression:\"instructionsDialog\"}},[_c('WelcomeWidget',{attrs:{\"dialogMode\":true},on:{\"close\":function($event){_vm.instructionsDialog = $event}}})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',{staticClass:\"dashboard__widget\",attrs:{\"elevation\":4}},[_c('v-toolbar',{attrs:{\"dark\":\"\",\"dense\":\"\"}},[_c('v-toolbar-title',[_vm._v(\" Dashboard instructions \")]),_c('v-spacer'),(_vm.dialogMode)?_c('v-btn',{staticClass:\"d-flex ml-auto\",attrs:{\"color\":\"accent\",\"fab\":\"\",\"small\":\"\"},on:{\"click\":function($event){return _vm.$emit('close', false)}}},[_c('v-icon',{attrs:{\"small\":\"\"}},[_vm._v(\"mdi-close\")])],1):_vm._e()],1),_c('v-row',{staticClass:\"widget-content\",attrs:{\"no-gutters\":\"\"}},[_c('v-col',{attrs:{\"cols\":\"7\"}},[_c('v-card-text',[_c('div',{staticClass:\"text--primary\"},[_c('p',[_vm._v(\" We strongly recommend reading through these instructions or watching the video demonstration before you start using the dashboard. \")]),_c('h4',[_vm._v(\"Video demonstration\")]),_c('p',[_vm._v(\" Click \"),_c('a',{attrs:{\"href\":\"https://youtu.be/0ZOr8RkX9bw\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\"}},[_vm._v(\"here\")]),_vm._v(\" to open a short video demonstration of the new dashboard. YouTube will open in a new tab. \")]),_c('h4',[_vm._v(\"What is the Dashboard\")]),_c('p',[_vm._v(\" This is the new Dashboard for Danelec Connect. Using our new widgets you can customise your dashboard to show the information that you want to see first, every time that you log on to Danelec Connect. The widgets can be moved and resized to give you the dashboard that best suits your needs. \")]),_c('h4',[_vm._v(\"What is a \\\"widget\\\"\")]),_c('p',[_vm._v(\" A widget is a straightforward and easy-to-use component – based on specific existing functionality in Danelec Connect. Each widget is designed to quickly give you the most important information that you want to see. Today there are four different types of widget that you can add, but more will be available in the near-future. \")]),_c('h4',[_vm._v(\"Adding and editing widgets\")]),_c('p',[_vm._v(\" To start adding widgets to your dashboard, click on the orange \"),_c('v-icon',{attrs:{\"small\":\"\"}},[_vm._v(\"edit\")]),_vm._v(\"-button in the bottom-right corner and select “Add/Edit widgets”. This will add the dashboard control dialog, where you can: add new widgets; toggle existing widgets on and off; delete widgets; and, for widgets that have custom names available, pick a new name. \")],1),_c('h4',[_vm._v(\"Editing the dashboard layout\")]),_c('p',[_vm._v(\" You can resize and position all of the widgets to set up a dashboard layout that best suits your needs. To enter the layout editing mode, click on the orange \"),_c('v-icon',{attrs:{\"small\":\"\"}},[_vm._v(\"edit\")]),_vm._v(\"-button and select “Edit Dashboard”. In edit mode you can also hide widgets that you do not want to see; they are not deleted, and can be made visible again using the dashboard contol dialog. When you are finished editing, click on \\\"Exit edit mode\\\" at the top of the screen, and your custom dashboard is ready for use. \")],1)])])],1),_c('v-col',{staticClass:\"d-flex\",attrs:{\"cols\":\"5\",\"align-self\":\"end\"}},[_c('img',{staticClass:\"dashboard-illustration-image\",attrs:{\"src\":require(\"../../assets/images/dashboardillustration.jpg\")}})])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\n\n@Component({})\nexport default class WelcomeWidget extends Vue {\n @Prop({ default: false }) dialogMode!: boolean;\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WelcomeWidget.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WelcomeWidget.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./WelcomeWidget.vue?vue&type=template&id=17cfd4d0&scoped=true&\"\nimport script from \"./WelcomeWidget.vue?vue&type=script&lang=ts&\"\nexport * from \"./WelcomeWidget.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./WelcomeWidget.vue?vue&type=style&index=0&id=17cfd4d0&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"17cfd4d0\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\ninstallComponents(component, {VBtn,VCard,VCardText,VCol,VIcon,VRow,VSpacer,VToolbar,VToolbarTitle})\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Ref, Vue } from \"vue-property-decorator\";\nimport { getModule } from \"vuex-module-decorators\";\nimport store from \"@/store\";\nimport DashboardModule from \"@/store/clients/Dashboard.module\";\nimport ConfirmDialog from \"@/components/ConfirmDialog.vue\";\nimport WelcomeWidget from \"@/components/widgets/WelcomeWidget.vue\";\nimport { WidgetType } from \"@/types/widgetType\";\nimport { Widget } from \"@/types/widget\";\nimport VesselDataWidgetConfiguration from \"@/store/clients/VesselDataWidgetConfig.module\";\nimport WidgetTypesModule from \"@/store/clients/WidgetTypes.module\";\nimport PerformanceStatusWidgetModule from \"@/store/clients/PerformanceStatusWidget.module\";\nimport NotificationWidgetModule from \"@/store/clients/NotificationWidget.module\";\nimport CiiWidgetModule from \"@/store/clients/CiiWidget.module\";\nimport FoulingOverviewWidgetModule from \"@/store/clients/FoulingOverviewWidget.module\";\n\nconst Dashboard = getModule(DashboardModule, store);\nconst VesselDataWidgetConfig = getModule(VesselDataWidgetConfiguration, store);\nconst WidgetTypes = getModule(WidgetTypesModule, store);\nconst PerfStatus = getModule(PerformanceStatusWidgetModule, store);\nconst NotificationWidgetConfiguration = getModule(NotificationWidgetModule, store);\nconst CiiWidgetConfiguration = getModule(CiiWidgetModule, store);\nconst FoulingOverviewWidgetConfig = getModule(FoulingOverviewWidgetModule, store);\n\n@Component({\n components: {\n ConfirmDialog,\n WelcomeWidget,\n },\n})\nexport default class DashboardControlDialog extends Vue {\n @Ref(\"confirmDelete\") confirmDelete!: any;\n\n dialog = false;\n dialogRootView = true;\n widgetTypes = WidgetTypes.allAddable;\n selectedWidgetType: WidgetType = this.widgetTypes[0];\n instructionsDialog = false;\n\n get widgetsOfSelectedType(): Widget[] {\n return Dashboard.activeDashboardWidgets.filter(widget => widget.type?.defaultName === this.selectedWidgetType.defaultName);\n }\n\n get activeWidgets(): Widget[] {\n return Dashboard.activeWidgets;\n }\n\n get addButtonEnabled(): boolean {\n return this.selectedWidgetType?.multiple ? true : this.widgetsOfSelectedType.length < 1;\n }\n\n open(): void {\n this.dialog = true;\n this.dialogRootView = true;\n }\n\n goToDetails(type: WidgetType): void {\n this.dialogRootView = false;\n this.selectedWidgetType = type;\n }\n\n async handleDeleteWidget(widget: Widget): Promise {\n const confirmed = await this.confirmDelete.open(\"Delete widget\", \"Are you sure you want to delete this widget? \");\n\n if (confirmed) {\n await Dashboard.deleteWidget(widget.id);\n\n if (widget.type?.usingConfig) {\n switch (widget.type.defaultName) {\n case WidgetTypes.VesselDataTable.defaultName:\n await VesselDataWidgetConfig.deleteVesselDataWidgetConfig(widget.configId)\n .then(() => console.log(\"Successfully deleted config.\"))\n .catch(error => console.error(error));\n break;\n case WidgetTypes.VesselDataGraph.defaultName:\n await VesselDataWidgetConfig.deleteVesselDataWidgetConfig(widget.configId)\n .then(() => console.log(\"Successfully deleted config.\"))\n .catch(error => console.error(error));\n break;\n case WidgetTypes.performanceStatus.defaultName:\n await PerfStatus.deleteWidgetConfig(widget.configId)\n .then(() => console.log(\"Successfully deleted config.\"))\n .catch(error => console.error(error));\n break;\n case WidgetTypes.notification.defaultName:\n await NotificationWidgetConfiguration.deleteWidgetConfig(widget.configId)\n .then(() => console.log(\"Successfully deleted config.\"))\n .catch(error => console.error(error));\n break;\n case WidgetTypes.emissions.defaultName:\n await CiiWidgetConfiguration.deleteCiiWidgetConfig(widget.configId)\n .then(() => console.log(\"Successfully deleted config.\"))\n .catch(error => console.error(error));\n break;\n case WidgetTypes.foulingOverview.defaultName:\n await FoulingOverviewWidgetConfig.deleteWidgetConfig(widget.configId)\n .then(() => console.log(\"Successfully deleted config.\"))\n .catch(error => console.error(error));\n break;\n }\n }\n }\n }\n\n addNewWidget(): void {\n if (this.selectedWidgetType) {\n this.$emit(\"addNewWidget\", this.selectedWidgetType, true);\n }\n }\n\n switchToggle(widget: Widget): void {\n this.$emit(\"toggleWidgetActive\", widget);\n }\n\n async saveWidgetName(widget: Widget): Promise {\n const newName = (this.$refs[\"textFieldName-\" + widget.id] as any)[0].internalValue;\n\n try {\n await Dashboard.updateWidget({ id: widget.id, name: newName });\n //if widget has config, also update the corresponding config in DB\n if (widget.type?.usingConfig) {\n let newConfig: any;\n\n switch (widget.type.defaultName) {\n case WidgetTypes.VesselDataTable.defaultName:\n await VesselDataWidgetConfig.getVesselDataWidgetConfigById(widget.configId).then(config => (newConfig = Object.assign(config, { configurationName: newName })));\n await VesselDataWidgetConfig.updateVesselDataWidgetConfig(newConfig);\n break;\n case WidgetTypes.VesselDataGraph.defaultName:\n await VesselDataWidgetConfig.getVesselDataWidgetConfigById(widget.configId).then(config => (newConfig = Object.assign(config, { configurationName: newName })));\n await VesselDataWidgetConfig.updateVesselDataWidgetConfig(newConfig);\n break;\n }\n }\n } catch (err) {\n console.warn(\"Saving widget name failed: \", err);\n }\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DashboardControlDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DashboardControlDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DashboardControlDialog.vue?vue&type=template&id=b19e2c62&scoped=true&\"\nimport script from \"./DashboardControlDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./DashboardControlDialog.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./DashboardControlDialog.vue?vue&type=style&index=0&lang=scss&\"\nimport style1 from \"./DashboardControlDialog.vue?vue&type=style&index=1&id=b19e2c62&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b19e2c62\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VSwitch } from 'vuetify/lib/components/VSwitch';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VBtn,VCard,VCardActions,VCardTitle,VCol,VDialog,VDivider,VIcon,VImg,VListItem,VRow,VSpacer,VSwitch,VTextField,VToolbar,VToolbarTitle,VTooltip})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',{class:_vm.moving ? 'isMoving' : '',attrs:{\"elevation\":_vm.moving ? 15 : 4,\"width\":_vm.width,\"height\":_vm.height}},[_c('Map',{attrs:{\"vessels\":_vm.vessels,\"resizing\":_vm.resized}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export default {\r\n inject: [\"$item\"],\r\n computed: {\r\n item() {\r\n return this.$item();\r\n },\r\n width() {\r\n if (this.item) {\r\n return this.item.widthPx;\r\n }\r\n return 0;\r\n },\r\n height() {\r\n if (this.item) {\r\n return this.item.heightPx;\r\n }\r\n return 0;\r\n },\r\n moving() {\r\n if (this.item) {\r\n return this.item.moving;\r\n }\r\n return 0;\r\n },\r\n resizing() {\r\n if (this.item) {\r\n return this.item.resizing;\r\n }\r\n return 0;\r\n },\r\n },\r\n};\r\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue, Ref, Watch } from \"vue-property-decorator\";\nimport store from \"@/store\";\nimport itemMixin from \"@/mixins/itemMixin.js\";\n// components\nimport Map from \"@/components/Map.vue\";\n// types\nimport { ExtendedVessel } from \"@/types/Vessel\";\n// modules\nimport { getModule } from \"vuex-module-decorators\";\nimport VesselsModule from \"@/store/clients/Vessels.module\";\n\nconst Vessels = getModule(VesselsModule, store);\n\n@Component({\n mixins: [itemMixin],\n components: {\n Map,\n },\n})\nexport default class MapWidget extends Vue {\n @Ref(\"mapRef\") mapRef!: Vue[];\n resized = false;\n //let map know it has been resized, otherwise tiles will not load properly\n //resizing is a computed property in the itemMixin\n @Watch(\"resizing\")\n onResize(val: boolean): void {\n if (val) this.resized = val;\n setTimeout(() => (this.resized = false));\n }\n\n get vessels(): ExtendedVessel[] {\n return Vessels.extendedVessels.filter(vessel => this.hasDashboardEnabled(vessel));\n }\n\n hasDashboardEnabled(vessel: ExtendedVessel): boolean {\n return vessel.features.some(feature => feature.name === \"Dashboard\");\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MapWidget.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MapWidget.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./MapWidget.vue?vue&type=template&id=3e5b20f9&scoped=true&\"\nimport script from \"./MapWidget.vue?vue&type=script&lang=ts&\"\nexport * from \"./MapWidget.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./MapWidget.vue?vue&type=style&index=0&id=3e5b20f9&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3e5b20f9\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCard } from 'vuetify/lib/components/VCard';\ninstallComponents(component, {VCard})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.d)?_c('div',{directives:[{name:\"rlocal\",rawName:\"v-rlocal\"}],ref:_vm.id,attrs:{\"id\":_vm.id},on:{\"resize\":_vm.onResize}},[_vm._t(\"default\")],2):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/* eslint-disable @typescript-eslint/no-non-null-assertion */\r\nimport { Breakpoint } from \"../interfaces\";\r\nimport { Layout } from \"./Layout.model\";\r\n\r\nexport class Dashboard {\r\n private readonly _id: string | number;\r\n private _layouts: Layout[];\r\n private _autoHeight: boolean;\r\n private _width: number;\r\n\r\n constructor({\r\n id,\r\n autoHeight,\r\n width,\r\n }: {\r\n id: string | number;\r\n autoHeight?: boolean;\r\n width?: number;\r\n }) {\r\n this._id = id;\r\n this._layouts = [];\r\n if (typeof autoHeight !== \"undefined\") {\r\n this._autoHeight = autoHeight;\r\n } else {\r\n this._autoHeight = Dashboard.defaults.autoHeight;\r\n }\r\n\r\n if (typeof width !== \"undefined\") {\r\n this._width = width;\r\n } else {\r\n this._width = Dashboard.defaults.width;\r\n }\r\n }\r\n get id(): number | string {\r\n return this._id;\r\n }\r\n get breakpoints(): Breakpoint[] {\r\n const bp: Breakpoint[] = [];\r\n for (const layout of this._layouts) {\r\n bp.push({\r\n name: layout.breakpoint,\r\n numberOfCols: layout.numberOfCols,\r\n setpoint: layout.breakpointWidth,\r\n });\r\n }\r\n bp.sort((a, b) => {\r\n if (\r\n typeof a.setpoint !== \"undefined\" &&\r\n typeof b.setpoint !== \"undefined\"\r\n ) {\r\n return +a.setpoint - +b.setpoint;\r\n }\r\n if (typeof a.setpoint == \"undefined\") {\r\n return 1;\r\n }\r\n return -1;\r\n });\r\n return bp;\r\n }\r\n get currentBreakpoint(): string {\r\n return this.updateCurrentBreakpoint();\r\n }\r\n get layouts(): Layout[] {\r\n return this._layouts;\r\n }\r\n set layouts(l: Layout[]) {\r\n this._layouts = l;\r\n }\r\n get autoHeight(): boolean {\r\n return this._autoHeight;\r\n }\r\n set autoHeight(ah: boolean) {\r\n this._autoHeight = ah;\r\n }\r\n get width(): number {\r\n return this._width;\r\n }\r\n set width(w: number) {\r\n this._width = w;\r\n this.updateCurrentBreakpoint();\r\n this.updateLayouts();\r\n }\r\n updateCurrentBreakpoint(): string {\r\n //TODO check if we are right on the edge of a breakpoint (i.e. dont allow a change if a scroll bar is added)\r\n if (this.breakpoints.length == 0) {\r\n return \"\";\r\n }\r\n //let previousBreakpoint = this.currentBreakpoint;\r\n let matching = this.breakpoints[0].name;\r\n for (let i = 1; i < this.breakpoints.length; i++) {\r\n if (typeof this.breakpoints[i].setpoint !== undefined) {\r\n if (this.width > this.breakpoints[i].setpoint!) {\r\n matching = this.breakpoints[i].name;\r\n }\r\n }\r\n }\r\n return matching;\r\n }\r\n sortBreakpoints(): void {\r\n this.breakpoints.sort((a, b) => {\r\n if (\r\n typeof a.setpoint !== \"undefined\" &&\r\n typeof b.setpoint !== \"undefined\"\r\n ) {\r\n return +a.setpoint - +b.setpoint;\r\n }\r\n if (typeof a.setpoint == \"undefined\") {\r\n return 1;\r\n }\r\n return -1;\r\n });\r\n }\r\n addLayoutInstance(l: Layout): void {\r\n this._layouts.push(l);\r\n }\r\n updateLayouts(): void {\r\n this._layouts.forEach((layout) => {\r\n layout.width = this.width;\r\n });\r\n }\r\n removeLayoutInstance(l: Layout): void {\r\n const index = this.layouts.findIndex((layout) => {\r\n return l.breakpoint === layout.breakpoint;\r\n });\r\n if (index >= 0) {\r\n this._layouts.splice(index, 1);\r\n }\r\n }\r\n static get defaults(): any {\r\n return {\r\n autoHeight: true as boolean,\r\n width: 400 as number,\r\n };\r\n }\r\n}\r\n","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Dashboard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Dashboard.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Dashboard.vue?vue&type=template&id=0410ac95&\"\nimport script from \"./Dashboard.vue?vue&type=script&lang=js&\"\nexport * from \"./Dashboard.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.currentBreakpoint === _vm.breakpoint)?_c('div',[(_vm.l)?_c('div',{style:({ position: 'relative', height: _vm.height, width: _vm.width })},[_vm._t(\"default\"),_c('DashItem',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.dragging || _vm.resizing),expression:\"dragging || resizing\"}],attrs:{\"id\":_vm.placeholderId,\"draggable\":false,\"resizable\":false,\"y\":_vm.placeholderY,\"height\":_vm.placeholderHeight,\"maxWidth\":_vm.placeholderMaxWidth},on:{\"update:y\":function($event){_vm.placeholderY=$event},\"update:height\":function($event){_vm.placeholderHeight=$event},\"update:maxWidth\":function($event){_vm.placeholderMaxWidth=$event},\"update:max-width\":function($event){_vm.placeholderMaxWidth=$event}}},[_vm._t(\"placeholder\",function(){return [_c('div',{staticClass:\"placeholder\"})]})],2)],2):_vm._e(),(_vm.debug)?_c('div',[_vm._v(\" Layout Breakpoint: \"+_vm._s(_vm.breakpoint)+\" \"),_c('br'),_vm._v(\" Layout Number of Cols: \"+_vm._s(_vm.numberOfCols)+\" \"),_c('br'),_vm._v(\" placeholder: \"+_vm._s(JSON.stringify(_vm.placeholder))+\" \"),_c('br'),_vm._v(\" Items: \"+_vm._s(JSON.stringify(_vm.itemsFromLayout))+\" \"),_c('br'),_vm._v(\" Height: \"+_vm._s(_vm.height)+\" \"),_c('br'),_vm._v(\" Attrs: \"+_vm._s(_vm.$attrs)+\" \")]):_vm._e()]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/* eslint-disable @typescript-eslint/no-non-null-assertion */\r\nimport { SimpleEventDispatcher } from \"ste-simple-events\";\r\nimport { Margin, Item } from \"../interfaces\";\r\nimport { ResizeEvent } from \"@interactjs/types\";\r\nexport class DashItem {\r\n private readonly _id: number | string;\r\n private _x: number;\r\n private _y: number;\r\n private _colWidth: number;\r\n private _rowHeight: number;\r\n private _margin: Margin;\r\n private _left: number;\r\n private _top: number;\r\n private _width: number;\r\n private _height: number;\r\n private _minWidth: number | boolean;\r\n private _maxWidth: number | boolean;\r\n private _minHeight: number | boolean;\r\n private _maxHeight: number | boolean;\r\n private _widthPx: number;\r\n private _heightPx: number;\r\n private _draggable: boolean;\r\n private _resizable: boolean;\r\n private _resizeEdges: string;\r\n private _resizeHandleSize: number;\r\n private _moved = false;\r\n private _hover = false;\r\n private _resizeHold: number;\r\n private _moveHold: number;\r\n private _locked: boolean;\r\n\r\n private _moving = false as boolean;\r\n private _resizing = false as boolean;\r\n private _onMoveStartEventDispatcher = new SimpleEventDispatcher();\r\n private _onMoveEventDispatcher = new SimpleEventDispatcher();\r\n private _onMoveEndEventDispatcher = new SimpleEventDispatcher();\r\n private _onResizeStartEventDispatcher = new SimpleEventDispatcher();\r\n private _onResizeEventDispatcher = new SimpleEventDispatcher();\r\n private _onResizeEndEventDispatcher = new SimpleEventDispatcher();\r\n\r\n constructor({\r\n id,\r\n x,\r\n y,\r\n width,\r\n height,\r\n minWidth,\r\n maxWidth,\r\n minHeight,\r\n maxHeight,\r\n colWidth,\r\n rowHeight,\r\n margin,\r\n draggable,\r\n resizable,\r\n resizeEdges,\r\n resizeHandleSize,\r\n moveHold,\r\n resizeHold,\r\n locked,\r\n }: {\r\n id: string | number;\r\n x?: number;\r\n y?: number;\r\n width?: number;\r\n height?: number;\r\n minWidth?: number | boolean;\r\n maxWidth?: number | boolean;\r\n minHeight?: number | boolean;\r\n maxHeight?: number | boolean;\r\n colWidth?: number;\r\n rowHeight?: number;\r\n margin?: Margin;\r\n draggable?: boolean;\r\n resizable?: boolean;\r\n resizeEdges?: string;\r\n resizeHandleSize?: number;\r\n moveHold?: number;\r\n resizeHold?: number;\r\n locked?: boolean;\r\n }) {\r\n this._id = id;\r\n\r\n if (typeof colWidth !== \"undefined\") {\r\n this._colWidth = colWidth;\r\n } else {\r\n this._colWidth = 1;\r\n }\r\n if (typeof rowHeight !== \"undefined\") {\r\n this._rowHeight = rowHeight;\r\n } else {\r\n this._rowHeight = 1;\r\n }\r\n if (typeof margin !== \"undefined\") {\r\n this._margin = margin;\r\n } else {\r\n this._margin = { x: 1, y: 1 };\r\n }\r\n if (typeof x !== \"undefined\") {\r\n this._x = x;\r\n } else {\r\n this._x = DashItem.defaults.x;\r\n }\r\n this._left = DashItem.getLeftFromX(this._x, this._colWidth, this._margin);\r\n if (typeof y !== \"undefined\") {\r\n this._y = y;\r\n } else {\r\n this._y = DashItem.defaults.y;\r\n }\r\n this._top = DashItem.getTopFromY(this._y, this._rowHeight, this._margin);\r\n\r\n if (typeof minWidth !== \"undefined\") {\r\n this._minWidth = minWidth;\r\n } else {\r\n this._minWidth = DashItem.defaults.minWidth;\r\n }\r\n if (typeof maxWidth !== \"undefined\") {\r\n this._maxWidth = maxWidth;\r\n } else {\r\n this._maxWidth = DashItem.defaults.maxWidth;\r\n }\r\n if (typeof width !== \"undefined\") {\r\n this._width = width;\r\n } else {\r\n this._width = DashItem.defaults.width;\r\n }\r\n if (typeof minHeight !== \"undefined\") {\r\n this._minHeight = minHeight;\r\n } else {\r\n this._minHeight = DashItem.defaults.minHeight;\r\n }\r\n if (typeof maxHeight !== \"undefined\") {\r\n this._maxHeight = maxHeight;\r\n } else {\r\n this._maxHeight = DashItem.defaults.maxHeight;\r\n }\r\n if (typeof height !== \"undefined\") {\r\n this._height = height;\r\n } else {\r\n this._height = DashItem.defaults.height;\r\n }\r\n this._widthPx = DashItem.getWidthInPx(\r\n this._width,\r\n this._colWidth,\r\n this._margin,\r\n );\r\n this._heightPx = DashItem.getHeightInPx(\r\n this._height,\r\n this._rowHeight,\r\n this._margin,\r\n );\r\n if (typeof draggable !== \"undefined\") {\r\n this._draggable = draggable;\r\n } else {\r\n this._draggable = DashItem.defaults.draggable!;\r\n }\r\n if (typeof resizable !== \"undefined\") {\r\n this._resizable = resizable;\r\n } else {\r\n this._resizable = DashItem.defaults.resizable!;\r\n }\r\n if (typeof resizeEdges !== \"undefined\") {\r\n this._resizeEdges = resizeEdges;\r\n } else {\r\n this._resizeEdges = \"top bottom left right\";\r\n }\r\n if (typeof resizeHandleSize !== \"undefined\") {\r\n this._resizeHandleSize = resizeHandleSize;\r\n } else {\r\n this._resizeHandleSize = 8;\r\n }\r\n if (typeof moveHold !== \"undefined\") {\r\n this._moveHold = moveHold;\r\n } else {\r\n this._moveHold = 0;\r\n }\r\n if (typeof resizeHold !== \"undefined\") {\r\n this._resizeHold = resizeHold;\r\n } else {\r\n this._resizeHold = 0;\r\n }\r\n if (typeof locked !== \"undefined\") {\r\n this._locked = locked;\r\n } else {\r\n this._locked = DashItem.defaults.locked!;\r\n }\r\n }\r\n get id(): number | string {\r\n return this._id;\r\n }\r\n get x(): number {\r\n return this._x;\r\n }\r\n set x(x: number) {\r\n this._x = x;\r\n this.updatePositionAndSize();\r\n }\r\n get y(): number {\r\n return this._y;\r\n }\r\n set y(y: number) {\r\n this._y = y;\r\n this.updatePositionAndSize();\r\n }\r\n get colWidth(): number {\r\n return this._colWidth;\r\n }\r\n set colWidth(c: number) {\r\n this._colWidth = c;\r\n this.updatePositionAndSize();\r\n }\r\n get rowHeight(): number {\r\n return this._rowHeight;\r\n }\r\n set rowHeight(r: number) {\r\n this._rowHeight = r;\r\n this.updatePositionAndSize();\r\n }\r\n get margin(): Margin {\r\n return this._margin;\r\n }\r\n set margin(m: Margin) {\r\n this._margin = m;\r\n this.updatePositionAndSize();\r\n }\r\n get left(): number {\r\n return this._left;\r\n }\r\n set left(l: number) {\r\n if (!this._moving && !this._resizing) {\r\n this._left = l;\r\n }\r\n }\r\n get top(): number {\r\n return this._top;\r\n }\r\n set top(t: number) {\r\n if (!this._moving && !this._resizing) {\r\n this._top = t;\r\n }\r\n }\r\n get minWidth(): number | boolean {\r\n return this._minWidth;\r\n }\r\n set minWidth(mW: number | boolean) {\r\n this._minWidth = mW;\r\n }\r\n get maxWidth(): number | boolean {\r\n return this._maxWidth;\r\n }\r\n set maxWidth(mW: number | boolean) {\r\n this._maxWidth = mW;\r\n }\r\n get width(): number {\r\n return this._width;\r\n }\r\n set width(w: number) {\r\n this._width = w;\r\n this.checkSizeLimits();\r\n this.updatePositionAndSize();\r\n }\r\n\r\n get minHeight():number | boolean {\r\n return this._minHeight;\r\n }\r\n set minHeight(mW: number | boolean) {\r\n this._minHeight = mW;\r\n }\r\n get maxHeight(): number | boolean {\r\n return this._maxHeight;\r\n }\r\n set maxHeight(mW: number | boolean) {\r\n this._maxHeight = mW;\r\n }\r\n get height(): number {\r\n return this._height;\r\n }\r\n set height(h: number) {\r\n this._height = h;\r\n this.checkSizeLimits();\r\n this.updatePositionAndSize();\r\n }\r\n get widthPx(): number {\r\n return this._widthPx;\r\n }\r\n set widthPx(w: number) {\r\n if (!this._resizing) {\r\n this._widthPx = w;\r\n }\r\n }\r\n get heightPx(): number {\r\n return this._heightPx;\r\n }\r\n set heightPx(h: number) {\r\n if (!this._resizing) {\r\n this._heightPx = h;\r\n }\r\n }\r\n get hover(): boolean {\r\n return this._hover;\r\n }\r\n set hover(h: boolean) {\r\n this._hover = h;\r\n }\r\n get moveHold(): number {\r\n return this._moveHold;\r\n }\r\n set moveHold(dh: number) {\r\n this._moveHold = dh;\r\n }\r\n get resizeHold(): number {\r\n return this._resizeHold;\r\n }\r\n set resizeHold(rh: number) {\r\n this._resizeHold = rh;\r\n }\r\n get moving(): boolean {\r\n return this._moving;\r\n }\r\n get resizing(): boolean {\r\n return this._resizing;\r\n }\r\n checkSizeLimits(): void {\r\n if (typeof this.maxWidth == \"number\") {\r\n if (this.width > this.maxWidth) {\r\n this.width = this.maxWidth;\r\n }\r\n }\r\n if (typeof this.minWidth == \"number\") {\r\n if (this.id !== \"-1Placeholder\" && this.width < this.minWidth) {\r\n this.width = this.minWidth;\r\n }\r\n }\r\n if (typeof this.maxHeight == \"number\") {\r\n if (this.height > this.maxHeight) {\r\n this.height = this.maxHeight;\r\n }\r\n }\r\n if (typeof this.minHeight == \"number\") {\r\n if (this.id !== \"-1Placeholder\" && this.height < this.minHeight) {\r\n this.height = this.minHeight;\r\n }\r\n }\r\n }\r\n updatePositionAndSize(): void {\r\n this.left = DashItem.getLeftFromX(this.x, this.colWidth, this.margin);\r\n this.top = DashItem.getTopFromY(this.y, this.rowHeight, this.margin);\r\n this.widthPx = DashItem.getWidthInPx(\r\n this.width,\r\n this.colWidth,\r\n this.margin,\r\n );\r\n this.heightPx = DashItem.getHeightInPx(\r\n this.height,\r\n this.rowHeight,\r\n this.margin,\r\n );\r\n }\r\n get draggable(): boolean {\r\n return this._draggable;\r\n }\r\n set draggable(d: boolean) {\r\n this._draggable = d;\r\n }\r\n get resizable(): boolean {\r\n return this._resizable;\r\n }\r\n set resizable(r: boolean) {\r\n this._resizable = r;\r\n }\r\n get resizeEdges(): string {\r\n return this._resizeEdges;\r\n }\r\n set resizeEdges(e: string) {\r\n this._resizeEdges = e;\r\n }\r\n get resizeHandleSize(): number {\r\n return this._resizeHandleSize;\r\n }\r\n set resizeHandleSize(rhs: number) {\r\n this._resizeHandleSize = rhs;\r\n }\r\n get moved(): boolean {\r\n return this._moved;\r\n }\r\n set moved(m: boolean) {\r\n this._moved = m;\r\n }\r\n get locked(): boolean {\r\n return this._locked;\r\n }\r\n set locked(l: boolean) {\r\n this._locked = l;\r\n }\r\n toItem(): Item {\r\n const item = {\r\n id: this.id,\r\n x: this.x,\r\n y: this.y,\r\n top: this.top,\r\n left: this.left,\r\n width: this.width,\r\n maxWidth: this.maxWidth,\r\n minWidth: this.minWidth,\r\n widthPx: this.widthPx,\r\n height: this.height,\r\n maxHeight: this.maxHeight,\r\n minHeight: this.minHeight,\r\n heightPx: this.heightPx,\r\n draggable: this.draggable,\r\n resizable: this.resizable,\r\n locked: this.locked,\r\n } as Item;\r\n return item;\r\n }\r\n fromItem(item: Item): void {\r\n this._x = item.x;\r\n this._y = item.y;\r\n this._width = item.width;\r\n this._height = item.height;\r\n this.updatePositionAndSize();\r\n }\r\n //Drag Event Management\r\n _onMoveStart(): void {\r\n this._moving = true;\r\n this._onMoveStartEventDispatcher.dispatch(this.toItem());\r\n }\r\n _onMove(left: number, top: number): void {\r\n this._left += left;\r\n this._top += top;\r\n this._onMoveEventDispatcher.dispatch(this.toItem());\r\n }\r\n _onMoveEnd(): void {\r\n this._moving = false;\r\n this._onMoveEndEventDispatcher.dispatch(this.toItem());\r\n }\r\n /* eslint-disable */\r\n get onMoveStart() {\r\n return this._onMoveStartEventDispatcher.asEvent();\r\n }\r\n get onMove() {\r\n return this._onMoveEventDispatcher.asEvent();\r\n }\r\n get onMoveEnd() {\r\n return this._onMoveEndEventDispatcher.asEvent();\r\n }\r\n //ResizeEventManagement\r\n _onResizeStart(): void {\r\n this._resizing = true;\r\n this._onResizeStartEventDispatcher.dispatch(this.toItem());\r\n }\r\n _onResize(event: ResizeEvent): void {\r\n this._left += event.deltaRect!.left;\r\n this._top += event.deltaRect!.top;\r\n this._widthPx = event.rect.width;\r\n this._heightPx = event.rect.height;\r\n this._onResizeEventDispatcher.dispatch(this.toItem());\r\n }\r\n _onResizeEnd(): void {\r\n this._resizing = false;\r\n this._onResizeEndEventDispatcher.dispatch(this.toItem());\r\n }\r\n get onResizeStart() {\r\n return this._onResizeStartEventDispatcher.asEvent();\r\n }\r\n get onResize() {\r\n return this._onResizeEventDispatcher.asEvent();\r\n }\r\n get onResizeEnd() {\r\n return this._onResizeEndEventDispatcher.asEvent();\r\n }\r\n /* eslint-enable */\r\n //Static Methods\r\n static getLeftFromX(x: number, colWidth: number, margin: Margin): number {\r\n return Math.round(colWidth * x + (x + 1) * margin.x);\r\n }\r\n static getXFromLeft(l: number, colWidth: number, margin: Margin): number {\r\n return Math.round((l - margin.x) / (colWidth + margin.x));\r\n }\r\n static getTopFromY(y: number, rowHeight: number, margin: Margin): number {\r\n return Math.round(rowHeight * y + (y + 1) * margin.y);\r\n }\r\n static getYFromTop(t: number, rowHeight: number, margin: Margin): number {\r\n return Math.round((t - margin.y) / (rowHeight + margin.y));\r\n }\r\n static getWidthInPx(w: number, colWidth: number, margin: Margin): number {\r\n return Math.round(colWidth * w + Math.max(0, w - 1) * margin.x);\r\n }\r\n static getWidthFromPx(widthPx: number, colWidth: number, margin: Margin): number {\r\n return Math.round((widthPx + margin.x) / (colWidth + margin.x));\r\n }\r\n static getHeightInPx(h: number, rowHeight: number, margin: Margin): number {\r\n return Math.round(rowHeight * h + Math.max(0, h - 1) * margin.y);\r\n }\r\n static getHeightFromPx(heightPx: number, rowHeight: number, margin: Margin): number {\r\n return Math.round((heightPx + margin.y) / (rowHeight + margin.y));\r\n }\r\n static get defaults(): Item {\r\n const defaults: Item = {\r\n id: \"\",\r\n x: 0,\r\n y: 0,\r\n width: 0,\r\n height: 0,\r\n minWidth: 1,\r\n maxWidth: false,\r\n minHeight: 1,\r\n maxHeight: false,\r\n draggable: true,\r\n resizable: true,\r\n locked: false,\r\n };\r\n return defaults;\r\n }\r\n static cssTransform(\r\n top: number,\r\n left: number,\r\n widthPx: number,\r\n heightPx: number,\r\n ): any {\r\n const translate = \"translate3d(\" + left + \"px,\" + top + \"px, 0)\";\r\n return {\r\n transform: translate,\r\n WebkitTransform: translate,\r\n MozTransform: translate,\r\n msTransform: translate,\r\n OTransform: translate,\r\n width: widthPx + \"px\",\r\n height: heightPx + \"px\",\r\n };\r\n }\r\n static cssTopLeft(\r\n top: number,\r\n left: number,\r\n widthPx: number,\r\n heightPx: number,\r\n ): any {\r\n return {\r\n top: top + \"px\",\r\n left: left + \"px\",\r\n width: widthPx + \"px\",\r\n height: heightPx + \"px\",\r\n };\r\n }\r\n}\r\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\r\nimport { Item, Margin, Subscription } from \"../interfaces\";\r\nimport { DashItem } from \"./DashItem.model\";\r\n\r\nexport class Layout {\r\n private _breakpoint: string;\r\n private _breakpointWidth: number | undefined;\r\n private _margin: Margin;\r\n private _width: number;\r\n private _height: number;\r\n private _numberOfCols: number;\r\n private _autoHeight: boolean;\r\n private _rowHeight: number | boolean;\r\n private _minRowHeight: number | boolean;\r\n private _maxRowHeight: number | boolean;\r\n private _colWidth: number | boolean;\r\n private _minColWidth: number | boolean;\r\n private _maxColWidth: number | boolean;\r\n private _compact: boolean;\r\n private _useCssTransforms: boolean;\r\n private _itemBeingDragged = false;\r\n private _itemBeingResized = false;\r\n private _initalItemIds: Array = [];\r\n private _dashItems: DashItem[] = [];\r\n private _dragStartListeners: Subscription[] = [];\r\n private _dragListeners: Subscription[] = [];\r\n private _dragEndListeners: Subscription[] = [];\r\n private _resizeStartListeners: Subscription[] = [];\r\n private _resizeListeners: Subscription[] = [];\r\n private _resizeEndListeners: Subscription[] = [];\r\n\r\n constructor({\r\n breakpoint,\r\n numberOfCols,\r\n breakpointWidth,\r\n margin,\r\n autoHeight,\r\n useCssTransforms,\r\n width,\r\n height,\r\n rowHeight,\r\n minRowHeight,\r\n maxRowHeight,\r\n colWidth,\r\n minColWidth,\r\n maxColWidth,\r\n compact,\r\n initialItems,\r\n }: {\r\n breakpoint: string;\r\n numberOfCols: number;\r\n breakpointWidth?: number;\r\n margin?: Margin;\r\n autoHeight?: boolean;\r\n useCssTransforms?: boolean;\r\n width?: number;\r\n height?: number;\r\n rowHeight?: number | boolean;\r\n minRowHeight?: number | boolean;\r\n maxRowHeight?: number | boolean;\r\n colWidth?: number | boolean;\r\n minColWidth?: number | boolean;\r\n maxColWidth?: number | boolean;\r\n compact?: boolean;\r\n initialItems?: Item[];\r\n }) {\r\n this._breakpoint = breakpoint;\r\n this._numberOfCols = numberOfCols;\r\n\r\n if (typeof breakpointWidth !== \"undefined\") {\r\n this._breakpointWidth = breakpointWidth;\r\n } else {\r\n this._breakpointWidth = Layout.defaults.breakpointWidth;\r\n }\r\n\r\n if (typeof margin !== \"undefined\") {\r\n this._margin = margin;\r\n } else {\r\n this._margin = Layout.defaults.margin;\r\n }\r\n\r\n if (typeof autoHeight !== \"undefined\") {\r\n this._autoHeight = autoHeight;\r\n } else {\r\n this._autoHeight = Layout.defaults.autoHeight;\r\n }\r\n\r\n if (typeof useCssTransforms !== \"undefined\") {\r\n this._useCssTransforms = useCssTransforms;\r\n } else {\r\n this._useCssTransforms = Layout.defaults.useCssTransforms;\r\n }\r\n\r\n if (typeof width !== \"undefined\") {\r\n this._width = width;\r\n } else {\r\n this._width = Layout.defaults.width;\r\n }\r\n if (typeof height !== \"undefined\") {\r\n this._height = height;\r\n } else {\r\n this._height = Layout.defaults.height;\r\n }\r\n\r\n if (typeof rowHeight !== \"undefined\") {\r\n this._rowHeight = rowHeight;\r\n } else {\r\n this._rowHeight = Layout.defaults.rowHeight;\r\n }\r\n\r\n if (typeof minRowHeight !== \"undefined\") {\r\n this._minRowHeight = minRowHeight;\r\n } else {\r\n this._minRowHeight = Layout.defaults.minRowHeight;\r\n }\r\n\r\n if (typeof maxRowHeight !== \"undefined\") {\r\n this._maxRowHeight = maxRowHeight;\r\n } else {\r\n this._maxRowHeight = Layout.defaults.maxRowHeight;\r\n }\r\n\r\n if (typeof colWidth !== \"undefined\") {\r\n this._colWidth = colWidth;\r\n } else {\r\n this._colWidth = Layout.defaults.colWidth;\r\n }\r\n if (typeof minColWidth !== \"undefined\") {\r\n this._minColWidth = minColWidth;\r\n } else {\r\n this._minColWidth = Layout.defaults.minColWidth;\r\n }\r\n if (typeof maxColWidth !== \"undefined\") {\r\n this._maxColWidth = maxColWidth;\r\n } else {\r\n this._maxColWidth = Layout.defaults.maxColWidth;\r\n }\r\n\r\n if (typeof compact !== \"undefined\") {\r\n this._compact = compact;\r\n } else {\r\n this._compact = Layout.defaults.compact;\r\n }\r\n\r\n if (typeof initialItems !== \"undefined\") {\r\n this._initalItemIds = initialItems.map((item) => {\r\n return item.id;\r\n });\r\n }\r\n }\r\n get breakpoint(): string {\r\n return this._breakpoint;\r\n }\r\n set breakpoint(b: string) {\r\n this._breakpoint = b;\r\n }\r\n get breakpointWidth(): number | undefined {\r\n return this._breakpointWidth;\r\n }\r\n set breakpointWidth(bw: number | undefined) {\r\n this._breakpointWidth = bw;\r\n }\r\n get margin(): Margin {\r\n return this._margin;\r\n }\r\n set margin(m: Margin) {\r\n this._margin = m;\r\n }\r\n get width(): number {\r\n return this.calculateWidth();\r\n }\r\n set width(w: number) {\r\n this._width = w;\r\n this.updateDashItems();\r\n }\r\n get height(): number {\r\n if (this.autoHeight) {\r\n return this.calculateHeight();\r\n }\r\n return this._height;\r\n }\r\n set height(h: number) {\r\n this._height = h;\r\n }\r\n get numberOfCols(): number {\r\n return this._numberOfCols;\r\n }\r\n set numberOfCols(n: number) {\r\n this._numberOfCols = n;\r\n this.updateDashItems();\r\n }\r\n get autoHeight(): boolean {\r\n return this._autoHeight;\r\n }\r\n set autoHeight(ah: boolean) {\r\n this._autoHeight = ah;\r\n }\r\n get maxRowHeight(): number | boolean {\r\n return this._maxRowHeight;\r\n }\r\n set maxRowHeight(mrh: boolean | number) {\r\n this._maxRowHeight = mrh;\r\n this.updateDashItems();\r\n }\r\n get minRowHeight(): number | boolean {\r\n return this._minRowHeight;\r\n }\r\n set minRowHeight(mrh: boolean | number) {\r\n this._minRowHeight = mrh;\r\n this.updateDashItems();\r\n }\r\n get rowHeight(): number {\r\n let rH = 0;\r\n if (typeof this._rowHeight == \"number\") {\r\n rH = this._rowHeight;\r\n } else {\r\n rH = this.colWidth as number;\r\n }\r\n if (typeof this.maxRowHeight == \"number\") {\r\n if (rH > this.maxRowHeight) {\r\n rH = this.maxRowHeight;\r\n }\r\n }\r\n if (typeof this.minRowHeight == \"number\") {\r\n if (rH < this.minRowHeight) {\r\n rH = this.minRowHeight;\r\n }\r\n }\r\n return rH;\r\n }\r\n set rowHeight(rh: number) {\r\n this._rowHeight = rh;\r\n this.updateDashItems();\r\n }\r\n\r\n set maxColWidth(mcw: boolean | number) {\r\n this._maxColWidth = mcw;\r\n this.updateDashItems();\r\n }\r\n get maxColWidth(): number | boolean {\r\n return this._maxColWidth;\r\n }\r\n set minColWidth(mcw: boolean | number) {\r\n this._minColWidth = mcw;\r\n this.updateDashItems();\r\n }\r\n get minColWidth(): number | boolean {\r\n return this._minColWidth;\r\n }\r\n set colWidth(cw: number | boolean) {\r\n this._colWidth = cw;\r\n }\r\n get colWidth(): number | boolean {\r\n let colWidthCalc = 0;\r\n if (typeof this._colWidth == \"number\") {\r\n colWidthCalc = this._colWidth;\r\n } else {\r\n colWidthCalc =\r\n (this.width - this.margin.x * (this.numberOfCols + 1)) /\r\n this.numberOfCols;\r\n }\r\n\r\n if (typeof this.maxColWidth == \"number\") {\r\n if (colWidthCalc > this.maxColWidth) {\r\n colWidthCalc = this.maxColWidth;\r\n }\r\n }\r\n if (typeof this.minColWidth == \"number\") {\r\n if (colWidthCalc < this.minColWidth) {\r\n colWidthCalc = this.minColWidth;\r\n }\r\n }\r\n return colWidthCalc;\r\n }\r\n //Item Methods\r\n get itemBeingDragged(): boolean {\r\n return this._itemBeingDragged;\r\n }\r\n set itemBeingDragged(ibd: boolean) {\r\n this._itemBeingDragged = ibd;\r\n }\r\n get itemBeingResized(): boolean {\r\n return this._itemBeingResized;\r\n }\r\n set itemBeingResized(ibr: boolean) {\r\n this._itemBeingResized = ibr;\r\n }\r\n get placeholder(): DashItem | null {\r\n return this.getDashItemById(\"-1Placeholder\");\r\n }\r\n set placeholder(p: DashItem | null) {\r\n this.placeholder = p;\r\n }\r\n get compact(): boolean {\r\n return this._compact;\r\n }\r\n set compact(c: boolean) {\r\n this._compact = c;\r\n }\r\n get useCssTransforms(): boolean {\r\n return this._useCssTransforms;\r\n }\r\n set useCssTransforms(uct: boolean) {\r\n this._useCssTransforms = uct;\r\n }\r\n //used when colWidth is defined (i.e. not looking or caring about width of window )\r\n calculateWidth(): number {\r\n if (typeof this._colWidth == \"number\" && typeof this.colWidth == \"number\") {\r\n return (\r\n this.numberOfCols * (this.colWidth + this.margin.x) + this.margin.x\r\n );\r\n }\r\n return this._width;\r\n }\r\n //Reactive Methods\r\n calculateHeight(): number {\r\n let maxY = 0;\r\n let bottomY = 0;\r\n for (const item of this._dashItems) {\r\n bottomY = item.y + item.height;\r\n if (bottomY > maxY) {\r\n maxY = bottomY;\r\n }\r\n }\r\n return maxY * (this.rowHeight + this.margin.y) + this.margin.y;\r\n }\r\n //DashItem Methods\r\n addDashItem(d: DashItem): void {\r\n this._dashItems.push(d);\r\n this.updateDashItems();\r\n //Drag Subscriptions\r\n const unDragStart = d.onMoveStart.subscribe((item) => {\r\n this.itemDragging(item);\r\n });\r\n this._dragStartListeners.push({\r\n id: d.id,\r\n unsubscribe: unDragStart,\r\n });\r\n const unDrag = d.onMove.subscribe((item) => {\r\n this.itemDragging(item);\r\n });\r\n this._dragListeners.push({\r\n id: d.id,\r\n unsubscribe: unDrag,\r\n });\r\n const unDragEnd = d.onMoveEnd.subscribe((item) => {\r\n this.itemDraggingComplete(item);\r\n });\r\n this._dragEndListeners.push({ id: d.id, unsubscribe: unDragEnd });\r\n //Resize Subscirptions\r\n const unResizeStart = d.onResizeStart.subscribe((item) => {\r\n this.itemResizing(item);\r\n });\r\n this._resizeStartListeners.push({\r\n id: d.id,\r\n unsubscribe: unResizeStart,\r\n });\r\n const unResize = d.onResize.subscribe((item) => {\r\n this.itemResizing(item);\r\n });\r\n this._resizeListeners.push({\r\n id: d.id,\r\n unsubscribe: unResize,\r\n });\r\n const unResizeEnd = d.onResizeEnd.subscribe((item) => {\r\n this.itemResizingComplete(item);\r\n });\r\n this._resizeEndListeners.push({\r\n id: d.id,\r\n unsubscribe: unResizeEnd,\r\n });\r\n\r\n //Check that the added item has not caused a collision and if so move the others.\r\n //Only do this on items added after initialisation\r\n if (!this._initalItemIds.includes(d.id)) {\r\n const items = this.compactLayout(this.items);\r\n this.syncItems(items);\r\n }\r\n }\r\n removeDashItem(d: DashItem): void {\r\n let index = this._dashItems.findIndex((item) => {\r\n return item.id === d.id;\r\n });\r\n if (index >= 0) {\r\n this._dashItems.splice(index, 1);\r\n }\r\n //Remove Event Listerners\r\n index = this._dragStartListeners.findIndex((item) => {\r\n return item.id === d.id;\r\n });\r\n if (index >= 0) {\r\n this._dragStartListeners[index].unsubscribe();\r\n this._dragStartListeners.splice(index, 1);\r\n }\r\n index = this._dragListeners.findIndex((item) => {\r\n return item.id === d.id;\r\n });\r\n if (index >= 0) {\r\n this._dragListeners[index].unsubscribe();\r\n this._dragListeners.splice(index, 1);\r\n }\r\n index = this._dragEndListeners.findIndex((item) => {\r\n return item.id === d.id;\r\n });\r\n if (index >= 0) {\r\n this._dragEndListeners[index].unsubscribe();\r\n this._dragEndListeners.splice(index, 1);\r\n }\r\n //Remove Drag Listerners\r\n index = this._resizeStartListeners.findIndex((item) => {\r\n return item.id === d.id;\r\n });\r\n if (index >= 0) {\r\n this._resizeStartListeners[index].unsubscribe();\r\n this._resizeStartListeners.splice(index, 1);\r\n }\r\n index = this._resizeListeners.findIndex((item) => {\r\n return item.id === d.id;\r\n });\r\n if (index >= 0) {\r\n this._resizeListeners[index].unsubscribe();\r\n this._resizeListeners.splice(index, 1);\r\n }\r\n index = this._resizeEndListeners.findIndex((item) => {\r\n return item.id === d.id;\r\n });\r\n if (index >= 0) {\r\n this._resizeEndListeners[index].unsubscribe();\r\n this._resizeEndListeners.splice(index, 1);\r\n }\r\n //Remove from initial Item Id check if it existed. This way the item can be added again and compacted\r\n const initialItemIdIndex = this._initalItemIds.findIndex((id) => {\r\n id === d.id;\r\n });\r\n if (initialItemIdIndex > -1) {\r\n this._initalItemIds.splice(initialItemIdIndex, 1);\r\n }\r\n\r\n //Compact layout after removal\r\n const items = this.compactLayout(this.items);\r\n this.syncItems(items);\r\n }\r\n getDashItemById(id: string | number): DashItem | null {\r\n const index = this._dashItems.findIndex((item) => {\r\n return item.id === id;\r\n });\r\n if (index >= 0) {\r\n return this._dashItems[index];\r\n }\r\n return null;\r\n }\r\n updateDashItems(): void {\r\n this._dashItems.forEach((item) => {\r\n item.colWidth = this.colWidth as number;\r\n item.rowHeight = this.rowHeight as number;\r\n item.margin = this.margin;\r\n });\r\n }\r\n //Item Methods\r\n get items(): Item[] {\r\n const items: Item[] = [];\r\n this._dashItems.forEach((dashItem) => {\r\n items.push(dashItem.toItem());\r\n });\r\n return items;\r\n }\r\n itemDragging(item: Item): void {\r\n if (!this.itemBeingDragged) {\r\n this.placeholder!.x = item.x;\r\n this.placeholder!.y = item.y;\r\n this.placeholder!.width = item.width;\r\n this.placeholder!.height = item.height;\r\n this.itemBeingDragged = true;\r\n }\r\n //Take a copy of items\r\n const itemsCopy = JSON.parse(JSON.stringify(this.items)) as Item[];\r\n //Remove the item being dragged as the placeholder takes its place. Otherwise the item will snap while being dragged.\r\n let items = itemsCopy.filter((i) => {\r\n return i.id !== item.id;\r\n });\r\n const placeholderIndex = items.findIndex((i) => {\r\n return i.id === this.placeholder!.id;\r\n });\r\n //items = this.correctBounds(items);\r\n items = this.moveItem(\r\n items,\r\n items[placeholderIndex],\r\n DashItem.getXFromLeft(item.left!, this.colWidth as number, this.margin),\r\n DashItem.getYFromTop(item.top!, this.rowHeight, this.margin),\r\n true,\r\n );\r\n items = this.compactLayout(items);\r\n this.syncItems(items);\r\n }\r\n itemDraggingComplete(item: Item): void {\r\n this.itemBeingDragged = false;\r\n const dashItem = this.getDashItemById(item.id);\r\n if (dashItem) {\r\n dashItem.x = this.placeholder!.x;\r\n dashItem.y = this.placeholder!.y;\r\n }\r\n this.placeholder!.x = 0;\r\n this.placeholder!.y = 0;\r\n this.placeholder!.width = 0;\r\n this.placeholder!.height = 0;\r\n }\r\n itemResizing(item: Item): void {\r\n this.itemBeingResized = true;\r\n this.placeholder!.minWidth = item.minWidth;\r\n this.placeholder!.maxWidth = item.maxWidth;\r\n this.placeholder!.minHeight = item.minHeight;\r\n this.placeholder!.maxHeight = item.maxHeight;\r\n this.placeholder!.x = DashItem.getXFromLeft(\r\n item.left!,\r\n this.colWidth as number,\r\n this.margin,\r\n );\r\n this.placeholder!.y = DashItem.getYFromTop(\r\n item.top!,\r\n this.rowHeight,\r\n this.margin,\r\n );\r\n this.placeholder!.width = DashItem.getWidthFromPx(\r\n item.widthPx!,\r\n this.colWidth as number,\r\n this.margin,\r\n );\r\n this.placeholder!.height = DashItem.getHeightFromPx(\r\n item.heightPx!,\r\n this.rowHeight,\r\n this.margin,\r\n );\r\n //Take a copy of items\r\n const itemsCopy = JSON.parse(JSON.stringify(this.items)) as Item[];\r\n //Remove the item being resized as the placeholder takes its place. Otherwise the item will snap while being resized.\r\n let items = itemsCopy.filter((i) => {\r\n return i.id !== item.id;\r\n });\r\n const placeholderIndex = items.findIndex((i) => {\r\n return i.id === this.placeholder!.id;\r\n });\r\n items = this.moveItem(\r\n items,\r\n items[placeholderIndex],\r\n DashItem.getXFromLeft(item.left!, this.colWidth as number, this.margin),\r\n DashItem.getYFromTop(item.top!, this.rowHeight, this.margin),\r\n true,\r\n );\r\n items = this.compactLayout(items);\r\n this.syncItems(items);\r\n }\r\n itemResizingComplete(item: Item): void {\r\n this.itemBeingResized = false;\r\n const dashItem = this.getDashItemById(item.id);\r\n if (dashItem) {\r\n dashItem.x = this.placeholder!.x;\r\n dashItem.y = this.placeholder!.y;\r\n dashItem.width = this.placeholder!.width;\r\n dashItem.height = this.placeholder!.height;\r\n }\r\n this.placeholder!.x = 0;\r\n this.placeholder!.y = 0;\r\n this.placeholder!.width = 0;\r\n this.placeholder!.height = 0;\r\n }\r\n //Collision Utils\r\n checkForCollision(d1: Item, d2: Item): boolean {\r\n if (d1.id === d2.id) {\r\n return false;\r\n }\r\n if (d1.x + d1.width <= d2.x) {\r\n return false;\r\n }\r\n if (d1.x >= d2.x + d2.width) {\r\n return false;\r\n }\r\n if (d1.y + d1.height <= d2.y) {\r\n return false;\r\n }\r\n if (d1.y >= d2.y + d2.height) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n getFirstCollision(items: Item[], d: Item): Item | null {\r\n for (const i of items) {\r\n if (this.checkForCollision(d, i)) {\r\n return i;\r\n }\r\n }\r\n return null;\r\n }\r\n getAllCollisions(items: Item[], d: Item): Item[] {\r\n return items.filter((item) => this.checkForCollision(item, d));\r\n }\r\n //Layout and Item Moving Methods\r\n correctItemBounds(item: Item): Item {\r\n if (item.x + item.width > this.numberOfCols) {\r\n item.x = this.numberOfCols - item.width;\r\n }\r\n if (item.x < 0) {\r\n item.x = 0;\r\n }\r\n if (item.y < 0) {\r\n item.y = 0;\r\n }\r\n if (item.width > this.numberOfCols) {\r\n item.x = 0;\r\n item.width = this.numberOfCols;\r\n }\r\n return item;\r\n }\r\n correctBounds(items: Item[]): Item[] {\r\n for (let i = 0; i < items.length; i++) {\r\n items[i] = this.correctItemBounds(items[i]);\r\n }\r\n return items;\r\n }\r\n getLockedItems(items: Item[]): Item[] {\r\n return this.items.filter((item) => item.locked);\r\n }\r\n compactLayout(items: Item[]): Item[] {\r\n const sorted = this.sortItems(items);\r\n const compareWith = this.getLockedItems(items);\r\n const out = Array(items.length) as Item[];\r\n\r\n for (let i = 0; i < sorted.length; i++) {\r\n let l = sorted[i];\r\n if (!l.locked) {\r\n l = this.compactItem(compareWith, l);\r\n // Add to comparison array. We only collide with items before this one.\r\n compareWith.push(l);\r\n }\r\n\r\n // Add to output array to make sure they still come out in the right order.\r\n const index = items.findIndex((item) => {\r\n return item.id === l.id;\r\n });\r\n out[index] = l;\r\n // Clear moved flag, if it exists.\r\n l.moved = false;\r\n }\r\n return out;\r\n }\r\n compactItem(items: Item[], d: Item): Item {\r\n if (this.compact) {\r\n while (d.y > 0 && !this.getFirstCollision(items, d)) {\r\n d.y--;\r\n }\r\n }\r\n let collides;\r\n while ((collides = this.getFirstCollision(items, d))) {\r\n d.y = collides.y + collides.height;\r\n }\r\n return d;\r\n }\r\n sortItems(items: Item[], reverse?: boolean): Item[] {\r\n const i = JSON.parse(JSON.stringify(items)) as Item[];\r\n i.sort((a, b) => {\r\n if (a.y > b.y || (a.y === b.y && a.x > b.x)) {\r\n return 1;\r\n }\r\n return -1;\r\n });\r\n if (reverse) {\r\n i.reverse();\r\n }\r\n return i;\r\n }\r\n moveItem(\r\n items: Item[],\r\n d: Item,\r\n x: number,\r\n y: number,\r\n isUserAction?: boolean,\r\n ): Item[] {\r\n if (d.locked) {\r\n return items;\r\n }\r\n const movingUp: boolean = d.y > y;\r\n d.x = x;\r\n d.y = y;\r\n d.moved = true;\r\n d = this.correctItemBounds(d);\r\n const sorted = this.sortItems(items, movingUp);\r\n const collisions = this.getAllCollisions(sorted, d);\r\n for (const collision of collisions) {\r\n if (collision.moved) {\r\n continue;\r\n }\r\n // This makes it feel a bit more precise by waiting to swap for just a bit when moving up.\r\n if (d.y > collision.y && d.y - collision.y > collision.height / 4) {\r\n continue;\r\n }\r\n const collisionIndex = items.findIndex((item) => {\r\n return item.id === collision.id;\r\n });\r\n if (collision.locked) {\r\n items = this.moveItemFromCollision(\r\n items,\r\n items[collisionIndex],\r\n d,\r\n isUserAction,\r\n );\r\n } else {\r\n items = this.moveItemFromCollision(\r\n items,\r\n d,\r\n items[collisionIndex],\r\n isUserAction,\r\n );\r\n }\r\n }\r\n return items;\r\n }\r\n moveItemFromCollision(\r\n items: Item[],\r\n colllidesWith: Item,\r\n itemToMove: Item,\r\n isUserAction?: boolean,\r\n ): Item[] {\r\n if (isUserAction) {\r\n const fakeItem: Item = {\r\n id: \"-1fakeItem\",\r\n x: itemToMove.x,\r\n y: itemToMove.y,\r\n width: itemToMove.width,\r\n maxWidth: itemToMove.maxWidth,\r\n minWidth: itemToMove.minWidth,\r\n height: itemToMove.height,\r\n maxHeight: itemToMove.maxHeight,\r\n minHeight: itemToMove.minHeight,\r\n };\r\n fakeItem.y = Math.max(colllidesWith.y - itemToMove.height, 0);\r\n if (!this.getFirstCollision(items, fakeItem)) {\r\n return this.moveItem(items, itemToMove, itemToMove.x, fakeItem.y);\r\n }\r\n }\r\n return this.moveItem(items, itemToMove, itemToMove.x, itemToMove.y + 1);\r\n }\r\n syncItems(items: Item[]): void {\r\n items.forEach((i) => {\r\n const dashItem = this.getDashItemById(i.id);\r\n dashItem!.fromItem(i);\r\n });\r\n }\r\n static get defaults(): any {\r\n return {\r\n numberOfCols: 12 as number,\r\n breakpointWidth: undefined as number | undefined,\r\n margin: { x: 10, y: 10 } as Margin,\r\n autoHeight: true as boolean,\r\n keepSquare: true as boolean,\r\n useCssTransforms: false as boolean,\r\n width: 400 as number,\r\n height: 400 as number,\r\n rowHeight: false as number | boolean,\r\n maxRowHeight: false as number | boolean,\r\n minRowHeight: false as number | boolean,\r\n colWidth: false as number | boolean,\r\n maxColWidth: false as number | boolean,\r\n minColWidth: false as number | boolean,\r\n compact: true as boolean,\r\n };\r\n }\r\n}\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"item\",staticClass:\"item\",class:_vm.classObj,style:(_vm.cssStyle),attrs:{\"id\":'item_' + _vm.id},on:{\"mouseover\":function($event){_vm.hover = true},\"mouseleave\":function($event){_vm.hover = false}}},[(_vm.resizeTop)?_c('div',{ref:_vm.id + '-resizeTop',staticClass:\"resize resize-top\",style:({\n height: _vm.resizeHandleSize + 'px',\n top: -(_vm.resizeHandleSize / 2) + 'px',\n left: 0,\n right: 0,\n cursor: 'ns-resize',\n position: 'absolute',\n zIndex: _vm.resizableZIndex,\n }),attrs:{\"id\":_vm.id + '-resizeTop'}},[_vm._t(\"resizeTop\")],2):_vm._e(),(_vm.resizeBottom)?_c('div',{ref:_vm.id + '-resizeBottom',staticClass:\"resize resize-bottom\",style:({\n height: _vm.resizeHandleSize + 'px',\n left: 0 + 'px',\n right: 0 + 'px',\n bottom: -(_vm.resizeHandleSize / 2) + 'px',\n cursor: 'ns-resize',\n position: 'absolute',\n zIndex: _vm.resizableZIndex,\n }),attrs:{\"id\":_vm.id + '-resizeBottom'}},[_vm._t(\"resizeBottom\")],2):_vm._e(),(_vm.resizeLeft)?_c('div',{ref:_vm.id + '-resizeLeft',staticClass:\"resize resize-left\",style:({\n width: _vm.resizeHandleSize + 'px',\n top: 0 + 'px',\n bottom: 0 + 'px',\n left: -(_vm.resizeHandleSize / 2) + 'px',\n cursor: 'ew-resize',\n position: 'absolute',\n zIndex: _vm.resizableZIndex,\n }),attrs:{\"id\":_vm.id + '-resizeLeft'}},[_vm._t(\"resizeLeft\")],2):_vm._e(),(_vm.resizeRight)?_c('div',{ref:_vm.id + '-resizeRight',staticClass:\"resize resize-right\",style:({\n width: _vm.resizeHandleSize + 'px',\n top: 0 + 'px',\n bottom: 0 + 'px',\n right: -(_vm.resizeHandleSize / 2) + 'px',\n cursor: 'ew-resize',\n position: 'absolute',\n zIndex: _vm.resizableZIndex,\n }),attrs:{\"id\":_vm.id + '-resizeRight'}},[_vm._t(\"resizeRight\")],2):_vm._e(),(_vm.resizeTopLeft)?_c('div',{ref:_vm.id + '-resizeTopLeft',staticClass:\"resize resize-left resize-top\",style:({\n width: _vm.resizeHandleSize * 2 + 'px',\n height: _vm.resizeHandleSize * 2 + 'px',\n top: -_vm.resizeHandleSize + 'px',\n left: -_vm.resizeHandleSize + 'px',\n cursor: 'nw-resize',\n position: 'absolute',\n zIndex: _vm.resizableZIndex,\n }),attrs:{\"id\":_vm.id + '-resizeTopLeft'}},[_vm._t(\"resizeTopLeft\")],2):_vm._e(),(_vm.resizeTopRight)?_c('div',{ref:_vm.id + '-resizeTopRight',staticClass:\"resize resize-right resize-top\",style:({\n width: _vm.resizeHandleSize * 2 + 'px',\n height: _vm.resizeHandleSize * 2 + 'px',\n top: -_vm.resizeHandleSize + 'px',\n right: -_vm.resizeHandleSize + 'px',\n cursor: 'ne-resize',\n position: 'absolute',\n zIndex: _vm.resizableZIndex,\n }),attrs:{\"id\":_vm.id + '-resizeTopRight'}},[_vm._t(\"resizeTopRight\")],2):_vm._e(),(_vm.resizeBottomLeft)?_c('div',{ref:_vm.id + '-resizeBottomLeft',staticClass:\"resize resize-left resize-bottom\",style:({\n width: _vm.resizeHandleSize * 2 + 'px',\n height: _vm.resizeHandleSize * 2 + 'px',\n bottom: -_vm.resizeHandleSize + 'px',\n left: -_vm.resizeHandleSize + 'px',\n cursor: 'ne-resize',\n position: 'absolute',\n zIndex: _vm.resizableZIndex,\n }),attrs:{\"id\":_vm.id + '-resizeBottomLeft'}},[_vm._t(\"resizeBottomLeft\")],2):_vm._e(),(_vm.resizeBottomRight)?_c('div',{ref:_vm.id + '-resizeBottomRight',staticClass:\"resize resize-right resize-bottom\",style:({\n width: _vm.resizeHandleSize * 2 + 'px',\n height: _vm.resizeHandleSize * 2 + 'px',\n bottom: -_vm.resizeHandleSize + 'px',\n right: -_vm.resizeHandleSize + 'px',\n cursor: 'nw-resize',\n position: 'absolute',\n zIndex: _vm.resizableZIndex,\n }),attrs:{\"id\":_vm.id + '-resizeBottomRight'}},[_vm._t(\"resizeBottomRight\")],2):_vm._e(),_vm._t(\"default\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","const domObjects = {\n init,\n document: null,\n DocumentFragment: null,\n SVGElement: null,\n SVGSVGElement: null,\n SVGElementInstance: null,\n Element: null,\n HTMLElement: null,\n Event: null,\n Touch: null,\n PointerEvent: null\n};\n\nfunction blank() {}\n\nexport default domObjects;\n\nfunction init(window) {\n const win = window;\n domObjects.document = win.document;\n domObjects.DocumentFragment = win.DocumentFragment || blank;\n domObjects.SVGElement = win.SVGElement || blank;\n domObjects.SVGSVGElement = win.SVGSVGElement || blank;\n domObjects.SVGElementInstance = win.SVGElementInstance || blank;\n domObjects.Element = win.Element || blank;\n domObjects.HTMLElement = win.HTMLElement || domObjects.Element;\n domObjects.Event = win.Event;\n domObjects.Touch = win.Touch || blank;\n domObjects.PointerEvent = win.PointerEvent || win.MSPointerEvent;\n}\n//# sourceMappingURL=domObjects.js.map","export default (thing => !!(thing && thing.Window) && thing instanceof thing.Window);\n//# sourceMappingURL=isWindow.js.map","import isWindow from \"./isWindow.js\";\nexport let realWindow = undefined;\nlet win = undefined;\nexport { win as window };\nexport function init(window) {\n // get wrapped window if using Shadow DOM polyfill\n realWindow = window; // create a TextNode\n\n const el = window.document.createTextNode(''); // check if it's wrapped by a polyfill\n\n if (el.ownerDocument !== window.document && typeof window.wrap === 'function' && window.wrap(el) === el) {\n // use wrapped window\n window = window.wrap(window);\n }\n\n win = window;\n}\n\nif (typeof window !== 'undefined' && !!window) {\n init(window);\n}\n\nexport function getWindow(node) {\n if (isWindow(node)) {\n return node;\n }\n\n const rootNode = node.ownerDocument || node;\n return rootNode.defaultView || win.window;\n}\n//# sourceMappingURL=window.js.map","import isWindow from \"./isWindow.js\";\nimport * as win from \"./window.js\";\n\nconst window = thing => thing === win.window || isWindow(thing);\n\nconst docFrag = thing => object(thing) && thing.nodeType === 11;\n\nconst object = thing => !!thing && typeof thing === 'object';\n\nconst func = thing => typeof thing === 'function';\n\nconst number = thing => typeof thing === 'number';\n\nconst bool = thing => typeof thing === 'boolean';\n\nconst string = thing => typeof thing === 'string';\n\nconst element = thing => {\n if (!thing || typeof thing !== 'object') {\n return false;\n } // eslint-disable-next-line import/no-named-as-default-member\n\n\n const _window = win.getWindow(thing) || win.window;\n\n return /object|function/.test(typeof _window.Element) ? thing instanceof _window.Element // DOM2\n : thing.nodeType === 1 && typeof thing.nodeName === 'string';\n};\n\nconst plainObject = thing => object(thing) && !!thing.constructor && /function Object\\b/.test(thing.constructor.toString());\n\nconst array = thing => object(thing) && typeof thing.length !== 'undefined' && func(thing.splice);\n\nexport default {\n window,\n docFrag,\n object,\n func,\n number,\n bool,\n string,\n element,\n plainObject,\n array\n};\n//# sourceMappingURL=is.js.map","import domObjects from \"./domObjects.js\";\nimport is from \"./is.js\";\nconst browser = {\n init,\n supportsTouch: null,\n supportsPointerEvent: null,\n isIOS7: null,\n isIOS: null,\n isIe9: null,\n isOperaMobile: null,\n prefixedMatchesSelector: null,\n pEventTypes: null,\n wheelEvent: null\n};\n\nfunction init(window) {\n const Element = domObjects.Element;\n const navigator = window.navigator || {}; // Does the browser support touch input?\n\n browser.supportsTouch = 'ontouchstart' in window || is.func(window.DocumentTouch) && domObjects.document instanceof window.DocumentTouch; // Does the browser support PointerEvents\n\n browser.supportsPointerEvent = navigator.pointerEnabled !== false && !!domObjects.PointerEvent;\n browser.isIOS = /iP(hone|od|ad)/.test(navigator.platform); // scrolling doesn't change the result of getClientRects on iOS 7\n\n browser.isIOS7 = /iP(hone|od|ad)/.test(navigator.platform) && /OS 7[^\\d]/.test(navigator.appVersion);\n browser.isIe9 = /MSIE 9/.test(navigator.userAgent); // Opera Mobile must be handled differently\n\n browser.isOperaMobile = navigator.appName === 'Opera' && browser.supportsTouch && /Presto/.test(navigator.userAgent); // prefix matchesSelector\n\n browser.prefixedMatchesSelector = 'matches' in Element.prototype ? 'matches' : 'webkitMatchesSelector' in Element.prototype ? 'webkitMatchesSelector' : 'mozMatchesSelector' in Element.prototype ? 'mozMatchesSelector' : 'oMatchesSelector' in Element.prototype ? 'oMatchesSelector' : 'msMatchesSelector';\n browser.pEventTypes = browser.supportsPointerEvent ? domObjects.PointerEvent === window.MSPointerEvent ? {\n up: 'MSPointerUp',\n down: 'MSPointerDown',\n over: 'mouseover',\n out: 'mouseout',\n move: 'MSPointerMove',\n cancel: 'MSPointerCancel'\n } : {\n up: 'pointerup',\n down: 'pointerdown',\n over: 'pointerover',\n out: 'pointerout',\n move: 'pointermove',\n cancel: 'pointercancel'\n } : null; // because Webkit and Opera still use 'mousewheel' event type\n\n browser.wheelEvent = domObjects.document && 'onmousewheel' in domObjects.document ? 'mousewheel' : 'wheel';\n}\n\nexport default browser;\n//# sourceMappingURL=browser.js.map","export const contains = (array, target) => array.indexOf(target) !== -1;\nexport const remove = (array, target) => array.splice(array.indexOf(target), 1);\nexport const merge = (target, source) => {\n for (const item of source) {\n target.push(item);\n }\n\n return target;\n};\nexport const from = source => merge([], source);\nexport const findIndex = (array, func) => {\n for (let i = 0; i < array.length; i++) {\n if (func(array[i], i, array)) {\n return i;\n }\n }\n\n return -1;\n};\nexport const find = (array, func) => array[findIndex(array, func)];\n//# sourceMappingURL=arr.js.map","import * as arr from \"./arr.js\";\nimport is from \"./is.js\"; // tslint:disable-next-line ban-types\n\nexport default function clone(source) {\n const dest = {};\n\n for (const prop in source) {\n const value = source[prop];\n\n if (is.plainObject(value)) {\n dest[prop] = clone(value);\n } else if (is.array(value)) {\n dest[prop] = arr.from(value);\n } else {\n dest[prop] = value;\n }\n }\n\n return dest;\n}\n//# sourceMappingURL=clone.js.map","export default function extend(dest, source) {\n for (const prop in source) {\n ;\n dest[prop] = source[prop];\n }\n\n const ret = dest;\n return ret;\n}\n//# sourceMappingURL=extend.js.map","let lastTime = 0;\nlet request;\nlet cancel;\n\nfunction init(global) {\n request = global.requestAnimationFrame;\n cancel = global.cancelAnimationFrame;\n\n if (!request) {\n const vendors = ['ms', 'moz', 'webkit', 'o'];\n\n for (const vendor of vendors) {\n request = global[`${vendor}RequestAnimationFrame`];\n cancel = global[`${vendor}CancelAnimationFrame`] || global[`${vendor}CancelRequestAnimationFrame`];\n }\n }\n\n request = request && request.bind(global);\n cancel = cancel && cancel.bind(global);\n\n if (!request) {\n request = callback => {\n const currTime = Date.now();\n const timeToCall = Math.max(0, 16 - (currTime - lastTime));\n const token = global.setTimeout(() => {\n // eslint-disable-next-line node/no-callback-literal\n callback(currTime + timeToCall);\n }, timeToCall);\n lastTime = currTime + timeToCall;\n return token;\n };\n\n cancel = token => clearTimeout(token);\n }\n}\n\nexport default {\n request: callback => request(callback),\n cancel: token => cancel(token),\n init\n};\n//# sourceMappingURL=raf.js.map","import extend from \"./extend.js\";\nimport is from \"./is.js\";\nexport default function normalize(type, listeners, result) {\n result = result || {};\n\n if (is.string(type) && type.search(' ') !== -1) {\n type = split(type);\n }\n\n if (is.array(type)) {\n return type.reduce((acc, t) => extend(acc, normalize(t, listeners, result)), result);\n } // ({ type: fn }) -> ('', { type: fn })\n\n\n if (is.object(type)) {\n listeners = type;\n type = '';\n }\n\n if (is.func(listeners)) {\n result[type] = result[type] || [];\n result[type].push(listeners);\n } else if (is.array(listeners)) {\n for (const l of listeners) {\n normalize(type, l, result);\n }\n } else if (is.object(listeners)) {\n for (const prefix in listeners) {\n const combinedTypes = split(prefix).map(p => `${type}${p}`);\n normalize(combinedTypes, listeners[prefix], result);\n }\n }\n\n return result;\n}\n\nfunction split(type) {\n return type.trim().split(/ +/);\n}\n//# sourceMappingURL=normalizeListeners.js.map","import * as arr from \"../utils/arr.js\";\nimport extend from \"../utils/extend.js\";\nimport normalize from \"../utils/normalizeListeners.js\";\n\nfunction fireUntilImmediateStopped(event, listeners) {\n for (const listener of listeners) {\n if (event.immediatePropagationStopped) {\n break;\n }\n\n listener(event);\n }\n}\n\nexport class Eventable {\n constructor(options) {\n this.options = void 0;\n this.types = {};\n this.propagationStopped = false;\n this.immediatePropagationStopped = false;\n this.global = void 0;\n this.options = extend({}, options || {});\n }\n\n fire(event) {\n let listeners;\n const global = this.global; // Interactable#on() listeners\n // tslint:disable no-conditional-assignment\n\n if (listeners = this.types[event.type]) {\n fireUntilImmediateStopped(event, listeners);\n } // interact.on() listeners\n\n\n if (!event.propagationStopped && global && (listeners = global[event.type])) {\n fireUntilImmediateStopped(event, listeners);\n }\n }\n\n on(type, listener) {\n const listeners = normalize(type, listener);\n\n for (type in listeners) {\n this.types[type] = arr.merge(this.types[type] || [], listeners[type]);\n }\n }\n\n off(type, listener) {\n const listeners = normalize(type, listener);\n\n for (type in listeners) {\n const eventList = this.types[type];\n\n if (!eventList || !eventList.length) {\n continue;\n }\n\n for (const subListener of listeners[type]) {\n const index = eventList.indexOf(subListener);\n\n if (index !== -1) {\n eventList.splice(index, 1);\n }\n }\n }\n }\n\n getRect(_element) {\n return null;\n }\n\n}\n//# sourceMappingURL=Eventable.js.map","import browser from \"./browser.js\";\nimport domObjects from \"./domObjects.js\";\nimport is from \"./is.js\";\nimport * as win from \"./window.js\";\nexport function nodeContains(parent, child) {\n if (parent.contains) {\n return parent.contains(child);\n }\n\n while (child) {\n if (child === parent) {\n return true;\n }\n\n child = child.parentNode;\n }\n\n return false;\n}\nexport function closest(element, selector) {\n while (is.element(element)) {\n if (matchesSelector(element, selector)) {\n return element;\n }\n\n element = parentNode(element);\n }\n\n return null;\n}\nexport function parentNode(node) {\n let parent = node.parentNode;\n\n if (is.docFrag(parent)) {\n // skip past #shado-root fragments\n // tslint:disable-next-line\n while ((parent = parent.host) && is.docFrag(parent)) {\n continue;\n }\n\n return parent;\n }\n\n return parent;\n}\nexport function matchesSelector(element, selector) {\n // remove /deep/ from selectors if shadowDOM polyfill is used\n if (win.window !== win.realWindow) {\n selector = selector.replace(/\\/deep\\//g, ' ');\n }\n\n return element[browser.prefixedMatchesSelector](selector);\n}\n\nconst getParent = el => el.parentNode || el.host; // Test for the element that's \"above\" all other qualifiers\n\n\nexport function indexOfDeepestElement(elements) {\n let deepestNodeParents = [];\n let deepestNodeIndex;\n\n for (let i = 0; i < elements.length; i++) {\n const currentNode = elements[i];\n const deepestNode = elements[deepestNodeIndex]; // node may appear in elements array multiple times\n\n if (!currentNode || i === deepestNodeIndex) {\n continue;\n }\n\n if (!deepestNode) {\n deepestNodeIndex = i;\n continue;\n }\n\n const currentNodeParent = getParent(currentNode);\n const deepestNodeParent = getParent(deepestNode); // check if the deepest or current are document.documentElement/rootElement\n // - if the current node is, do nothing and continue\n\n if (currentNodeParent === currentNode.ownerDocument) {\n continue;\n } // - if deepest is, update with the current node and continue to next\n else if (deepestNodeParent === currentNode.ownerDocument) {\n deepestNodeIndex = i;\n continue;\n } // compare zIndex of siblings\n\n\n if (currentNodeParent === deepestNodeParent) {\n if (zIndexIsHigherThan(currentNode, deepestNode)) {\n deepestNodeIndex = i;\n }\n\n continue;\n } // populate the ancestry array for the latest deepest node\n\n\n deepestNodeParents = deepestNodeParents.length ? deepestNodeParents : getNodeParents(deepestNode);\n let ancestryStart; // if the deepest node is an HTMLElement and the current node is a non root svg element\n\n if (deepestNode instanceof domObjects.HTMLElement && currentNode instanceof domObjects.SVGElement && !(currentNode instanceof domObjects.SVGSVGElement)) {\n // TODO: is this check necessary? Was this for HTML elements embedded in SVG?\n if (currentNode === deepestNodeParent) {\n continue;\n }\n\n ancestryStart = currentNode.ownerSVGElement;\n } else {\n ancestryStart = currentNode;\n }\n\n const currentNodeParents = getNodeParents(ancestryStart, deepestNode.ownerDocument);\n let commonIndex = 0; // get (position of closest common ancestor) + 1\n\n while (currentNodeParents[commonIndex] && currentNodeParents[commonIndex] === deepestNodeParents[commonIndex]) {\n commonIndex++;\n }\n\n const parents = [currentNodeParents[commonIndex - 1], currentNodeParents[commonIndex], deepestNodeParents[commonIndex]];\n\n if (parents[0]) {\n let child = parents[0].lastChild;\n\n while (child) {\n if (child === parents[1]) {\n deepestNodeIndex = i;\n deepestNodeParents = currentNodeParents;\n break;\n } else if (child === parents[2]) {\n break;\n }\n\n child = child.previousSibling;\n }\n }\n }\n\n return deepestNodeIndex;\n}\n\nfunction getNodeParents(node, limit) {\n const parents = [];\n let parent = node;\n let parentParent;\n\n while ((parentParent = getParent(parent)) && parent !== limit && parentParent !== parent.ownerDocument) {\n parents.unshift(parent);\n parent = parentParent;\n }\n\n return parents;\n}\n\nfunction zIndexIsHigherThan(higherNode, lowerNode) {\n const higherIndex = parseInt(win.getWindow(higherNode).getComputedStyle(higherNode).zIndex, 10) || 0;\n const lowerIndex = parseInt(win.getWindow(lowerNode).getComputedStyle(lowerNode).zIndex, 10) || 0;\n return higherIndex >= lowerIndex;\n}\n\nexport function matchesUpTo(element, selector, limit) {\n while (is.element(element)) {\n if (matchesSelector(element, selector)) {\n return true;\n }\n\n element = parentNode(element);\n\n if (element === limit) {\n return matchesSelector(element, selector);\n }\n }\n\n return false;\n}\nexport function getActualElement(element) {\n return element.correspondingUseElement || element;\n}\nexport function getScrollXY(relevantWindow) {\n relevantWindow = relevantWindow || win.window;\n return {\n x: relevantWindow.scrollX || relevantWindow.document.documentElement.scrollLeft,\n y: relevantWindow.scrollY || relevantWindow.document.documentElement.scrollTop\n };\n}\nexport function getElementClientRect(element) {\n const clientRect = element instanceof domObjects.SVGElement ? element.getBoundingClientRect() : element.getClientRects()[0];\n return clientRect && {\n left: clientRect.left,\n right: clientRect.right,\n top: clientRect.top,\n bottom: clientRect.bottom,\n width: clientRect.width || clientRect.right - clientRect.left,\n height: clientRect.height || clientRect.bottom - clientRect.top\n };\n}\nexport function getElementRect(element) {\n const clientRect = getElementClientRect(element);\n\n if (!browser.isIOS7 && clientRect) {\n const scroll = getScrollXY(win.getWindow(element));\n clientRect.left += scroll.x;\n clientRect.right += scroll.x;\n clientRect.top += scroll.y;\n clientRect.bottom += scroll.y;\n }\n\n return clientRect;\n}\nexport function getPath(node) {\n const path = [];\n\n while (node) {\n path.push(node);\n node = parentNode(node);\n }\n\n return path;\n}\nexport function trySelector(value) {\n if (!is.string(value)) {\n return false;\n } // an exception will be raised if it is invalid\n\n\n domObjects.document.querySelector(value);\n return true;\n}\n//# sourceMappingURL=domUtils.js.map","import { closest, getElementRect, parentNode } from \"./domUtils.js\";\nimport extend from \"./extend.js\";\nimport is from \"./is.js\";\nexport function getStringOptionResult(value, target, element) {\n if (value === 'parent') {\n return parentNode(element);\n }\n\n if (value === 'self') {\n return target.getRect(element);\n }\n\n return closest(element, value);\n}\nexport function resolveRectLike(value, target, element, functionArgs) {\n let returnValue = value;\n\n if (is.string(returnValue)) {\n returnValue = getStringOptionResult(returnValue, target, element);\n } else if (is.func(returnValue)) {\n returnValue = returnValue(...functionArgs);\n }\n\n if (is.element(returnValue)) {\n returnValue = getElementRect(returnValue);\n }\n\n return returnValue;\n}\nexport function rectToXY(rect) {\n return rect && {\n x: 'x' in rect ? rect.x : rect.left,\n y: 'y' in rect ? rect.y : rect.top\n };\n}\nexport function xywhToTlbr(rect) {\n if (rect && !('left' in rect && 'top' in rect)) {\n rect = extend({}, rect);\n rect.left = rect.x || 0;\n rect.top = rect.y || 0;\n rect.right = rect.right || rect.left + rect.width;\n rect.bottom = rect.bottom || rect.top + rect.height;\n }\n\n return rect;\n}\nexport function tlbrToXywh(rect) {\n if (rect && !('x' in rect && 'y' in rect)) {\n rect = extend({}, rect);\n rect.x = rect.left || 0;\n rect.y = rect.top || 0;\n rect.width = rect.width || (rect.right || 0) - rect.x;\n rect.height = rect.height || (rect.bottom || 0) - rect.y;\n }\n\n return rect;\n}\nexport function addEdges(edges, rect, delta) {\n if (edges.left) {\n rect.left += delta.x;\n }\n\n if (edges.right) {\n rect.right += delta.x;\n }\n\n if (edges.top) {\n rect.top += delta.y;\n }\n\n if (edges.bottom) {\n rect.bottom += delta.y;\n }\n\n rect.width = rect.right - rect.left;\n rect.height = rect.bottom - rect.top;\n}\n//# sourceMappingURL=rect.js.map","import { rectToXY, resolveRectLike } from \"./rect.js\";\nexport default function (target, element, actionName) {\n const actionOptions = target.options[actionName];\n const actionOrigin = actionOptions && actionOptions.origin;\n const origin = actionOrigin || target.options.origin;\n const originRect = resolveRectLike(origin, target, element, [target && element]);\n return rectToXY(originRect) || {\n x: 0,\n y: 0\n };\n}\n//# sourceMappingURL=getOriginXY.js.map","export default ((x, y) => Math.sqrt(x * x + y * y));\n//# sourceMappingURL=hypot.js.map","export class BaseEvent {\n constructor(interaction) {\n this.type = void 0;\n this.target = void 0;\n this.currentTarget = void 0;\n this.interactable = void 0;\n this._interaction = void 0;\n this.timeStamp = void 0;\n this.immediatePropagationStopped = false;\n this.propagationStopped = false;\n this._interaction = interaction;\n }\n\n preventDefault() {}\n /**\n * Don't call any other listeners (even on the current target)\n */\n\n\n stopPropagation() {\n this.propagationStopped = true;\n }\n /**\n * Don't call listeners on the remaining targets\n */\n\n\n stopImmediatePropagation() {\n this.immediatePropagationStopped = this.propagationStopped = true;\n }\n\n} // defined outside of class definition to avoid assignment of undefined during\n// construction\n\n// getters and setters defined here to support typescript 3.6 and below which\n// don't support getter and setters in .d.ts files\nObject.defineProperty(BaseEvent.prototype, 'interaction', {\n get() {\n return this._interaction._proxy;\n },\n\n set() {}\n\n});\n//# sourceMappingURL=BaseEvent.js.map","// eslint-disable-next-line @typescript-eslint/no-empty-interface\n// export interface Options extends BaseDefaults, PerActionDefaults {}\nexport const defaults = {\n base: {\n preventDefault: 'auto',\n deltaSource: 'page'\n },\n perAction: {\n enabled: false,\n origin: {\n x: 0,\n y: 0\n }\n },\n actions: {}\n};\n//# sourceMappingURL=options.js.map","import extend from \"../utils/extend.js\";\nimport getOriginXY from \"../utils/getOriginXY.js\";\nimport hypot from \"../utils/hypot.js\";\nimport { BaseEvent } from \"./BaseEvent.js\";\nimport { defaults } from \"./options.js\";\nexport class InteractEvent extends BaseEvent {\n // resize\n\n /** */\n constructor(interaction, event, actionName, phase, element, preEnd, type) {\n super(interaction);\n this.target = void 0;\n this.currentTarget = void 0;\n this.relatedTarget = null;\n this.screenX = void 0;\n this.screenY = void 0;\n this.button = void 0;\n this.buttons = void 0;\n this.ctrlKey = void 0;\n this.shiftKey = void 0;\n this.altKey = void 0;\n this.metaKey = void 0;\n this.page = void 0;\n this.client = void 0;\n this.delta = void 0;\n this.rect = void 0;\n this.x0 = void 0;\n this.y0 = void 0;\n this.t0 = void 0;\n this.dt = void 0;\n this.duration = void 0;\n this.clientX0 = void 0;\n this.clientY0 = void 0;\n this.velocity = void 0;\n this.speed = void 0;\n this.swipe = void 0;\n this.timeStamp = void 0;\n this.axes = void 0;\n this.preEnd = void 0;\n element = element || interaction.element;\n const target = interaction.interactable;\n const deltaSource = (target && target.options || defaults).deltaSource;\n const origin = getOriginXY(target, element, actionName);\n const starting = phase === 'start';\n const ending = phase === 'end';\n const prevEvent = starting ? this : interaction.prevEvent;\n const coords = starting ? interaction.coords.start : ending ? {\n page: prevEvent.page,\n client: prevEvent.client,\n timeStamp: interaction.coords.cur.timeStamp\n } : interaction.coords.cur;\n this.page = extend({}, coords.page);\n this.client = extend({}, coords.client);\n this.rect = extend({}, interaction.rect);\n this.timeStamp = coords.timeStamp;\n\n if (!ending) {\n this.page.x -= origin.x;\n this.page.y -= origin.y;\n this.client.x -= origin.x;\n this.client.y -= origin.y;\n }\n\n this.ctrlKey = event.ctrlKey;\n this.altKey = event.altKey;\n this.shiftKey = event.shiftKey;\n this.metaKey = event.metaKey;\n this.button = event.button;\n this.buttons = event.buttons;\n this.target = element;\n this.currentTarget = element;\n this.preEnd = preEnd;\n this.type = type || actionName + (phase || '');\n this.interactable = target;\n this.t0 = starting ? interaction.pointers[interaction.pointers.length - 1].downTime : prevEvent.t0;\n this.x0 = interaction.coords.start.page.x - origin.x;\n this.y0 = interaction.coords.start.page.y - origin.y;\n this.clientX0 = interaction.coords.start.client.x - origin.x;\n this.clientY0 = interaction.coords.start.client.y - origin.y;\n\n if (starting || ending) {\n this.delta = {\n x: 0,\n y: 0\n };\n } else {\n this.delta = {\n x: this[deltaSource].x - prevEvent[deltaSource].x,\n y: this[deltaSource].y - prevEvent[deltaSource].y\n };\n }\n\n this.dt = interaction.coords.delta.timeStamp;\n this.duration = this.timeStamp - this.t0; // velocity and speed in pixels per second\n\n this.velocity = extend({}, interaction.coords.velocity[deltaSource]);\n this.speed = hypot(this.velocity.x, this.velocity.y);\n this.swipe = ending || phase === 'inertiastart' ? this.getSwipe() : null;\n }\n\n getSwipe() {\n const interaction = this._interaction;\n\n if (interaction.prevEvent.speed < 600 || this.timeStamp - interaction.prevEvent.timeStamp > 150) {\n return null;\n }\n\n let angle = 180 * Math.atan2(interaction.prevEvent.velocityY, interaction.prevEvent.velocityX) / Math.PI;\n const overlap = 22.5;\n\n if (angle < 0) {\n angle += 360;\n }\n\n const left = 135 - overlap <= angle && angle < 225 + overlap;\n const up = 225 - overlap <= angle && angle < 315 + overlap;\n const right = !left && (315 - overlap <= angle || angle < 45 + overlap);\n const down = !up && 45 - overlap <= angle && angle < 135 + overlap;\n return {\n up,\n down,\n left,\n right,\n angle,\n speed: interaction.prevEvent.speed,\n velocity: {\n x: interaction.prevEvent.velocityX,\n y: interaction.prevEvent.velocityY\n }\n };\n }\n\n preventDefault() {}\n /**\n * Don't call listeners on the remaining targets\n */\n\n\n stopImmediatePropagation() {\n this.immediatePropagationStopped = this.propagationStopped = true;\n }\n /**\n * Don't call any other listeners (even on the current target)\n */\n\n\n stopPropagation() {\n this.propagationStopped = true;\n }\n\n} // getters and setters defined here to support typescript 3.6 and below which\n// don't support getter and setters in .d.ts files\n\nObject.defineProperties(InteractEvent.prototype, {\n pageX: {\n get() {\n return this.page.x;\n },\n\n set(value) {\n this.page.x = value;\n }\n\n },\n pageY: {\n get() {\n return this.page.y;\n },\n\n set(value) {\n this.page.y = value;\n }\n\n },\n clientX: {\n get() {\n return this.client.x;\n },\n\n set(value) {\n this.client.x = value;\n }\n\n },\n clientY: {\n get() {\n return this.client.y;\n },\n\n set(value) {\n this.client.y = value;\n }\n\n },\n dx: {\n get() {\n return this.delta.x;\n },\n\n set(value) {\n this.delta.x = value;\n }\n\n },\n dy: {\n get() {\n return this.delta.y;\n },\n\n set(value) {\n this.delta.y = value;\n }\n\n },\n velocityX: {\n get() {\n return this.velocity.x;\n },\n\n set(value) {\n this.velocity.x = value;\n }\n\n },\n velocityY: {\n get() {\n return this.velocity.y;\n },\n\n set(value) {\n this.velocity.y = value;\n }\n\n }\n});\n//# sourceMappingURL=InteractEvent.js.map","import { window } from \"./window.js\";\nexport function warnOnce(method, message) {\n let warned = false;\n return function () {\n if (!warned) {\n ;\n window.console.warn(message);\n warned = true;\n }\n\n return method.apply(this, arguments);\n };\n}\nexport function copyAction(dest, src) {\n dest.name = src.name;\n dest.axis = src.axis;\n dest.edges = src.edges;\n return dest;\n}\nexport const sign = n => n >= 0 ? 1 : -1;\n//# sourceMappingURL=misc.js.map","import browser from \"./browser.js\";\nimport dom from \"./domObjects.js\";\nimport * as domUtils from \"./domUtils.js\";\nimport hypot from \"./hypot.js\";\nimport is from \"./is.js\";\nimport pointerExtend from \"./pointerExtend.js\";\nexport function copyCoords(dest, src) {\n dest.page = dest.page || {};\n dest.page.x = src.page.x;\n dest.page.y = src.page.y;\n dest.client = dest.client || {};\n dest.client.x = src.client.x;\n dest.client.y = src.client.y;\n dest.timeStamp = src.timeStamp;\n}\nexport function setCoordDeltas(targetObj, prev, cur) {\n targetObj.page.x = cur.page.x - prev.page.x;\n targetObj.page.y = cur.page.y - prev.page.y;\n targetObj.client.x = cur.client.x - prev.client.x;\n targetObj.client.y = cur.client.y - prev.client.y;\n targetObj.timeStamp = cur.timeStamp - prev.timeStamp;\n}\nexport function setCoordVelocity(targetObj, delta) {\n const dt = Math.max(delta.timeStamp / 1000, 0.001);\n targetObj.page.x = delta.page.x / dt;\n targetObj.page.y = delta.page.y / dt;\n targetObj.client.x = delta.client.x / dt;\n targetObj.client.y = delta.client.y / dt;\n targetObj.timeStamp = dt;\n}\nexport function setZeroCoords(targetObj) {\n targetObj.page.x = 0;\n targetObj.page.y = 0;\n targetObj.client.x = 0;\n targetObj.client.y = 0;\n}\nexport function isNativePointer(pointer) {\n return pointer instanceof dom.Event || pointer instanceof dom.Touch;\n} // Get specified X/Y coords for mouse or event.touches[0]\n\nexport function getXY(type, pointer, xy) {\n xy = xy || {};\n type = type || 'page';\n xy.x = pointer[type + 'X'];\n xy.y = pointer[type + 'Y'];\n return xy;\n}\nexport function getPageXY(pointer, page) {\n page = page || {\n x: 0,\n y: 0\n }; // Opera Mobile handles the viewport and scrolling oddly\n\n if (browser.isOperaMobile && isNativePointer(pointer)) {\n getXY('screen', pointer, page);\n page.x += window.scrollX;\n page.y += window.scrollY;\n } else {\n getXY('page', pointer, page);\n }\n\n return page;\n}\nexport function getClientXY(pointer, client) {\n client = client || {};\n\n if (browser.isOperaMobile && isNativePointer(pointer)) {\n // Opera Mobile handles the viewport and scrolling oddly\n getXY('screen', pointer, client);\n } else {\n getXY('client', pointer, client);\n }\n\n return client;\n}\nexport function getPointerId(pointer) {\n return is.number(pointer.pointerId) ? pointer.pointerId : pointer.identifier;\n}\nexport function setCoords(dest, pointers, timeStamp) {\n const pointer = pointers.length > 1 ? pointerAverage(pointers) : pointers[0];\n getPageXY(pointer, dest.page);\n getClientXY(pointer, dest.client);\n dest.timeStamp = timeStamp;\n}\nexport function getTouchPair(event) {\n const touches = []; // array of touches is supplied\n\n if (is.array(event)) {\n touches[0] = event[0];\n touches[1] = event[1];\n } // an event\n else {\n if (event.type === 'touchend') {\n if (event.touches.length === 1) {\n touches[0] = event.touches[0];\n touches[1] = event.changedTouches[0];\n } else if (event.touches.length === 0) {\n touches[0] = event.changedTouches[0];\n touches[1] = event.changedTouches[1];\n }\n } else {\n touches[0] = event.touches[0];\n touches[1] = event.touches[1];\n }\n }\n\n return touches;\n}\nexport function pointerAverage(pointers) {\n const average = {\n pageX: 0,\n pageY: 0,\n clientX: 0,\n clientY: 0,\n screenX: 0,\n screenY: 0\n };\n\n for (const pointer of pointers) {\n for (const prop in average) {\n average[prop] += pointer[prop];\n }\n }\n\n for (const prop in average) {\n average[prop] /= pointers.length;\n }\n\n return average;\n}\nexport function touchBBox(event) {\n if (!event.length) {\n return null;\n }\n\n const touches = getTouchPair(event);\n const minX = Math.min(touches[0].pageX, touches[1].pageX);\n const minY = Math.min(touches[0].pageY, touches[1].pageY);\n const maxX = Math.max(touches[0].pageX, touches[1].pageX);\n const maxY = Math.max(touches[0].pageY, touches[1].pageY);\n return {\n x: minX,\n y: minY,\n left: minX,\n top: minY,\n right: maxX,\n bottom: maxY,\n width: maxX - minX,\n height: maxY - minY\n };\n}\nexport function touchDistance(event, deltaSource) {\n const sourceX = deltaSource + 'X';\n const sourceY = deltaSource + 'Y';\n const touches = getTouchPair(event);\n const dx = touches[0][sourceX] - touches[1][sourceX];\n const dy = touches[0][sourceY] - touches[1][sourceY];\n return hypot(dx, dy);\n}\nexport function touchAngle(event, deltaSource) {\n const sourceX = deltaSource + 'X';\n const sourceY = deltaSource + 'Y';\n const touches = getTouchPair(event);\n const dx = touches[1][sourceX] - touches[0][sourceX];\n const dy = touches[1][sourceY] - touches[0][sourceY];\n const angle = 180 * Math.atan2(dy, dx) / Math.PI;\n return angle;\n}\nexport function getPointerType(pointer) {\n return is.string(pointer.pointerType) ? pointer.pointerType : is.number(pointer.pointerType) ? [undefined, undefined, 'touch', 'pen', 'mouse'][pointer.pointerType] : // if the PointerEvent API isn't available, then the \"pointer\" must\n // be either a MouseEvent, TouchEvent, or Touch object\n /touch/.test(pointer.type || '') || pointer instanceof dom.Touch ? 'touch' : 'mouse';\n} // [ event.target, event.currentTarget ]\n\nexport function getEventTargets(event) {\n const path = is.func(event.composedPath) ? event.composedPath() : event.path;\n return [domUtils.getActualElement(path ? path[0] : event.target), domUtils.getActualElement(event.currentTarget)];\n}\nexport function newCoords() {\n return {\n page: {\n x: 0,\n y: 0\n },\n client: {\n x: 0,\n y: 0\n },\n timeStamp: 0\n };\n}\nexport function coordsToEvent(coords) {\n const event = {\n coords,\n\n get page() {\n return this.coords.page;\n },\n\n get client() {\n return this.coords.client;\n },\n\n get timeStamp() {\n return this.coords.timeStamp;\n },\n\n get pageX() {\n return this.coords.page.x;\n },\n\n get pageY() {\n return this.coords.page.y;\n },\n\n get clientX() {\n return this.coords.client.x;\n },\n\n get clientY() {\n return this.coords.client.y;\n },\n\n get pointerId() {\n return this.coords.pointerId;\n },\n\n get target() {\n return this.coords.target;\n },\n\n get type() {\n return this.coords.type;\n },\n\n get pointerType() {\n return this.coords.pointerType;\n },\n\n get buttons() {\n return this.coords.buttons;\n },\n\n preventDefault() {}\n\n };\n return event;\n}\nexport { pointerExtend };\n//# sourceMappingURL=pointerUtils.js.map","export default function isNonNativeEvent(type, actions) {\n if (actions.phaselessTypes[type]) {\n return true;\n }\n\n for (const name in actions.map) {\n if (type.indexOf(name) === 0 && type.substr(name.length) in actions.phases) {\n return true;\n }\n }\n\n return false;\n}\n//# sourceMappingURL=isNonNativeEvent.js.map","/** @module interact */\nimport browser from \"../utils/browser.js\";\nimport * as domUtils from \"../utils/domUtils.js\";\nimport is from \"../utils/is.js\";\nimport { warnOnce } from \"../utils/misc.js\";\nimport * as pointerUtils from \"../utils/pointerUtils.js\";\nimport isNonNativeEvent from \"./isNonNativeEvent.js\";\nexport function createInteractStatic(scope) {\n /**\n * ```js\n * interact('#draggable').draggable(true)\n *\n * var rectables = interact('rect')\n * rectables\n * .gesturable(true)\n * .on('gesturemove', function (event) {\n * // ...\n * })\n * ```\n *\n * The methods of this variable can be used to set elements as interactables\n * and also to change various default settings.\n *\n * Calling it as a function and passing an element or a valid CSS selector\n * string returns an Interactable object which has various methods to configure\n * it.\n *\n * @global\n *\n * @param {Element | string} target The HTML or SVG Element to interact with\n * or CSS selector\n * @return {Interactable}\n */\n const interact = (target, options) => {\n let interactable = scope.interactables.get(target, options);\n\n if (!interactable) {\n interactable = scope.interactables.new(target, options);\n interactable.events.global = interact.globalEvents;\n }\n\n return interactable;\n }; // expose the functions used to calculate multi-touch properties\n\n\n interact.getPointerAverage = pointerUtils.pointerAverage;\n interact.getTouchBBox = pointerUtils.touchBBox;\n interact.getTouchDistance = pointerUtils.touchDistance;\n interact.getTouchAngle = pointerUtils.touchAngle;\n interact.getElementRect = domUtils.getElementRect;\n interact.getElementClientRect = domUtils.getElementClientRect;\n interact.matchesSelector = domUtils.matchesSelector;\n interact.closest = domUtils.closest;\n interact.globalEvents = {}; // eslint-disable-next-line no-undef\n\n interact.version = \"1.10.11\";\n interact.scope = scope;\n /**\n * Use a plugin\n *\n * @alias module:interact.use\n *\n */\n\n interact.use = function (plugin, options) {\n this.scope.usePlugin(plugin, options);\n return this;\n };\n /**\n * Check if an element or selector has been set with the {@link interact}\n * function\n *\n * @alias module:interact.isSet\n *\n * @param {Target} target The Element or string being searched for\n * @param {object} options\n * @return {boolean} Indicates if the element or CSS selector was previously\n * passed to interact\n */\n\n\n interact.isSet = function (target, options) {\n return !!this.scope.interactables.get(target, options && options.context);\n };\n /**\n * @deprecated\n * Add a global listener for an InteractEvent or adds a DOM event to `document`\n *\n * @alias module:interact.on\n *\n * @param {string | array | object} type The types of events to listen for\n * @param {function} listener The function event (s)\n * @param {object | boolean} [options] object or useCapture flag for\n * addEventListener\n * @return {object} interact\n */\n\n\n interact.on = warnOnce(function on(type, listener, options) {\n if (is.string(type) && type.search(' ') !== -1) {\n type = type.trim().split(/ +/);\n }\n\n if (is.array(type)) {\n for (const eventType of type) {\n this.on(eventType, listener, options);\n }\n\n return this;\n }\n\n if (is.object(type)) {\n for (const prop in type) {\n this.on(prop, type[prop], listener);\n }\n\n return this;\n } // if it is an InteractEvent type, add listener to globalEvents\n\n\n if (isNonNativeEvent(type, this.scope.actions)) {\n // if this type of event was never bound\n if (!this.globalEvents[type]) {\n this.globalEvents[type] = [listener];\n } else {\n this.globalEvents[type].push(listener);\n }\n } // If non InteractEvent type, addEventListener to document\n else {\n this.scope.events.add(this.scope.document, type, listener, {\n options\n });\n }\n\n return this;\n }, 'The interact.on() method is being deprecated');\n /**\n * @deprecated\n * Removes a global InteractEvent listener or DOM event from `document`\n *\n * @alias module:interact.off\n *\n * @param {string | array | object} type The types of events that were listened\n * for\n * @param {function} listener The listener function to be removed\n * @param {object | boolean} options [options] object or useCapture flag for\n * removeEventListener\n * @return {object} interact\n */\n\n interact.off = warnOnce(function off(type, listener, options) {\n if (is.string(type) && type.search(' ') !== -1) {\n type = type.trim().split(/ +/);\n }\n\n if (is.array(type)) {\n for (const eventType of type) {\n this.off(eventType, listener, options);\n }\n\n return this;\n }\n\n if (is.object(type)) {\n for (const prop in type) {\n this.off(prop, type[prop], listener);\n }\n\n return this;\n }\n\n if (isNonNativeEvent(type, this.scope.actions)) {\n let index;\n\n if (type in this.globalEvents && (index = this.globalEvents[type].indexOf(listener)) !== -1) {\n this.globalEvents[type].splice(index, 1);\n }\n } else {\n this.scope.events.remove(this.scope.document, type, listener, options);\n }\n\n return this;\n }, 'The interact.off() method is being deprecated');\n\n interact.debug = function () {\n return this.scope;\n };\n /**\n * @alias module:interact.supportsTouch\n *\n * @return {boolean} Whether or not the browser supports touch input\n */\n\n\n interact.supportsTouch = function () {\n return browser.supportsTouch;\n };\n /**\n * @alias module:interact.supportsPointerEvent\n *\n * @return {boolean} Whether or not the browser supports PointerEvents\n */\n\n\n interact.supportsPointerEvent = function () {\n return browser.supportsPointerEvent;\n };\n /**\n * Cancels all interactions (end events are not fired)\n *\n * @alias module:interact.stop\n *\n * @return {object} interact\n */\n\n\n interact.stop = function () {\n for (const interaction of this.scope.interactions.list) {\n interaction.stop();\n }\n\n return this;\n };\n /**\n * Returns or sets the distance the pointer must be moved before an action\n * sequence occurs. This also affects tolerance for tap events.\n *\n * @alias module:interact.pointerMoveTolerance\n *\n * @param {number} [newValue] The movement from the start position must be greater than this value\n * @return {interact | number}\n */\n\n\n interact.pointerMoveTolerance = function (newValue) {\n if (is.number(newValue)) {\n this.scope.interactions.pointerMoveTolerance = newValue;\n return this;\n }\n\n return this.scope.interactions.pointerMoveTolerance;\n };\n\n interact.addDocument = function (doc, options) {\n this.scope.addDocument(doc, options);\n };\n\n interact.removeDocument = function (doc) {\n this.scope.removeDocument(doc);\n };\n\n return interact;\n}\n//# sourceMappingURL=InteractStatic.js.map","/* eslint-disable no-dupe-class-members */\nimport * as arr from \"../utils/arr.js\";\nimport browser from \"../utils/browser.js\";\nimport clone from \"../utils/clone.js\";\nimport { getElementRect, matchesUpTo, nodeContains, trySelector } from \"../utils/domUtils.js\";\nimport extend from \"../utils/extend.js\";\nimport is from \"../utils/is.js\";\nimport normalizeListeners from \"../utils/normalizeListeners.js\";\nimport { getWindow } from \"../utils/window.js\";\nimport { Eventable } from \"./Eventable.js\";\nimport isNonNativeEvent from \"./isNonNativeEvent.js\";\n\n/** */\nexport class Interactable {\n /** @internal */\n get _defaults() {\n return {\n base: {},\n perAction: {},\n actions: {}\n };\n }\n\n /** */\n constructor(target, options, defaultContext, scopeEvents) {\n this.options = void 0;\n this._actions = void 0;\n this.target = void 0;\n this.events = new Eventable();\n this._context = void 0;\n this._win = void 0;\n this._doc = void 0;\n this._scopeEvents = void 0;\n this._rectChecker = void 0;\n this._actions = options.actions;\n this.target = target;\n this._context = options.context || defaultContext;\n this._win = getWindow(trySelector(target) ? this._context : target);\n this._doc = this._win.document;\n this._scopeEvents = scopeEvents;\n this.set(options);\n }\n\n setOnEvents(actionName, phases) {\n if (is.func(phases.onstart)) {\n this.on(`${actionName}start`, phases.onstart);\n }\n\n if (is.func(phases.onmove)) {\n this.on(`${actionName}move`, phases.onmove);\n }\n\n if (is.func(phases.onend)) {\n this.on(`${actionName}end`, phases.onend);\n }\n\n if (is.func(phases.oninertiastart)) {\n this.on(`${actionName}inertiastart`, phases.oninertiastart);\n }\n\n return this;\n }\n\n updatePerActionListeners(actionName, prev, cur) {\n if (is.array(prev) || is.object(prev)) {\n this.off(actionName, prev);\n }\n\n if (is.array(cur) || is.object(cur)) {\n this.on(actionName, cur);\n }\n }\n\n setPerAction(actionName, options) {\n const defaults = this._defaults; // for all the default per-action options\n\n for (const optionName_ in options) {\n const optionName = optionName_;\n const actionOptions = this.options[actionName];\n const optionValue = options[optionName]; // remove old event listeners and add new ones\n\n if (optionName === 'listeners') {\n this.updatePerActionListeners(actionName, actionOptions.listeners, optionValue);\n } // if the option value is an array\n\n\n if (is.array(optionValue)) {\n ;\n actionOptions[optionName] = arr.from(optionValue);\n } // if the option value is an object\n else if (is.plainObject(optionValue)) {\n // copy the object\n ;\n actionOptions[optionName] = extend(actionOptions[optionName] || {}, clone(optionValue)); // set anabled field to true if it exists in the defaults\n\n if (is.object(defaults.perAction[optionName]) && 'enabled' in defaults.perAction[optionName]) {\n ;\n actionOptions[optionName].enabled = optionValue.enabled !== false;\n }\n } // if the option value is a boolean and the default is an object\n else if (is.bool(optionValue) && is.object(defaults.perAction[optionName])) {\n ;\n actionOptions[optionName].enabled = optionValue;\n } // if it's anything else, do a plain assignment\n else {\n ;\n actionOptions[optionName] = optionValue;\n }\n }\n }\n /**\n * The default function to get an Interactables bounding rect. Can be\n * overridden using {@link Interactable.rectChecker}.\n *\n * @param {Element} [element] The element to measure.\n * @return {Rect} The object's bounding rectangle.\n */\n\n\n getRect(element) {\n element = element || (is.element(this.target) ? this.target : null);\n\n if (is.string(this.target)) {\n element = element || this._context.querySelector(this.target);\n }\n\n return getElementRect(element);\n }\n /**\n * Returns or sets the function used to calculate the interactable's\n * element's rectangle\n *\n * @param {function} [checker] A function which returns this Interactable's\n * bounding rectangle. See {@link Interactable.getRect}\n * @return {function | object} The checker function or this Interactable\n */\n\n\n rectChecker(checker) {\n if (is.func(checker)) {\n this._rectChecker = checker;\n\n this.getRect = element => {\n const rect = extend({}, this._rectChecker(element));\n\n if (!('width' in rect)) {\n rect.width = rect.right - rect.left;\n rect.height = rect.bottom - rect.top;\n }\n\n return rect;\n };\n\n return this;\n }\n\n if (checker === null) {\n delete this.getRect;\n delete this._rectChecker;\n return this;\n }\n\n return this.getRect;\n }\n\n _backCompatOption(optionName, newValue) {\n if (trySelector(newValue) || is.object(newValue)) {\n ;\n this.options[optionName] = newValue;\n\n for (const action in this._actions.map) {\n ;\n this.options[action][optionName] = newValue;\n }\n\n return this;\n }\n\n return this.options[optionName];\n }\n /**\n * Gets or sets the origin of the Interactable's element. The x and y\n * of the origin will be subtracted from action event coordinates.\n *\n * @param {Element | object | string} [origin] An HTML or SVG Element whose\n * rect will be used, an object eg. { x: 0, y: 0 } or string 'parent', 'self'\n * or any CSS selector\n *\n * @return {object} The current origin or this Interactable\n */\n\n\n origin(newValue) {\n return this._backCompatOption('origin', newValue);\n }\n /**\n * Returns or sets the mouse coordinate types used to calculate the\n * movement of the pointer.\n *\n * @param {string} [newValue] Use 'client' if you will be scrolling while\n * interacting; Use 'page' if you want autoScroll to work\n * @return {string | object} The current deltaSource or this Interactable\n */\n\n\n deltaSource(newValue) {\n if (newValue === 'page' || newValue === 'client') {\n this.options.deltaSource = newValue;\n return this;\n }\n\n return this.options.deltaSource;\n }\n /**\n * Gets the selector context Node of the Interactable. The default is\n * `window.document`.\n *\n * @return {Node} The context Node of this Interactable\n */\n\n\n context() {\n return this._context;\n }\n\n inContext(element) {\n return this._context === element.ownerDocument || nodeContains(this._context, element);\n }\n\n testIgnoreAllow(options, targetNode, eventTarget) {\n return !this.testIgnore(options.ignoreFrom, targetNode, eventTarget) && this.testAllow(options.allowFrom, targetNode, eventTarget);\n }\n\n testAllow(allowFrom, targetNode, element) {\n if (!allowFrom) {\n return true;\n }\n\n if (!is.element(element)) {\n return false;\n }\n\n if (is.string(allowFrom)) {\n return matchesUpTo(element, allowFrom, targetNode);\n } else if (is.element(allowFrom)) {\n return nodeContains(allowFrom, element);\n }\n\n return false;\n }\n\n testIgnore(ignoreFrom, targetNode, element) {\n if (!ignoreFrom || !is.element(element)) {\n return false;\n }\n\n if (is.string(ignoreFrom)) {\n return matchesUpTo(element, ignoreFrom, targetNode);\n } else if (is.element(ignoreFrom)) {\n return nodeContains(ignoreFrom, element);\n }\n\n return false;\n }\n /**\n * Calls listeners for the given InteractEvent type bound globally\n * and directly to this Interactable\n *\n * @param {InteractEvent} iEvent The InteractEvent object to be fired on this\n * Interactable\n * @return {Interactable} this Interactable\n */\n\n\n fire(iEvent) {\n this.events.fire(iEvent);\n return this;\n }\n\n _onOff(method, typeArg, listenerArg, options) {\n if (is.object(typeArg) && !is.array(typeArg)) {\n options = listenerArg;\n listenerArg = null;\n }\n\n const addRemove = method === 'on' ? 'add' : 'remove';\n const listeners = normalizeListeners(typeArg, listenerArg);\n\n for (let type in listeners) {\n if (type === 'wheel') {\n type = browser.wheelEvent;\n }\n\n for (const listener of listeners[type]) {\n // if it is an action event type\n if (isNonNativeEvent(type, this._actions)) {\n this.events[method](type, listener);\n } // delegated event\n else if (is.string(this.target)) {\n this._scopeEvents[`${addRemove}Delegate`](this.target, this._context, type, listener, options);\n } // remove listener from this Interactable's element\n else {\n this._scopeEvents[addRemove](this.target, type, listener, options);\n }\n }\n }\n\n return this;\n }\n /**\n * Binds a listener for an InteractEvent, pointerEvent or DOM event.\n *\n * @param {string | array | object} types The types of events to listen\n * for\n * @param {function | array | object} [listener] The event listener function(s)\n * @param {object | boolean} [options] options object or useCapture flag for\n * addEventListener\n * @return {Interactable} This Interactable\n */\n\n\n on(types, listener, options) {\n return this._onOff('on', types, listener, options);\n }\n /**\n * Removes an InteractEvent, pointerEvent or DOM event listener.\n *\n * @param {string | array | object} types The types of events that were\n * listened for\n * @param {function | array | object} [listener] The event listener function(s)\n * @param {object | boolean} [options] options object or useCapture flag for\n * removeEventListener\n * @return {Interactable} This Interactable\n */\n\n\n off(types, listener, options) {\n return this._onOff('off', types, listener, options);\n }\n /**\n * Reset the options of this Interactable\n *\n * @param {object} options The new settings to apply\n * @return {object} This Interactable\n */\n\n\n set(options) {\n const defaults = this._defaults;\n\n if (!is.object(options)) {\n options = {};\n }\n\n ;\n this.options = clone(defaults.base);\n\n for (const actionName_ in this._actions.methodDict) {\n const actionName = actionName_;\n const methodName = this._actions.methodDict[actionName];\n this.options[actionName] = {};\n this.setPerAction(actionName, extend(extend({}, defaults.perAction), defaults.actions[actionName]));\n this[methodName](options[actionName]);\n }\n\n for (const setting in options) {\n if (is.func(this[setting])) {\n ;\n this[setting](options[setting]);\n }\n }\n\n return this;\n }\n /**\n * Remove this interactable from the list of interactables and remove it's\n * action capabilities and event listeners\n */\n\n\n unset() {\n if (is.string(this.target)) {\n // remove delegated events\n for (const type in this._scopeEvents.delegatedEvents) {\n const delegated = this._scopeEvents.delegatedEvents[type];\n\n for (let i = delegated.length - 1; i >= 0; i--) {\n const {\n selector,\n context,\n listeners\n } = delegated[i];\n\n if (selector === this.target && context === this._context) {\n delegated.splice(i, 1);\n }\n\n for (let l = listeners.length - 1; l >= 0; l--) {\n this._scopeEvents.removeDelegate(this.target, this._context, type, listeners[l][0], listeners[l][1]);\n }\n }\n }\n } else {\n this._scopeEvents.remove(this.target, 'all');\n }\n }\n\n}\n//# sourceMappingURL=Interactable.js.map","import * as arr from \"../utils/arr.js\";\nimport * as domUtils from \"../utils/domUtils.js\";\nimport extend from \"../utils/extend.js\";\nimport is from \"../utils/is.js\";\nexport class InteractableSet {\n // all set interactables\n constructor(scope) {\n this.list = [];\n this.selectorMap = {};\n this.scope = void 0;\n this.scope = scope;\n scope.addListeners({\n 'interactable:unset': ({\n interactable\n }) => {\n const {\n target,\n _context: context\n } = interactable;\n const targetMappings = is.string(target) ? this.selectorMap[target] : target[this.scope.id];\n const targetIndex = arr.findIndex(targetMappings, m => m.context === context);\n\n if (targetMappings[targetIndex]) {\n // Destroying mappingInfo's context and interactable\n targetMappings[targetIndex].context = null;\n targetMappings[targetIndex].interactable = null;\n }\n\n targetMappings.splice(targetIndex, 1);\n }\n });\n }\n\n new(target, options) {\n options = extend(options || {}, {\n actions: this.scope.actions\n });\n const interactable = new this.scope.Interactable(target, options, this.scope.document, this.scope.events);\n const mappingInfo = {\n context: interactable._context,\n interactable\n };\n this.scope.addDocument(interactable._doc);\n this.list.push(interactable);\n\n if (is.string(target)) {\n if (!this.selectorMap[target]) {\n this.selectorMap[target] = [];\n }\n\n this.selectorMap[target].push(mappingInfo);\n } else {\n if (!interactable.target[this.scope.id]) {\n Object.defineProperty(target, this.scope.id, {\n value: [],\n configurable: true\n });\n }\n\n ;\n target[this.scope.id].push(mappingInfo);\n }\n\n this.scope.fire('interactable:new', {\n target,\n options,\n interactable,\n win: this.scope._win\n });\n return interactable;\n }\n\n get(target, options) {\n const context = options && options.context || this.scope.document;\n const isSelector = is.string(target);\n const targetMappings = isSelector ? this.selectorMap[target] : target[this.scope.id];\n\n if (!targetMappings) {\n return null;\n }\n\n const found = arr.find(targetMappings, m => m.context === context && (isSelector || m.interactable.inContext(target)));\n return found && found.interactable;\n }\n\n forEachMatch(node, callback) {\n for (const interactable of this.list) {\n let ret;\n\n if ((is.string(interactable.target) ? // target is a selector and the element matches\n is.element(node) && domUtils.matchesSelector(node, interactable.target) : // target is the element\n node === interactable.target) && // the element is in context\n interactable.inContext(node)) {\n ret = callback(interactable);\n }\n\n if (ret !== undefined) {\n return ret;\n }\n }\n }\n\n}\n//# sourceMappingURL=InteractableSet.js.map","function pointerExtend(dest, source) {\n for (const prop in source) {\n const prefixedPropREs = pointerExtend.prefixedPropREs;\n let deprecated = false; // skip deprecated prefixed properties\n\n for (const vendor in prefixedPropREs) {\n if (prop.indexOf(vendor) === 0 && prefixedPropREs[vendor].test(prop)) {\n deprecated = true;\n break;\n }\n }\n\n if (!deprecated && typeof source[prop] !== 'function') {\n dest[prop] = source[prop];\n }\n }\n\n return dest;\n}\n\npointerExtend.prefixedPropREs = {\n webkit: /(Movement[XY]|Radius[XY]|RotationAngle|Force)$/,\n moz: /(Pressure)$/\n};\nexport default pointerExtend;\n//# sourceMappingURL=pointerExtend.js.map","import * as arr from \"../utils/arr.js\";\nimport * as domUtils from \"../utils/domUtils.js\";\nimport extend from \"../utils/extend.js\";\nimport is from \"../utils/is.js\";\nimport pExtend from \"../utils/pointerExtend.js\";\nimport * as pointerUtils from \"../utils/pointerUtils.js\";\n\nfunction install(scope) {\n var _scope$document;\n\n const targets = [];\n const delegatedEvents = {};\n const documents = [];\n const eventsMethods = {\n add,\n remove,\n addDelegate,\n removeDelegate,\n delegateListener,\n delegateUseCapture,\n delegatedEvents,\n documents,\n targets,\n supportsOptions: false,\n supportsPassive: false\n }; // check if browser supports passive events and options arg\n\n (_scope$document = scope.document) == null ? void 0 : _scope$document.createElement('div').addEventListener('test', null, {\n get capture() {\n return eventsMethods.supportsOptions = true;\n },\n\n get passive() {\n return eventsMethods.supportsPassive = true;\n }\n\n });\n scope.events = eventsMethods;\n\n function add(eventTarget, type, listener, optionalArg) {\n const options = getOptions(optionalArg);\n let target = arr.find(targets, t => t.eventTarget === eventTarget);\n\n if (!target) {\n target = {\n eventTarget,\n events: {}\n };\n targets.push(target);\n }\n\n if (!target.events[type]) {\n target.events[type] = [];\n }\n\n if (eventTarget.addEventListener && !arr.contains(target.events[type], listener)) {\n eventTarget.addEventListener(type, listener, eventsMethods.supportsOptions ? options : options.capture);\n target.events[type].push(listener);\n }\n }\n\n function remove(eventTarget, type, listener, optionalArg) {\n const options = getOptions(optionalArg);\n const targetIndex = arr.findIndex(targets, t => t.eventTarget === eventTarget);\n const target = targets[targetIndex];\n\n if (!target || !target.events) {\n return;\n }\n\n if (type === 'all') {\n for (type in target.events) {\n if (target.events.hasOwnProperty(type)) {\n remove(eventTarget, type, 'all');\n }\n }\n\n return;\n }\n\n let typeIsEmpty = false;\n const typeListeners = target.events[type];\n\n if (typeListeners) {\n if (listener === 'all') {\n for (let i = typeListeners.length - 1; i >= 0; i--) {\n remove(eventTarget, type, typeListeners[i], options);\n }\n\n return;\n } else {\n for (let i = 0; i < typeListeners.length; i++) {\n if (typeListeners[i] === listener) {\n eventTarget.removeEventListener(type, listener, eventsMethods.supportsOptions ? options : options.capture);\n typeListeners.splice(i, 1);\n\n if (typeListeners.length === 0) {\n delete target.events[type];\n typeIsEmpty = true;\n }\n\n break;\n }\n }\n }\n }\n\n if (typeIsEmpty && !Object.keys(target.events).length) {\n targets.splice(targetIndex, 1);\n }\n }\n\n function addDelegate(selector, context, type, listener, optionalArg) {\n const options = getOptions(optionalArg);\n\n if (!delegatedEvents[type]) {\n delegatedEvents[type] = []; // add delegate listener functions\n\n for (const doc of documents) {\n add(doc, type, delegateListener);\n add(doc, type, delegateUseCapture, true);\n }\n }\n\n const delegates = delegatedEvents[type];\n let delegate = arr.find(delegates, d => d.selector === selector && d.context === context);\n\n if (!delegate) {\n delegate = {\n selector,\n context,\n listeners: []\n };\n delegates.push(delegate);\n }\n\n delegate.listeners.push([listener, options]);\n }\n\n function removeDelegate(selector, context, type, listener, optionalArg) {\n const options = getOptions(optionalArg);\n const delegates = delegatedEvents[type];\n let matchFound = false;\n let index;\n if (!delegates) return; // count from last index of delegated to 0\n\n for (index = delegates.length - 1; index >= 0; index--) {\n const cur = delegates[index]; // look for matching selector and context Node\n\n if (cur.selector === selector && cur.context === context) {\n const {\n listeners\n } = cur; // each item of the listeners array is an array: [function, capture, passive]\n\n for (let i = listeners.length - 1; i >= 0; i--) {\n const [fn, {\n capture,\n passive\n }] = listeners[i]; // check if the listener functions and capture and passive flags match\n\n if (fn === listener && capture === options.capture && passive === options.passive) {\n // remove the listener from the array of listeners\n listeners.splice(i, 1); // if all listeners for this target have been removed\n // remove the target from the delegates array\n\n if (!listeners.length) {\n delegates.splice(index, 1); // remove delegate function from context\n\n remove(context, type, delegateListener);\n remove(context, type, delegateUseCapture, true);\n } // only remove one listener\n\n\n matchFound = true;\n break;\n }\n }\n\n if (matchFound) {\n break;\n }\n }\n }\n } // bound to the interactable context when a DOM event\n // listener is added to a selector interactable\n\n\n function delegateListener(event, optionalArg) {\n const options = getOptions(optionalArg);\n const fakeEvent = new FakeEvent(event);\n const delegates = delegatedEvents[event.type];\n const [eventTarget] = pointerUtils.getEventTargets(event);\n let element = eventTarget; // climb up document tree looking for selector matches\n\n while (is.element(element)) {\n for (let i = 0; i < delegates.length; i++) {\n const cur = delegates[i];\n const {\n selector,\n context\n } = cur;\n\n if (domUtils.matchesSelector(element, selector) && domUtils.nodeContains(context, eventTarget) && domUtils.nodeContains(context, element)) {\n const {\n listeners\n } = cur;\n fakeEvent.currentTarget = element;\n\n for (const [fn, {\n capture,\n passive\n }] of listeners) {\n if (capture === options.capture && passive === options.passive) {\n fn(fakeEvent);\n }\n }\n }\n }\n\n element = domUtils.parentNode(element);\n }\n }\n\n function delegateUseCapture(event) {\n return delegateListener.call(this, event, true);\n } // for type inferrence\n\n\n return eventsMethods;\n}\n\nclass FakeEvent {\n constructor(originalEvent) {\n this.currentTarget = void 0;\n this.originalEvent = void 0;\n this.type = void 0;\n this.originalEvent = originalEvent; // duplicate the event so that currentTarget can be changed\n\n pExtend(this, originalEvent);\n }\n\n preventOriginalDefault() {\n this.originalEvent.preventDefault();\n }\n\n stopPropagation() {\n this.originalEvent.stopPropagation();\n }\n\n stopImmediatePropagation() {\n this.originalEvent.stopImmediatePropagation();\n }\n\n}\n\nfunction getOptions(param) {\n if (!is.object(param)) {\n return {\n capture: !!param,\n passive: false\n };\n }\n\n const options = extend({}, param);\n options.capture = !!param.capture;\n options.passive = !!param.passive;\n return options;\n}\n\nexport default {\n id: 'events',\n install\n};\n//# sourceMappingURL=events.js.map","export class PointerInfo {\n constructor(id, pointer, event, downTime, downTarget) {\n this.id = void 0;\n this.pointer = void 0;\n this.event = void 0;\n this.downTime = void 0;\n this.downTarget = void 0;\n this.id = id;\n this.pointer = pointer;\n this.event = event;\n this.downTime = downTime;\n this.downTarget = downTarget;\n }\n\n}\n//# sourceMappingURL=PointerInfo.js.map","import * as arr from \"../utils/arr.js\";\nimport extend from \"../utils/extend.js\";\nimport hypot from \"../utils/hypot.js\";\nimport { warnOnce, copyAction } from \"../utils/misc.js\";\nimport * as pointerUtils from \"../utils/pointerUtils.js\";\nimport * as rectUtils from \"../utils/rect.js\";\nimport { InteractEvent } from \"./InteractEvent.js\";\nimport { PointerInfo } from \"./PointerInfo.js\";\nexport let _ProxyValues;\n\n(function (_ProxyValues) {\n _ProxyValues[\"interactable\"] = \"\";\n _ProxyValues[\"element\"] = \"\";\n _ProxyValues[\"prepared\"] = \"\";\n _ProxyValues[\"pointerIsDown\"] = \"\";\n _ProxyValues[\"pointerWasMoved\"] = \"\";\n _ProxyValues[\"_proxy\"] = \"\";\n})(_ProxyValues || (_ProxyValues = {}));\n\nexport let _ProxyMethods;\n\n(function (_ProxyMethods) {\n _ProxyMethods[\"start\"] = \"\";\n _ProxyMethods[\"move\"] = \"\";\n _ProxyMethods[\"end\"] = \"\";\n _ProxyMethods[\"stop\"] = \"\";\n _ProxyMethods[\"interacting\"] = \"\";\n})(_ProxyMethods || (_ProxyMethods = {}));\n\nlet idCounter = 0;\nexport class Interaction {\n // current interactable being interacted with\n // the target element of the interactable\n // action that's ready to be fired on next move event\n // keep track of added pointers\n // pointerdown/mousedown/touchstart event\n // previous action event\n\n /** @internal */\n get pointerMoveTolerance() {\n return 1;\n }\n /**\n * @alias Interaction.prototype.move\n */\n\n\n /** */\n constructor({\n pointerType,\n scopeFire\n }) {\n this.interactable = null;\n this.element = null;\n this.rect = void 0;\n this._rects = void 0;\n this.edges = void 0;\n this._scopeFire = void 0;\n this.prepared = {\n name: null,\n axis: null,\n edges: null\n };\n this.pointerType = void 0;\n this.pointers = [];\n this.downEvent = null;\n this.downPointer = {};\n this._latestPointer = {\n pointer: null,\n event: null,\n eventTarget: null\n };\n this.prevEvent = null;\n this.pointerIsDown = false;\n this.pointerWasMoved = false;\n this._interacting = false;\n this._ending = false;\n this._stopped = true;\n this._proxy = null;\n this.simulation = null;\n this.doMove = warnOnce(function (signalArg) {\n this.move(signalArg);\n }, 'The interaction.doMove() method has been renamed to interaction.move()');\n this.coords = {\n // Starting InteractEvent pointer coordinates\n start: pointerUtils.newCoords(),\n // Previous native pointer move event coordinates\n prev: pointerUtils.newCoords(),\n // current native pointer move event coordinates\n cur: pointerUtils.newCoords(),\n // Change in coordinates and time of the pointer\n delta: pointerUtils.newCoords(),\n // pointer velocity\n velocity: pointerUtils.newCoords()\n };\n this._id = idCounter++;\n this._scopeFire = scopeFire;\n this.pointerType = pointerType;\n const that = this;\n this._proxy = {};\n\n for (const key in _ProxyValues) {\n Object.defineProperty(this._proxy, key, {\n get() {\n return that[key];\n }\n\n });\n }\n\n for (const key in _ProxyMethods) {\n Object.defineProperty(this._proxy, key, {\n value: (...args) => that[key](...args)\n });\n }\n\n this._scopeFire('interactions:new', {\n interaction: this\n });\n }\n\n pointerDown(pointer, event, eventTarget) {\n const pointerIndex = this.updatePointer(pointer, event, eventTarget, true);\n const pointerInfo = this.pointers[pointerIndex];\n\n this._scopeFire('interactions:down', {\n pointer,\n event,\n eventTarget,\n pointerIndex,\n pointerInfo,\n type: 'down',\n interaction: this\n });\n }\n /**\n * ```js\n * interact(target)\n * .draggable({\n * // disable the default drag start by down->move\n * manualStart: true\n * })\n * // start dragging after the user holds the pointer down\n * .on('hold', function (event) {\n * var interaction = event.interaction\n *\n * if (!interaction.interacting()) {\n * interaction.start({ name: 'drag' },\n * event.interactable,\n * event.currentTarget)\n * }\n * })\n * ```\n *\n * Start an action with the given Interactable and Element as tartgets. The\n * action must be enabled for the target Interactable and an appropriate\n * number of pointers must be held down - 1 for drag/resize, 2 for gesture.\n *\n * Use it with `interactable.able({ manualStart: false })` to always\n * [start actions manually](https://github.com/taye/interact.js/issues/114)\n *\n * @param {object} action The action to be performed - drag, resize, etc.\n * @param {Interactable} target The Interactable to target\n * @param {Element} element The DOM Element to target\n * @return {Boolean} Whether the interaction was successfully started\n */\n\n\n start(action, interactable, element) {\n if (this.interacting() || !this.pointerIsDown || this.pointers.length < (action.name === 'gesture' ? 2 : 1) || !interactable.options[action.name].enabled) {\n return false;\n }\n\n copyAction(this.prepared, action);\n this.interactable = interactable;\n this.element = element;\n this.rect = interactable.getRect(element);\n this.edges = this.prepared.edges ? extend({}, this.prepared.edges) : {\n left: true,\n right: true,\n top: true,\n bottom: true\n };\n this._stopped = false;\n this._interacting = this._doPhase({\n interaction: this,\n event: this.downEvent,\n phase: 'start'\n }) && !this._stopped;\n return this._interacting;\n }\n\n pointerMove(pointer, event, eventTarget) {\n if (!this.simulation && !(this.modification && this.modification.endResult)) {\n this.updatePointer(pointer, event, eventTarget, false);\n }\n\n const duplicateMove = this.coords.cur.page.x === this.coords.prev.page.x && this.coords.cur.page.y === this.coords.prev.page.y && this.coords.cur.client.x === this.coords.prev.client.x && this.coords.cur.client.y === this.coords.prev.client.y;\n let dx;\n let dy; // register movement greater than pointerMoveTolerance\n\n if (this.pointerIsDown && !this.pointerWasMoved) {\n dx = this.coords.cur.client.x - this.coords.start.client.x;\n dy = this.coords.cur.client.y - this.coords.start.client.y;\n this.pointerWasMoved = hypot(dx, dy) > this.pointerMoveTolerance;\n }\n\n const pointerIndex = this.getPointerIndex(pointer);\n const signalArg = {\n pointer,\n pointerIndex,\n pointerInfo: this.pointers[pointerIndex],\n event,\n type: 'move',\n eventTarget,\n dx,\n dy,\n duplicate: duplicateMove,\n interaction: this\n };\n\n if (!duplicateMove) {\n // set pointer coordinate, time changes and velocity\n pointerUtils.setCoordVelocity(this.coords.velocity, this.coords.delta);\n }\n\n this._scopeFire('interactions:move', signalArg);\n\n if (!duplicateMove && !this.simulation) {\n // if interacting, fire an 'action-move' signal etc\n if (this.interacting()) {\n signalArg.type = null;\n this.move(signalArg);\n }\n\n if (this.pointerWasMoved) {\n pointerUtils.copyCoords(this.coords.prev, this.coords.cur);\n }\n }\n }\n /**\n * ```js\n * interact(target)\n * .draggable(true)\n * .on('dragmove', function (event) {\n * if (someCondition) {\n * // change the snap settings\n * event.interactable.draggable({ snap: { targets: [] }})\n * // fire another move event with re-calculated snap\n * event.interaction.move()\n * }\n * })\n * ```\n *\n * Force a move of the current action at the same coordinates. Useful if\n * snap/restrict has been changed and you want a movement with the new\n * settings.\n */\n\n\n move(signalArg) {\n if (!signalArg || !signalArg.event) {\n pointerUtils.setZeroCoords(this.coords.delta);\n }\n\n signalArg = extend({\n pointer: this._latestPointer.pointer,\n event: this._latestPointer.event,\n eventTarget: this._latestPointer.eventTarget,\n interaction: this\n }, signalArg || {});\n signalArg.phase = 'move';\n\n this._doPhase(signalArg);\n } // End interact move events and stop auto-scroll unless simulation is running\n\n\n pointerUp(pointer, event, eventTarget, curEventTarget) {\n let pointerIndex = this.getPointerIndex(pointer);\n\n if (pointerIndex === -1) {\n pointerIndex = this.updatePointer(pointer, event, eventTarget, false);\n }\n\n const type = /cancel$/i.test(event.type) ? 'cancel' : 'up';\n\n this._scopeFire(`interactions:${type}`, {\n pointer,\n pointerIndex,\n pointerInfo: this.pointers[pointerIndex],\n event,\n eventTarget,\n type: type,\n curEventTarget,\n interaction: this\n });\n\n if (!this.simulation) {\n this.end(event);\n }\n\n this.removePointer(pointer, event);\n }\n\n documentBlur(event) {\n this.end(event);\n\n this._scopeFire('interactions:blur', {\n event,\n type: 'blur',\n interaction: this\n });\n }\n /**\n * ```js\n * interact(target)\n * .draggable(true)\n * .on('move', function (event) {\n * if (event.pageX > 1000) {\n * // end the current action\n * event.interaction.end()\n * // stop all further listeners from being called\n * event.stopImmediatePropagation()\n * }\n * })\n * ```\n *\n * @param {PointerEvent} [event]\n */\n\n\n end(event) {\n this._ending = true;\n event = event || this._latestPointer.event;\n let endPhaseResult;\n\n if (this.interacting()) {\n endPhaseResult = this._doPhase({\n event,\n interaction: this,\n phase: 'end'\n });\n }\n\n this._ending = false;\n\n if (endPhaseResult === true) {\n this.stop();\n }\n }\n\n currentAction() {\n return this._interacting ? this.prepared.name : null;\n }\n\n interacting() {\n return this._interacting;\n }\n /** */\n\n\n stop() {\n this._scopeFire('interactions:stop', {\n interaction: this\n });\n\n this.interactable = this.element = null;\n this._interacting = false;\n this._stopped = true;\n this.prepared.name = this.prevEvent = null;\n }\n\n getPointerIndex(pointer) {\n const pointerId = pointerUtils.getPointerId(pointer); // mouse and pen interactions may have only one pointer\n\n return this.pointerType === 'mouse' || this.pointerType === 'pen' ? this.pointers.length - 1 : arr.findIndex(this.pointers, curPointer => curPointer.id === pointerId);\n }\n\n getPointerInfo(pointer) {\n return this.pointers[this.getPointerIndex(pointer)];\n }\n\n updatePointer(pointer, event, eventTarget, down) {\n const id = pointerUtils.getPointerId(pointer);\n let pointerIndex = this.getPointerIndex(pointer);\n let pointerInfo = this.pointers[pointerIndex];\n down = down === false ? false : down || /(down|start)$/i.test(event.type);\n\n if (!pointerInfo) {\n pointerInfo = new PointerInfo(id, pointer, event, null, null);\n pointerIndex = this.pointers.length;\n this.pointers.push(pointerInfo);\n } else {\n pointerInfo.pointer = pointer;\n }\n\n pointerUtils.setCoords(this.coords.cur, this.pointers.map(p => p.pointer), this._now());\n pointerUtils.setCoordDeltas(this.coords.delta, this.coords.prev, this.coords.cur);\n\n if (down) {\n this.pointerIsDown = true;\n pointerInfo.downTime = this.coords.cur.timeStamp;\n pointerInfo.downTarget = eventTarget;\n pointerUtils.pointerExtend(this.downPointer, pointer);\n\n if (!this.interacting()) {\n pointerUtils.copyCoords(this.coords.start, this.coords.cur);\n pointerUtils.copyCoords(this.coords.prev, this.coords.cur);\n this.downEvent = event;\n this.pointerWasMoved = false;\n }\n }\n\n this._updateLatestPointer(pointer, event, eventTarget);\n\n this._scopeFire('interactions:update-pointer', {\n pointer,\n event,\n eventTarget,\n down,\n pointerInfo,\n pointerIndex,\n interaction: this\n });\n\n return pointerIndex;\n }\n\n removePointer(pointer, event) {\n const pointerIndex = this.getPointerIndex(pointer);\n if (pointerIndex === -1) return;\n const pointerInfo = this.pointers[pointerIndex];\n\n this._scopeFire('interactions:remove-pointer', {\n pointer,\n event,\n eventTarget: null,\n pointerIndex,\n pointerInfo,\n interaction: this\n });\n\n this.pointers.splice(pointerIndex, 1);\n this.pointerIsDown = false;\n }\n\n _updateLatestPointer(pointer, event, eventTarget) {\n this._latestPointer.pointer = pointer;\n this._latestPointer.event = event;\n this._latestPointer.eventTarget = eventTarget;\n }\n\n destroy() {\n this._latestPointer.pointer = null;\n this._latestPointer.event = null;\n this._latestPointer.eventTarget = null;\n }\n\n _createPreparedEvent(event, phase, preEnd, type) {\n return new InteractEvent(this, event, this.prepared.name, phase, this.element, preEnd, type);\n }\n\n _fireEvent(iEvent) {\n this.interactable.fire(iEvent);\n\n if (!this.prevEvent || iEvent.timeStamp >= this.prevEvent.timeStamp) {\n this.prevEvent = iEvent;\n }\n }\n\n _doPhase(signalArg) {\n const {\n event,\n phase,\n preEnd,\n type\n } = signalArg;\n const {\n rect\n } = this;\n\n if (rect && phase === 'move') {\n // update the rect changes due to pointer move\n rectUtils.addEdges(this.edges, rect, this.coords.delta[this.interactable.options.deltaSource]);\n rect.width = rect.right - rect.left;\n rect.height = rect.bottom - rect.top;\n }\n\n const beforeResult = this._scopeFire(`interactions:before-action-${phase}`, signalArg);\n\n if (beforeResult === false) {\n return false;\n }\n\n const iEvent = signalArg.iEvent = this._createPreparedEvent(event, phase, preEnd, type);\n\n this._scopeFire(`interactions:action-${phase}`, signalArg);\n\n if (phase === 'start') {\n this.prevEvent = iEvent;\n }\n\n this._fireEvent(iEvent);\n\n this._scopeFire(`interactions:after-action-${phase}`, signalArg);\n\n return true;\n }\n\n _now() {\n return Date.now();\n }\n\n}\nexport default Interaction;\nexport { PointerInfo };\n//# sourceMappingURL=Interaction.js.map","import { matchesSelector, nodeContains } from \"../utils/domUtils.js\";\nimport is from \"../utils/is.js\";\nimport { getWindow } from \"../utils/window.js\";\n\nfunction preventDefault(newValue) {\n if (/^(always|never|auto)$/.test(newValue)) {\n this.options.preventDefault = newValue;\n return this;\n }\n\n if (is.bool(newValue)) {\n this.options.preventDefault = newValue ? 'always' : 'never';\n return this;\n }\n\n return this.options.preventDefault;\n}\n\nfunction checkAndPreventDefault(interactable, scope, event) {\n const setting = interactable.options.preventDefault;\n if (setting === 'never') return;\n\n if (setting === 'always') {\n event.preventDefault();\n return;\n } // setting === 'auto'\n // if the browser supports passive event listeners and isn't running on iOS,\n // don't preventDefault of touch{start,move} events. CSS touch-action and\n // user-select should be used instead of calling event.preventDefault().\n\n\n if (scope.events.supportsPassive && /^touch(start|move)$/.test(event.type)) {\n const doc = getWindow(event.target).document;\n const docOptions = scope.getDocOptions(doc);\n\n if (!(docOptions && docOptions.events) || docOptions.events.passive !== false) {\n return;\n }\n } // don't preventDefault of pointerdown events\n\n\n if (/^(mouse|pointer|touch)*(down|start)/i.test(event.type)) {\n return;\n } // don't preventDefault on editable elements\n\n\n if (is.element(event.target) && matchesSelector(event.target, 'input,select,textarea,[contenteditable=true],[contenteditable=true] *')) {\n return;\n }\n\n event.preventDefault();\n}\n\nfunction onInteractionEvent({\n interaction,\n event\n}) {\n if (interaction.interactable) {\n interaction.interactable.checkAndPreventDefault(event);\n }\n}\n\nexport function install(scope) {\n /** @lends Interactable */\n const {\n Interactable\n } = scope;\n /**\n * Returns or sets whether to prevent the browser's default behaviour in\n * response to pointer events. Can be set to:\n * - `'always'` to always prevent\n * - `'never'` to never prevent\n * - `'auto'` to let interact.js try to determine what would be best\n *\n * @param {string} [newValue] `'always'`, `'never'` or `'auto'`\n * @return {string | Interactable} The current setting or this Interactable\n */\n\n Interactable.prototype.preventDefault = preventDefault;\n\n Interactable.prototype.checkAndPreventDefault = function (event) {\n return checkAndPreventDefault(this, scope, event);\n }; // prevent native HTML5 drag on interact.js target elements\n\n\n scope.interactions.docEvents.push({\n type: 'dragstart',\n\n listener(event) {\n for (const interaction of scope.interactions.list) {\n if (interaction.element && (interaction.element === event.target || nodeContains(interaction.element, event.target))) {\n interaction.interactable.checkAndPreventDefault(event);\n return;\n }\n }\n }\n\n });\n}\nexport default {\n id: 'core/interactablePreventDefault',\n install,\n listeners: ['down', 'move', 'up', 'cancel'].reduce((acc, eventType) => {\n acc[`interactions:${eventType}`] = onInteractionEvent;\n return acc;\n }, {})\n};\n//# sourceMappingURL=interactablePreventDefault.js.map","import * as dom from \"../utils/domUtils.js\";\nconst finder = {\n methodOrder: ['simulationResume', 'mouseOrPen', 'hasPointer', 'idle'],\n\n search(details) {\n for (const method of finder.methodOrder) {\n const interaction = finder[method](details);\n\n if (interaction) {\n return interaction;\n }\n }\n\n return null;\n },\n\n // try to resume simulation with a new pointer\n simulationResume({\n pointerType,\n eventType,\n eventTarget,\n scope\n }) {\n if (!/down|start/i.test(eventType)) {\n return null;\n }\n\n for (const interaction of scope.interactions.list) {\n let element = eventTarget;\n\n if (interaction.simulation && interaction.simulation.allowResume && interaction.pointerType === pointerType) {\n while (element) {\n // if the element is the interaction element\n if (element === interaction.element) {\n return interaction;\n }\n\n element = dom.parentNode(element);\n }\n }\n }\n\n return null;\n },\n\n // if it's a mouse or pen interaction\n mouseOrPen({\n pointerId,\n pointerType,\n eventType,\n scope\n }) {\n if (pointerType !== 'mouse' && pointerType !== 'pen') {\n return null;\n }\n\n let firstNonActive;\n\n for (const interaction of scope.interactions.list) {\n if (interaction.pointerType === pointerType) {\n // if it's a down event, skip interactions with running simulations\n if (interaction.simulation && !hasPointerId(interaction, pointerId)) {\n continue;\n } // if the interaction is active, return it immediately\n\n\n if (interaction.interacting()) {\n return interaction;\n } // otherwise save it and look for another active interaction\n else if (!firstNonActive) {\n firstNonActive = interaction;\n }\n }\n } // if no active mouse interaction was found use the first inactive mouse\n // interaction\n\n\n if (firstNonActive) {\n return firstNonActive;\n } // find any mouse or pen interaction.\n // ignore the interaction if the eventType is a *down, and a simulation\n // is active\n\n\n for (const interaction of scope.interactions.list) {\n if (interaction.pointerType === pointerType && !(/down/i.test(eventType) && interaction.simulation)) {\n return interaction;\n }\n }\n\n return null;\n },\n\n // get interaction that has this pointer\n hasPointer({\n pointerId,\n scope\n }) {\n for (const interaction of scope.interactions.list) {\n if (hasPointerId(interaction, pointerId)) {\n return interaction;\n }\n }\n\n return null;\n },\n\n // get first idle interaction with a matching pointerType\n idle({\n pointerType,\n scope\n }) {\n for (const interaction of scope.interactions.list) {\n // if there's already a pointer held down\n if (interaction.pointers.length === 1) {\n const target = interaction.interactable; // don't add this pointer if there is a target interactable and it\n // isn't gesturable\n\n if (target && !(target.options.gesture && target.options.gesture.enabled)) {\n continue;\n }\n } // maximum of 2 pointers per interaction\n else if (interaction.pointers.length >= 2) {\n continue;\n }\n\n if (!interaction.interacting() && pointerType === interaction.pointerType) {\n return interaction;\n }\n }\n\n return null;\n }\n\n};\n\nfunction hasPointerId(interaction, pointerId) {\n return interaction.pointers.some(({\n id\n }) => id === pointerId);\n}\n\nexport default finder;\n//# sourceMappingURL=interactionFinder.js.map","import browser from \"../utils/browser.js\";\nimport domObjects from \"../utils/domObjects.js\";\nimport { nodeContains } from \"../utils/domUtils.js\";\nimport * as pointerUtils from \"../utils/pointerUtils.js\";\nimport InteractionBase from \"./Interaction.js\";\nimport interactablePreventDefault from \"./interactablePreventDefault.js\";\nimport finder from \"./interactionFinder.js\";\nconst methodNames = ['pointerDown', 'pointerMove', 'pointerUp', 'updatePointer', 'removePointer', 'windowBlur'];\n\nfunction install(scope) {\n const listeners = {};\n\n for (const method of methodNames) {\n listeners[method] = doOnInteractions(method, scope);\n }\n\n const pEventTypes = browser.pEventTypes;\n let docEvents;\n\n if (domObjects.PointerEvent) {\n docEvents = [{\n type: pEventTypes.down,\n listener: releasePointersOnRemovedEls\n }, {\n type: pEventTypes.down,\n listener: listeners.pointerDown\n }, {\n type: pEventTypes.move,\n listener: listeners.pointerMove\n }, {\n type: pEventTypes.up,\n listener: listeners.pointerUp\n }, {\n type: pEventTypes.cancel,\n listener: listeners.pointerUp\n }];\n } else {\n docEvents = [{\n type: 'mousedown',\n listener: listeners.pointerDown\n }, {\n type: 'mousemove',\n listener: listeners.pointerMove\n }, {\n type: 'mouseup',\n listener: listeners.pointerUp\n }, {\n type: 'touchstart',\n listener: releasePointersOnRemovedEls\n }, {\n type: 'touchstart',\n listener: listeners.pointerDown\n }, {\n type: 'touchmove',\n listener: listeners.pointerMove\n }, {\n type: 'touchend',\n listener: listeners.pointerUp\n }, {\n type: 'touchcancel',\n listener: listeners.pointerUp\n }];\n }\n\n docEvents.push({\n type: 'blur',\n\n listener(event) {\n for (const interaction of scope.interactions.list) {\n interaction.documentBlur(event);\n }\n }\n\n }); // for ignoring browser's simulated mouse events\n\n scope.prevTouchTime = 0;\n scope.Interaction = class extends InteractionBase {\n get pointerMoveTolerance() {\n return scope.interactions.pointerMoveTolerance;\n }\n\n set pointerMoveTolerance(value) {\n scope.interactions.pointerMoveTolerance = value;\n }\n\n _now() {\n return scope.now();\n }\n\n };\n scope.interactions = {\n // all active and idle interactions\n list: [],\n\n new(options) {\n options.scopeFire = (name, arg) => scope.fire(name, arg);\n\n const interaction = new scope.Interaction(options);\n scope.interactions.list.push(interaction);\n return interaction;\n },\n\n listeners,\n docEvents,\n pointerMoveTolerance: 1\n };\n\n function releasePointersOnRemovedEls() {\n // for all inactive touch interactions with pointers down\n for (const interaction of scope.interactions.list) {\n if (!interaction.pointerIsDown || interaction.pointerType !== 'touch' || interaction._interacting) {\n continue;\n } // if a pointer is down on an element that is no longer in the DOM tree\n\n\n for (const pointer of interaction.pointers) {\n if (!scope.documents.some(({\n doc\n }) => nodeContains(doc, pointer.downTarget))) {\n // remove the pointer from the interaction\n interaction.removePointer(pointer.pointer, pointer.event);\n }\n }\n }\n }\n\n scope.usePlugin(interactablePreventDefault);\n}\n\nfunction doOnInteractions(method, scope) {\n return function (event) {\n const interactions = scope.interactions.list;\n const pointerType = pointerUtils.getPointerType(event);\n const [eventTarget, curEventTarget] = pointerUtils.getEventTargets(event);\n const matches = []; // [ [pointer, interaction], ...]\n\n if (/^touch/.test(event.type)) {\n scope.prevTouchTime = scope.now(); // @ts-expect-error\n\n for (const changedTouch of event.changedTouches) {\n const pointer = changedTouch;\n const pointerId = pointerUtils.getPointerId(pointer);\n const searchDetails = {\n pointer,\n pointerId,\n pointerType,\n eventType: event.type,\n eventTarget,\n curEventTarget,\n scope\n };\n const interaction = getInteraction(searchDetails);\n matches.push([searchDetails.pointer, searchDetails.eventTarget, searchDetails.curEventTarget, interaction]);\n }\n } else {\n let invalidPointer = false;\n\n if (!browser.supportsPointerEvent && /mouse/.test(event.type)) {\n // ignore mouse events while touch interactions are active\n for (let i = 0; i < interactions.length && !invalidPointer; i++) {\n invalidPointer = interactions[i].pointerType !== 'mouse' && interactions[i].pointerIsDown;\n } // try to ignore mouse events that are simulated by the browser\n // after a touch event\n\n\n invalidPointer = invalidPointer || scope.now() - scope.prevTouchTime < 500 || // on iOS and Firefox Mobile, MouseEvent.timeStamp is zero if simulated\n event.timeStamp === 0;\n }\n\n if (!invalidPointer) {\n const searchDetails = {\n pointer: event,\n pointerId: pointerUtils.getPointerId(event),\n pointerType,\n eventType: event.type,\n curEventTarget,\n eventTarget,\n scope\n };\n const interaction = getInteraction(searchDetails);\n matches.push([searchDetails.pointer, searchDetails.eventTarget, searchDetails.curEventTarget, interaction]);\n }\n } // eslint-disable-next-line no-shadow\n\n\n for (const [pointer, eventTarget, curEventTarget, interaction] of matches) {\n interaction[method](pointer, event, eventTarget, curEventTarget);\n }\n };\n}\n\nfunction getInteraction(searchDetails) {\n const {\n pointerType,\n scope\n } = searchDetails;\n const foundInteraction = finder.search(searchDetails);\n const signalArg = {\n interaction: foundInteraction,\n searchDetails\n };\n scope.fire('interactions:find', signalArg);\n return signalArg.interaction || scope.interactions.new({\n pointerType\n });\n}\n\nfunction onDocSignal({\n doc,\n scope,\n options\n}, eventMethodName) {\n const {\n interactions: {\n docEvents\n },\n events\n } = scope;\n const eventMethod = events[eventMethodName];\n\n if (scope.browser.isIOS && !options.events) {\n options.events = {\n passive: false\n };\n } // delegate event listener\n\n\n for (const eventType in events.delegatedEvents) {\n eventMethod(doc, eventType, events.delegateListener);\n eventMethod(doc, eventType, events.delegateUseCapture, true);\n }\n\n const eventOptions = options && options.events;\n\n for (const {\n type,\n listener\n } of docEvents) {\n eventMethod(doc, type, listener, eventOptions);\n }\n}\n\nconst interactions = {\n id: 'core/interactions',\n install,\n listeners: {\n 'scope:add-document': arg => onDocSignal(arg, 'add'),\n 'scope:remove-document': arg => onDocSignal(arg, 'remove'),\n 'interactable:unset': ({\n interactable\n }, scope) => {\n // Stop and destroy related interactions when an Interactable is unset\n for (let i = scope.interactions.list.length - 1; i >= 0; i--) {\n const interaction = scope.interactions.list[i];\n\n if (interaction.interactable !== interactable) {\n continue;\n }\n\n interaction.stop();\n scope.fire('interactions:destroy', {\n interaction\n });\n interaction.destroy();\n\n if (scope.interactions.list.length > 2) {\n scope.interactions.list.splice(i, 1);\n }\n }\n }\n },\n onDocSignal,\n doOnInteractions,\n methodNames\n};\nexport default interactions;\n//# sourceMappingURL=interactions.js.map","import browser from \"../utils/browser.js\";\nimport clone from \"../utils/clone.js\";\nimport domObjects from \"../utils/domObjects.js\";\nimport extend from \"../utils/extend.js\";\nimport is from \"../utils/is.js\";\nimport raf from \"../utils/raf.js\";\nimport * as win from \"../utils/window.js\";\nimport { Eventable } from \"./Eventable.js\";\nimport { InteractEvent } from \"./InteractEvent.js\";\nimport { createInteractStatic } from \"./InteractStatic.js\";\nimport { Interactable as InteractableBase } from \"./Interactable.js\";\nimport { InteractableSet } from \"./InteractableSet.js\";\nimport events from \"./events.js\";\nimport interactions from \"./interactions.js\";\nimport { defaults } from \"./options.js\";\nexport class Scope {\n // main window\n // main document\n // main window\n // all documents being listened to\n constructor() {\n this.id = `__interact_scope_${Math.floor(Math.random() * 100)}`;\n this.isInitialized = false;\n this.listenerMaps = [];\n this.browser = browser;\n this.defaults = clone(defaults);\n this.Eventable = Eventable;\n this.actions = {\n map: {},\n phases: {\n start: true,\n move: true,\n end: true\n },\n methodDict: {},\n phaselessTypes: {}\n };\n this.interactStatic = createInteractStatic(this);\n this.InteractEvent = InteractEvent;\n this.Interactable = void 0;\n this.interactables = new InteractableSet(this);\n this._win = void 0;\n this.document = void 0;\n this.window = void 0;\n this.documents = [];\n this._plugins = {\n list: [],\n map: {}\n };\n\n this.onWindowUnload = event => this.removeDocument(event.target);\n\n const scope = this;\n this.Interactable = class extends InteractableBase {\n get _defaults() {\n return scope.defaults;\n }\n\n set(options) {\n super.set(options);\n scope.fire('interactable:set', {\n options,\n interactable: this\n });\n return this;\n }\n\n unset() {\n super.unset();\n scope.interactables.list.splice(scope.interactables.list.indexOf(this), 1);\n scope.fire('interactable:unset', {\n interactable: this\n });\n }\n\n };\n }\n\n addListeners(map, id) {\n this.listenerMaps.push({\n id,\n map\n });\n }\n\n fire(name, arg) {\n for (const {\n map: {\n [name]: listener\n }\n } of this.listenerMaps) {\n if (!!listener && listener(arg, this, name) === false) {\n return false;\n }\n }\n }\n\n init(window) {\n return this.isInitialized ? this : initScope(this, window);\n }\n\n pluginIsInstalled(plugin) {\n return this._plugins.map[plugin.id] || this._plugins.list.indexOf(plugin) !== -1;\n }\n\n usePlugin(plugin, options) {\n if (!this.isInitialized) {\n return this;\n }\n\n if (this.pluginIsInstalled(plugin)) {\n return this;\n }\n\n if (plugin.id) {\n this._plugins.map[plugin.id] = plugin;\n }\n\n this._plugins.list.push(plugin);\n\n if (plugin.install) {\n plugin.install(this, options);\n }\n\n if (plugin.listeners && plugin.before) {\n let index = 0;\n const len = this.listenerMaps.length;\n const before = plugin.before.reduce((acc, id) => {\n acc[id] = true;\n acc[pluginIdRoot(id)] = true;\n return acc;\n }, {});\n\n for (; index < len; index++) {\n const otherId = this.listenerMaps[index].id;\n\n if (before[otherId] || before[pluginIdRoot(otherId)]) {\n break;\n }\n }\n\n this.listenerMaps.splice(index, 0, {\n id: plugin.id,\n map: plugin.listeners\n });\n } else if (plugin.listeners) {\n this.listenerMaps.push({\n id: plugin.id,\n map: plugin.listeners\n });\n }\n\n return this;\n }\n\n addDocument(doc, options) {\n // do nothing if document is already known\n if (this.getDocIndex(doc) !== -1) {\n return false;\n }\n\n const window = win.getWindow(doc);\n options = options ? extend({}, options) : {};\n this.documents.push({\n doc,\n options\n });\n this.events.documents.push(doc); // don't add an unload event for the main document\n // so that the page may be cached in browser history\n\n if (doc !== this.document) {\n this.events.add(window, 'unload', this.onWindowUnload);\n }\n\n this.fire('scope:add-document', {\n doc,\n window,\n scope: this,\n options\n });\n }\n\n removeDocument(doc) {\n const index = this.getDocIndex(doc);\n const window = win.getWindow(doc);\n const options = this.documents[index].options;\n this.events.remove(window, 'unload', this.onWindowUnload);\n this.documents.splice(index, 1);\n this.events.documents.splice(index, 1);\n this.fire('scope:remove-document', {\n doc,\n window,\n scope: this,\n options\n });\n }\n\n getDocIndex(doc) {\n for (let i = 0; i < this.documents.length; i++) {\n if (this.documents[i].doc === doc) {\n return i;\n }\n }\n\n return -1;\n }\n\n getDocOptions(doc) {\n const docIndex = this.getDocIndex(doc);\n return docIndex === -1 ? null : this.documents[docIndex].options;\n }\n\n now() {\n return (this.window.Date || Date).now();\n }\n\n}\nexport function initScope(scope, window) {\n scope.isInitialized = true;\n\n if (is.window(window)) {\n win.init(window);\n }\n\n domObjects.init(window);\n browser.init(window);\n raf.init(window); // @ts-expect-error\n\n scope.window = window;\n scope.document = window.document;\n scope.usePlugin(interactions);\n scope.usePlugin(events);\n return scope;\n}\n\nfunction pluginIdRoot(id) {\n return id && id.replace(/\\/.*$/, '');\n}\n//# sourceMappingURL=scope.js.map","import { Scope } from \"../core/scope.js\";\nconst scope = new Scope();\nconst interact = scope.interactStatic;\nexport default interact;\n\nconst _global = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : this;\n\nscope.init(_global);\n//# sourceMappingURL=index.js.map","import is from \"../../utils/is.js\";\n\nfunction install(scope) {\n const {\n actions,\n Interactable,\n defaults\n } = scope;\n Interactable.prototype.draggable = drag.draggable;\n actions.map.drag = drag;\n actions.methodDict.drag = 'draggable';\n defaults.actions.drag = drag.defaults;\n}\n\nfunction beforeMove({\n interaction\n}) {\n if (interaction.prepared.name !== 'drag') return;\n const axis = interaction.prepared.axis;\n\n if (axis === 'x') {\n interaction.coords.cur.page.y = interaction.coords.start.page.y;\n interaction.coords.cur.client.y = interaction.coords.start.client.y;\n interaction.coords.velocity.client.y = 0;\n interaction.coords.velocity.page.y = 0;\n } else if (axis === 'y') {\n interaction.coords.cur.page.x = interaction.coords.start.page.x;\n interaction.coords.cur.client.x = interaction.coords.start.client.x;\n interaction.coords.velocity.client.x = 0;\n interaction.coords.velocity.page.x = 0;\n }\n}\n\nfunction move({\n iEvent,\n interaction\n}) {\n if (interaction.prepared.name !== 'drag') return;\n const axis = interaction.prepared.axis;\n\n if (axis === 'x' || axis === 'y') {\n const opposite = axis === 'x' ? 'y' : 'x';\n iEvent.page[opposite] = interaction.coords.start.page[opposite];\n iEvent.client[opposite] = interaction.coords.start.client[opposite];\n iEvent.delta[opposite] = 0;\n }\n}\n/**\n * ```js\n * interact(element).draggable({\n * onstart: function (event) {},\n * onmove : function (event) {},\n * onend : function (event) {},\n *\n * // the axis in which the first movement must be\n * // for the drag sequence to start\n * // 'xy' by default - any direction\n * startAxis: 'x' || 'y' || 'xy',\n *\n * // 'xy' by default - don't restrict to one axis (move in any direction)\n * // 'x' or 'y' to restrict movement to either axis\n * // 'start' to restrict movement to the axis the drag started in\n * lockAxis: 'x' || 'y' || 'xy' || 'start',\n *\n * // max number of drags that can happen concurrently\n * // with elements of this Interactable. Infinity by default\n * max: Infinity,\n *\n * // max number of drags that can target the same element+Interactable\n * // 1 by default\n * maxPerElement: 2\n * })\n *\n * var isDraggable = interact('element').draggable(); // true\n * ```\n *\n * Get or set whether drag actions can be performed on the target\n *\n * @alias Interactable.prototype.draggable\n *\n * @param {boolean | object} [options] true/false or An object with event\n * listeners to be fired on drag events (object makes the Interactable\n * draggable)\n * @return {boolean | Interactable} boolean indicating if this can be the\n * target of drag events, or this Interctable\n */\n\n\nconst draggable = function draggable(options) {\n if (is.object(options)) {\n this.options.drag.enabled = options.enabled !== false;\n this.setPerAction('drag', options);\n this.setOnEvents('drag', options);\n\n if (/^(xy|x|y|start)$/.test(options.lockAxis)) {\n this.options.drag.lockAxis = options.lockAxis;\n }\n\n if (/^(xy|x|y)$/.test(options.startAxis)) {\n this.options.drag.startAxis = options.startAxis;\n }\n\n return this;\n }\n\n if (is.bool(options)) {\n this.options.drag.enabled = options;\n return this;\n }\n\n return this.options.drag;\n};\n\nconst drag = {\n id: 'actions/drag',\n install,\n listeners: {\n 'interactions:before-action-move': beforeMove,\n 'interactions:action-resume': beforeMove,\n // dragmove\n 'interactions:action-move': move,\n 'auto-start:check': arg => {\n const {\n interaction,\n interactable,\n buttons\n } = arg;\n const dragOptions = interactable.options.drag;\n\n if (!(dragOptions && dragOptions.enabled) || // check mouseButton setting if the pointer is down\n interaction.pointerIsDown && /mouse|pointer/.test(interaction.pointerType) && (buttons & interactable.options.drag.mouseButtons) === 0) {\n return undefined;\n }\n\n arg.action = {\n name: 'drag',\n axis: dragOptions.lockAxis === 'start' ? dragOptions.startAxis : dragOptions.lockAxis\n };\n return false;\n }\n },\n draggable,\n beforeMove,\n move,\n defaults: {\n startAxis: 'xy',\n lockAxis: 'xy'\n },\n\n getCursor() {\n return 'move';\n }\n\n};\nexport default drag;\n//# sourceMappingURL=plugin.js.map","import { BaseEvent } from \"../../core/BaseEvent.js\";\nimport * as arr from \"../../utils/arr.js\";\nexport class DropEvent extends BaseEvent {\n /**\n * Class of events fired on dropzones during drags with acceptable targets.\n */\n constructor(dropState, dragEvent, type) {\n super(dragEvent._interaction);\n this.target = void 0;\n this.dropzone = void 0;\n this.dragEvent = void 0;\n this.relatedTarget = void 0;\n this.draggable = void 0;\n this.timeStamp = void 0;\n this.propagationStopped = false;\n this.immediatePropagationStopped = false;\n const {\n element,\n dropzone\n } = type === 'dragleave' ? dropState.prev : dropState.cur;\n this.type = type;\n this.target = element;\n this.currentTarget = element;\n this.dropzone = dropzone;\n this.dragEvent = dragEvent;\n this.relatedTarget = dragEvent.target;\n this.draggable = dragEvent.interactable;\n this.timeStamp = dragEvent.timeStamp;\n }\n /**\n * If this is a `dropactivate` event, the dropzone element will be\n * deactivated.\n *\n * If this is a `dragmove` or `dragenter`, a `dragleave` will be fired on the\n * dropzone element and more.\n */\n\n\n reject() {\n const {\n dropState\n } = this._interaction;\n\n if (this.type !== 'dropactivate' && (!this.dropzone || dropState.cur.dropzone !== this.dropzone || dropState.cur.element !== this.target)) {\n return;\n }\n\n dropState.prev.dropzone = this.dropzone;\n dropState.prev.element = this.target;\n dropState.rejected = true;\n dropState.events.enter = null;\n this.stopImmediatePropagation();\n\n if (this.type === 'dropactivate') {\n const activeDrops = dropState.activeDrops;\n const index = arr.findIndex(activeDrops, ({\n dropzone,\n element\n }) => dropzone === this.dropzone && element === this.target);\n dropState.activeDrops.splice(index, 1);\n const deactivateEvent = new DropEvent(dropState, this.dragEvent, 'dropdeactivate');\n deactivateEvent.dropzone = this.dropzone;\n deactivateEvent.target = this.target;\n this.dropzone.fire(deactivateEvent);\n } else {\n this.dropzone.fire(new DropEvent(dropState, this.dragEvent, 'dragleave'));\n }\n }\n\n preventDefault() {}\n\n stopPropagation() {\n this.propagationStopped = true;\n }\n\n stopImmediatePropagation() {\n this.immediatePropagationStopped = this.propagationStopped = true;\n }\n\n}\n//# sourceMappingURL=DropEvent.js.map","import * as domUtils from \"../../utils/domUtils.js\";\nimport extend from \"../../utils/extend.js\";\nimport getOriginXY from \"../../utils/getOriginXY.js\";\nimport is from \"../../utils/is.js\";\nimport normalizeListeners from \"../../utils/normalizeListeners.js\";\nimport * as pointerUtils from \"../../utils/pointerUtils.js\";\nimport drag from \"../drag/plugin.js\";\nimport { DropEvent } from \"./DropEvent.js\";\n\nfunction install(scope) {\n const {\n actions,\n\n /** @lends module:interact */\n interactStatic: interact,\n\n /** @lends Interactable */\n Interactable,\n defaults\n } = scope;\n scope.usePlugin(drag);\n /**\n *\n * ```js\n * interact('.drop').dropzone({\n * accept: '.can-drop' || document.getElementById('single-drop'),\n * overlap: 'pointer' || 'center' || zeroToOne\n * }\n * ```\n *\n * Returns or sets whether draggables can be dropped onto this target to\n * trigger drop events\n *\n * Dropzones can receive the following events:\n * - `dropactivate` and `dropdeactivate` when an acceptable drag starts and ends\n * - `dragenter` and `dragleave` when a draggable enters and leaves the dropzone\n * - `dragmove` when a draggable that has entered the dropzone is moved\n * - `drop` when a draggable is dropped into this dropzone\n *\n * Use the `accept` option to allow only elements that match the given CSS\n * selector or element. The value can be:\n *\n * - **an Element** - only that element can be dropped into this dropzone.\n * - **a string**, - the element being dragged must match it as a CSS selector.\n * - **`null`** - accept options is cleared - it accepts any element.\n *\n * Use the `overlap` option to set how drops are checked for. The allowed\n * values are:\n *\n * - `'pointer'`, the pointer must be over the dropzone (default)\n * - `'center'`, the draggable element's center must be over the dropzone\n * - a number from 0-1 which is the `(intersection area) / (draggable area)`.\n * e.g. `0.5` for drop to happen when half of the area of the draggable is\n * over the dropzone\n *\n * Use the `checker` option to specify a function to check if a dragged element\n * is over this Interactable.\n *\n * @param {boolean | object | null} [options] The new options to be set.\n * @return {object | Interactable} The current setting or this Interactable\n */\n\n Interactable.prototype.dropzone = function (options) {\n return dropzoneMethod(this, options);\n };\n /**\n * ```js\n * interact(target)\n * .dropChecker(function(dragEvent, // related dragmove or dragend event\n * event, // TouchEvent/PointerEvent/MouseEvent\n * dropped, // bool result of the default checker\n * dropzone, // dropzone Interactable\n * dropElement, // dropzone elemnt\n * draggable, // draggable Interactable\n * draggableElement) {// draggable element\n *\n * return dropped && event.target.hasAttribute('allow-drop')\n * }\n * ```\n */\n\n\n Interactable.prototype.dropCheck = function (dragEvent, event, draggable, draggableElement, dropElement, rect) {\n return dropCheckMethod(this, dragEvent, event, draggable, draggableElement, dropElement, rect);\n };\n /**\n * Returns or sets whether the dimensions of dropzone elements are calculated\n * on every dragmove or only on dragstart for the default dropChecker\n *\n * @param {boolean} [newValue] True to check on each move. False to check only\n * before start\n * @return {boolean | interact} The current setting or interact\n */\n\n\n interact.dynamicDrop = function (newValue) {\n if (is.bool(newValue)) {\n // if (dragging && scope.dynamicDrop !== newValue && !newValue) {\n // calcRects(dropzones)\n // }\n scope.dynamicDrop = newValue;\n return interact;\n }\n\n return scope.dynamicDrop;\n };\n\n extend(actions.phaselessTypes, {\n dragenter: true,\n dragleave: true,\n dropactivate: true,\n dropdeactivate: true,\n dropmove: true,\n drop: true\n });\n actions.methodDict.drop = 'dropzone';\n scope.dynamicDrop = false;\n defaults.actions.drop = drop.defaults;\n}\n\nfunction collectDrops({\n interactables\n}, draggableElement) {\n const drops = []; // collect all dropzones and their elements which qualify for a drop\n\n for (const dropzone of interactables.list) {\n if (!dropzone.options.drop.enabled) {\n continue;\n }\n\n const accept = dropzone.options.drop.accept; // test the draggable draggableElement against the dropzone's accept setting\n\n if (is.element(accept) && accept !== draggableElement || is.string(accept) && !domUtils.matchesSelector(draggableElement, accept) || is.func(accept) && !accept({\n dropzone,\n draggableElement\n })) {\n continue;\n } // query for new elements if necessary\n\n\n const dropElements = is.string(dropzone.target) ? dropzone._context.querySelectorAll(dropzone.target) : is.array(dropzone.target) ? dropzone.target : [dropzone.target];\n\n for (const dropzoneElement of dropElements) {\n if (dropzoneElement !== draggableElement) {\n drops.push({\n dropzone,\n element: dropzoneElement,\n rect: dropzone.getRect(dropzoneElement)\n });\n }\n }\n }\n\n return drops;\n}\n\nfunction fireActivationEvents(activeDrops, event) {\n // loop through all active dropzones and trigger event\n for (const {\n dropzone,\n element\n } of activeDrops.slice()) {\n event.dropzone = dropzone; // set current element as event target\n\n event.target = element;\n dropzone.fire(event);\n event.propagationStopped = event.immediatePropagationStopped = false;\n }\n} // return a new array of possible drops. getActiveDrops should always be\n// called when a drag has just started or a drag event happens while\n// dynamicDrop is true\n\n\nfunction getActiveDrops(scope, dragElement) {\n // get dropzones and their elements that could receive the draggable\n const activeDrops = collectDrops(scope, dragElement);\n\n for (const activeDrop of activeDrops) {\n activeDrop.rect = activeDrop.dropzone.getRect(activeDrop.element);\n }\n\n return activeDrops;\n}\n\nfunction getDrop({\n dropState,\n interactable: draggable,\n element: dragElement\n}, dragEvent, pointerEvent) {\n const validDrops = []; // collect all dropzones and their elements which qualify for a drop\n\n for (const {\n dropzone,\n element: dropzoneElement,\n rect\n } of dropState.activeDrops) {\n validDrops.push(dropzone.dropCheck(dragEvent, pointerEvent, draggable, dragElement, dropzoneElement, rect) ? dropzoneElement : null);\n } // get the most appropriate dropzone based on DOM depth and order\n\n\n const dropIndex = domUtils.indexOfDeepestElement(validDrops);\n return dropState.activeDrops[dropIndex] || null;\n}\n\nfunction getDropEvents(interaction, _pointerEvent, dragEvent) {\n const {\n dropState\n } = interaction;\n const dropEvents = {\n enter: null,\n leave: null,\n activate: null,\n deactivate: null,\n move: null,\n drop: null\n };\n\n if (dragEvent.type === 'dragstart') {\n dropEvents.activate = new DropEvent(dropState, dragEvent, 'dropactivate');\n dropEvents.activate.target = null;\n dropEvents.activate.dropzone = null;\n }\n\n if (dragEvent.type === 'dragend') {\n dropEvents.deactivate = new DropEvent(dropState, dragEvent, 'dropdeactivate');\n dropEvents.deactivate.target = null;\n dropEvents.deactivate.dropzone = null;\n }\n\n if (dropState.rejected) {\n return dropEvents;\n }\n\n if (dropState.cur.element !== dropState.prev.element) {\n // if there was a previous dropzone, create a dragleave event\n if (dropState.prev.dropzone) {\n dropEvents.leave = new DropEvent(dropState, dragEvent, 'dragleave');\n dragEvent.dragLeave = dropEvents.leave.target = dropState.prev.element;\n dragEvent.prevDropzone = dropEvents.leave.dropzone = dropState.prev.dropzone;\n } // if dropzone is not null, create a dragenter event\n\n\n if (dropState.cur.dropzone) {\n dropEvents.enter = new DropEvent(dropState, dragEvent, 'dragenter');\n dragEvent.dragEnter = dropState.cur.element;\n dragEvent.dropzone = dropState.cur.dropzone;\n }\n }\n\n if (dragEvent.type === 'dragend' && dropState.cur.dropzone) {\n dropEvents.drop = new DropEvent(dropState, dragEvent, 'drop');\n dragEvent.dropzone = dropState.cur.dropzone;\n dragEvent.relatedTarget = dropState.cur.element;\n }\n\n if (dragEvent.type === 'dragmove' && dropState.cur.dropzone) {\n dropEvents.move = new DropEvent(dropState, dragEvent, 'dropmove');\n dropEvents.move.dragmove = dragEvent;\n dragEvent.dropzone = dropState.cur.dropzone;\n }\n\n return dropEvents;\n}\n\nfunction fireDropEvents(interaction, events) {\n const {\n dropState\n } = interaction;\n const {\n activeDrops,\n cur,\n prev\n } = dropState;\n\n if (events.leave) {\n prev.dropzone.fire(events.leave);\n }\n\n if (events.enter) {\n cur.dropzone.fire(events.enter);\n }\n\n if (events.move) {\n cur.dropzone.fire(events.move);\n }\n\n if (events.drop) {\n cur.dropzone.fire(events.drop);\n }\n\n if (events.deactivate) {\n fireActivationEvents(activeDrops, events.deactivate);\n }\n\n dropState.prev.dropzone = cur.dropzone;\n dropState.prev.element = cur.element;\n}\n\nfunction onEventCreated({\n interaction,\n iEvent,\n event\n}, scope) {\n if (iEvent.type !== 'dragmove' && iEvent.type !== 'dragend') {\n return;\n }\n\n const {\n dropState\n } = interaction;\n\n if (scope.dynamicDrop) {\n dropState.activeDrops = getActiveDrops(scope, interaction.element);\n }\n\n const dragEvent = iEvent;\n const dropResult = getDrop(interaction, dragEvent, event); // update rejected status\n\n dropState.rejected = dropState.rejected && !!dropResult && dropResult.dropzone === dropState.cur.dropzone && dropResult.element === dropState.cur.element;\n dropState.cur.dropzone = dropResult && dropResult.dropzone;\n dropState.cur.element = dropResult && dropResult.element;\n dropState.events = getDropEvents(interaction, event, dragEvent);\n}\n\nfunction dropzoneMethod(interactable, options) {\n if (is.object(options)) {\n interactable.options.drop.enabled = options.enabled !== false;\n\n if (options.listeners) {\n const normalized = normalizeListeners(options.listeners); // rename 'drop' to '' as it will be prefixed with 'drop'\n\n const corrected = Object.keys(normalized).reduce((acc, type) => {\n const correctedType = /^(enter|leave)/.test(type) ? `drag${type}` : /^(activate|deactivate|move)/.test(type) ? `drop${type}` : type;\n acc[correctedType] = normalized[type];\n return acc;\n }, {});\n interactable.off(interactable.options.drop.listeners);\n interactable.on(corrected);\n interactable.options.drop.listeners = corrected;\n }\n\n if (is.func(options.ondrop)) {\n interactable.on('drop', options.ondrop);\n }\n\n if (is.func(options.ondropactivate)) {\n interactable.on('dropactivate', options.ondropactivate);\n }\n\n if (is.func(options.ondropdeactivate)) {\n interactable.on('dropdeactivate', options.ondropdeactivate);\n }\n\n if (is.func(options.ondragenter)) {\n interactable.on('dragenter', options.ondragenter);\n }\n\n if (is.func(options.ondragleave)) {\n interactable.on('dragleave', options.ondragleave);\n }\n\n if (is.func(options.ondropmove)) {\n interactable.on('dropmove', options.ondropmove);\n }\n\n if (/^(pointer|center)$/.test(options.overlap)) {\n interactable.options.drop.overlap = options.overlap;\n } else if (is.number(options.overlap)) {\n interactable.options.drop.overlap = Math.max(Math.min(1, options.overlap), 0);\n }\n\n if ('accept' in options) {\n interactable.options.drop.accept = options.accept;\n }\n\n if ('checker' in options) {\n interactable.options.drop.checker = options.checker;\n }\n\n return interactable;\n }\n\n if (is.bool(options)) {\n interactable.options.drop.enabled = options;\n return interactable;\n }\n\n return interactable.options.drop;\n}\n\nfunction dropCheckMethod(interactable, dragEvent, event, draggable, draggableElement, dropElement, rect) {\n let dropped = false; // if the dropzone has no rect (eg. display: none)\n // call the custom dropChecker or just return false\n\n if (!(rect = rect || interactable.getRect(dropElement))) {\n return interactable.options.drop.checker ? interactable.options.drop.checker(dragEvent, event, dropped, interactable, dropElement, draggable, draggableElement) : false;\n }\n\n const dropOverlap = interactable.options.drop.overlap;\n\n if (dropOverlap === 'pointer') {\n const origin = getOriginXY(draggable, draggableElement, 'drag');\n const page = pointerUtils.getPageXY(dragEvent);\n page.x += origin.x;\n page.y += origin.y;\n const horizontal = page.x > rect.left && page.x < rect.right;\n const vertical = page.y > rect.top && page.y < rect.bottom;\n dropped = horizontal && vertical;\n }\n\n const dragRect = draggable.getRect(draggableElement);\n\n if (dragRect && dropOverlap === 'center') {\n const cx = dragRect.left + dragRect.width / 2;\n const cy = dragRect.top + dragRect.height / 2;\n dropped = cx >= rect.left && cx <= rect.right && cy >= rect.top && cy <= rect.bottom;\n }\n\n if (dragRect && is.number(dropOverlap)) {\n const overlapArea = Math.max(0, Math.min(rect.right, dragRect.right) - Math.max(rect.left, dragRect.left)) * Math.max(0, Math.min(rect.bottom, dragRect.bottom) - Math.max(rect.top, dragRect.top));\n const overlapRatio = overlapArea / (dragRect.width * dragRect.height);\n dropped = overlapRatio >= dropOverlap;\n }\n\n if (interactable.options.drop.checker) {\n dropped = interactable.options.drop.checker(dragEvent, event, dropped, interactable, dropElement, draggable, draggableElement);\n }\n\n return dropped;\n}\n\nconst drop = {\n id: 'actions/drop',\n install,\n listeners: {\n 'interactions:before-action-start': ({\n interaction\n }) => {\n if (interaction.prepared.name !== 'drag') {\n return;\n }\n\n interaction.dropState = {\n cur: {\n dropzone: null,\n element: null\n },\n prev: {\n dropzone: null,\n element: null\n },\n rejected: null,\n events: null,\n activeDrops: []\n };\n },\n 'interactions:after-action-start': ({\n interaction,\n event,\n iEvent: dragEvent\n }, scope) => {\n if (interaction.prepared.name !== 'drag') {\n return;\n }\n\n const {\n dropState\n } = interaction; // reset active dropzones\n\n dropState.activeDrops = null;\n dropState.events = null;\n dropState.activeDrops = getActiveDrops(scope, interaction.element);\n dropState.events = getDropEvents(interaction, event, dragEvent);\n\n if (dropState.events.activate) {\n fireActivationEvents(dropState.activeDrops, dropState.events.activate);\n scope.fire('actions/drop:start', {\n interaction,\n dragEvent\n });\n }\n },\n 'interactions:action-move': onEventCreated,\n 'interactions:after-action-move': ({\n interaction,\n iEvent: dragEvent\n }, scope) => {\n if (interaction.prepared.name !== 'drag') {\n return;\n }\n\n fireDropEvents(interaction, interaction.dropState.events);\n scope.fire('actions/drop:move', {\n interaction,\n dragEvent\n });\n interaction.dropState.events = {};\n },\n 'interactions:action-end': (arg, scope) => {\n if (arg.interaction.prepared.name !== 'drag') {\n return;\n }\n\n const {\n interaction,\n iEvent: dragEvent\n } = arg;\n onEventCreated(arg, scope);\n fireDropEvents(interaction, interaction.dropState.events);\n scope.fire('actions/drop:end', {\n interaction,\n dragEvent\n });\n },\n 'interactions:stop': ({\n interaction\n }) => {\n if (interaction.prepared.name !== 'drag') {\n return;\n }\n\n const {\n dropState\n } = interaction;\n\n if (dropState) {\n dropState.activeDrops = null;\n dropState.events = null;\n dropState.cur.dropzone = null;\n dropState.cur.element = null;\n dropState.prev.dropzone = null;\n dropState.prev.element = null;\n dropState.rejected = false;\n }\n }\n },\n getActiveDrops,\n getDrop,\n getDropEvents,\n fireDropEvents,\n defaults: {\n enabled: false,\n accept: null,\n overlap: 'pointer'\n }\n};\nexport default drop;\n//# sourceMappingURL=plugin.js.map","import is from \"../../utils/is.js\";\nimport * as pointerUtils from \"../../utils/pointerUtils.js\";\n\nfunction install(scope) {\n const {\n actions,\n Interactable,\n defaults\n } = scope;\n /**\n * ```js\n * interact(element).gesturable({\n * onstart: function (event) {},\n * onmove : function (event) {},\n * onend : function (event) {},\n *\n * // limit multiple gestures.\n * // See the explanation in {@link Interactable.draggable} example\n * max: Infinity,\n * maxPerElement: 1,\n * })\n *\n * var isGestureable = interact(element).gesturable()\n * ```\n *\n * Gets or sets whether multitouch gestures can be performed on the target\n *\n * @param {boolean | object} [options] true/false or An object with event\n * listeners to be fired on gesture events (makes the Interactable gesturable)\n * @return {boolean | Interactable} A boolean indicating if this can be the\n * target of gesture events, or this Interactable\n */\n\n Interactable.prototype.gesturable = function (options) {\n if (is.object(options)) {\n this.options.gesture.enabled = options.enabled !== false;\n this.setPerAction('gesture', options);\n this.setOnEvents('gesture', options);\n return this;\n }\n\n if (is.bool(options)) {\n this.options.gesture.enabled = options;\n return this;\n }\n\n return this.options.gesture;\n };\n\n actions.map.gesture = gesture;\n actions.methodDict.gesture = 'gesturable';\n defaults.actions.gesture = gesture.defaults;\n}\n\nfunction updateGestureProps({\n interaction,\n iEvent,\n phase\n}) {\n if (interaction.prepared.name !== 'gesture') return;\n const pointers = interaction.pointers.map(p => p.pointer);\n const starting = phase === 'start';\n const ending = phase === 'end';\n const deltaSource = interaction.interactable.options.deltaSource;\n iEvent.touches = [pointers[0], pointers[1]];\n\n if (starting) {\n iEvent.distance = pointerUtils.touchDistance(pointers, deltaSource);\n iEvent.box = pointerUtils.touchBBox(pointers);\n iEvent.scale = 1;\n iEvent.ds = 0;\n iEvent.angle = pointerUtils.touchAngle(pointers, deltaSource);\n iEvent.da = 0;\n interaction.gesture.startDistance = iEvent.distance;\n interaction.gesture.startAngle = iEvent.angle;\n } else if (ending) {\n const prevEvent = interaction.prevEvent;\n iEvent.distance = prevEvent.distance;\n iEvent.box = prevEvent.box;\n iEvent.scale = prevEvent.scale;\n iEvent.ds = 0;\n iEvent.angle = prevEvent.angle;\n iEvent.da = 0;\n } else {\n iEvent.distance = pointerUtils.touchDistance(pointers, deltaSource);\n iEvent.box = pointerUtils.touchBBox(pointers);\n iEvent.scale = iEvent.distance / interaction.gesture.startDistance;\n iEvent.angle = pointerUtils.touchAngle(pointers, deltaSource);\n iEvent.ds = iEvent.scale - interaction.gesture.scale;\n iEvent.da = iEvent.angle - interaction.gesture.angle;\n }\n\n interaction.gesture.distance = iEvent.distance;\n interaction.gesture.angle = iEvent.angle;\n\n if (is.number(iEvent.scale) && iEvent.scale !== Infinity && !isNaN(iEvent.scale)) {\n interaction.gesture.scale = iEvent.scale;\n }\n}\n\nconst gesture = {\n id: 'actions/gesture',\n before: ['actions/drag', 'actions/resize'],\n install,\n listeners: {\n 'interactions:action-start': updateGestureProps,\n 'interactions:action-move': updateGestureProps,\n 'interactions:action-end': updateGestureProps,\n 'interactions:new': ({\n interaction\n }) => {\n interaction.gesture = {\n angle: 0,\n distance: 0,\n scale: 1,\n startAngle: 0,\n startDistance: 0\n };\n },\n 'auto-start:check': arg => {\n if (arg.interaction.pointers.length < 2) {\n return undefined;\n }\n\n const gestureOptions = arg.interactable.options.gesture;\n\n if (!(gestureOptions && gestureOptions.enabled)) {\n return undefined;\n }\n\n arg.action = {\n name: 'gesture'\n };\n return false;\n }\n },\n defaults: {},\n\n getCursor() {\n return '';\n }\n\n};\nexport default gesture;\n//# sourceMappingURL=plugin.js.map","import * as dom from \"../../utils/domUtils.js\";\nimport extend from \"../../utils/extend.js\";\nimport is from \"../../utils/is.js\";\n\nfunction install(scope) {\n const {\n actions,\n browser,\n\n /** @lends Interactable */\n Interactable,\n // tslint:disable-line no-shadowed-variable\n defaults\n } = scope; // Less Precision with touch input\n\n resize.cursors = initCursors(browser);\n resize.defaultMargin = browser.supportsTouch || browser.supportsPointerEvent ? 20 : 10;\n /**\n * ```js\n * interact(element).resizable({\n * onstart: function (event) {},\n * onmove : function (event) {},\n * onend : function (event) {},\n *\n * edges: {\n * top : true, // Use pointer coords to check for resize.\n * left : false, // Disable resizing from left edge.\n * bottom: '.resize-s',// Resize if pointer target matches selector\n * right : handleEl // Resize if pointer target is the given Element\n * },\n *\n * // Width and height can be adjusted independently. When `true`, width and\n * // height are adjusted at a 1:1 ratio.\n * square: false,\n *\n * // Width and height can be adjusted independently. When `true`, width and\n * // height maintain the aspect ratio they had when resizing started.\n * preserveAspectRatio: false,\n *\n * // a value of 'none' will limit the resize rect to a minimum of 0x0\n * // 'negate' will allow the rect to have negative width/height\n * // 'reposition' will keep the width/height positive by swapping\n * // the top and bottom edges and/or swapping the left and right edges\n * invert: 'none' || 'negate' || 'reposition'\n *\n * // limit multiple resizes.\n * // See the explanation in the {@link Interactable.draggable} example\n * max: Infinity,\n * maxPerElement: 1,\n * })\n *\n * var isResizeable = interact(element).resizable()\n * ```\n *\n * Gets or sets whether resize actions can be performed on the target\n *\n * @param {boolean | object} [options] true/false or An object with event\n * listeners to be fired on resize events (object makes the Interactable\n * resizable)\n * @return {boolean | Interactable} A boolean indicating if this can be the\n * target of resize elements, or this Interactable\n */\n\n Interactable.prototype.resizable = function (options) {\n return resizable(this, options, scope);\n };\n\n actions.map.resize = resize;\n actions.methodDict.resize = 'resizable';\n defaults.actions.resize = resize.defaults;\n}\n\nfunction resizeChecker(arg) {\n const {\n interaction,\n interactable,\n element,\n rect,\n buttons\n } = arg;\n\n if (!rect) {\n return undefined;\n }\n\n const page = extend({}, interaction.coords.cur.page);\n const resizeOptions = interactable.options.resize;\n\n if (!(resizeOptions && resizeOptions.enabled) || // check mouseButton setting if the pointer is down\n interaction.pointerIsDown && /mouse|pointer/.test(interaction.pointerType) && (buttons & resizeOptions.mouseButtons) === 0) {\n return undefined;\n } // if using resize.edges\n\n\n if (is.object(resizeOptions.edges)) {\n const resizeEdges = {\n left: false,\n right: false,\n top: false,\n bottom: false\n };\n\n for (const edge in resizeEdges) {\n resizeEdges[edge] = checkResizeEdge(edge, resizeOptions.edges[edge], page, interaction._latestPointer.eventTarget, element, rect, resizeOptions.margin || resize.defaultMargin);\n }\n\n resizeEdges.left = resizeEdges.left && !resizeEdges.right;\n resizeEdges.top = resizeEdges.top && !resizeEdges.bottom;\n\n if (resizeEdges.left || resizeEdges.right || resizeEdges.top || resizeEdges.bottom) {\n arg.action = {\n name: 'resize',\n edges: resizeEdges\n };\n }\n } else {\n const right = resizeOptions.axis !== 'y' && page.x > rect.right - resize.defaultMargin;\n const bottom = resizeOptions.axis !== 'x' && page.y > rect.bottom - resize.defaultMargin;\n\n if (right || bottom) {\n arg.action = {\n name: 'resize',\n axes: (right ? 'x' : '') + (bottom ? 'y' : '')\n };\n }\n }\n\n return arg.action ? false : undefined;\n}\n\nfunction resizable(interactable, options, scope) {\n if (is.object(options)) {\n interactable.options.resize.enabled = options.enabled !== false;\n interactable.setPerAction('resize', options);\n interactable.setOnEvents('resize', options);\n\n if (is.string(options.axis) && /^x$|^y$|^xy$/.test(options.axis)) {\n interactable.options.resize.axis = options.axis;\n } else if (options.axis === null) {\n interactable.options.resize.axis = scope.defaults.actions.resize.axis;\n }\n\n if (is.bool(options.preserveAspectRatio)) {\n interactable.options.resize.preserveAspectRatio = options.preserveAspectRatio;\n } else if (is.bool(options.square)) {\n interactable.options.resize.square = options.square;\n }\n\n return interactable;\n }\n\n if (is.bool(options)) {\n interactable.options.resize.enabled = options;\n return interactable;\n }\n\n return interactable.options.resize;\n}\n\nfunction checkResizeEdge(name, value, page, element, interactableElement, rect, margin) {\n // false, '', undefined, null\n if (!value) {\n return false;\n } // true value, use pointer coords and element rect\n\n\n if (value === true) {\n // if dimensions are negative, \"switch\" edges\n const width = is.number(rect.width) ? rect.width : rect.right - rect.left;\n const height = is.number(rect.height) ? rect.height : rect.bottom - rect.top; // don't use margin greater than half the relevent dimension\n\n margin = Math.min(margin, Math.abs((name === 'left' || name === 'right' ? width : height) / 2));\n\n if (width < 0) {\n if (name === 'left') {\n name = 'right';\n } else if (name === 'right') {\n name = 'left';\n }\n }\n\n if (height < 0) {\n if (name === 'top') {\n name = 'bottom';\n } else if (name === 'bottom') {\n name = 'top';\n }\n }\n\n if (name === 'left') {\n return page.x < (width >= 0 ? rect.left : rect.right) + margin;\n }\n\n if (name === 'top') {\n return page.y < (height >= 0 ? rect.top : rect.bottom) + margin;\n }\n\n if (name === 'right') {\n return page.x > (width >= 0 ? rect.right : rect.left) - margin;\n }\n\n if (name === 'bottom') {\n return page.y > (height >= 0 ? rect.bottom : rect.top) - margin;\n }\n } // the remaining checks require an element\n\n\n if (!is.element(element)) {\n return false;\n }\n\n return is.element(value) ? // the value is an element to use as a resize handle\n value === element : // otherwise check if element matches value as selector\n dom.matchesUpTo(element, value, interactableElement);\n}\n/* eslint-disable multiline-ternary */\n// eslint-disable-next-line @typescript-eslint/consistent-type-imports\n\n\nfunction initCursors(browser) {\n return browser.isIe9 ? {\n x: 'e-resize',\n y: 's-resize',\n xy: 'se-resize',\n top: 'n-resize',\n left: 'w-resize',\n bottom: 's-resize',\n right: 'e-resize',\n topleft: 'se-resize',\n bottomright: 'se-resize',\n topright: 'ne-resize',\n bottomleft: 'ne-resize'\n } : {\n x: 'ew-resize',\n y: 'ns-resize',\n xy: 'nwse-resize',\n top: 'ns-resize',\n left: 'ew-resize',\n bottom: 'ns-resize',\n right: 'ew-resize',\n topleft: 'nwse-resize',\n bottomright: 'nwse-resize',\n topright: 'nesw-resize',\n bottomleft: 'nesw-resize'\n };\n}\n/* eslint-enable multiline-ternary */\n\n\nfunction start({\n iEvent,\n interaction\n}) {\n if (interaction.prepared.name !== 'resize' || !interaction.prepared.edges) {\n return;\n }\n\n const resizeEvent = iEvent;\n const rect = interaction.rect;\n interaction._rects = {\n start: extend({}, rect),\n corrected: extend({}, rect),\n previous: extend({}, rect),\n delta: {\n left: 0,\n right: 0,\n width: 0,\n top: 0,\n bottom: 0,\n height: 0\n }\n };\n resizeEvent.edges = interaction.prepared.edges;\n resizeEvent.rect = interaction._rects.corrected;\n resizeEvent.deltaRect = interaction._rects.delta;\n}\n\nfunction move({\n iEvent,\n interaction\n}) {\n if (interaction.prepared.name !== 'resize' || !interaction.prepared.edges) return;\n const resizeEvent = iEvent;\n const resizeOptions = interaction.interactable.options.resize;\n const invert = resizeOptions.invert;\n const invertible = invert === 'reposition' || invert === 'negate';\n const current = interaction.rect;\n const {\n start: startRect,\n corrected,\n delta: deltaRect,\n previous\n } = interaction._rects;\n extend(previous, corrected);\n\n if (invertible) {\n // if invertible, copy the current rect\n extend(corrected, current);\n\n if (invert === 'reposition') {\n // swap edge values if necessary to keep width/height positive\n if (corrected.top > corrected.bottom) {\n const swap = corrected.top;\n corrected.top = corrected.bottom;\n corrected.bottom = swap;\n }\n\n if (corrected.left > corrected.right) {\n const swap = corrected.left;\n corrected.left = corrected.right;\n corrected.right = swap;\n }\n }\n } else {\n // if not invertible, restrict to minimum of 0x0 rect\n corrected.top = Math.min(current.top, startRect.bottom);\n corrected.bottom = Math.max(current.bottom, startRect.top);\n corrected.left = Math.min(current.left, startRect.right);\n corrected.right = Math.max(current.right, startRect.left);\n }\n\n corrected.width = corrected.right - corrected.left;\n corrected.height = corrected.bottom - corrected.top;\n\n for (const edge in corrected) {\n deltaRect[edge] = corrected[edge] - previous[edge];\n }\n\n resizeEvent.edges = interaction.prepared.edges;\n resizeEvent.rect = corrected;\n resizeEvent.deltaRect = deltaRect;\n}\n\nfunction end({\n iEvent,\n interaction\n}) {\n if (interaction.prepared.name !== 'resize' || !interaction.prepared.edges) return;\n const resizeEvent = iEvent;\n resizeEvent.edges = interaction.prepared.edges;\n resizeEvent.rect = interaction._rects.corrected;\n resizeEvent.deltaRect = interaction._rects.delta;\n}\n\nfunction updateEventAxes({\n iEvent,\n interaction\n}) {\n if (interaction.prepared.name !== 'resize' || !interaction.resizeAxes) return;\n const options = interaction.interactable.options;\n const resizeEvent = iEvent;\n\n if (options.resize.square) {\n if (interaction.resizeAxes === 'y') {\n resizeEvent.delta.x = resizeEvent.delta.y;\n } else {\n resizeEvent.delta.y = resizeEvent.delta.x;\n }\n\n resizeEvent.axes = 'xy';\n } else {\n resizeEvent.axes = interaction.resizeAxes;\n\n if (interaction.resizeAxes === 'x') {\n resizeEvent.delta.y = 0;\n } else if (interaction.resizeAxes === 'y') {\n resizeEvent.delta.x = 0;\n }\n }\n}\n\nconst resize = {\n id: 'actions/resize',\n before: ['actions/drag'],\n install,\n listeners: {\n 'interactions:new': ({\n interaction\n }) => {\n interaction.resizeAxes = 'xy';\n },\n 'interactions:action-start': arg => {\n start(arg);\n updateEventAxes(arg);\n },\n 'interactions:action-move': arg => {\n move(arg);\n updateEventAxes(arg);\n },\n 'interactions:action-end': end,\n 'auto-start:check': resizeChecker\n },\n defaults: {\n square: false,\n preserveAspectRatio: false,\n axis: 'xy',\n // use default margin\n margin: NaN,\n // object with props left, right, top, bottom which are\n // true/false values to resize when the pointer is over that edge,\n // CSS selectors to match the handles for each direction\n // or the Elements for each handle\n edges: null,\n // a value of 'none' will limit the resize rect to a minimum of 0x0\n // 'negate' will alow the rect to have negative width/height\n // 'reposition' will keep the width/height positive by swapping\n // the top and bottom edges and/or swapping the left and right edges\n invert: 'none'\n },\n cursors: null,\n\n getCursor({\n edges,\n axis,\n name\n }) {\n const cursors = resize.cursors;\n let result = null;\n\n if (axis) {\n result = cursors[name + axis];\n } else if (edges) {\n let cursorKey = '';\n\n for (const edge of ['top', 'bottom', 'left', 'right']) {\n if (edges[edge]) {\n cursorKey += edge;\n }\n }\n\n result = cursors[cursorKey];\n }\n\n return result;\n },\n\n defaultMargin: null\n};\nexport default resize;\n//# sourceMappingURL=plugin.js.map","import drag from \"./drag/plugin.js\";\nimport drop from \"./drop/plugin.js\";\nimport gesture from \"./gesture/plugin.js\";\nimport resize from \"./resize/plugin.js\";\nexport default {\n id: 'actions',\n\n install(scope) {\n scope.usePlugin(gesture);\n scope.usePlugin(resize);\n scope.usePlugin(drag);\n scope.usePlugin(drop);\n }\n\n};\n//# sourceMappingURL=plugin.js.map","import is from \"../utils/is.js\";\nimport { warnOnce } from \"../utils/misc.js\";\n\nfunction install(scope) {\n const {\n /** @lends Interactable */\n Interactable // tslint:disable-line no-shadowed-variable\n\n } = scope;\n\n Interactable.prototype.getAction = function getAction(pointer, event, interaction, element) {\n const action = defaultActionChecker(this, event, interaction, element, scope);\n\n if (this.options.actionChecker) {\n return this.options.actionChecker(pointer, event, action, this, element, interaction);\n }\n\n return action;\n };\n /**\n * If the target of the `mousedown`, `pointerdown` or `touchstart` event or any\n * of it's parents match the given CSS selector or Element, no\n * drag/resize/gesture is started.\n *\n * @deprecated\n * Don't use this method. Instead set the `ignoreFrom` option for each action\n * or for `pointerEvents`\n *\n * ```js\n * interact(targett)\n * .draggable({\n * ignoreFrom: 'input, textarea, a[href]'',\n * })\n * .pointerEvents({\n * ignoreFrom: '[no-pointer]',\n * })\n * ```\n *\n * @param {string | Element | null} [newValue] a CSS selector string, an\n * Element or `null` to not ignore any elements\n * @return {string | Element | object} The current ignoreFrom value or this\n * Interactable\n */\n\n\n Interactable.prototype.ignoreFrom = warnOnce(function (newValue) {\n return this._backCompatOption('ignoreFrom', newValue);\n }, 'Interactable.ignoreFrom() has been deprecated. Use Interactble.draggable({ignoreFrom: newValue}).');\n /**\n *\n * A drag/resize/gesture is started only If the target of the `mousedown`,\n * `pointerdown` or `touchstart` event or any of it's parents match the given\n * CSS selector or Element.\n *\n * @deprecated\n * Don't use this method. Instead set the `allowFrom` option for each action\n * or for `pointerEvents`\n *\n * ```js\n * interact(targett)\n * .resizable({\n * allowFrom: '.resize-handle',\n * .pointerEvents({\n * allowFrom: '.handle',,\n * })\n * ```\n *\n * @param {string | Element | null} [newValue] a CSS selector string, an\n * Element or `null` to allow from any element\n * @return {string | Element | object} The current allowFrom value or this\n * Interactable\n */\n\n Interactable.prototype.allowFrom = warnOnce(function (newValue) {\n return this._backCompatOption('allowFrom', newValue);\n }, 'Interactable.allowFrom() has been deprecated. Use Interactble.draggable({allowFrom: newValue}).');\n /**\n * ```js\n * interact('.resize-drag')\n * .resizable(true)\n * .draggable(true)\n * .actionChecker(function (pointer, event, action, interactable, element, interaction) {\n *\n * if (interact.matchesSelector(event.target, '.drag-handle')) {\n * // force drag with handle target\n * action.name = drag\n * }\n * else {\n * // resize from the top and right edges\n * action.name = 'resize'\n * action.edges = { top: true, right: true }\n * }\n *\n * return action\n * })\n * ```\n *\n * Returns or sets the function used to check action to be performed on\n * pointerDown\n *\n * @param {function | null} [checker] A function which takes a pointer event,\n * defaultAction string, interactable, element and interaction as parameters\n * and returns an object with name property 'drag' 'resize' or 'gesture' and\n * optionally an `edges` object with boolean 'top', 'left', 'bottom' and right\n * props.\n * @return {Function | Interactable} The checker function or this Interactable\n */\n\n Interactable.prototype.actionChecker = actionChecker;\n /**\n * Returns or sets whether the the cursor should be changed depending on the\n * action that would be performed if the mouse were pressed and dragged.\n *\n * @param {boolean} [newValue]\n * @return {boolean | Interactable} The current setting or this Interactable\n */\n\n Interactable.prototype.styleCursor = styleCursor;\n}\n\nfunction defaultActionChecker(interactable, event, interaction, element, scope) {\n const rect = interactable.getRect(element);\n const buttons = event.buttons || {\n 0: 1,\n 1: 4,\n 3: 8,\n 4: 16\n }[event.button];\n const arg = {\n action: null,\n interactable,\n interaction,\n element,\n rect,\n buttons\n };\n scope.fire('auto-start:check', arg);\n return arg.action;\n}\n\nfunction styleCursor(newValue) {\n if (is.bool(newValue)) {\n this.options.styleCursor = newValue;\n return this;\n }\n\n if (newValue === null) {\n delete this.options.styleCursor;\n return this;\n }\n\n return this.options.styleCursor;\n}\n\nfunction actionChecker(checker) {\n if (is.func(checker)) {\n this.options.actionChecker = checker;\n return this;\n }\n\n if (checker === null) {\n delete this.options.actionChecker;\n return this;\n }\n\n return this.options.actionChecker;\n}\n\nexport default {\n id: 'auto-start/interactableMethods',\n install\n};\n//# sourceMappingURL=InteractableMethods.js.map","/* eslint-disable import/order, no-console, eol-last */\nimport interact from \"../interact/index.js\";\nimport plugin from \"./plugin.js\";\ninteract.use(plugin);\n//# sourceMappingURL=index.js.map","import * as domUtils from \"../utils/domUtils.js\";\nimport extend from \"../utils/extend.js\";\nimport is from \"../utils/is.js\";\nimport { copyAction } from \"../utils/misc.js\";\nimport InteractableMethods from \"./InteractableMethods.js\";\n\nfunction install(scope) {\n const {\n interactStatic: interact,\n defaults\n } = scope;\n scope.usePlugin(InteractableMethods);\n defaults.base.actionChecker = null;\n defaults.base.styleCursor = true;\n extend(defaults.perAction, {\n manualStart: false,\n max: Infinity,\n maxPerElement: 1,\n allowFrom: null,\n ignoreFrom: null,\n // only allow left button by default\n // see https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/buttons#Return_value\n mouseButtons: 1\n });\n /**\n * Returns or sets the maximum number of concurrent interactions allowed. By\n * default only 1 interaction is allowed at a time (for backwards\n * compatibility). To allow multiple interactions on the same Interactables and\n * elements, you need to enable it in the draggable, resizable and gesturable\n * `'max'` and `'maxPerElement'` options.\n *\n * @alias module:interact.maxInteractions\n *\n * @param {number} [newValue] Any number. newValue <= 0 means no interactions.\n */\n\n interact.maxInteractions = newValue => maxInteractions(newValue, scope);\n\n scope.autoStart = {\n // Allow this many interactions to happen simultaneously\n maxInteractions: Infinity,\n withinInteractionLimit,\n cursorElement: null\n };\n}\n\nfunction prepareOnDown({\n interaction,\n pointer,\n event,\n eventTarget\n}, scope) {\n if (interaction.interacting()) return;\n const actionInfo = getActionInfo(interaction, pointer, event, eventTarget, scope);\n prepare(interaction, actionInfo, scope);\n}\n\nfunction prepareOnMove({\n interaction,\n pointer,\n event,\n eventTarget\n}, scope) {\n if (interaction.pointerType !== 'mouse' || interaction.pointerIsDown || interaction.interacting()) return;\n const actionInfo = getActionInfo(interaction, pointer, event, eventTarget, scope);\n prepare(interaction, actionInfo, scope);\n}\n\nfunction startOnMove(arg, scope) {\n const {\n interaction\n } = arg;\n\n if (!interaction.pointerIsDown || interaction.interacting() || !interaction.pointerWasMoved || !interaction.prepared.name) {\n return;\n }\n\n scope.fire('autoStart:before-start', arg);\n const {\n interactable\n } = interaction;\n const actionName = interaction.prepared.name;\n\n if (actionName && interactable) {\n // check manualStart and interaction limit\n if (interactable.options[actionName].manualStart || !withinInteractionLimit(interactable, interaction.element, interaction.prepared, scope)) {\n interaction.stop();\n } else {\n interaction.start(interaction.prepared, interactable, interaction.element);\n setInteractionCursor(interaction, scope);\n }\n }\n}\n\nfunction clearCursorOnStop({\n interaction\n}, scope) {\n const {\n interactable\n } = interaction;\n\n if (interactable && interactable.options.styleCursor) {\n setCursor(interaction.element, '', scope);\n }\n} // Check if the current interactable supports the action.\n// If so, return the validated action. Otherwise, return null\n\n\nfunction validateAction(action, interactable, element, eventTarget, scope) {\n if (interactable.testIgnoreAllow(interactable.options[action.name], element, eventTarget) && interactable.options[action.name].enabled && withinInteractionLimit(interactable, element, action, scope)) {\n return action;\n }\n\n return null;\n}\n\nfunction validateMatches(interaction, pointer, event, matches, matchElements, eventTarget, scope) {\n for (let i = 0, len = matches.length; i < len; i++) {\n const match = matches[i];\n const matchElement = matchElements[i];\n const matchAction = match.getAction(pointer, event, interaction, matchElement);\n\n if (!matchAction) {\n continue;\n }\n\n const action = validateAction(matchAction, match, matchElement, eventTarget, scope);\n\n if (action) {\n return {\n action,\n interactable: match,\n element: matchElement\n };\n }\n }\n\n return {\n action: null,\n interactable: null,\n element: null\n };\n}\n\nfunction getActionInfo(interaction, pointer, event, eventTarget, scope) {\n let matches = [];\n let matchElements = [];\n let element = eventTarget;\n\n function pushMatches(interactable) {\n matches.push(interactable);\n matchElements.push(element);\n }\n\n while (is.element(element)) {\n matches = [];\n matchElements = [];\n scope.interactables.forEachMatch(element, pushMatches);\n const actionInfo = validateMatches(interaction, pointer, event, matches, matchElements, eventTarget, scope);\n\n if (actionInfo.action && !actionInfo.interactable.options[actionInfo.action.name].manualStart) {\n return actionInfo;\n }\n\n element = domUtils.parentNode(element);\n }\n\n return {\n action: null,\n interactable: null,\n element: null\n };\n}\n\nfunction prepare(interaction, {\n action,\n interactable,\n element\n}, scope) {\n action = action || {\n name: null\n };\n interaction.interactable = interactable;\n interaction.element = element;\n copyAction(interaction.prepared, action);\n interaction.rect = interactable && action.name ? interactable.getRect(element) : null;\n setInteractionCursor(interaction, scope);\n scope.fire('autoStart:prepared', {\n interaction\n });\n}\n\nfunction withinInteractionLimit(interactable, element, action, scope) {\n const options = interactable.options;\n const maxActions = options[action.name].max;\n const maxPerElement = options[action.name].maxPerElement;\n const autoStartMax = scope.autoStart.maxInteractions;\n let activeInteractions = 0;\n let interactableCount = 0;\n let elementCount = 0; // no actions if any of these values == 0\n\n if (!(maxActions && maxPerElement && autoStartMax)) {\n return false;\n }\n\n for (const interaction of scope.interactions.list) {\n const otherAction = interaction.prepared.name;\n\n if (!interaction.interacting()) {\n continue;\n }\n\n activeInteractions++;\n\n if (activeInteractions >= autoStartMax) {\n return false;\n }\n\n if (interaction.interactable !== interactable) {\n continue;\n }\n\n interactableCount += otherAction === action.name ? 1 : 0;\n\n if (interactableCount >= maxActions) {\n return false;\n }\n\n if (interaction.element === element) {\n elementCount++;\n\n if (otherAction === action.name && elementCount >= maxPerElement) {\n return false;\n }\n }\n }\n\n return autoStartMax > 0;\n}\n\nfunction maxInteractions(newValue, scope) {\n if (is.number(newValue)) {\n scope.autoStart.maxInteractions = newValue;\n return this;\n }\n\n return scope.autoStart.maxInteractions;\n}\n\nfunction setCursor(element, cursor, scope) {\n const {\n cursorElement: prevCursorElement\n } = scope.autoStart;\n\n if (prevCursorElement && prevCursorElement !== element) {\n prevCursorElement.style.cursor = '';\n }\n\n element.ownerDocument.documentElement.style.cursor = cursor;\n element.style.cursor = cursor;\n scope.autoStart.cursorElement = cursor ? element : null;\n}\n\nfunction setInteractionCursor(interaction, scope) {\n const {\n interactable,\n element,\n prepared\n } = interaction;\n\n if (!(interaction.pointerType === 'mouse' && interactable && interactable.options.styleCursor)) {\n // clear previous target element cursor\n if (scope.autoStart.cursorElement) {\n setCursor(scope.autoStart.cursorElement, '', scope);\n }\n\n return;\n }\n\n let cursor = '';\n\n if (prepared.name) {\n const cursorChecker = interactable.options[prepared.name].cursorChecker;\n\n if (is.func(cursorChecker)) {\n cursor = cursorChecker(prepared, interactable, element, interaction._interacting);\n } else {\n cursor = scope.actions.map[prepared.name].getCursor(prepared);\n }\n }\n\n setCursor(interaction.element, cursor || '', scope);\n}\n\nconst autoStart = {\n id: 'auto-start/base',\n before: ['actions'],\n install,\n listeners: {\n 'interactions:down': prepareOnDown,\n 'interactions:move': (arg, scope) => {\n prepareOnMove(arg, scope);\n startOnMove(arg, scope);\n },\n 'interactions:stop': clearCursorOnStop\n },\n maxInteractions,\n withinInteractionLimit,\n validateAction\n};\nexport default autoStart;\n//# sourceMappingURL=base.js.map","import { parentNode } from \"../utils/domUtils.js\";\nimport is from \"../utils/is.js\";\nimport autoStart from \"./base.js\";\n\nfunction beforeStart({\n interaction,\n eventTarget,\n dx,\n dy\n}, scope) {\n if (interaction.prepared.name !== 'drag') return; // check if a drag is in the correct axis\n\n const absX = Math.abs(dx);\n const absY = Math.abs(dy);\n const targetOptions = interaction.interactable.options.drag;\n const startAxis = targetOptions.startAxis;\n const currentAxis = absX > absY ? 'x' : absX < absY ? 'y' : 'xy';\n interaction.prepared.axis = targetOptions.lockAxis === 'start' ? currentAxis[0] : // always lock to one axis even if currentAxis === 'xy'\n targetOptions.lockAxis; // if the movement isn't in the startAxis of the interactable\n\n if (currentAxis !== 'xy' && startAxis !== 'xy' && startAxis !== currentAxis) {\n // cancel the prepared action\n ;\n interaction.prepared.name = null; // then try to get a drag from another ineractable\n\n let element = eventTarget;\n\n const getDraggable = function (interactable) {\n if (interactable === interaction.interactable) return;\n const options = interaction.interactable.options.drag;\n\n if (!options.manualStart && interactable.testIgnoreAllow(options, element, eventTarget)) {\n const action = interactable.getAction(interaction.downPointer, interaction.downEvent, interaction, element);\n\n if (action && action.name === 'drag' && checkStartAxis(currentAxis, interactable) && autoStart.validateAction(action, interactable, element, eventTarget, scope)) {\n return interactable;\n }\n }\n }; // check all interactables\n\n\n while (is.element(element)) {\n const interactable = scope.interactables.forEachMatch(element, getDraggable);\n\n if (interactable) {\n ;\n interaction.prepared.name = 'drag';\n interaction.interactable = interactable;\n interaction.element = element;\n break;\n }\n\n element = parentNode(element);\n }\n }\n}\n\nfunction checkStartAxis(startAxis, interactable) {\n if (!interactable) {\n return false;\n }\n\n const thisAxis = interactable.options.drag.startAxis;\n return startAxis === 'xy' || thisAxis === 'xy' || thisAxis === startAxis;\n}\n\nexport default {\n id: 'auto-start/dragAxis',\n listeners: {\n 'autoStart:before-start': beforeStart\n }\n};\n//# sourceMappingURL=dragAxis.js.map","import basePlugin from \"./base.js\";\n\nfunction install(scope) {\n const {\n defaults\n } = scope;\n scope.usePlugin(basePlugin);\n defaults.perAction.hold = 0;\n defaults.perAction.delay = 0;\n}\n\nfunction getHoldDuration(interaction) {\n const actionName = interaction.prepared && interaction.prepared.name;\n\n if (!actionName) {\n return null;\n }\n\n const options = interaction.interactable.options;\n return options[actionName].hold || options[actionName].delay;\n}\n\nconst hold = {\n id: 'auto-start/hold',\n install,\n listeners: {\n 'interactions:new': ({\n interaction\n }) => {\n interaction.autoStartHoldTimer = null;\n },\n 'autoStart:prepared': ({\n interaction\n }) => {\n const hold = getHoldDuration(interaction);\n\n if (hold > 0) {\n interaction.autoStartHoldTimer = setTimeout(() => {\n interaction.start(interaction.prepared, interaction.interactable, interaction.element);\n }, hold);\n }\n },\n 'interactions:move': ({\n interaction,\n duplicate\n }) => {\n if (interaction.autoStartHoldTimer && interaction.pointerWasMoved && !duplicate) {\n clearTimeout(interaction.autoStartHoldTimer);\n interaction.autoStartHoldTimer = null;\n }\n },\n // prevent regular down->move autoStart\n 'autoStart:before-start': ({\n interaction\n }) => {\n const holdDuration = getHoldDuration(interaction);\n\n if (holdDuration > 0) {\n interaction.prepared.name = null;\n }\n }\n },\n getHoldDuration\n};\nexport default hold;\n//# sourceMappingURL=hold.js.map","import autoStart from \"./base.js\";\nimport dragAxis from \"./dragAxis.js\";\nimport hold from \"./hold.js\";\nexport default {\n id: 'auto-start',\n\n install(scope) {\n scope.usePlugin(autoStart);\n scope.usePlugin(hold);\n scope.usePlugin(dragAxis);\n }\n\n};\n//# sourceMappingURL=plugin.js.map","/* eslint-disable import/order, no-console, eol-last */\nimport interact from \"../interact/index.js\";\nimport plugin from \"./plugin.js\";\ninteract.use(plugin);\n//# sourceMappingURL=index.js.map","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DashItem.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DashItem.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./DashItem.vue?vue&type=template&id=686fe940&scoped=true&\"\nimport script from \"./DashItem.vue?vue&type=script&lang=js&\"\nexport * from \"./DashItem.vue?vue&type=script&lang=js&\"\nimport style0 from \"./DashItem.vue?vue&type=style&index=0&id=686fe940&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"686fe940\",\n null\n \n)\n\nexport default component.exports","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DashLayout.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DashLayout.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./DashLayout.vue?vue&type=template&id=9d8e0e52&scoped=true&\"\nimport script from \"./DashLayout.vue?vue&type=script&lang=js&\"\nexport * from \"./DashLayout.vue?vue&type=script&lang=js&\"\nimport style0 from \"./DashLayout.vue?vue&type=style&index=0&id=9d8e0e52&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"9d8e0e52\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',{staticClass:\"dashboard__widget\",class:[_vm.moving ? 'isMoving' : '', _vm.vesselDataWidgetTypeClass],attrs:{\"elevation\":_vm.moving ? 15 : 4,\"width\":_vm.width,\"height\":_vm.height}},[_c('v-toolbar',{staticClass:\"widget-toolbar\",class:_vm.vesselDataWidgetTypeClass,attrs:{\"dark\":\"\",\"dense\":\"\"}},[_c('v-toolbar-title',[_vm._v(_vm._s(_vm.widgetRef.name))]),_c('v-spacer'),_c('v-tooltip',{attrs:{\"top\":\"\",\"color\":\"primary lighten-2\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('div',_vm._g({},on),[_c('v-btn',{attrs:{\"disabled\":_vm.isPartOfSharedDashboard,\"icon\":\"\",\"loading\":_vm.isDataLoading},on:{\"click\":function($event){return _vm.WidgetEditDialog.open(_vm.widgetRef.name)}}},[_c('v-icon',[_vm._v(\"edit\")])],1)],1)]}}])},[(_vm.isPartOfSharedDashboard)?_c('span',[_vm._v(\"Can not edit shared dashboard\")]):_c('span',[_vm._v(\"Edit widget configuration\")])])],1),_c('section',{staticClass:\"widget-content\",class:_vm.vesselDataWidgetTypeClass},[_c('v-card-text',{staticClass:\"px-0\"},[_c(_vm.VesselDataWidgetType,{tag:\"component\",attrs:{\"data\":_vm.initialConfig,\"loading\":_vm.isDataLoading,\"resizing\":_vm.resized},on:{\"update:loading\":function($event){_vm.isDataLoading=$event}},scopedSlots:_vm._u([{key:\"no-data-slot\",fn:function(){return [_c('div',{staticClass:\"no-data-slot\"},[_c('h6',{staticClass:\"text-h6 mb-1\"},[_vm._v(\"There are no selected vessels.\")]),_c('p',{staticClass:\"subtitle-1 mb-6\"},[_vm._v(\"Click to start adding vessels\")]),_c('v-btn',{attrs:{\"disabled\":_vm.isPartOfSharedDashboard,\"color\":\"primary\"},on:{\"click\":function($event){return _vm.WidgetEditDialog.open(_vm.widgetRef.name)}}},[_c('v-icon',{staticClass:\"mr-2\",attrs:{\"color\":\"white\"}},[_vm._v(\"mdi-table-plus\")]),_vm._v(\" Add vessels \")],1)],1)]},proxy:true}])})],1)],1),(!_vm.isDataLoading)?_c('WidgetEditDialog',{ref:\"WidgetEditDialog\",attrs:{\"value\":_vm.isModalActive,\"max-width\":1380},on:{\"update:value\":function($event){_vm.isModalActive=$event},\"open\":_vm.onModalOpen,\"close\":_vm.onModalClose,\"onSaveWidgetName\":_vm.onSaveWidgetName},scopedSlots:_vm._u([{key:\"content\",fn:function(){return [_c('v-expansion-panels',{staticClass:\"expansion-panels pa-5 pb-14\",attrs:{\"multiple\":\"\"},model:{value:(_vm.panels),callback:function ($$v) {_vm.panels=$$v},expression:\"panels\"}},[_c('v-expansion-panel',{staticClass:\"expansion-panel elevation-5\"},[_c('v-expansion-panel-header',{staticClass:\"white--text\",attrs:{\"color\":\"secondary\"},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('v-icon',{attrs:{\"color\":\"white\"}},[_vm._v(\" $expand \")])]},proxy:true}],null,false,2794704483)},[_vm._v(\" Select vessels \")]),_c('v-expansion-panel-content',{staticClass:\"pt-3\"},[_c('VesselSelect',{ref:\"vesselSelect\",attrs:{\"vesselsList\":_vm.extendedVessels,\"selectedVesselsList\":_vm.config.vessels,\"requiredFeatures\":['Dashboard']},on:{\"update:selectedVesselsList\":function($event){return _vm.$set(_vm.config, \"vessels\", $event)},\"update:selected-vessels-list\":function($event){return _vm.$set(_vm.config, \"vessels\", $event)},\"onVesselChange\":_vm.onVesselChange}})],1)],1),_c('v-expansion-panel',{staticClass:\"expansion-panels__variables elevation-5 mt-4\"},[_c('v-expansion-panel-header',{staticClass:\"white--text\",attrs:{\"color\":\"secondary\"},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('v-icon',{attrs:{\"color\":\"white\"}},[_vm._v(\" $expand \")])]},proxy:true}],null,false,2794704483)},[_c('span',[_vm._v(\" Select variables \"),_c('v-tooltip',{attrs:{\"top\":\"\",\"max-width\":\"300px\",\"color\":\"primary\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('v-icon',_vm._g({attrs:{\"dense\":\"\",\"color\":\"white\",\"right\":\"\"}},on),[_vm._v(\"help_outline\")])]}}],null,false,1721926053)},[_c('span',[_c('p',[_vm._v(\" In this section you can add multiple columns, change column names, and select different variables for each column. \")]),_c('p',[_vm._v(\" Note that all variables in the same column have to be of the same unit type. The first variable you select in a column will automatically filter the variables for the other vessels. \")])])])],1),_c('v-spacer')],1),_c('v-expansion-panel-content',{staticClass:\"variable\"},[(_vm.defaultInfo)?_c('p',{staticClass:\"body-1 mt-4\"},[_vm._v(\"Select at least one vessel to start adding variables to the table.\")]):_vm._e(),_c('section',{staticClass:\"d-flex flex-wrap justify-space-between\"},_vm._l((_vm.config.columns),function(column,index){return _c('LogVariablesColumn',{key:index,attrs:{\"index\":index,\"column\":_vm.config.columns[index],\"vessels\":_vm.config.vessels,\"hasColumnNameField\":_vm.isVesselDataWidgetTypeTable},on:{\"update:column\":function($event){return _vm.$set(_vm.config.columns, index, $event)},\"clickField\":_vm.onLogVariableFieldClick,\"clickTimeSpanField\":_vm.openTimeSpanDialog,\"delete\":_vm.onColumnDelete}})}),1),(_vm.isVesselDataWidgetTypeTable)?_c('v-tooltip',{attrs:{\"top\":\"\",\"color\":\"primary lighten-2\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('v-btn',_vm._g({staticClass:\"d-flex ml-auto mt-3\",attrs:{\"fab\":\"\",\"small\":\"\",\"color\":\"accent\",\"disabled\":_vm.isAddColumnDisabled},on:{\"click\":function($event){return _vm.addColumn()}}},on),[_c('v-icon',{attrs:{\"color\":\"white\",\"small\":\"\"}},[_vm._v(\"mdi-plus\")])],1)]}}],null,false,32815749)},[_c('span',[_vm._v(\"Add new column\")])]):_vm._e()],1)],1)],1)]},proxy:true},{key:\"actions\",fn:function(){return [_c('v-spacer'),_c('v-snackbar',{attrs:{\"color\":\"error\"},model:{value:(_vm.timeSpanError),callback:function ($$v) {_vm.timeSpanError=$$v},expression:\"timeSpanError\"}},[_vm._v(\" Time span needs to be selected \")]),_c('v-btn',{attrs:{\"text\":\"\",\"color\":\"primary\"},on:{\"click\":function($event){return _vm.closeEditDialog()}}},[_vm._v(\" Cancel \")]),_c('v-btn',{attrs:{\"color\":\"primary\"},on:{\"click\":function($event){return _vm.saveConfig()}}},[_vm._v(\" Save \")])]},proxy:true}],null,false,3825278477)}):_vm._e(),_c('LogVariablesDialog',{attrs:{\"value\":_vm.isLogVariablesModalActive,\"max-width\":960,\"column\":_vm.config.columns[_vm.selectedColumnIndex],\"selectedVessel\":_vm.selectedVessel},on:{\"update:value\":function($event){_vm.isLogVariablesModalActive=$event},\"update:column\":function($event){return _vm.$set(_vm.config.columns, _vm.selectedColumnIndex, $event)}}}),_c('TimeSpanDialog',{attrs:{\"value\":_vm.isTimeSpanModalActive,\"max-width\":600,\"column\":_vm.config.columns[_vm.selectedColumnIndex]},on:{\"update:value\":function($event){_vm.isTimeSpanModalActive=$event},\"update:column\":function($event){return _vm.$set(_vm.config.columns, _vm.selectedColumnIndex, $event)}}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-dialog',{attrs:{\"max-width\":_vm.dialogWidth,\"persistent\":\"\",\"fullscreen\":_vm.isDialogExpanded,\"content-class\":\"WidgetEditDialog\"},model:{value:(_vm.isModalActive),callback:function ($$v) {_vm.isModalActive=$$v},expression:\"isModalActive\"}},[_c('v-card',{attrs:{\"min-height\":_vm.isDialogExpanded ? '' : '600px',\"color\":\"blue-grey lighten-5\"}},[_c('v-toolbar',{attrs:{\"dark\":\"\",\"color\":\"primary\"}},[_c('v-text-field',{ref:\"widgetName\",attrs:{\"append-icon\":_vm.editingWidgetName ? 'save' : '',\"placeholder\":\"Widget name\",\"hide-details\":\"\",\"rounded\":\"\",\"filled\":\"\",\"dense\":\"\",\"readonly\":!_vm.editingWidgetName},on:{\"click\":function($event){return _vm.editWidgetName()},\"blur\":function($event){return _vm.cancelEditWidgetName()}},scopedSlots:_vm._u([{key:\"append\",fn:function(){return [(!_vm.editingWidgetName)?_c('v-btn',{staticClass:\"pb-1\",attrs:{\"icon\":\"\",\"small\":\"\",\"plain\":\"\"},on:{\"click\":function($event){return _vm.editWidgetName()}}},[_c('v-icon',{attrs:{\"color\":\"#ffffffa1\"}},[_vm._v(\"edit\")])],1):[_c('v-btn',{staticClass:\"pb-1\",attrs:{\"icon\":\"\",\"small\":\"\",\"plain\":\"\"},on:{\"click\":function($event){return _vm.cancelEditWidgetName()}}},[_c('v-icon',[_vm._v(\"cancel\")])],1),_c('v-btn',{staticClass:\"pb-1\",attrs:{\"icon\":\"\",\"small\":\"\",\"plain\":\"\"},on:{\"click\":function($event){return _vm.saveWidgetName()}}},[_c('v-icon',[_vm._v(\"save\")])],1)]]},proxy:true}]),model:{value:(_vm.widgetName),callback:function ($$v) {_vm.widgetName=$$v},expression:\"widgetName\"}}),_c('v-spacer'),_vm._t(\"toolbar-actions\"),_c('v-btn',{attrs:{\"icon\":\"\",\"plain\":\"\"},on:{\"click\":function($event){_vm.isDialogExpanded = !_vm.isDialogExpanded}}},[_c('v-icon',[_vm._v(\" \"+_vm._s(_vm.isDialogExpanded ? 'mdi-arrow-collapse' : 'mdi-arrow-expand')+\" \")])],1),_c('v-btn',{attrs:{\"icon\":\"\",\"plain\":\"\"},on:{\"click\":function($event){return _vm.close()}}},[_c('v-icon',[_vm._v(\"close\")])],1)],2),(_vm.loading)?_c('LoadingTextWave',{staticClass:\"mt-10\"}):_c('v-card',{staticClass:\"ma-5\"},[_c('v-card-text',[_vm._t(\"content\")],2)],1),_c('v-card-actions',{staticStyle:{\"position\":\"absolute\",\"bottom\":\"0\",\"right\":\"0\",\"z-index\":\"999\",\"width\":\"100%\"}},[_vm._t(\"actions\")],2)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, PropSync, Vue } from \"vue-property-decorator\";\nimport store from \"@/store\";\nimport LoadingTextWave from \"@/components/LoadingTextWave.vue\";\n// modules\nimport { getModule } from \"vuex-module-decorators\";\nimport VesselsModule from \"@/store/clients/Vessels.module\";\n\nconst Vessels = getModule(VesselsModule, store);\n\n@Component({\n components: {\n LoadingTextWave,\n },\n})\nexport default class WidgetEditDialog extends Vue {\n @PropSync(\"value\", { required: true }) isModalActive!: boolean;\n @PropSync(\"maxWidth\", { default: 1000 }) dialogWidth!: number;\n\n isDialogExpanded = false;\n widgetNameInitial = \"\"; // copy of the widget name, to restore if the user cancel editing the widget name\n widgetName = \"\";\n editingWidgetName = false;\n\n get loading(): boolean {\n return Vessels.vesselsLoadingState;\n }\n\n open(name: string): void {\n this.widgetName = name;\n this.widgetNameInitial = name;\n this.isModalActive = true;\n this.$emit(\"open\");\n }\n\n close(): void {\n (document.getElementsByClassName(\"WidgetEditDialog v-dialog--active\")[0].scrollTop = 0), (this.isModalActive = false);\n this.isDialogExpanded = false;\n this.cancelEditWidgetName();\n this.$emit(\"close\");\n }\n\n editWidgetName(): void {\n this.editingWidgetName = true;\n this.widgetName = (this.$refs[\"widgetName\"] as any).internalValue;\n console.log(\"editWidgetName => (this.$refs\", (this.$refs[\"widgetName\"] as any).internalValue);\n }\n\n cancelEditWidgetName(): void {\n this.editingWidgetName = false;\n this.widgetName = this.widgetNameInitial;\n }\n\n saveWidgetName(): void {\n const newName = (this.$refs[\"widgetName\"] as any).internalValue;\n this.widgetNameInitial = newName;\n this.editingWidgetName = false;\n this.$emit(\"onSaveWidgetName\", newName);\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WidgetEditDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WidgetEditDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./WidgetEditDialog.vue?vue&type=template&id=4cf9fc61&scoped=true&\"\nimport script from \"./WidgetEditDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./WidgetEditDialog.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./WidgetEditDialog.vue?vue&type=style&index=0&id=4cf9fc61&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4cf9fc61\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\ninstallComponents(component, {VBtn,VCard,VCardActions,VCardText,VDialog,VIcon,VSpacer,VTextField,VToolbar})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',{staticClass:\"elevation-4 mt-4\",attrs:{\"min-width\":\"49%\",\"max-width\":_vm.maxWidth}},[(_vm.hasColumnNameField)?_c('v-toolbar',{attrs:{\"dense\":\"\",\"color\":\"colorBackground\"}},[_c('v-toolbar-title',[_c('v-text-field',{attrs:{\"append-icon\":\"edit\",\"placeholder\":\"Column name\",\"hide-details\":\"auto\",\"filled\":\"\",\"rounded\":\"\",\"dense\":\"\"},model:{value:(_vm.syncColumn.name),callback:function ($$v) {_vm.$set(_vm.syncColumn, \"name\", $$v)},expression:\"syncColumn.name\"}})],1),_c('v-spacer'),_c('v-tooltip',{attrs:{\"top\":\"\",\"color\":\"primary lighten-2\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('v-btn',_vm._g({attrs:{\"icon\":\"\"},on:{\"click\":function($event){return _vm.onColumnDelete()}}},on),[_c('v-icon',{attrs:{\"color\":\"red\"}},[_vm._v(\"mdi-delete-outline\")])],1)]}}],null,false,561304092)},[_c('span',[_vm._v(\"Delete column.\")])])],1):_vm._e(),_c('v-card-text',[_c('v-list',{staticClass:\"variable-list\"},[_vm._l((_vm.vessels),function(vessel){return _c('v-list-item',{key:vessel.id,class:{ 'main-vessel': _vm.isColumnMainVessel(vessel.id) }},[_c('v-list-item-title',{staticClass:\"d-flex align-center\"},[_c('div',{staticClass:\"variable-list__vessel-name d-inline-flex align-center\"},[_vm._v(\" \"+_vm._s(vessel.name)+\": \"),(_vm.isColumnMainVessel(vessel.id))?_c('v-tooltip',{attrs:{\"color\":\"primary lighten-2\",\"max-width\":\"300px\",\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-icon',_vm._g(_vm._b({staticClass:\"ml-auto\",attrs:{\"color\":\"primary\",\"dark\":\"\"}},'v-icon',attrs,false),on),[_vm._v(\" mdi-information-outline \")])]}}],null,true)},[_c('span',[_vm._v(\" The unit of this log variable is the unit the other log variables are filtered on. \")])]):_vm._e()],1),_c('v-text-field',{staticClass:\"selected-log-variable-input ml-4\",attrs:{\"value\":_vm.selectedLogVariable(vessel.id, 'displayName'),\"placeholder\":\"Choose log variable\",\"hide-details\":\"auto\",\"clear-icon\":\"mdi-close-box-outline\",\"error-messages\":_vm.checkUnitError(vessel.id),\"disabled\":!_vm.isVesselLogVariablesLoaded(vessel.id),\"filled\":\"\",\"readonly\":\"\",\"clearable\":\"\",\"dense\":\"\"},on:{\"click\":function($event){return _vm.clickField(vessel)},\"click:clear\":function($event){return _vm.clearVariable(vessel.id)}},scopedSlots:_vm._u([{key:\"prepend-inner\",fn:function(){return [_c('v-fade-transition',{attrs:{\"leave-absolute\":\"\"}},[(!_vm.isVesselLogVariablesLoaded(vessel.id))?_c('v-progress-circular',{attrs:{\"size\":20,\"width\":2,\"color\":\"primary\",\"indeterminate\":\"\"}}):_vm._e()],1)]},proxy:true}],null,true)}),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.selectedLogVariable(vessel.id, 'unit-name')),expression:\"selectedLogVariable(vessel.id, 'unit-name')\"}],staticClass:\"unit unit_input-suffix font-weight-medium\",class:{'unit_acc-allowed': _vm.isUnitAccAllowed(_vm.selectedLogVariable(vessel.id, 'unit-caption'))}},[_vm._v(\" \"+_vm._s(_vm.selectedLogVariable(vessel.id, 'unit-name'))+\" \")])],1)],1)}),_c('v-divider',{staticClass:\"my-1\"}),(_vm.hasColumnTimeSpanField)?_c('v-list-item',{staticClass:\"px-2 font-weight-bold\"},[_c('v-list-item-title',{staticClass:\"d-flex align-center\"},[_c('div',{staticClass:\"variable-list__time-span d-inline-flex align-center\"},[_vm._v(\" Time span: \")]),_c('v-text-field',{staticClass:\"timespan-input ml-4\",attrs:{\"value\":_vm.selectedTimeSpan,\"hide-details\":\"auto\",\"error-messages\":_vm.validateColumnAccUnits(),\"filled\":\"\",\"readonly\":\"\",\"dense\":\"\"},on:{\"click\":function($event){return _vm.clickTimeSpanField()}}})],1)],1):_vm._e()],2)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Prop, PropSync, Vue } from \"vue-property-decorator\";\nimport store from \"@/store\";\nimport dateHelper from \"Utilities/date-helper\";\n// types\nimport { VesselDataWidgetColumn } from \"@/types/VesselDataWidgetColumn\";\nimport { LogVariable } from \"@/types/logVariable\";\nimport { ExtendedVessel } from \"@/types/Vessel\";\n// modules\nimport { getModule } from \"vuex-module-decorators\";\nimport LogVariablesModule from \"@/store/clients/LogVariables.module\";\n\nconst LogVariables = getModule(LogVariablesModule, store);\n\n@Component({\n components: {},\n})\nexport default class LogVariablesColumn extends Vue {\n @PropSync(\"column\", { required: true }) syncColumn!: VesselDataWidgetColumn;\n @Prop({ default: () => [], required: true }) vessels!: ExtendedVessel[];\n @Prop({ required: true }) index!: number;\n @Prop({ type: Boolean, default: true }) hasColumnNameField!: boolean;\n @Prop({ type: Boolean, default: true }) hasColumnTimeSpanField!: boolean;\n @Prop({ type: Boolean, default: true }) validateLogVariablesByUnit!: boolean;\n @Prop({ type: String, default: \"100%\" }) maxWidth!: string;\n\n accumulatedAllowedUnits = [\"rpm\", \"MT/hr\", \"MT/day\", \"knot\", \"kW\", \"kg/hr\", \"l/hr\"];\n\n onColumnDelete(): void {\n this.$emit(\"delete\", this.index);\n }\n\n isColumnMainVessel(vesselId: number): boolean {\n if (!this.syncColumn || !this.validateLogVariablesByUnit) return false;\n const columnFirstVariable = this.syncColumn.logVariables[0];\n if (!columnFirstVariable) return false;\n return vesselId === columnFirstVariable.vesselId;\n }\n\n selectedLogVariable(vesselId: number, keyName: string): LogVariable | string | undefined {\n if (!this.syncColumn.logVariables.length) return;\n const vesselLogVariable = this.syncColumn.logVariables.find(variable => variable?.vesselId === vesselId);\n if (keyName === \"name\") return vesselLogVariable?.name;\n if (keyName === \"displayName\") return vesselLogVariable?.displayName ?? vesselLogVariable?.name;\n if (keyName === \"unit-name\") return vesselLogVariable?.unit?.name;\n if (keyName === \"unit-caption\") return vesselLogVariable?.unit?.caption;\n return vesselLogVariable;\n }\n\n checkUnitError(vesselId: number): string | undefined {\n if (!this.syncColumn.logVariables.length || !this.validateLogVariablesByUnit) return;\n\n const columnFirstVesselLogVariableUnitName = this.syncColumn.logVariables[0].unit?.caption;\n const currentVesselLogVariable = this.syncColumn.logVariables.find((variable: LogVariable) => variable?.vesselId === vesselId);\n if (currentVesselLogVariable && currentVesselLogVariable.unit?.caption !== columnFirstVesselLogVariableUnitName) return \"Variable using different unit\";\n }\n\n clickField(vessel: ExtendedVessel): void {\n this.$emit(\"clickField\", { vessel: vessel, index: this.index });\n }\n\n clickTimeSpanField(): void {\n this.$emit(\"clickTimeSpanField\", this.index);\n }\n\n clearVariable(vesselId: number): void {\n const variableIndex = this.syncColumn.logVariables.findIndex(variable => variable.vesselId === vesselId);\n if (variableIndex !== -1) {\n this.syncColumn.logVariables.splice(variableIndex, 1);\n }\n }\n\n isVesselLogVariablesLoaded(vesselId: number): boolean {\n return Boolean(LogVariables.vesselsLogVariables.find(vessel => vessel.vesselId === vesselId)?.logVariables);\n }\n\n isUnitAccAllowed(unit: string): boolean {\n return this.accumulatedAllowedUnits.includes(unit);\n }\n\n validateColumnAccUnits(): string | undefined {\n if (\n (this.syncColumn.calculationType !== \"FromAndToDates\" && this.syncColumn.calculationType !== \"Accumulated\") ||\n (this.syncColumn.calculationType === \"FromAndToDates\" && this.syncColumn.fromAndToDatesCalculationType !== \"Accumulated\")\n )\n return;\n const error = `Accumulated calculation only accepts the following units: ${this.accumulatedAllowedUnits.join(\", \")}`;\n if (this.hasNotAllowedUnit) return error;\n }\n\n get hasNotAllowedUnit(): boolean {\n return this.syncColumn.logVariables.some(variable => !this.isUnitAccAllowed(variable.unit?.caption));\n }\n\n get formattedWidgetDateRange(): string {\n return `${dateHelper.getFormatedDateTimeString(this.syncColumn.fromDate)} - ${dateHelper.getFormatedDateTimeString(this.syncColumn.toDate)}`;\n }\n\n get selectedTimeSpan(): string {\n switch (this.syncColumn.calculationType) {\n case \"LastReceived\":\n return \"Last received value\";\n case \"LastVoyageAveraged\":\n return \"Last voyage averaged\";\n case \"LastVoyageAccumulated\":\n return \"Last voyage accumulated\";\n case \"FromAndToDates\":\n return this.formattedWidgetDateRange;\n case \"Averaged\":\n case \"Accumulated\":\n const hours = dateHelper.getDatesDiffAsHours(this.syncColumn.fromDate, this.syncColumn.toDate);\n return `${this.syncColumn.calculationType} value for the last ${hours} hours`;\n default:\n return \"Choose time span\";\n }\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LogVariablesColumn.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LogVariablesColumn.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./LogVariablesColumn.vue?vue&type=template&id=9e294684&scoped=true&\"\nimport script from \"./LogVariablesColumn.vue?vue&type=script&lang=ts&\"\nexport * from \"./LogVariablesColumn.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./LogVariablesColumn.vue?vue&type=style&index=0&id=9e294684&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"9e294684\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VFadeTransition } from 'vuetify/lib/components/transitions';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VProgressCircular } from 'vuetify/lib/components/VProgressCircular';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VBtn,VCard,VCardText,VDivider,VFadeTransition,VIcon,VList,VListItem,VListItemTitle,VProgressCircular,VSpacer,VTextField,VToolbar,VToolbarTitle,VTooltip})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-data-table',{staticClass:\"vessel-data-table\",attrs:{\"dense\":\"\",\"headers\":_vm.tableHeaders,\"items\":_vm.tableRowItems,\"loading\":_vm.isDataLoading,\"loading-text\":\"Loading... Please wait\",\"custom-sort\":_vm.customSort,\"height\":\"100%\",\"fixed-header\":\"\",\"hide-default-footer\":\"\",\"disable-pagination\":\"\"},scopedSlots:_vm._u([_vm._l((_vm.tableHeaders),function(header){return {key:(\"header.\" + (header.value)),fn:function(ref){\nvar header = ref.header;\nreturn [_c('div',{staticClass:\"d-inline-flex flex-column\"},[_c('span',{staticClass:\"primary--text overline\",staticStyle:{\"line-height\":\"1.5rem\"}},[_vm._v(_vm._s(header.text))]),_c('v-tooltip',{attrs:{\"top\":\"\",\"color\":\"primary lighten-2\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [(header.subHeaderText.length)?_c('span',_vm._g({staticClass:\"primary--text text--lighten-4 caption\",domProps:{\"innerHTML\":_vm._s(header.subHeaderText)}},on)):_vm._e()]}}],null,true)},[_c('span',[_vm._v(_vm._s(header.subHeaderTooltipText))])])],1)]}}}),{key:\"no-data\",fn:function(){return [_vm._t(\"no-data-slot\")]},proxy:true}],null,true)})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import moment from \"moment\";\r\n\r\nexport default function stringifiedCalculationMethodForHeader(calculationType: string, hours?: number, fromAndToDatesCalculationType?: string, fromDate?: string, toDate?: string): { text: string; tooltipText: string } {\r\n const subHeader = {\r\n text: \"\",\r\n tooltipText: \"\",\r\n };\r\n\r\n const from = moment.utc(fromDate).format(\"YYYY-MM-DD HH:mm\");\r\n const to = moment.utc(toDate).format(\"YYYY-MM-DD HH:mm\");\r\n\r\n switch (calculationType) {\r\n case \"Accumulated\":\r\n subHeader.text = `ACC [${hours} hours]`;\r\n subHeader.tooltipText = `Accumulated data from the last ${hours} hours.`;\r\n break;\r\n case \"Averaged\":\r\n subHeader.text = `AVG [${hours} hours]`;\r\n subHeader.tooltipText = `Average data from the last ${hours} hours.`;\r\n break;\r\n case \"LastReceived\":\r\n subHeader.text = \"Last received\";\r\n subHeader.tooltipText = \"Raw data from the last received vessel data.\";\r\n break;\r\n case \"LastVoyageAccumulated\":\r\n subHeader.text = \"ACC [Last voyage]\";\r\n subHeader.tooltipText = \"Accumulated data from the last completed voyage.\";\r\n break;\r\n case \"LastVoyageAveraged\":\r\n subHeader.text = \"AVG [Last voyage]\";\r\n subHeader.tooltipText = \"Average data from the last completed voyage.\";\r\n break;\r\n case \"FromAndToDates\":\r\n if (fromAndToDatesCalculationType === \"Averaged\") {\r\n subHeader.text = `AVG
${from}
${to}`\r\n subHeader.tooltipText = `Average data from ${from} to ${to}`;\r\n } else if (fromAndToDatesCalculationType === \"Accumulated\") {\r\n subHeader.text = `ACC
${from}
${to}`\r\n subHeader.tooltipText = `Accumulated data from ${from} to ${to}`;\r\n }\r\n break;\r\n }\r\n\r\n return subHeader;\r\n};\r\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue, PropSync, Watch } from \"vue-property-decorator\";\nimport store from \"@/store\";\n// utilities\nimport itemMixin from \"@/mixins/itemMixin.js\";\nimport dateHelper from \"Utilities/date-helper\";\nimport numberHelper from \"Utilities/number-helper\";\nimport stringifiedCalculationMethodForHeader from \"./VDataTableCalculationMethodHeaders\";\n// types\nimport { VesselDataWidgetColumn } from \"@/types/VesselDataWidgetColumn\";\nimport { VesselDataWidgetConfig as VesselDataConfig } from \"@/types/VesselDataWidgetConfig\";\n\n// modules\nimport { getModule } from \"vuex-module-decorators\";\nimport VesselDataWidgetConfiguration from \"@/store/clients/VesselDataWidgetConfig.module\";\n\nconst VesselDataWidgetConfig = getModule(VesselDataWidgetConfiguration, store);\n\ninterface TableHeader {\n text: string;\n value: string;\n sortable: boolean;\n subHeaderText: string;\n subHeaderTooltipText: string;\n}\n@Component({\n mixins: [itemMixin],\n components: {},\n})\nexport default class VesselDataTable extends Vue {\n @PropSync(\"data\", { required: true, type: Object }) initialConfig!: VesselDataConfig;\n @PropSync(\"loading\", { type: Boolean, default: false }) isDataLoading!: boolean;\n\n @Watch(\"vesselDataWidgetConfigs\")\n onVesselDataWidgetConfigsUpdated(): void {\n this.isDataLoading = true;\n const updatedConfig = VesselDataWidgetConfig.getConfigById(this.initialConfig.id);\n if (updatedConfig) Object.assign(this.initialConfig, updatedConfig);\n setTimeout(() => (this.isDataLoading = false), 300);\n }\n\n get tableHeaders(): TableHeader[] {\n const tableHeaders = this.initialConfig.columns.map((column: VesselDataWidgetColumn, index: number) => {\n const hours = dateHelper.getDatesDiffAsHours(column.fromDate, column.toDate);\n const subHeader = stringifiedCalculationMethodForHeader(column.calculationType, hours, column?.fromAndToDatesCalculationType as string, column.fromDate, column.toDate);\n return {\n text: column.name,\n sortable: true,\n value: `column${++index}`,\n subHeaderText: subHeader.text,\n subHeaderTooltipText: subHeader.tooltipText,\n };\n });\n\n if (tableHeaders.length) {\n tableHeaders.unshift({\n text: \"Vessel name\",\n value: \"name\",\n sortable: true,\n subHeaderText: \"\",\n subHeaderTooltipText: \"\",\n });\n }\n\n return tableHeaders;\n }\n\n get tableRowItems(): any[] {\n const tableRowItems = this.initialConfig.vessels.map((item: any) => {\n const tableRow: any = { column0: item.name, name: item.name };\n this.initialConfig.columns.forEach((column: VesselDataWidgetColumn, index: number) => {\n const columnKey = `column${++index}`;\n const matchedValue = column.cachedResults.find((variable: any) => variable.vesselId === item.id);\n tableRow[columnKey] = this.stringifyResult(matchedValue);\n });\n return tableRow;\n });\n\n return tableRowItems;\n }\n\n get vesselDataWidgetConfigs(): VesselDataConfig[] {\n return VesselDataWidgetConfig.vesselDataWidgetConfigs;\n }\n\n customSort(items: [], sortBy: any, isDesc: any): [] {\n //do nothing when the sorting is reset\n if (!sortBy[0]) return items;\n\n //sort first column as strings\n if (sortBy[0] === \"name\") {\n return items.sort((a: any, b: any) => {\n if (isDesc[0]) return b[sortBy] < a[sortBy] ? -1 : 1;\n\n return a[sortBy] < b[sortBy] ? -1 : 1;\n });\n }\n\n //sort all other columns as numbers\n return items.sort((a: any, b: any) => {\n const formatedA = numberHelper.parseLocaleNumber(a[sortBy]);\n const formatedB = numberHelper.parseLocaleNumber(b[sortBy]);\n\n return isDesc[0] ? ((Number(formatedB) || 0) < (Number(formatedA) || 0) ? -1 : 1) : (Number(formatedA) || 0) < (Number(formatedB) || 0) ? -1 : 1;\n });\n }\n\n stringifyResult(value: any): string {\n if (!value || value.result === 0) return \"—\";\n if (value.result === \"NaN\") return \"No data\";\n return `${new Intl.NumberFormat(undefined, { maximumFractionDigits: value.logVariableDisplayPrecision }).format(value.result)} ${value.unitCaption}`;\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VesselDataTable.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VesselDataTable.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./VesselDataTable.vue?vue&type=template&id=92231100&scoped=true&\"\nimport script from \"./VesselDataTable.vue?vue&type=script&lang=ts&\"\nexport * from \"./VesselDataTable.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"92231100\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VDataTable } from 'vuetify/lib/components/VDataTable';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VDataTable,VTooltip})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticStyle:{\"height\":\"100%\"}},[(_vm.isDataLoading)?_c('LoadingTextWave',{staticClass:\"loading-wave\"}):_vm._e(),(_vm.initialConfig.columns.length)?_c('div',{staticClass:\"chart-wrapper\"},[_c('div',{staticClass:\"chart-inner\"},[_c('highcharts',{staticClass:\"chart\",attrs:{\"options\":_vm.options,\"callback\":_vm.chartReady}})],1)]):_vm._t(\"no-data-slot\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue, PropSync, Watch } from \"vue-property-decorator\";\nimport store from \"@/store\";\n// utilities\nimport itemMixin from \"@/mixins/itemMixin.js\";\nimport dateHelper from \"Utilities/date-helper\";\nimport stringifiedCalculationMethodForHeader from \"./VDataTableCalculationMethodHeaders\";\nimport Highcharts from \"highcharts\";\nimport { Chart } from \"highcharts-vue\";\nimport HighchartStock from \"highcharts/modules/stock.js\";\n// components\nimport LoadingTextWave from \"@/components/LoadingTextWave.vue\";\n// types\nimport { VesselDataWidgetConfig } from \"@/types/VesselDataWidgetConfig\";\nimport { ExtendedVessel } from \"@/types/Vessel\";\n// modules\nimport { getModule } from \"vuex-module-decorators\";\nimport VesselsModule from \"@/store/clients/Vessels.module\";\n\nconst Vessels = getModule(VesselsModule, store);\nHighchartStock(Highcharts);\n\n@Component({\n mixins: [itemMixin],\n components: {\n Highcharts: Chart,\n LoadingTextWave,\n },\n})\nexport default class VesselDataGraph extends Vue {\n @PropSync(\"data\", { required: true, type: Object }) initialConfig!: VesselDataWidgetConfig;\n @PropSync(\"loading\", { type: Boolean, default: false }) isDataLoading!: boolean;\n\n isChartLoaded = false;\n chart!: any;\n reflowTimer!: number; // need to call reflow on the chart with some delay after widget resize, otherwise it will not resize properly\n\n @Watch(\"resizing\")\n resized(val: boolean): void {\n this.reflowTimer = setTimeout(() => {\n if (!val && this.chart) {\n this.chart.reflow();\n }\n }, 500);\n }\n\n get extendedVessels(): ExtendedVessel[] {\n return Vessels.extendedVessels;\n }\n\n get stringifiedTimeSpan(): { text: string; tooltipText: string } | undefined {\n const column = this.initialConfig.columns[0];\n const hours = dateHelper.getDatesDiffAsHours(column.fromDate, column.toDate);\n if (!column) return;\n return stringifiedCalculationMethodForHeader(column.calculationType, hours);\n }\n\n get unitCaption(): string {\n return this.initialConfig.columns[0].logVariables[0].unit.caption;\n }\n\n get xAxisMaxAmount(): number {\n if (!this.getVesselsLogVariables) return 0;\n return this.getVesselsLogVariables.length > 10 ? 10 : this.getVesselsLogVariables.length - 1;\n }\n\n get yAxisMaxTick(): number | null {\n if (!this.getVesselsLogVariables) return null;\n return this.getVesselsLogVariables.reduce((previous: any, current: any) => (current.y > previous.y ? current : previous)).y;\n }\n\n get isScrollable(): boolean {\n return this.xAxisMaxAmount >= 10;\n }\n\n get getVesselNames(): string[] | undefined {\n if (!this.getVesselsLogVariables) return;\n return this.getVesselsLogVariables.map(variable => variable.vesselName);\n }\n\n get getVesselsLogVariables(): any[] | null {\n if (!this.initialConfig.columns[0].cachedResults.length) return null;\n return this.initialConfig.columns[0].cachedResults.map(variable => {\n return {\n y: parseFloat(variable.result.toFixed(variable.logVariableDisplayPrecision)),\n unit: variable.unitCaption,\n logVariableName: variable.logVariableName,\n vesselName: variable.vesselName,\n logVariableDisplayPrecision: variable.logVariableDisplayPrecision,\n };\n });\n }\n\n chartReady(chart: any): void {\n this.chart = chart;\n this.reflowTimer = setTimeout(() => {\n this.chart.reflow();\n this.isChartLoaded = true;\n this.isDataLoading = false;\n }, 500);\n }\n\n get options(): any {\n return {\n chart: {\n type: \"bar\",\n style: {\n fontFamily: \"Helvetica Neue\",\n },\n },\n title: {\n text: this.stringifiedTimeSpan?.tooltipText,\n style: {\n fontSize: \"18px\",\n fontWeight: \"bold\",\n },\n },\n subtitle: {\n text: this.unitCaption,\n style: {\n fontSize: \"18px\",\n },\n },\n xAxis: {\n categories: this.getVesselNames,\n labels: {\n style: {\n fontSize: \"12px\",\n fontWeight: \"600\",\n },\n },\n },\n yAxis: {\n title: { text: null },\n labels: {\n overflow: \"justify\",\n },\n max: this.yAxisMaxTick,\n },\n legend: {\n reversed: true,\n },\n plotOptions: {\n bar: {\n dataLabels: {\n enabled: true,\n style: {\n color: \"#FFF\",\n fontSize: \"0.75rem\",\n borderWidth: 0,\n },\n },\n },\n series: {\n stacking: \"normal\",\n borderRadius: 5,\n pointPadding: 0,\n tooltip: {\n headerFormat: \"\",\n pointFormat: \"{point.logVariableName}: {point.y:,.0f} {point.unit}
\",\n },\n dataLabels: {\n enabled: true,\n formatter: function (this: any): string {\n if (this.point.shapeArgs.height < this.point.logVariableName.length * 6) return \"\";\n return `${new Intl.NumberFormat(undefined, { maximumFractionDigits: this.point.logVariableDisplayPrecision }).format(this.point.y)} ${this.point.unit} ${this.point.logVariableName}`;\n },\n style: {\n textOutline: \"none\",\n },\n },\n },\n },\n credits: { enabled: false },\n series: [\n {\n color: \"#001843c7\",\n data: this.getVesselsLogVariables,\n maxPointWidth: 30,\n showInLegend: false,\n },\n ],\n responsive: {\n rules: [\n {\n condition: {\n minHeight: 600,\n },\n chartOptions: {\n xAxis: {\n min: 0,\n max: null,\n scrollbar: { enabled: false },\n },\n },\n },\n {\n condition: {\n maxHeight: 400,\n },\n chartOptions: {\n xAxis: {\n min: 0,\n max: this.xAxisMaxAmount,\n scrollbar: { enabled: this.isScrollable },\n },\n },\n },\n ],\n },\n };\n }\n\n onWindowResize(): void {\n setTimeout(() => {\n this.chart.reflow();\n }, 200);\n }\n\n created(): void {\n window.addEventListener(\"resize\", this.onWindowResize);\n }\n\n beforeDestroy(): void {\n if (this.reflowTimer) clearTimeout(this.reflowTimer);\n window.removeEventListener(\"resize\", this.onWindowResize);\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VesselDataGraph.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VesselDataGraph.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./VesselDataGraph.vue?vue&type=template&id=cd4ee142&scoped=true&\"\nimport script from \"./VesselDataGraph.vue?vue&type=script&lang=ts&\"\nexport * from \"./VesselDataGraph.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./VesselDataGraph.vue?vue&type=style&index=0&id=cd4ee142&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"cd4ee142\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue, Ref, Prop, Watch } from \"vue-property-decorator\";\nimport store from \"@/store\";\n// utilities\nimport itemMixin from \"@/mixins/itemMixin.js\";\nimport moment from \"moment\";\nimport dateHelper from \"Utilities/date-helper\";\n// types\nimport { VesselDataWidgetConfig } from \"@/types/VesselDataWidgetConfig\";\nimport { Widget } from \"@/types/widget\";\nimport { VesselDataWidgetColumn } from \"@/types/VesselDataWidgetColumn\";\nimport { ExtendedVessel } from \"@/types/Vessel\";\nimport { LogVariable } from \"@/types/logVariable\";\n// components\nimport WidgetEditDialog from \"@/components/widgets/WidgetEditDialog.vue\";\nimport TimeSpanDialog from \"@/components/widgets/TimeSpanDialog.vue\";\nimport LogVariablesDialog from \"@/components/widgets/LogVariablesDialog.vue\";\nimport LogVariablesColumn from \"@/components/widgets/LogVariablesColumn.vue\";\nimport VesselSelect from \"@/components/VesselSelect.vue\";\nimport VesselDataTable from \"./VesselDataTable.vue\";\nimport VesselDataGraph from \"./VesselDataGraph.vue\";\n// modules\nimport { getModule } from \"vuex-module-decorators\";\nimport VesselDataWidgetConfigurationModule from \"@/store/clients/VesselDataWidgetConfig.module\";\nimport LogDataModule from \"@/store/clients/LogData.module\";\nimport DashboardModule from \"@/store/clients/Dashboard.module\";\nimport UserModule from \"@/store/clients/User.module\";\nimport VesselsModule from \"@/store/clients/Vessels.module\";\nimport LogVariablesModule from \"@/store/clients/LogVariables.module\";\n\nconst VesselDataWidgetConfiguration = getModule(VesselDataWidgetConfigurationModule, store);\nconst LogData = getModule(LogDataModule, store);\nconst Dash = getModule(DashboardModule, store);\nconst User = getModule(UserModule, store);\nconst Vessels = getModule(VesselsModule, store);\nconst LogVariables = getModule(LogVariablesModule, store);\n\n@Component({\n mixins: [itemMixin],\n components: {\n WidgetEditDialog,\n TimeSpanDialog,\n LogVariablesDialog,\n LogVariablesColumn,\n VesselSelect,\n VesselDataTable,\n VesselDataGraph,\n },\n})\nexport default class VesselDataWidget extends Vue {\n @Prop() widgetRef!: Widget;\n @Ref(\"WidgetEditDialog\") WidgetEditDialog!: WidgetEditDialog;\n\n selectedVessels: ExtendedVessel[] = [];\n initialSelectedVessels: ExtendedVessel[] = [];\n panels = [0, 1]; // indexes of expansion panels to be default open\n isModalActive = false;\n isDataLoading = false;\n isLogVariablesModalActive = false;\n isTimeSpanModalActive = false;\n timeSpanError = false;\n resized = false;\n selectedVessel: any = null;\n selectedColumnIndex = 0;\n config: VesselDataWidgetConfig = {\n id: 0,\n configurationName: \"Table widget\",\n vessels: [],\n columns: [],\n };\n initialConfig: VesselDataWidgetConfig = {\n id: 0,\n configurationName: \"Table widget\",\n vessels: [],\n columns: [],\n };\n\n //let Highcharts know it has been resized, otherwise it won't trigger chart reflow\n //resizing is a computed property in the itemMixin\n @Watch(\"resizing\")\n onResize(val: boolean): void {\n if (val) this.resized = val;\n setTimeout(() => (this.resized = false));\n }\n\n get VesselDataWidgetType(): string {\n return this.widgetRef.type?.displayType ?? \"VesselDataTable\";\n }\n\n get isVesselDataWidgetTypeTable(): boolean {\n return Boolean(this.VesselDataWidgetType === \"VesselDataTable\");\n }\n\n get vesselDataWidgetTypeClass(): Object {\n return {\n \"vessel-data-table\": this.VesselDataWidgetType === \"VesselDataTable\",\n \"vessel-data-graph\": this.VesselDataWidgetType === \"VesselDataGraph\",\n };\n }\n\n get extendedVessels(): ExtendedVessel[] {\n return Vessels.extendedVessels;\n }\n\n get isPartOfSharedDashboard(): boolean {\n return Dash.activeDashboard.userId !== User.userId;\n }\n\n get isTableEditable(): boolean {\n return Boolean(this.initialConfig.columns.length);\n }\n\n get defaultInfo(): boolean {\n return !this.config.vessels.length && !this.config.columns.length;\n }\n\n get isAddColumnDisabled(): boolean {\n return Boolean(this.config.vessels.length === 0);\n }\n\n get hasColumnTimeSpan(): boolean {\n return this.config.columns.every((column: VesselDataWidgetColumn) => column.calculationType);\n }\n\n onVesselChange(toggledVessel: ExtendedVessel): void {\n if (!this.isVesselLogVariablesLoaded(toggledVessel.id)) LogVariables.fetchAllLogVariablesByVesselId(toggledVessel.id);\n this.config.columns.forEach(column => {\n column.logVariables = column.logVariables.filter(variable => variable.vesselId !== toggledVessel.id);\n });\n if (this.config.vessels.length === 1 && this.config.columns.length === 0) {\n this.addColumn();\n }\n }\n\n isVesselLogVariablesLoaded(vesselId: number): boolean {\n return Boolean(LogVariables.vesselsLogVariables.find(vessel => vessel.vesselId === vesselId)?.logVariables);\n }\n\n async fetchCalculatedLogData(config: VesselDataWidgetConfig): Promise {\n for (const [index, column] of config.columns.entries()) {\n const logVariableIds = column.logVariables.map(variable => variable.id);\n if (column.calculationType !== \"FromAndToDates\") {\n column.fromDate = moment.utc(new Date(), \"YYYY-MM-DD\").subtract(dateHelper.getDatesDiffAsHours(column.fromDate, column.toDate), \"hours\").format();\n column.toDate = moment.utc(new Date(), \"YYYY-MM-DD\").format();\n }\n let result;\n\n switch (column.calculationType) {\n case \"LastReceived\":\n result = await LogData.fetchLastReceivedLogData({\n logVariableIds: logVariableIds.filter((id: number) => Number.isInteger(id)).join(),\n });\n break;\n case \"LastVoyageAveraged\":\n result = await LogData.fetchLastVoyageAveraged({\n logVariableIds: logVariableIds.filter((id: number) => Number.isInteger(id)).join(),\n });\n break;\n case \"LastVoyageAccumulated\":\n result = await LogData.fetchLastVoyageAccumulated({\n logVariableIds: logVariableIds.filter((id: number) => Number.isInteger(id)).join(),\n });\n break;\n case \"Averaged\":\n result = await LogData.fetchAveragedCalculatedLogData({\n logVariableIds: logVariableIds.filter((id: number) => Number.isInteger(id)).join(),\n fromDate: column.fromDate,\n toDate: column.toDate,\n });\n break;\n case \"Accumulated\":\n result = await LogData.fetchAccumulatedCalculatedLogData({\n logVariableIds: logVariableIds.filter((id: number) => Number.isInteger(id)).join(),\n fromDate: column.fromDate,\n toDate: column.toDate,\n });\n break;\n case \"FromAndToDates\":\n if (column.fromAndToDatesCalculationType === \"Averaged\") {\n result = await LogData.fetchAveragedCalculatedLogData({\n logVariableIds: logVariableIds.filter((id: number) => Number.isInteger(id)).join(),\n fromDate: column.fromDate,\n toDate: column.toDate,\n });\n } else if (column.fromAndToDatesCalculationType === \"Accumulated\") {\n result = await LogData.fetchAccumulatedCalculatedLogData({\n logVariableIds: logVariableIds.filter((id: number) => Number.isInteger(id)).join(),\n fromDate: column.fromDate,\n toDate: column.toDate,\n });\n }\n break;\n default:\n break;\n }\n\n if (Boolean(result)) Vue.set(config.columns[index], \"cachedResults\", result);\n }\n return config;\n }\n\n async saveConfig(): Promise {\n if (!this.hasColumnTimeSpan) {\n this.timeSpanError = true;\n return;\n }\n this.isDataLoading = true;\n this.config = await this.fetchCalculatedLogData(this.config);\n await VesselDataWidgetConfiguration.updateVesselDataWidgetConfig(this.config);\n this.initialConfig = JSON.parse(JSON.stringify(this.config));\n this.isDataLoading = false;\n this.closeEditDialog();\n }\n\n openTimeSpanDialog(columnIndex: number): void {\n this.selectedColumnIndex = columnIndex;\n this.isTimeSpanModalActive = true;\n }\n\n async initDisplayNameOfConfig(): Promise {\n for (const vessel of this.config.vessels.values()) {\n if (!this.isVesselLogVariablesLoaded(vessel.id)) {\n await LogVariables.fetchAllLogVariablesByVesselId(vessel.id);\n }\n }\n\n for (var i = 0; i < this.config.columns.length; i++) {\n const columnLogVariables = this.config.columns[i].logVariables;\n for (var y = 0; y < columnLogVariables.length; y++) {\n const logVariable = columnLogVariables[y];\n if (logVariable.vesselId) {\n const vesselLogVariables = this.getVesselLogVariables(logVariable.vesselId);\n\n if (vesselLogVariables) {\n const matchingLogVariable = vesselLogVariables.find(vlv => vlv.id === logVariable.id);\n\n logVariable.displayName = matchingLogVariable?.displayName ?? logVariable.name;\n Vue.set(columnLogVariables, y, logVariable);\n }\n }\n }\n }\n }\n\n getVesselLogVariables(vesselId: number): LogVariable[] | undefined {\n if (!vesselId) return;\n return LogVariables.vesselsLogVariables.find(vessel => vessel.vesselId === vesselId)?.logVariables;\n }\n\n addColumn(): void {\n const column: VesselDataWidgetColumn = {\n name: \"\",\n hours: 0,\n fromDate: \"\",\n toDate: \"\",\n calculationType: \"\",\n logVariables: [],\n cachedResults: [],\n sequence: this.config.columns.length ? this.config.columns.length : 0,\n };\n this.config.columns.push(column);\n }\n\n onLogVariableFieldClick(item: { vessel: ExtendedVessel; index: number }): void {\n this.selectedVessel = item.vessel;\n this.selectedColumnIndex = item.index;\n this.isLogVariablesModalActive = true;\n }\n\n async onModalOpen(): Promise {\n // eslint-disable-next-line\n for (const vessel of this.config.vessels.values()) {\n if (!this.isVesselLogVariablesLoaded(vessel.id)) {\n await LogVariables.fetchAllLogVariablesByVesselId(vessel.id);\n }\n }\n\n await this.initDisplayNameOfConfig();\n }\n\n onModalClose(): void {\n this.closeEditDialog();\n }\n\n closeEditDialog(): void {\n this.isModalActive = false;\n // reset selected vessels to initial state after modal is closed\n setTimeout(() => {\n this.config = JSON.parse(JSON.stringify(this.initialConfig));\n }, 100);\n }\n\n async onSaveWidgetName(name: string): Promise {\n await Dash.updateWidget({ id: this.widgetRef.id, name });\n }\n\n async initWidgetData(): Promise {\n try {\n this.isDataLoading = true;\n this.config = await VesselDataWidgetConfiguration.getVesselDataWidgetConfigById(this.widgetRef.configId);\n this.initialConfig = JSON.parse(JSON.stringify(await this.fetchCalculatedLogData(this.config)));\n } catch (error) {\n console.warn(\"Could not find config for table widget: \", error);\n }\n this.isDataLoading = false;\n }\n\n onColumnDelete(index: number): void {\n this.config.columns.splice(index, 1);\n // update columns sequence\n VesselDataWidgetConfiguration.updateVesselDataWidgetConfigColumnsSequence(this.config.id);\n this.config.columns.forEach((column, i) => (column.sequence = i));\n }\n\n async created(): Promise {\n if (Vessels.extendedVesselsExpired) await Vessels.refreshExtendedVessels();\n await this.initWidgetData();\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=b62ec5c2&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=ts&\"\nexport * from \"./index.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=b62ec5c2&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b62ec5c2\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VExpansionPanel } from 'vuetify/lib/components/VExpansionPanel';\nimport { VExpansionPanelContent } from 'vuetify/lib/components/VExpansionPanel';\nimport { VExpansionPanelHeader } from 'vuetify/lib/components/VExpansionPanel';\nimport { VExpansionPanels } from 'vuetify/lib/components/VExpansionPanel';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSnackbar } from 'vuetify/lib/components/VSnackbar';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VBtn,VCard,VCardText,VExpansionPanel,VExpansionPanelContent,VExpansionPanelHeader,VExpansionPanels,VIcon,VSnackbar,VSpacer,VToolbar,VToolbarTitle,VTooltip})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',{staticClass:\"dashboard__widget widget__performance-status\",class:_vm.moving ? 'isMoving' : '',attrs:{\"elevation\":_vm.moving ? 15 : 4,\"width\":_vm.width,\"height\":_vm.height}},[_c('v-toolbar',{attrs:{\"dark\":\"\",\"dense\":\"\"}},[_c('v-toolbar-title',[_c('div',{staticClass:\"d-flex flex-column\"},[_vm._v(\" \"+_vm._s(_vm.widgetRef.name)+\" \"),_c('span',{staticClass:\"subtitle-2\"},[_vm._v(\"Deviation from benchmark \"),_c('v-tooltip',{attrs:{\"top\":\"\",\"color\":\"primary lighten-2\",\"max-width\":\"350\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('v-icon',_vm._g({attrs:{\"small\":\"\"}},on),[_vm._v(\"help_outline\")])]}}])},[_c('span',[_vm._v(\"The performances status is based in the deviation from the last benchmark. Benchmarks are reset after docking periods. \"),_c('br'),_c('br'),_vm._v(\"Tip: you can hover the status icon to see more details.\")])])],1)])]),_c('v-spacer'),_c('v-tooltip',{attrs:{\"top\":\"\",\"color\":\"primary lighten-2\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('div',_vm._g({},on),[_c('v-btn',{attrs:{\"disabled\":_vm.isPartOfSharedDashboard,\"icon\":\"\",\"loading\":_vm.isDataLoading},on:{\"click\":function($event){return _vm.WidgetEditDialog.open(_vm.widgetRef.name)}}},[_c('v-icon',[_vm._v(\"edit\")])],1)],1)]}}])},[(_vm.isPartOfSharedDashboard)?_c('span',[_vm._v(\"Can not edit shared dashboard\")]):_c('span',[_vm._v(\"Edit widget configuration\")])])],1),(_vm.isDataLoading)?_c('LoadingTextWave',{staticClass:\"mt-10\"}):_c('section',{staticClass:\"widget-content\"},[_c('v-card-text',{staticClass:\"px-0 py-0\"},[_c('v-data-table',{attrs:{\"headers\":_vm.tableHeaders,\"items\":_vm.tableRows,\"loading\":_vm.isDataLoading,\"dense\":\"\",\"loading-text\":\"Loading... Please wait\",\"no-data-text\":\"Click the edit-icon in the top right corner to start adding vessels\",\"height\":\"100%\",\"fixed-header\":\"\",\"hide-default-footer\":\"\",\"disable-pagination\":\"\"},scopedSlots:_vm._u([{key:\"header.name\",fn:function(ref){\nvar header = ref.header;\nreturn [_c('span',{staticClass:\"primary--text overline\"},[_vm._v(_vm._s(header.text))])]}},{key:\"header.speed\",fn:function(ref){\nvar header = ref.header;\nreturn [_c('v-tooltip',{attrs:{\"top\":\"\",\"color\":\"primary lighten-2\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('span',_vm._g({staticClass:\"primary--text overline\"},on),[_vm._v(_vm._s(header.text))])]}}],null,true)},[_c('span',[_vm._v(\"Shaft Power vs. Ship Speed Log\")])])]}},{key:\"header.rpm\",fn:function(ref){\nvar header = ref.header;\nreturn [_c('v-tooltip',{attrs:{\"top\":\"\",\"color\":\"primary lighten-2\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('span',_vm._g({staticClass:\"primary--text overline\"},on),[_vm._v(_vm._s(header.text))])]}}],null,true)},[_c('span',[_vm._v(\"Shaft Power vs. Shaft RPM\")])])]}},{key:\"header.sfr\",fn:function(ref){\nvar header = ref.header;\nreturn [_c('v-tooltip',{attrs:{\"top\":\"\",\"color\":\"primary lighten-2\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('span',_vm._g({staticClass:\"primary--text overline\"},on),[_vm._v(_vm._s(header.text))])]}}],null,true)},[_c('span',[_vm._v(\"Specific Fuel Rate vs. Shaft Power\")])])]}},{key:\"item.name\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('router-link',{staticClass:\"black--text text-decoration-none\",attrs:{\"to\":(\"/Vessel/\" + (item.id) + \"/\" + (encodeURIComponent(item.name)))}},[_vm._v(\" \"+_vm._s(item.name)+\" \")])]}},{key:\"item.speed\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('v-tooltip',{attrs:{\"top\":\"\",\"color\":\"primary lighten-2\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('img',_vm._g({staticClass:\"status-icon mt-1\",attrs:{\"src\":item.speed.statusIcon}},on))]}}],null,true)},_vm._l((item.speed.subStatuses),function(status,index){return _c('span',{key:index},[_c('StatusTooltip',{attrs:{\"status\":status,\"index\":index}})],1)}),0)]}},{key:\"item.rpm\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('v-tooltip',{attrs:{\"top\":\"\",\"color\":\"primary lighten-2\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('img',_vm._g({staticClass:\"status-icon mt-1\",attrs:{\"src\":item.rpm.statusIcon}},on))]}}],null,true)},_vm._l((item.rpm.subStatuses),function(status,index){return _c('span',{key:index},[_c('StatusTooltip',{attrs:{\"status\":status,\"index\":index}})],1)}),0)]}},{key:\"item.sfr\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('v-tooltip',{attrs:{\"top\":\"\",\"color\":\"primary lighten-2\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('img',_vm._g({staticClass:\"status-icon mt-1\",attrs:{\"src\":item.sfr.statusIcon}},on))]}}],null,true)},_vm._l((item.sfr.subStatuses),function(status,index){return _c('span',{key:index},[_c('StatusTooltip',{attrs:{\"status\":status,\"index\":index}})],1)}),0)]}}],null,true)})],1)],1),_c('WidgetEditDialog',{ref:\"WidgetEditDialog\",attrs:{\"value\":_vm.isModalActive},on:{\"update:value\":function($event){_vm.isModalActive=$event},\"close\":_vm.onModalClose,\"onSaveWidgetName\":_vm.onSaveWidgetName},scopedSlots:_vm._u([{key:\"content\",fn:function(){return [_c('VesselSelect',{attrs:{\"vesselsList\":_vm.extendedVessels,\"selectedVesselsList\":_vm.selectedVessels,\"requiredFeatures\":['Diagnostics', 'Dashboard']},on:{\"update:selectedVesselsList\":function($event){_vm.selectedVessels=$event},\"update:selected-vessels-list\":function($event){_vm.selectedVessels=$event}}})]},proxy:true},{key:\"actions\",fn:function(){return [_c('v-spacer'),_c('v-btn',{attrs:{\"text\":\"\",\"color\":\"primary\"},on:{\"click\":function($event){return _vm.closeEditDialog()}}},[_vm._v(\" Cancel \")]),_c('v-btn',{attrs:{\"color\":\"primary\"},on:{\"click\":function($event){return _vm.saveConfig()}}},[_vm._v(\" Save \")])]},proxy:true}])})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export const tableHeaders = [\r\n {\r\n text: \"Vessel name\",\r\n align: \"start\",\r\n sortable: true,\r\n value: \"name\",\r\n },\r\n { text: \"Speed\", align: \"center\", sortable: false, value: \"speed\" },\r\n { text: \"RPM\", align: \"center\", sortable: false, value: \"rpm\" },\r\n { text: \"SFR\", align: \"center\", sortable: false, value: \"sfr\" },\r\n];\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.index)?_c('v-divider',{staticClass:\"my-2\",attrs:{\"dark\":\"\"}}):_vm._e(),_c('v-row',{staticClass:\"pa-3\",attrs:{\"align\":\"center\",\"justify\":\"space-between\"}},[_c('span',{staticClass:\"mr-5\"},[_vm._v(_vm._s(_vm.statusName)),_c('br'),_vm._v(\"Last updated: \"+_vm._s(_vm.formatDate(_vm.status.statusUpdated)))]),_c('img',{attrs:{\"src\":_vm.status.statusIcon,\"height\":\"16\"}}),_c('span',{staticClass:\"mx-1\"},[_vm._v(_vm._s(_vm.status.statusMessage))]),_c('v-spacer')],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\nimport dateHelper from \"Utilities/date-helper\";\n\n@Component({})\nexport default class StatusTooltip extends Vue {\n @Prop() status!: any;\n @Prop() index!: number;\n\n formatDate(date: string): string {\n return dateHelper.getFormatedDateTimeString(date);\n }\n\n get statusName(): string {\n return this.status.name.split(\" -\")[0];\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./StatusTooltip.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./StatusTooltip.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./StatusTooltip.vue?vue&type=template&id=2360e962&scoped=true&\"\nimport script from \"./StatusTooltip.vue?vue&type=script&lang=ts&\"\nexport * from \"./StatusTooltip.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2360e962\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VDivider,VRow,VSpacer})\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Ref, Vue, Prop } from \"vue-property-decorator\";\nimport store from \"@/store\";\nimport itemMixin from \"@/mixins/itemMixin.js\";\nimport performanceStatusHelper from \"Utilities/performance-status-helper\";\n// modules\nimport { getModule } from \"vuex-module-decorators\";\nimport VesselsModule from \"@/store/clients/Vessels.module\";\nimport PerformanceStatusWidgetModule from \"@/store/clients/PerformanceStatusWidget.module\";\nimport DashboardModule from \"@/store/clients/Dashboard.module\";\nimport UserModule from \"@/store/clients/User.module\";\nimport SnackbarModule from \"@/store/clients/Snackbar.module\";\n// types\nimport { Widget } from \"@/types/widget\";\nimport { PerformanceStatusI, TableRow } from \"@/types/widgetPerformanceStatus\";\nimport { ExtendedVessel } from \"@/types/Vessel\";\nimport { tableHeaders } from \"./VTableData\";\n// components\nimport WidgetEditDialog from \"@/components/widgets/WidgetEditDialog.vue\";\nimport VesselSelect from \"@/components/VesselSelect.vue\";\nimport StatusTooltip from \"./StatusTooltip.vue\";\nimport LoadingTextWave from \"@/components/LoadingTextWave.vue\";\nimport { PerformanceStatusConfig } from \"@/types/widgetPerformanceStatus\";\n\nconst PerfStatus = getModule(PerformanceStatusWidgetModule, store);\nconst Vessels = getModule(VesselsModule, store);\nconst Dash = getModule(DashboardModule, store);\nconst User = getModule(UserModule, store);\nconst Snackbar = getModule(SnackbarModule, store);\n\n@Component({\n mixins: [itemMixin],\n components: {\n WidgetEditDialog,\n VesselSelect,\n StatusTooltip,\n LoadingTextWave,\n },\n})\nexport default class PerformanceStatus extends Vue {\n @Prop() widgetRef!: Widget;\n @Ref(\"WidgetEditDialog\") WidgetEditDialog!: WidgetEditDialog;\n\n config!: PerformanceStatusConfig;\n tableHeaders = tableHeaders;\n selectedVessels: ExtendedVessel[] = [];\n initialSelectedVessels: ExtendedVessel[] = [];\n isModalActive = false;\n isDataLoading = false;\n\n get isPartOfSharedDashboard(): boolean {\n return Dash.activeDashboard.userId !== User.userId;\n }\n\n get extendedVessels(): ExtendedVessel[] {\n return Vessels.extendedVessels;\n }\n\n get tableRows(): TableRow[] {\n const tableRows: TableRow[] = [];\n\n this.initialSelectedVessels.forEach(vessel => {\n const tableRow: TableRow = {\n id: vessel.id,\n name: vessel.name,\n rpm: { statusIcon: \"\", subStatuses: [] },\n sfr: { statusIcon: \"\", subStatuses: [] },\n speed: { statusIcon: \"\", subStatuses: [] },\n };\n\n if (vessel.isDiagnosticActivated) {\n if (vessel.longTrends.length) {\n vessel.longTrends.some(longTrend => {\n if ((longTrend as any).diagnosticType) {\n const status: PerformanceStatusI = {\n name: (longTrend as any).descriptionLong,\n statusCode: (longTrend as any).performanceStatus,\n statusMessage: this.formatStatusCode((longTrend as any).performanceStatus),\n statusIcon: performanceStatusHelper.getPerformanceStatusImageSrc((longTrend as any).performanceStatus),\n statusUpdated: (longTrend as any).performanceStatusUpdated,\n };\n\n switch ((longTrend as any).diagnosticType.name) {\n case \"RPM\":\n tableRow.rpm.subStatuses?.push(status);\n break;\n case \"SFR\":\n tableRow.sfr.subStatuses?.push(status);\n break;\n case \"Speed\":\n tableRow.speed.subStatuses?.push(status);\n break;\n }\n } else {\n return;\n }\n });\n }\n }\n\n tableRows.push(this.setCombinedStatuses(tableRow));\n });\n\n return tableRows;\n }\n\n async saveConfig(): Promise {\n this.isDataLoading = true;\n try {\n await PerfStatus.updateConfig({ ...this.config, vessels: this.selectedVessels });\n // re-assign config after update\n this.config = await PerfStatus.getConfigById(this.widgetRef.configId);\n this.initialSelectedVessels = JSON.parse(JSON.stringify(this.config.vessels));\n Snackbar.showSnackbar({ text: \"Performance status widget config successfully updated\", color: \"success\" });\n } catch (error) {\n Snackbar.showSnackbar({ text: \"Failed to update Performance status widget config\" });\n }\n this.isDataLoading = false;\n this.isModalActive = false;\n }\n\n //set the combined status for each column table row\n setCombinedStatuses(row: TableRow): TableRow {\n row.rpm.statusIcon = this.calculateCombinedStatus(row.rpm.subStatuses);\n row.sfr.statusIcon = this.calculateCombinedStatus(row.sfr.subStatuses);\n row.speed.statusIcon = this.calculateCombinedStatus(row.speed.subStatuses);\n\n return row;\n }\n\n //calculate the combined status for the status \"category\" (rpm, sfr or speed)\n calculateCombinedStatus(statuses: PerformanceStatusI[]): any {\n let combinedStatus = \"DiagnosticsNotActivated\";\n\n statuses.forEach(status => {\n if (performanceStatusHelper.getSortValueByStatus(status.statusCode) < performanceStatusHelper.getSortValueByStatus(combinedStatus)) {\n combinedStatus = status.statusCode;\n }\n });\n\n return performanceStatusHelper.getPerformanceStatusImageSrc(combinedStatus);\n }\n\n formatStatusCode(statusCode: string): string {\n switch (statusCode) {\n case \"NotOk\":\n return \"Not ok\";\n case \"BenchMarking\":\n return \"Benchmarking\";\n default:\n return statusCode;\n }\n }\n\n onModalClose(): void {\n this.closeEditDialog();\n }\n\n closeEditDialog(): void {\n this.isModalActive = false;\n // reset selected vessels to initial state after modal is closed\n setTimeout(() => {\n this.selectedVessels = this.initialSelectedVessels;\n }, 100);\n }\n\n async onSaveWidgetName(name: string): Promise {\n await Dash.updateWidget({ id: this.widgetRef.id, name });\n }\n\n async createNewConfig(): Promise {\n try {\n const newConfig = await PerfStatus.addNewConfig();\n Dash.updateWidget({ id: this.widgetRef.id, configId: newConfig.id });\n Snackbar.showSnackbar({ text: \"Config for this widget could not be found, so a new one has been created\", color: \"primary\" });\n } catch (error) {\n console.error(error);\n }\n }\n\n async initWidgetData(): Promise {\n try {\n this.config = await PerfStatus.getConfigById(this.widgetRef.configId);\n this.initialSelectedVessels = JSON.parse(JSON.stringify(this.config.vessels));\n this.selectedVessels = this.config.vessels;\n } catch (error) {\n console.warn(error);\n await this.createNewConfig();\n }\n }\n\n async created(): Promise {\n if (Vessels.extendedVesselsExpired) await Vessels.refreshExtendedVessels();\n await this.initWidgetData();\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=bdadc664&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=ts&\"\nexport * from \"./index.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=bdadc664&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"bdadc664\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VDataTable } from 'vuetify/lib/components/VDataTable';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VBtn,VCard,VCardText,VDataTable,VIcon,VSpacer,VToolbar,VToolbarTitle,VTooltip})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',{staticClass:\"dashboard__widget widget__notification\",class:_vm.moving ? 'isMoving' : '',attrs:{\"elevation\":_vm.moving ? 15 : 4,\"width\":_vm.width,\"height\":_vm.height}},[_c('v-toolbar',{attrs:{\"dark\":\"\",\"dense\":\"\"}},[_c('v-toolbar-title',[_c('div',{staticClass:\"d-flex flex-column\"},[_vm._v(_vm._s(_vm.widgetRef.name))])]),_c('v-spacer'),_c('v-tooltip',{attrs:{\"top\":\"\",\"color\":\"primary lighten-2\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('div',_vm._g({},on),[_c('v-btn',{attrs:{\"disabled\":_vm.isPartOfSharedDashboard,\"loading\":_vm.isDataLoading,\"icon\":\"\"},on:{\"click\":function($event){return _vm.WidgetEditDialog.open(_vm.widgetRef.name)}}},[_c('v-icon',[_vm._v(\"edit\")])],1)],1)]}}])},[(_vm.isPartOfSharedDashboard)?_c('span',[_vm._v(\"Can not edit shared dashboard\")]):_c('span',[_vm._v(\"Edit widget configuration\")])])],1),(_vm.isDataLoading)?_c('LoadingTextWave',{staticClass:\"mt-10\"}):_c('section',{staticClass:\"widget-content\"},[_c('v-card-text',{staticClass:\"px-0 py-0\"},[_c('v-data-table',{attrs:{\"headers\":_vm.tableHeaders,\"items\":_vm.tableRows,\"loading\":_vm.isDataLoading,\"dense\":\"\",\"loading-text\":\"Loading... Please wait\",\"no-data-text\":\"Click the edit-icon in the top right corner to start adding vessels\",\"height\":\"100%\",\"fixed-header\":\"\",\"hide-default-footer\":\"\",\"disable-pagination\":\"\"},scopedSlots:_vm._u([{key:\"header.name\",fn:function(ref){\nvar header = ref.header;\nreturn [_c('span',{staticClass:\"primary--text overline\"},[_vm._v(_vm._s(header.text))])]}},{key:\"item.name\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('router-link',{staticClass:\"black--text text-decoration-none\",attrs:{\"to\":\"/MyNotifications\"}},[_vm._v(\" \"+_vm._s(item.name)+\" \")])]}},{key:\"item.warningIncidents\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('WarningTooltip',{attrs:{\"tableRow\":item}})]}},{key:\"item.criticalIncidents\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('CriticalTooltip',{attrs:{\"tableRow\":item}})]}}],null,true)})],1)],1),_c('WidgetEditDialog',{ref:\"WidgetEditDialog\",attrs:{\"value\":_vm.isModalActive},on:{\"update:value\":function($event){_vm.isModalActive=$event},\"close\":_vm.onModalClose,\"onSaveWidgetName\":_vm.onSaveWidgetName},scopedSlots:_vm._u([{key:\"content\",fn:function(){return [_c('VesselSelect',{attrs:{\"vesselsList\":_vm.extendedVessels,\"selectedVesselsList\":_vm.selectedVessels,\"requiredFeatures\":['Dashboard', 'Notifications']},on:{\"update:selectedVesselsList\":function($event){_vm.selectedVessels=$event},\"update:selected-vessels-list\":function($event){_vm.selectedVessels=$event}}})]},proxy:true},{key:\"actions\",fn:function(){return [_c('v-spacer'),_c('v-btn',{attrs:{\"text\":\"\",\"color\":\"primary\"},on:{\"click\":function($event){return _vm.closeEditDialog()}}},[_vm._v(\" Cancel \")]),_c('v-btn',{attrs:{\"color\":\"primary\"},on:{\"click\":function($event){return _vm.saveConfig()}}},[_vm._v(\" Save \")])]},proxy:true}])})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export const tableHeaders = [\r\n {\r\n text: \"Vessel name\",\r\n align: \"start\",\r\n sortable: true,\r\n value: \"name\",\r\n },\r\n { text: \"WARNING\", align: \"center\", sortable: false, value: \"warningIncidents\" },\r\n { text: \"CRITICAL\", align: \"center\", sortable: false, value: \"criticalIncidents\" },\r\n];\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"warning-tooltip\"},[(!_vm.tableRow.notificationModuleEnabled)?_c('v-tooltip',{attrs:{\"top\":\"\",\"color\":\"primary lighten-2\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('div',_vm._g({},on),[_vm._v(\"N/A\")])]}}],null,false,1896689893)},[_c('span',[_vm._v(\" Notifications module is not activated for \"+_vm._s(_vm.tableRow.name)+\". \"),_c('br'),_vm._v(\" This module is available as part of the «Danelec Connect Plus» subscription. \")])]):_vm._e(),(!_vm.tableRow.activeConditions && _vm.tableRow.notificationModuleEnabled)?_c('v-tooltip',{attrs:{\"top\":\"\",\"color\":\"primary lighten-2\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('v-icon',_vm._g({attrs:{\"color\":\"grey\"}},on),[_vm._v(\"mdi-minus-circle\")])]}}],null,false,3664415746)},[_c('span',[_vm._v(\" There is no created conditions for \"+_vm._s(_vm.tableRow.name)+\". \")])]):_vm._e(),(_vm.tableRow.notificationModuleEnabled)?_c('v-tooltip',{attrs:{\"top\":\"\",\"color\":\"primary lighten-2\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [(_vm.tableRow.warningIncidents.amount)?_c('div',_vm._g({},on),[_c('v-badge',{staticClass:\"font-weight-bold\",attrs:{\"color\":\"warning\",\"value\":_vm.tableRow.warningIncidents.amount,\"content\":_vm.tableRow.warningIncidents.amount,\"overlap\":\"\",\"inline\":\"\"}})],1):_vm._e()]}}],null,false,2337623502)},_vm._l((_vm.tableRow.warningIncidents.list),function(condition,index){return _c('div',{key:index},[_c('div',{staticClass:\"font-weight-bold\"},[_vm._v(_vm._s(_vm.formatedDateString(condition.openNotificationQueuedAt)))]),_c('div',[_vm._v(_vm._s(condition.conditionDetails))]),(index !== _vm.tableRow.warningIncidents.amount)?_c('v-divider',{staticClass:\"my-2\",attrs:{\"color\":\"white\"}}):_vm._e()],1)}),0):_vm._e(),(_vm.hasNoWarningIncidents)?_c('v-icon',{attrs:{\"color\":\"success\"}},[_vm._v(\"mdi-check-circle\")]):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\nimport { TableRow } from \"@/types/widgetNotification\";\n// utilities\nimport dateHelper from \"Utilities/date-helper\";\n\n@Component({})\nexport default class WarningTooltip extends Vue {\n @Prop() tableRow!: TableRow;\n\n get hasNoWarningIncidents(): boolean {\n if (!this.tableRow) return false;\n return this.tableRow.notificationModuleEnabled && this.tableRow.warningIncidents.amount === 0 && this.tableRow.activeConditions !== 0;\n }\n\n formatedDateString(date: string): string | null {\n if (!date) return null;\n return dateHelper.getFormatedDateTimeString(date);\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WarningTooltip.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WarningTooltip.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./WarningTooltip.vue?vue&type=template&id=8c625c4c&scoped=true&\"\nimport script from \"./WarningTooltip.vue?vue&type=script&lang=ts&\"\nexport * from \"./WarningTooltip.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"8c625c4c\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBadge } from 'vuetify/lib/components/VBadge';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VBadge,VDivider,VIcon,VTooltip})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"critical-tooltip\"},[(!_vm.tableRow.notificationModuleEnabled)?_c('v-tooltip',{attrs:{\"top\":\"\",\"color\":\"primary lighten-2\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('div',_vm._g({},on),[_vm._v(\"N/A\")])]}}],null,false,1896689893)},[_c('span',[_vm._v(\" Notifications module is not activated for \"+_vm._s(_vm.tableRow.name)+\". \"),_c('br'),_vm._v(\" This module is available as part of the Danelec Connect Plus» subscription. \")])]):_vm._e(),(_vm.tableRow.notificationModuleEnabled)?_c('v-tooltip',{attrs:{\"top\":\"\",\"color\":\"primary lighten-2\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [(_vm.tableRow.criticalIncidents.amount)?_c('div',_vm._g({},on),[_c('v-badge',{staticClass:\"font-weight-bold\",attrs:{\"color\":\"error\",\"value\":_vm.tableRow.criticalIncidents.amount,\"content\":_vm.tableRow.criticalIncidents.amount,\"overlap\":\"\",\"inline\":\"\"}})],1):_vm._e()]}}],null,false,3441644413)},_vm._l((_vm.tableRow.criticalIncidents.list),function(condition,index){return _c('div',{key:index},[_c('div',{staticClass:\"font-weight-bold\"},[_vm._v(_vm._s(_vm.formatedDateString(condition.openNotificationQueuedAt)))]),_c('div',[_vm._v(_vm._s(condition.conditionDetails))]),(index !== _vm.tableRow.criticalIncidents.list.length - 1)?_c('v-divider',{staticClass:\"my-2\",attrs:{\"color\":\"white\"}}):_vm._e()],1)}),0):_vm._e(),(_vm.hasNoCriticalIncidents)?_c('v-icon',{attrs:{\"color\":\"success\"}},[_vm._v(\"mdi-check-circle\")]):_vm._e(),(!_vm.tableRow.activeConditions && _vm.tableRow.notificationModuleEnabled)?_c('v-tooltip',{attrs:{\"top\":\"\",\"color\":\"primary lighten-2\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('v-icon',_vm._g({attrs:{\"color\":\"grey\"}},on),[_vm._v(\"mdi-minus-circle\")])]}}],null,false,3664415746)},[_c('span',[_vm._v(\" There is no created conditions for \"+_vm._s(_vm.tableRow.name)+\". \")])]):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\n// helpers\nimport dateHelper from \"Utilities/date-helper\";\n// components\nimport { TableRow } from \"@/types/widgetNotification\";\n\n@Component({})\nexport default class CriticalTooltip extends Vue {\n @Prop() tableRow!: TableRow;\n\n get hasNoCriticalIncidents(): boolean {\n if (!this.tableRow) return false;\n return this.tableRow.notificationModuleEnabled && this.tableRow.criticalIncidents.amount === 0 && this.tableRow.activeConditions !== 0;\n }\n\n formatedDateString(date: string): string | null {\n if (!date) return null;\n return dateHelper.getFormatedDateTimeString(date);\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CriticalTooltip.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CriticalTooltip.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CriticalTooltip.vue?vue&type=template&id=41abd1d3&scoped=true&\"\nimport script from \"./CriticalTooltip.vue?vue&type=script&lang=ts&\"\nexport * from \"./CriticalTooltip.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"41abd1d3\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBadge } from 'vuetify/lib/components/VBadge';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VBadge,VDivider,VIcon,VTooltip})\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Ref, Vue, Prop } from \"vue-property-decorator\";\nimport store from \"@/store\";\nimport itemMixin from \"@/mixins/itemMixin.js\";\n// modules\nimport { getModule } from \"vuex-module-decorators\";\nimport VesselsModule from \"@/store/clients/Vessels.module\";\nimport DashboardModule from \"@/store/clients/Dashboard.module\";\nimport IncidentsModule from \"@/store/clients/Incidents.module\";\nimport NotificationWidgetModule from \"@/store/clients/NotificationWidget.module\";\nimport UserModule from \"@/store/clients/User.module\";\nimport SnackbarModule from \"@/store/clients/Snackbar.module\";\n// types\nimport { Widget } from \"@/types/widget\";\nimport { TableRow } from \"@/types/widgetNotification\";\nimport { ExtendedVessel } from \"@/types/Vessel\";\nimport { Incident } from \"@/types/Incident\";\nimport { Condition } from \"@/types/condition\";\nimport { NotificationWidgetConfig } from \"@/types/widgetNotification\";\nimport { tableHeaders } from \"./VTableData\";\n// components\nimport WidgetEditDialog from \"@/components/widgets/WidgetEditDialog.vue\";\nimport VesselSelect from \"@/components/VesselSelect.vue\";\nimport LoadingTextWave from \"@/components/LoadingTextWave.vue\";\nimport WarningTooltip from \"./WarningTooltip.vue\";\nimport CriticalTooltip from \"./CriticalTooltip.vue\";\n\nconst Vessels = getModule(VesselsModule, store);\nconst Dash = getModule(DashboardModule, store);\nconst Incidents = getModule(IncidentsModule, store);\nconst NotificationWidgetConfiguration = getModule(NotificationWidgetModule, store);\nconst User = getModule(UserModule, store);\nconst Snackbar = getModule(SnackbarModule, store);\n\n@Component({\n mixins: [itemMixin],\n components: {\n WidgetEditDialog,\n VesselSelect,\n LoadingTextWave,\n WarningTooltip,\n CriticalTooltip,\n },\n})\nexport default class NotificationWidget extends Vue {\n @Prop() widgetRef!: Widget;\n @Ref(\"WidgetEditDialog\") WidgetEditDialog!: WidgetEditDialog;\n\n config!: NotificationWidgetConfig;\n tableHeaders = tableHeaders;\n selectedVessels: ExtendedVessel[] = [];\n initialSelectedVessels: ExtendedVessel[] = [];\n conditions: Condition[] = [];\n isModalActive = false;\n isDataLoading = false;\n\n get isPartOfSharedDashboard(): boolean {\n return Dash.activeDashboard.userId !== User.userId;\n }\n\n get extendedVessels(): ExtendedVessel[] {\n return Vessels.extendedVessels;\n }\n\n get tableRows(): TableRow[] {\n const tableRows: TableRow[] = [];\n\n this.initialSelectedVessels.forEach(vessel => {\n const tableRow: TableRow = {\n id: vessel.id,\n name: vessel.name,\n notificationModuleEnabled: vessel.features.some(feature => feature.name === \"Notifications\"),\n activeConditions: this.conditions.filter(condition => condition.vesselId === vessel.id && condition.isDeleted === false).length,\n warningIncidents: {\n amount: this.openWarningIncidents(vessel.id).length,\n list: this.openWarningIncidents(vessel.id),\n },\n criticalIncidents: {\n amount: this.openCriticalIncidents(vessel.id).length,\n list: this.openCriticalIncidents(vessel.id),\n },\n };\n\n tableRows.push(tableRow);\n });\n\n return tableRows;\n }\n\n async saveConfig(): Promise {\n this.isDataLoading = true;\n try {\n await this.fetchConditionsForEachVessel(this.selectedVessels);\n await NotificationWidgetConfiguration.updateConfig({ ...this.config, vessels: this.selectedVessels });\n // re-assign config after update\n this.config = await NotificationWidgetConfiguration.getConfigById(this.widgetRef.configId);\n this.initialSelectedVessels = JSON.parse(JSON.stringify(this.config.vessels));\n Snackbar.showSnackbar({ text: \"Notification widget config successfully updated\", color: \"success\" });\n } catch (error) {\n Snackbar.showSnackbar({ text: \"Failed to update Notification widget config\" });\n }\n this.isDataLoading = false;\n this.isModalActive = false;\n }\n\n async fetchConditionsForEachVessel(selectedVessels: ExtendedVessel[]): Promise {\n for (const vessel of selectedVessels) {\n const vesselConditions = await Incidents.fetchConditionsByVesselId(vessel.id);\n this.conditions = [...this.conditions, ...vesselConditions];\n }\n }\n\n openWarningIncidents(vesselId: number): Incident[] {\n return Incidents.distinctAllOpenIncidents.filter(incident => incident.severity === \"Warning\" && incident.vesselId === vesselId);\n }\n\n openCriticalIncidents(vesselId: number): Incident[] {\n return Incidents.distinctAllOpenIncidents.filter(incident => incident.severity === \"Critical\" && incident.vesselId === vesselId);\n }\n\n onModalClose(): void {\n this.closeEditDialog();\n }\n\n closeEditDialog(): void {\n this.isModalActive = false;\n // reset selected vessels to initial state after modal is closed\n setTimeout(() => {\n this.selectedVessels = this.initialSelectedVessels;\n }, 100);\n }\n\n async onSaveWidgetName(name: string): Promise {\n await Dash.updateWidget({ id: this.widgetRef.id, name });\n }\n\n async createNewConfig(): Promise {\n try {\n const newConfig = await NotificationWidgetConfiguration.addNewConfig();\n Dash.updateWidget({ id: this.widgetRef.id, configId: newConfig.id });\n Snackbar.showSnackbar({ text: \"Config for this widget could not be found, so a new one has been created\", color: \"primary\" });\n } catch (error) {\n console.error(error);\n }\n }\n\n async initWidgetData(): Promise {\n try {\n this.config = await NotificationWidgetConfiguration.getConfigById(this.widgetRef.configId);\n this.initialSelectedVessels = JSON.parse(JSON.stringify(this.config.vessels));\n this.selectedVessels = this.config.vessels;\n this.fetchConditionsForEachVessel(this.initialSelectedVessels);\n } catch (error) {\n console.warn(error);\n await this.createNewConfig();\n }\n }\n\n async created(): Promise {\n if (Vessels.extendedVesselsExpired) await Vessels.refreshExtendedVessels();\n await this.initWidgetData();\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=3767a8c0&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=ts&\"\nexport * from \"./index.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=3767a8c0&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3767a8c0\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VDataTable } from 'vuetify/lib/components/VDataTable';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VBtn,VCard,VCardText,VDataTable,VIcon,VSpacer,VToolbar,VToolbarTitle,VTooltip})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',{staticClass:\"dashboard__widget widget__fouling-overview\",class:_vm.moving ? 'isMoving' : '',attrs:{\"elevation\":_vm.moving ? 15 : 4,\"width\":_vm.width,\"height\":_vm.height}},[_c('v-toolbar',{attrs:{\"dark\":\"\",\"dense\":\"\"}},[_c('v-toolbar-title',[_c('div',{staticClass:\"d-flex flex-column\"},[_vm._v(_vm._s(_vm.widgetRef.name))])]),_c('v-spacer'),_c('v-tooltip',{attrs:{\"top\":\"\",\"color\":\"primary lighten-2\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('div',_vm._g({},on),[_c('v-btn',{attrs:{\"disabled\":_vm.isPartOfSharedDashboard,\"loading\":_vm.isDataLoading,\"icon\":\"\"},on:{\"click\":function($event){return _vm.WidgetEditDialog.open(_vm.widgetRef.name)}}},[_c('v-icon',[_vm._v(\"edit\")])],1)],1)]}}])},[(_vm.isPartOfSharedDashboard)?_c('span',[_vm._v(\"Can not edit shared dashboard\")]):_c('span',[_vm._v(\"Edit widget configuration\")])])],1),(_vm.isDataLoading)?_c('LoadingTextWave',{staticClass:\"mt-10\"}):_c('section',{staticClass:\"widget-content\"},[_c('v-card-text',{staticClass:\"px-0 py-0\"},[_c('v-data-table',{attrs:{\"headers\":_vm.tableHeaders,\"items\":_vm.tableRows,\"loading\":_vm.isDataLoading,\"dense\":\"\",\"loading-text\":\"Loading... Please wait\",\"no-data-text\":\"Click the edit-icon in the top right corner to start adding vessels\",\"height\":\"100%\",\"fixed-header\":\"\",\"hide-default-footer\":\"\",\"disable-pagination\":\"\"},scopedSlots:_vm._u([{key:\"header.name\",fn:function(ref){\nvar header = ref.header;\nreturn [_c('span',{staticClass:\"primary--text\"},[_vm._v(\" \"+_vm._s(header.text)+\" \")])]}},{key:\"header.foulingStatus\",fn:function(ref){\nvar header = ref.header;\nreturn [_c('span',{staticClass:\"primary--text\"},[_vm._v(\" \"+_vm._s(header.text)+\" \")])]}},{key:\"header.speedLoss\",fn:function(ref){\nvar header = ref.header;\nreturn [_c('span',{staticClass:\"primary--text\"},[_vm._v(\" \"+_vm._s(header.text)+\" \")])]}},{key:\"header.cumulativeAddedConsumption\",fn:function(ref){\nvar header = ref.header;\nreturn [_c('span',{staticClass:\"primary--text\",domProps:{\"innerHTML\":_vm._s(header.text)}})]}},{key:\"header.hullCoating\",fn:function(ref){\nvar header = ref.header;\nreturn [_c('span',{staticClass:\"primary--text\"},[_vm._v(\" \"+_vm._s(header.text)+\" \")])]}},{key:\"item\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('table-record',{attrs:{\"vesselId\":item.id,\"vesselName\":item.name}})]}}],null,true)})],1)],1),_c('WidgetEditDialog',{ref:\"WidgetEditDialog\",attrs:{\"value\":_vm.isModalActive},on:{\"update:value\":function($event){_vm.isModalActive=$event},\"close\":_vm.onModalClose,\"onSaveWidgetName\":_vm.onSaveWidgetName},scopedSlots:_vm._u([{key:\"content\",fn:function(){return [_c('VesselSelect',{attrs:{\"vesselsList\":_vm.extendedVessels,\"selectedVesselsList\":_vm.selectedVessels,\"requiredFeatures\":['Dashboard', 'Fouling']},on:{\"update:selectedVesselsList\":function($event){_vm.selectedVessels=$event},\"update:selected-vessels-list\":function($event){_vm.selectedVessels=$event}}})]},proxy:true},{key:\"actions\",fn:function(){return [_c('v-spacer'),_c('v-btn',{attrs:{\"text\":\"\",\"color\":\"primary\"},on:{\"click\":function($event){return _vm.closeEditDialog()}}},[_vm._v(\" Cancel \")]),_c('v-btn',{attrs:{\"color\":\"primary\"},on:{\"click\":function($event){return _vm.saveConfig()}}},[_vm._v(\" Save \")])]},proxy:true}])})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export interface TableHeader {\r\n text: string | undefined;\r\n value: string;\r\n sortable?: boolean;\r\n align?: string;\r\n width?: string;\r\n}\r\n\r\nexport interface TableRow {\r\n id: number;\r\n name: string;\r\n}\r\n\r\nexport enum FoulingStatus {\r\n NOT_AVAILABLE,\r\n HIGH,\r\n MEDIUM,\r\n LOW,\r\n NORMAL,\r\n BENCHMARKING,\r\n}\r\n\r\nexport const tableHeaders: TableHeader[] = [\r\n {\r\n text: \"Vessel Name\",\r\n value: \"name\",\r\n sortable: true,\r\n align: \"center\",\r\n width: \"150px\",\r\n },\r\n {\r\n text: \"Fouling status\",\r\n value: \"foulingStatus\",\r\n sortable: false,\r\n align: \"center\",\r\n width: \"50px\",\r\n },\r\n {\r\n text: \"Speed loss\",\r\n value: \"speedLoss\",\r\n sortable: false,\r\n align: \"center\",\r\n width: \"100px\",\r\n },\r\n {\r\n text: \"Est. Cumulative Added Consumption\",\r\n value: \"cumulativeAddedConsumption\",\r\n sortable: false,\r\n align: \"center\",\r\n width: \"100px\",\r\n },\r\n {\r\n text: \"Hull coating\",\r\n value: \"hullCoating\",\r\n sortable: false,\r\n align: \"center\",\r\n width: \"100px\",\r\n },\r\n];\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('tr',[_c('td',[_c('router-link',{staticClass:\"black--text text-decoration-none\",attrs:{\"to\":(\"/Vessel/\" + _vm.vesselId + \"/\" + (encodeURIComponent(_vm.vesselName)) + \"/Fouling\")}},[_vm._v(\" \"+_vm._s(_vm.vesselName)+\" \")])],1),_c('td',{staticClass:\"text-center\"},[(_vm.foulingStatusIcon)?_c('v-icon',{staticClass:\"mr-2\",attrs:{\"color\":_vm.foulingStatecolor}},[_vm._v(\" \"+_vm._s(_vm.foulingStatusIcon)+\" \")]):_c('span',[_vm._v(\"N/A\")])],1),_c('td',{staticClass:\"text-center\"},[_vm._v(_vm._s(_vm.latestSpeedLoss))]),_c('td',{staticClass:\"text-center\"},[_vm._v(_vm._s(_vm.cumulativeAddedFuelConsumption))]),_c('td',{staticClass:\"text-center\"},[_vm._v(_vm._s(_vm.hullCoating))])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\nimport store from \"@/store\";\n\n// modules\nimport { getModule } from \"vuex-module-decorators\";\nimport FoulingOverviewWidgetModule from \"@/store/clients/FoulingOverviewWidget.module\";\n\n// types\nimport { FoulingStatus } from \"./VTableData\";\nimport { HullCoating } from \"@/types/HullCoating\";\nimport { SpeedLossStatistic } from \"@/types/SpeedLossStatistic\";\nimport { FoulingAddedConsumption } from \"@/types/FoulingAddedConsumption\";\nimport { FoulingChartConfig } from \"@/types/FoulingChartConfig\";\n\nconst FoulingOverviewWidgetConfig = getModule(FoulingOverviewWidgetModule, store);\n\n@Component({})\nexport default class FoulingOverviewWidget extends Vue {\n @Prop({ required: true }) readonly vesselId!: number;\n @Prop({ required: true }) readonly vesselName!: string;\n\n // @Getters\n get hullCoating(): string {\n const hullCoating: HullCoating | null = FoulingOverviewWidgetConfig.hullCoatingVessels[this.vesselId];\n return hullCoating ? `${hullCoating.manufacturerName} | ${hullCoating.typeName} | ${hullCoating.brand}` : \"Not Inputted\";\n }\n\n get foulingConfig(): FoulingChartConfig | null {\n return FoulingOverviewWidgetConfig.foulingConfigs[this.vesselId];\n }\n\n get latestSpeedLossStatistics(): SpeedLossStatistic | null {\n return FoulingOverviewWidgetConfig.latestSpeedLossStatisticsForVessels[this.vesselId];\n }\n\n get latestSpeedLoss(): string {\n if (!this.latestSpeedLossStatistics || this.isBenchmarking) return \"N/A\";\n const speedLoss: number = Math.abs(this.latestSpeedLossStatistics.trendEndValue * -1);\n return `${speedLoss.toFixed(speedLoss != 0 ? 1 : 0)}%`;\n }\n\n get greenZoneEnds(): number {\n if (!this.latestSpeedLossStatistics) return 0 - 5;\n return this.latestSpeedLossStatistics.benchmark.level - 5;\n }\n\n get yellowZoneEnds(): number {\n return this.greenZoneEnds - 5;\n }\n\n get addedFuelConsumptions(): FoulingAddedConsumption[] {\n return FoulingOverviewWidgetConfig.addedFuelConsumptionForVessels[this.vesselId].filter(c => c.usingDerivedStw === this.foulingConfig?.useDerivedStw);\n }\n\n get latestAddedConsumption(): FoulingAddedConsumption | null {\n return this.addedFuelConsumptions?.length > 0 ? this.addedFuelConsumptions[this.addedFuelConsumptions.length - 1] : null;\n }\n\n get cumulativeAddedFuelConsumption(): string {\n return !this.latestAddedConsumption || this.latestAddedConsumption.fromDate !== this.latestSpeedLossStatistics?.fromDate || this.isBenchmarking\n ? \"N/A\"\n : `${Math.round(Number(this.latestAddedConsumption.cumulativeAddedConsumption)).toLocaleString()} MT/Days`;\n }\n\n get isBenchmarking(): boolean {\n if (!this.foulingConfig) return false;\n return !this.latestSpeedLossStatistics?.benchmark.end && !this.foulingConfig.useManualBenchmark;\n }\n\n get foulingStatus(): FoulingStatus {\n if (this.isBenchmarking) return FoulingStatus.BENCHMARKING;\n if (this.latestSpeedLossStatistics == null) return FoulingStatus.NOT_AVAILABLE;\n if (this.latestSpeedLossStatistics.trendEndValue < this.yellowZoneEnds) return FoulingStatus.HIGH;\n if (this.latestSpeedLossStatistics.trendEndValue < this.greenZoneEnds && this.latestSpeedLossStatistics.trendEndValue > this.yellowZoneEnds) return FoulingStatus.MEDIUM;\n if (this.latestSpeedLossStatistics.trendEndValue > this.greenZoneEnds) return FoulingStatus.NORMAL;\n\n return FoulingStatus.NOT_AVAILABLE;\n }\n\n get foulingStatusIcon(): string | null {\n if (this.isBenchmarking) return \"mdi-gauge\";\n\n switch (this.foulingStatus) {\n case FoulingStatus.HIGH:\n return \"mdi-alert-circle\";\n case FoulingStatus.MEDIUM:\n return \"mdi-alert-circle\";\n case FoulingStatus.NORMAL:\n return \"mdi-check-circle\";\n case FoulingStatus.BENCHMARKING:\n return \"mdi-gauge\";\n default:\n return null;\n }\n }\n\n get foulingStatecolor(): string {\n switch (this.foulingStatus) {\n case FoulingStatus.HIGH:\n return \"#ff5252\";\n case FoulingStatus.MEDIUM:\n return \"#ffc107\";\n case FoulingStatus.NORMAL:\n return \"#4caf50\";\n case FoulingStatus.BENCHMARKING:\n return \"#003B42\";\n default:\n return \"#fff\";\n }\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TableRecord.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TableRecord.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TableRecord.vue?vue&type=template&id=4ad98524&v-slot%3A%5B%60item%60%5D=%7B%20item%20%7D&\"\nimport script from \"./TableRecord.vue?vue&type=script&lang=ts&\"\nexport * from \"./TableRecord.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VIcon } from 'vuetify/lib/components/VIcon';\ninstallComponents(component, {VIcon})\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Ref, Vue, Prop } from \"vue-property-decorator\";\nimport store from \"@/store\";\nimport itemMixin from \"@/mixins/itemMixin.js\";\n// modules\nimport { getModule } from \"vuex-module-decorators\";\nimport VesselsModule from \"@/store/clients/Vessels.module\";\nimport DashboardModule from \"@/store/clients/Dashboard.module\";\nimport FoulingOverviewWidgetModule from \"@/store/clients/FoulingOverviewWidget.module\";\nimport UserModule from \"@/store/clients/User.module\";\nimport SnackbarModule from \"@/store/clients/Snackbar.module\";\n// types\nimport { Widget } from \"@/types/widget\";\nimport { ExtendedVessel } from \"@/types/Vessel\";\nimport { FoulingOverviewWidgetConfig } from \"@/types/widgetFoulingOverview\";\nimport { tableHeaders, TableRow } from \"./VTableData\";\n// components\nimport WidgetEditDialog from \"@/components/widgets/WidgetEditDialog.vue\";\nimport VesselSelect from \"@/components/VesselSelect.vue\";\nimport LoadingTextWave from \"@/components/LoadingTextWave.vue\";\nimport TableRecord from \"./TableRecord.vue\";\n\nconst Vessels = getModule(VesselsModule, store);\nconst Dash = getModule(DashboardModule, store);\nconst User = getModule(UserModule, store);\nconst Snackbar = getModule(SnackbarModule, store);\nconst FoulingOverviewWidgetConfig = getModule(FoulingOverviewWidgetModule, store);\n\n@Component({\n mixins: [itemMixin],\n components: {\n WidgetEditDialog,\n VesselSelect,\n LoadingTextWave,\n TableRecord,\n },\n})\nexport default class FoulingOverviewWidget extends Vue {\n @Prop() widgetRef!: Widget;\n @Ref(\"WidgetEditDialog\") WidgetEditDialog!: WidgetEditDialog;\n\n config!: FoulingOverviewWidgetConfig;\n tableHeaders = tableHeaders;\n selectedVessels: ExtendedVessel[] = [];\n initialSelectedVessels: ExtendedVessel[] = [];\n isModalActive = false;\n isDataLoading = false;\n\n get isPartOfSharedDashboard(): boolean {\n return Dash.activeDashboard.userId !== User.userId;\n }\n\n get extendedVessels(): ExtendedVessel[] {\n return Vessels.extendedVessels;\n }\n\n get tableRows(): TableRow[] {\n const tableRows: TableRow[] = [];\n this.initialSelectedVessels.forEach(vessel => {\n const tableRow: TableRow = {\n id: vessel.id,\n name: vessel.name,\n };\n\n tableRows.push(tableRow);\n });\n\n return tableRows;\n }\n\n async getConfig(): Promise {\n this.config = await FoulingOverviewWidgetConfig.getConfigById(this.widgetRef.configId);\n }\n\n async getFoulingDetails(vesselIds: number[]): Promise {\n const promises: Promise[] = [\n FoulingOverviewWidgetConfig.fetchFoulingConfigs(vesselIds),\n FoulingOverviewWidgetConfig.fetchHullCoatingForVessels(vesselIds),\n FoulingOverviewWidgetConfig.fetchLatestSpeedLossStatisticsForVessels(vesselIds),\n FoulingOverviewWidgetConfig.fetchAddedFuelConsumptionForVessels(vesselIds),\n ];\n\n await Promise.all(promises);\n }\n\n async saveConfig(): Promise {\n this.isDataLoading = true;\n try {\n await FoulingOverviewWidgetConfig.updateConfig({ ...this.config, vessels: this.selectedVessels });\n await this.getConfig();\n await this.getFoulingDetails(this.config.vessels.map(vessel => vessel.id));\n this.initialSelectedVessels = this.config.vessels;\n this.selectedVessels = this.initialSelectedVessels;\n Snackbar.showSnackbar({ text: \"Fouling overview widget config successfully updated\", color: \"success\" });\n } catch (error) {\n Snackbar.showSnackbar({ text: \"Failed to update Fouling overview widget config\" });\n } finally {\n this.isDataLoading = false;\n this.isModalActive = false;\n }\n }\n\n onModalClose(): void {\n this.closeEditDialog();\n }\n\n async onSaveWidgetName(name: string): Promise {\n await Dash.updateWidget({ id: this.widgetRef.id, name });\n }\n\n closeEditDialog(): void {\n this.isModalActive = false;\n setTimeout(() => {\n this.selectedVessels = this.initialSelectedVessels;\n }, 100);\n }\n\n async createNewConfig(): Promise {\n try {\n const newConfig = await FoulingOverviewWidgetConfig.addNewConfig();\n await Dash.updateWidget({ id: this.widgetRef.id, configId: newConfig.id });\n Snackbar.showSnackbar({ text: \"Config for this widget could not be found, so a new one has been created\", color: \"primary\" });\n } catch (error) {\n console.error(error);\n }\n }\n\n async initWidgetData(): Promise {\n this.isDataLoading = true;\n try {\n await this.getConfig();\n await this.getFoulingDetails(this.config.vessels.map(vessel => vessel.id));\n this.initialSelectedVessels = this.config.vessels;\n this.selectedVessels = this.initialSelectedVessels;\n } catch (error) {\n console.error(error);\n } finally {\n this.isDataLoading = false;\n }\n }\n\n async created(): Promise {\n if (Vessels.extendedVesselsExpired) await Vessels.refreshExtendedVessels();\n await this.initWidgetData();\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=54dd3d3b&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=ts&\"\nexport * from \"./index.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=54dd3d3b&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"54dd3d3b\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VDataTable } from 'vuetify/lib/components/VDataTable';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VBtn,VCard,VCardText,VDataTable,VIcon,VSpacer,VToolbar,VToolbarTitle,VTooltip})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',{staticClass:\"dashboard__widget widget__cii\",class:_vm.moving ? 'isMoving' : '',attrs:{\"elevation\":_vm.moving ? 15 : 4,\"width\":_vm.width,\"height\":_vm.height}},[_c('v-toolbar',{staticClass:\"widget-toolbar\",attrs:{\"dark\":\"\",\"dense\":\"\"}},[_c('v-toolbar-title',[_vm._v(_vm._s(_vm.widgetRef.name))]),_c('v-spacer'),(_vm.dateRange)?_c('div',{staticClass:\"title mr-2\"},[_vm._v(_vm._s(_vm.dateRange.start)+\" - \"+_vm._s(_vm.dateRange.end))]):_vm._e(),_c('v-tooltip',{attrs:{\"top\":\"\",\"color\":\"primary lighten-2\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('div',_vm._g({},on),[_c('v-btn',{attrs:{\"disabled\":_vm.isPartOfSharedDashboard,\"icon\":\"\",\"loading\":_vm.isDataLoading},on:{\"click\":function($event){return _vm.WidgetEditDialog.open(_vm.widgetRef.name)}}},[_c('v-icon',[_vm._v(\"edit\")])],1)],1)]}}])},[(_vm.isPartOfSharedDashboard)?_c('span',[_vm._v(\"Can not edit shared dashboard\")]):_c('span',[_vm._v(\"Edit widget configuration\")])])],1),_c('section',{staticClass:\"widget-content\"},[_c('v-card-text',{staticClass:\"px-0 py-0\"},[_c(_vm.widgetComponentType,{tag:\"component\",attrs:{\"data\":_vm.ciiData,\"noDataVessels\":_vm.vesselsNoDataList,\"loading\":_vm.isDataLoading,\"resizing\":_vm.resized},on:{\"update:data\":function($event){_vm.ciiData=$event},\"update:noDataVessels\":function($event){_vm.vesselsNoDataList=$event},\"update:no-data-vessels\":function($event){_vm.vesselsNoDataList=$event},\"update:loading\":function($event){_vm.isDataLoading=$event},\"openEdit\":function($event){return _vm.WidgetEditDialog.open(_vm.widgetRef.name)}}})],1)],1),_c('WidgetEditDialog',{ref:\"WidgetEditDialog\",attrs:{\"value\":_vm.isModalActive},on:{\"update:value\":function($event){_vm.isModalActive=$event},\"close\":_vm.onModalClose,\"onSaveWidgetName\":_vm.onSaveWidgetName},scopedSlots:_vm._u([{key:\"toolbar-actions\",fn:function(){return [_c('div',{staticClass:\"view-select\",staticStyle:{\"width\":\"200px\"}},[_c('v-select',{attrs:{\"items\":_vm.componentViewTypes,\"item-text\":\"text\",\"label\":\"Widget type\",\"return-object\":\"\",\"hide-details\":\"\",\"rounded\":\"\",\"filled\":\"\",\"dense\":\"\"},on:{\"input\":_vm.onComponentViewTypeSelect},model:{value:(_vm.componentViewType),callback:function ($$v) {_vm.componentViewType=$$v},expression:\"componentViewType\"}})],1)]},proxy:true},{key:\"content\",fn:function(){return [_c('VesselSelect',{attrs:{\"vesselsList\":_vm.extendedVessels,\"selectedVesselsList\":_vm.config.vessels,\"requiredFeatures\":['Dashboard']},on:{\"update:selectedVesselsList\":function($event){return _vm.$set(_vm.config, \"vessels\", $event)},\"update:selected-vessels-list\":function($event){return _vm.$set(_vm.config, \"vessels\", $event)}},scopedSlots:_vm._u([{key:\"additional-inputs\",fn:function(){return [_c('div',{staticClass:\"cii-inputs d-flex\"},[_c('v-select',{staticClass:\"year-select mr-4\",attrs:{\"items\":_vm.lastYears,\"label\":\"Year\",\"disabled\":_vm.config.ytd,\"rules\":[function (v) { return !!v && !_vm.config.ytd || 'This field is required'; }],\"clearable\":\"\"},model:{value:(_vm.config.year),callback:function ($$v) {_vm.$set(_vm.config, \"year\", $$v)},expression:\"config.year\"}}),_c('v-checkbox',{attrs:{\"label\":\"Year to date (YTD)\"},scopedSlots:_vm._u([{key:\"append\",fn:function(){return [_c('v-tooltip',{attrs:{\"color\":\"primary lighten-2\",\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('v-icon',_vm._g({attrs:{\"color\":\"primary lighten-2\"}},on),[_vm._v(\"mdi-information-outline\")])]}}])},[_c('span',[_vm._v(\"If no year is selected, calculations will be made as YTD by default\")])])]},proxy:true}]),model:{value:(_vm.config.ytd),callback:function ($$v) {_vm.$set(_vm.config, \"ytd\", $$v)},expression:\"config.ytd\"}})],1)]},proxy:true},{key:\"checkbox-disabled\",fn:function(props){return [_c('div',{staticClass:\"checkbox-disabled\",class:{ disabled: _vm.isVesselSettingsRequired(props.vessel) }},[_c('v-tooltip',{attrs:{\"disabled\":!_vm.isVesselSettingsRequired(props.vessel),\"top\":\"\",\"color\":\"primary lighten-2\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('span',_vm._g({staticClass:\"disabled-slot\"},on))]}}],null,true)},[_c('span',[_vm._v(\"Required to specify additional vessel settings\")])])],1)]}},{key:\"checkbox-append-content\",fn:function(props){return [_c('v-tooltip',{attrs:{\"color\":\"primary lighten-2\",\"right\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('v-btn',_vm._g({staticClass:\"mdi-cog ml-auto d-flex align-self-end\",attrs:{\"color\":\"primary lighten-2\",\"icon\":\"\",\"small\":\"\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.openVesselSettingsDialog(props.vessel)}}},on),[_c('v-icon',{attrs:{\"small\":\"\"}},[_vm._v(\"mdi-cog\")])],1)]}}],null,true)},[_c('span',[_vm._v(\"Vessel settings\")])])]}},{key:\"footer-content\",fn:function(){return [(_vm.isAnyVesselUpdated)?_c('v-alert',{attrs:{\"dense\":\"\",\"outlined\":\"\",\"color\":\"primary lighten-2\",\"type\":\"info\"}},[_vm._v(\" If any of the vessels just had their type or weight updated, CII ratings will be updated after 5 minutes. \")]):_vm._e()]},proxy:true}])})]},proxy:true},{key:\"actions\",fn:function(){return [_c('v-spacer'),_c('v-btn',{attrs:{\"text\":\"\",\"color\":\"primary\"},on:{\"click\":function($event){return _vm.closeEditDialog()}}},[_vm._v(\" Cancel \")]),_c('v-btn',{attrs:{\"color\":\"primary\"},on:{\"click\":function($event){return _vm.saveConfig()}}},[_vm._v(\" Save \")])]},proxy:true}])}),_c('v-dialog',{attrs:{\"max-width\":\"330\"},on:{\"click:outside\":function($event){return _vm.closeVesselSettingsDialog()}},model:{value:(_vm.vesselSettingsDialog),callback:function ($$v) {_vm.vesselSettingsDialog=$$v},expression:\"vesselSettingsDialog\"}},[_c('v-card',{attrs:{\"color\":\"blue-grey lighten-5\"}},[_c('v-toolbar',{attrs:{\"dark\":\"\",\"dense\":\"\",\"color\":\"primary\"}},[_c('v-toolbar-title',[_vm._v(\"Vessel settings\")])],1),_c('div',{staticClass:\"d-flex flex-column\"},[_c('section',{staticClass:\"dialog__section\"},[_c('v-card-text',[_c('v-select',{attrs:{\"items\":_vm.vesselTypes,\"label\":\"Vessel type\",\"item-text\":\"name\",\"return-object\":\"\",\"rules\":[function (v) { return !!v || 'This field is required'; }]},model:{value:(_vm.vesselType),callback:function ($$v) {_vm.vesselType=$$v},expression:\"vesselType\"}}),(_vm.isDeadweightRequired(_vm.vesselType))?_c('v-text-field',{attrs:{\"type\":\"number\",\"rules\":[function () { return !!_vm.deadweight || 'This field is required'; }],\"label\":\"Deadweight\",\"required\":\"\"},model:{value:(_vm.deadweight),callback:function ($$v) {_vm.deadweight=_vm._n($$v)},expression:\"deadweight\"}}):_c('v-text-field',{attrs:{\"type\":\"number\",\"rules\":[function () { return !!_vm.grossTonnage || 'This field is required'; }],\"label\":\"Gross tonnage\",\"required\":\"\"},model:{value:(_vm.grossTonnage),callback:function ($$v) {_vm.grossTonnage=_vm._n($$v)},expression:\"grossTonnage\"}})],1)],1),_c('v-card-actions',{staticClass:\"mt-6\"},[_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"primary\",\"disabled\":_vm.isSaveButtonDisabled},on:{\"click\":function($event){return _vm.submitVesselSettings()}}},[_vm._v(\" Save \")]),_c('v-btn',{attrs:{\"color\":\"primary\",\"text\":\"\"},on:{\"click\":function($event){return _vm.closeVesselSettingsDialog()}}},[_vm._v(\" Close \")])],1)],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-data-table',{attrs:{\"dense\":\"\",\"headers\":_vm.tableHeaders,\"items\":_vm.tableRowItems,\"loading\":_vm.isDataLoading,\"loading-text\":\"Loading... Please wait\",\"custom-sort\":_vm.customSort,\"height\":\"100%\",\"fixed-header\":\"\",\"hide-default-footer\":\"\",\"disable-pagination\":\"\"},scopedSlots:_vm._u([_vm._l((_vm.tableHeaders),function(header){return {key:(\"header.\" + (header.value)),fn:function(ref){\nvar header = ref.header;\nreturn [_c('div',{staticClass:\"d-inline-flex flex-column\"},[_c('span',{staticClass:\"primary--text\",staticStyle:{\"line-height\":\"1.5rem\",\"font-size\":\"0.9rem\"},domProps:{\"innerHTML\":_vm._s(header.text)}})])]}}}),{key:\"header.requiredCii\",fn:function(ref){\nvar header = ref.header;\nreturn [_c('v-tooltip',{attrs:{\"left\":\"\",\"color\":\"primary lighten-2\",\"max-width\":\"300\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('div',{staticClass:\"d-inline-flex flex-column\"},[_c('span',{staticClass:\"primary--text\",staticStyle:{\"line-height\":\"1.5rem\",\"font-size\":\"0.9rem\"},domProps:{\"innerHTML\":_vm._s(header.text)}})]),_c('v-icon',_vm._g({staticClass:\"ml-1 mb-1\",attrs:{\"color\":\"primary lighten-2\"}},on),[_vm._v(\" mdi-information-outline \")])]}}],null,true)},[_c('span',[_vm._v(\"Required CII is calculated using the formula: \"),_c('i',[_vm._v(\"a * Capacity\"),_c('sup',[_vm._v(\"-c\")])]),_vm._v(\" , where a and c are constants based on the vessel type and weight. Capacity is the vessel weight in either gross tonnage or deadweight, depending on vessel type\")])])]}},{key:\"header.ciiTrend\",fn:function(ref){\nvar header = ref.header;\nreturn [_c('v-tooltip',{attrs:{\"left\":\"\",\"color\":\"primary lighten-2\",\"max-width\":\"300\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('div',{staticClass:\"d-inline-flex flex-column\"},[_c('span',{staticClass:\"primary--text\",staticStyle:{\"line-height\":\"1.5rem\",\"font-size\":\"0.9rem\"},domProps:{\"innerHTML\":_vm._s(header.text)}})]),_c('v-icon',_vm._g({staticClass:\"ml-1 mb-1\",attrs:{\"color\":\"primary lighten-2\"}},on),[_vm._v(\" mdi-information-outline \")])]}}],null,true)},[_c('span',[_vm._v(\"CII Trend column shows the trend for the last 7 days relative to the second-to-last 7 days from the last exported date\")])])]}},{key:\"item.ciiRating\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('v-chip',{staticStyle:{\"font-weight\":\"700\",\"font-size\":\"0.8rem\",\"color\":\"#fff\"},attrs:{\"color\":_vm.ratingColor(item.ciiRating),\"small\":\"\"}},[_vm._v(\" \"+_vm._s(item.ciiRating)+\" \")])]}},{key:\"item.ciiTrend\",fn:function(ref){\nvar item = ref.item;\nreturn [(item.ciiTrend && item.ciiTrend.last7DaysAverage !== 0)?_c('v-tooltip',{attrs:{\"color\":\"primary lighten-2\",\"max-width\":\"320\",\"left\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('v-icon',_vm._g({staticClass:\"mr-1 mb-1\",attrs:{\"color\":_vm.ciiTrendStyles(item.ciiTrend).color}},on),[_vm._v(\" \"+_vm._s(_vm.ciiTrendStyles(item.ciiTrend).icon)+\" \")])]}}],null,true)},[_c('span',[_vm._v(\"Attained average CII for the last 7 days: \"+_vm._s(item.ciiTrend.last7DaysAverage.toFixed(2)))])]):_c('span',[_vm._v(\"No Data\")])]}},(_vm.vesselsNoDataList.length)?{key:\"body.append\",fn:function(){return _vm._l((_vm.vesselsNoDataList),function(vessel,i){return _c('tr',{key:i},[_c('td',[_vm._v(_vm._s(vessel.name))]),_c('td',[_vm._v(_vm._s(vessel.imoNumber))]),_c('td',[_vm._v(_vm._s(_vm.vesselWeight(vessel.id)))]),_vm._l((6),function(index){return _c('td',{key:index},[_vm._v(\"No Data\")])})],2)})},proxy:true}:null,(_vm.isNoData)?{key:\"no-data\",fn:function(){return [_c('div',{staticClass:\"no-data-slot\"},[_c('h6',{staticClass:\"text-h6 mb-1\"},[_vm._v(\"There are no selected vessels.\")]),_c('p',{staticClass:\"subtitle-1 mb-6\"},[_vm._v(\"Click to start adding vessels\")]),_c('v-btn',{attrs:{\"disabled\":_vm.isPartOfSharedDashboard,\"color\":\"primary\"},on:{\"click\":function($event){return _vm.$emit('openEdit')}}},[_c('v-icon',{staticClass:\"mr-2\",attrs:{\"color\":\"white\"}},[_vm._v(\"mdi-table-plus\")]),_vm._v(\" Add vessels \")],1)],1)]},proxy:true}:null,(_vm.isDataLoading)?{key:\"progress\",fn:function(){return [_c('v-progress-linear',{attrs:{\"indeterminate\":\"\"}}),_c('div',{staticClass:\"progress-linear-text\"},[_c('p',{staticClass:\"mb-1\"},[_vm._v(\"Loading...Please wait\")])])]},proxy:true}:null],null,true)})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nexport interface TableHeader {\r\n text: string | undefined;\r\n value: string;\r\n sortable?: boolean;\r\n width?: string;\r\n}\r\n\r\nexport interface TableRow {\r\n imoNumber: number;\r\n vesselName: string;\r\n deadweight: number | string | null;\r\n distanceTravelledInNm: number;\r\n co2EmissionsInGrams: number;\r\n attainedCii: number;\r\n referenceLine: number;\r\n requiredCii: number;\r\n ciiRating: string;\r\n ciiTrend?: {\r\n penultimate7DaysAverage: number;\r\n last7DaysAverage: number;\r\n }\r\n}\r\nexport const headers: TableHeader[] = [\r\n {\r\n text: \"Vessel Name\",\r\n value: \"vesselName\",\r\n sortable: true,\r\n width: \"159px\",\r\n },\r\n {\r\n text: \"IMO\",\r\n value: \"imoNumber\",\r\n sortable: true,\r\n width: \"94px\",\r\n },\r\n {\r\n text: \"Deadweight /
Gross Tonnage\",\r\n value: \"deadweight\",\r\n sortable: true,\r\n width: \"154px\",\r\n },\r\n {\r\n text: \"Distance travelled
nm\",\r\n value: \"distanceTravelledInNm\",\r\n sortable: true,\r\n width: \"177px\",\r\n },\r\n {\r\n text: \"CO2 emitted
ton\",\r\n value: \"co2EmissionsInGrams\",\r\n sortable: true,\r\n width: \"157px\",\r\n },\r\n {\r\n text: \"Required CII
CO2g/nm\",\r\n value: \"requiredCii\",\r\n sortable: true,\r\n width: \"178px\",\r\n },\r\n {\r\n text: \"Attained CII
CO2g/nm\",\r\n value: \"attainedCii\",\r\n sortable: true,\r\n width: \"133px\",\r\n },\r\n {\r\n text: \"CII Trend
(last 7 days)\",\r\n value: \"ciiTrend\",\r\n width: \"131px\",\r\n sortable: false,\r\n },\r\n {\r\n text: \"CII Rating\",\r\n value: \"ciiRating\",\r\n sortable: true,\r\n width: \"113px\",\r\n },\r\n];","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue, PropSync } from \"vue-property-decorator\";\nimport store from \"@/store\";\n// types\nimport { CiiData } from \"@/types/ciiData\";\nimport { Vessel } from \"@/types/Vessel\";\nimport { TableHeader, TableRow, headers } from \"./VTableData\";\n// modules\nimport { getModule } from \"vuex-module-decorators\";\nimport DashboardModule from \"@/store/clients/Dashboard.module\";\nimport UserModule from \"@/store/clients/User.module\";\nimport VesselsModule from \"@/store/clients/Vessels.module\";\n\nconst Dash = getModule(DashboardModule, store);\nconst User = getModule(UserModule, store);\nconst Vessels = getModule(VesselsModule, store);\n\n@Component({\n components: {},\n})\nexport default class TableView extends Vue {\n @PropSync(\"data\", { type: Array, default: [] }) ciiData!: CiiData[];\n @PropSync(\"loading\", { type: Boolean, default: false }) isDataLoading!: boolean;\n @PropSync(\"noDataVessels\", { type: Array, default: [] }) vesselsNoDataList!: Vessel[];\n\n headers = headers;\n // CII calculations use deadweight or gross tonnage depending on vessel type.\n // useDeadweight is a list of vessels that require a deadweight for calculations. Other types require gross tonnage.\n useDeadweight = [\"Containership\", \"Tanker\", \"LNG carrier\", \"Gas carrier\", \"Bulk carrier\", \"General cargo ship\", \"Refrigerated cargo carrier\", \"Combination carrier\"];\n\n get tableHeaders(): TableHeader[] | undefined {\n if (!this.ciiData.length && !this.vesselsNoDataList.length) return;\n return this.headers;\n }\n\n get tableRowItems(): TableRow[] {\n if (!this.ciiData.length) return [];\n\n const tableRows: TableRow[] = [];\n this.ciiData.forEach((item: CiiData) => {\n const row: TableRow = {\n imoNumber: item.vessel.imoNumber,\n vesselName: item.vessel.name,\n deadweight: this.vesselWeight(item.vessel.id),\n distanceTravelledInNm: Number(item.distanceTravelledInNm.toFixed(1)),\n co2EmissionsInGrams: Number((item.co2EmissionsInGrams / 1000000).toFixed(1)),\n attainedCii: Number(item.attainedCii.toFixed(2)),\n referenceLine: Number(item.referenceLine.toFixed(2)),\n requiredCii: Number(item.requiredCii.toFixed(2)),\n ciiRating: item.ciiRating,\n ciiTrend: item.ciiTrend,\n };\n tableRows.push(row);\n });\n return tableRows;\n }\n\n get isNoData(): boolean {\n return !(this.tableRowItems.length || this.vesselsNoDataList.length);\n }\n\n get isPartOfSharedDashboard(): boolean {\n return Dash.activeDashboard.userId !== User.userId;\n }\n\n customSort(items: [], sortBy: any, isDesc: any): [] {\n //do nothing when the sorting is reset\n if (!sortBy[0]) return items;\n\n //sort as strings\n if (sortBy[0] === \"vesselName\" || sortBy[0] === \"ciiRating\") {\n return items.sort((a: any, b: any) => {\n if (isDesc[0]) return b[sortBy] < a[sortBy] ? -1 : 1;\n\n return a[sortBy] < b[sortBy] ? -1 : 1;\n });\n }\n\n //sort all other columns as numbers\n return items.sort((a: any, b: any) => {\n return isDesc[0] ? ((Number(b[sortBy]) || 0) < (Number(a[sortBy]) || 0) ? -1 : 1) : (Number(a[sortBy]) || 0) < (Number(b[sortBy]) || 0) ? -1 : 1;\n });\n }\n\n ratingColor(rating: string): string {\n switch (rating) {\n case \"A\":\n return \"#33a357\";\n case \"B\":\n return \"#c3d545\";\n case \"C\":\n return \"#fff12c\";\n case \"D\":\n return \"#edb731\";\n case \"E\":\n return \"#cc232a\";\n default:\n return \"\";\n }\n }\n\n ciiTrendStyles(trend: { penultimate7DaysAverage: number; last7DaysAverage: number }): { icon: string; color: string } {\n const isDowntrend = trend.last7DaysAverage > trend.penultimate7DaysAverage;\n return {\n icon: isDowntrend ? \"mdi-arrow-up-thin\" : \"mdi-arrow-down-thin\",\n color: isDowntrend ? \"#cc232a\" : \"#33a357\",\n };\n }\n\n vesselWeight(vesselId: number): number | string | null {\n const vessel = Vessels.getExtendedVesselById(vesselId);\n if (!vessel) return \"No Data\";\n if (this.isDeadweightRequired(vessel.vesselType)) return vessel.deadweight ?? null;\n else return vessel.grossTonnage;\n }\n\n isDeadweightRequired(vesselType: { id: number; name: string } | null): boolean {\n if (!vesselType) return true;\n return this.useDeadweight.includes(vesselType?.name);\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TableView.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TableView.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TableView.vue?vue&type=template&id=7e4051de&scoped=true&\"\nimport script from \"./TableView.vue?vue&type=script&lang=ts&\"\nexport * from \"./TableView.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7e4051de\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VChip } from 'vuetify/lib/components/VChip';\nimport { VDataTable } from 'vuetify/lib/components/VDataTable';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VProgressLinear } from 'vuetify/lib/components/VProgressLinear';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VBtn,VChip,VDataTable,VIcon,VProgressLinear,VTooltip})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"chart-view\"},[(_vm.isDataLoading)?_c('div',{staticClass:\"chart-view__loader\"},[_c('v-progress-linear',{attrs:{\"indeterminate\":\"\",\"color\":\"yellow darken-2\"}}),_vm._m(0)],1):_vm._e(),_c('div',{staticClass:\"chart-view__content\"},[_c('div',{staticClass:\"chart-view__content__item\"},[_c('div',{staticClass:\"overline\"},[_vm._v(\"Fleet average attained CII\")]),_c('div',{staticClass:\"value\"},[_c('span',{staticClass:\"number\"},[_vm._v(\" \"+_vm._s(_vm.averageAttainedCii)+\" \")]),_c('span',{staticClass:\"unit ml-2\"},[_vm._v(\" CO2g/nm \")])]),_c('div',{staticClass:\"hint\"},[_c('table',[_vm._m(1),_c('tbody',_vm._l((_vm.ciiData),function(item){return _c('tr',{key:item.id},[_c('td',[_vm._v(_vm._s(item.vessel.name))]),_c('td',[_vm._v(_vm._s(item.attainedCii.toFixed(2)))])])}),0)])])]),_c('div',{staticClass:\"chart-view__content__item\"},[_c('div',{staticClass:\"overline\"},[_vm._v(\"Total distance travelled\")]),_c('div',{staticClass:\"value\"},[_c('span',{staticClass:\"number\"},[_vm._v(\" \"+_vm._s(_vm.totalDistanceTravelled)+\" \")]),_c('span',{staticClass:\"unit ml-2\"},[_vm._v(\"nm\")])]),_c('div',{staticClass:\"hint\"},[_c('table',[_vm._m(2),_c('tbody',_vm._l((_vm.ciiData),function(item){return _c('tr',{key:item.id},[_c('td',[_vm._v(_vm._s(item.vessel.name))]),_c('td',[_vm._v(_vm._s(item.distanceTravelledInNm.toFixed(1)))])])}),0)])])]),_c('div',{staticClass:\"chart-view__content__item\"},[_c('div',{staticClass:\"overline\"},[_vm._v(\"Total CO2 emitted\")]),_c('div',{staticClass:\"value\"},[_c('span',{staticClass:\"number\"},[_vm._v(\" \"+_vm._s(_vm.totalEmittedCO2)+\" \")]),_c('span',{staticClass:\"unit ml-2\"},[_vm._v(\"tons\")])]),_c('div',{staticClass:\"hint\"},[_c('table',[_vm._m(3),_c('tbody',_vm._l((_vm.ciiData),function(item){return _c('tr',{key:item.id},[_c('td',[_vm._v(_vm._s(item.vessel.name))]),_c('td',[_vm._v(_vm._s((item.co2EmissionsInGrams / 1000000).toFixed(1)))])])}),0)])])])]),_c('div',{staticClass:\"highchart-container\"},[_c('div',{staticClass:\"cii-donut\"},[_c('Highcharts',{ref:\"chart\",staticClass:\"cii-donut__chart\",attrs:{\"options\":_vm.ChartOptions,\"deepCopyOnUpdate\":false,\"id\":\"cii-donut__chart\",\"callback\":_vm.chartReady}})],1)])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"progress-linear-text\"},[_c('p',{staticClass:\"mb-1\"},[_vm._v(\"Loading...Please wait\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('thead',[_c('th',[_vm._v(\"Name\")]),_c('th',[_vm._v(\"Attained CII\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('thead',[_c('th',[_vm._v(\"Name\")]),_c('th',[_vm._v(\"Distance travelled (nm)\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('thead',[_c('th',[_vm._v(\"Name\")]),_c('th',[_vm._v(\"CO2 emitted\")])])}]\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue, Prop, PropSync, Watch } from \"vue-property-decorator\";\n// Highcharts library\nimport { Chart } from \"highcharts-vue\";\n// types\nimport { CiiData } from \"@/types/ciiData\";\nimport { Vessel } from \"@/types/Vessel\";\n\n@Component({\n components: {\n Highcharts: Chart,\n },\n})\nexport default class ChartView extends Vue {\n @PropSync(\"data\", { type: Array, default: [] }) ciiData!: CiiData[];\n @PropSync(\"loading\", { type: Boolean, default: false }) isDataLoading!: boolean;\n @PropSync(\"noDataVessels\", { type: Array, default: [] }) vesselsNoDataList!: Vessel[];\n @Prop() resizing!: boolean;\n\n chart!: any;\n chartLoaded = false;\n reflowTimer!: number;\n // need to call reflow on the chart with some delay after widget resize, otherwise it will not resize properly\n\n @Watch(\"resizing\")\n resized(val: boolean): void {\n this.reflowTimer = setTimeout(() => {\n if (!val && this.chart) {\n this.chart.donutTitle.element.remove();\n this.chart.donutTitle = undefined;\n this.chart.update(this.ChartOptions, true);\n this.chart.reflow();\n }\n }, 1000);\n }\n\n @Watch(\"ciiData\")\n onCiiDataUpdate(): void {\n if (this.chart.donutTitle) this.chart.donutTitle.element.remove();\n this.chart.donutTitle = undefined;\n this.chart.update(this.ChartOptions, true);\n }\n\n get chartSettings(): any {\n if (!this.chartLoaded) return {};\n const ctx: any = this;\n return {\n type: \"pie\",\n spacingTop: 0,\n spacingBottom: 0,\n spacingLeft: 0,\n spacingRight: 0,\n // marginLeft: -120,\n style: {\n fontFamily: \"Helvetica Neue\",\n },\n events: {\n render: function () {\n // create and set chart average rating title in center\n // runs after delay to be sure that chart completely redrawn\n setTimeout(() => {\n const $this: any = this;\n if (!ctx.averageRating) return;\n const left = $this.plotWidth / 2 + $this.plotLeft;\n const top = $this.plotHeight / 2 + $this.plotTop - 35;\n if (!$this.donutTitle) {\n $this.donutTitle = $this.renderer.text(ctx.title, left, top, true).attr({ align: \"center\" }).css({ zIndex: 5 }).addClass(\"chart__title\").add();\n }\n $this.donutTitle.attr({\n x: left,\n y: top,\n });\n }, 500);\n\n // show tooltip on legend hover event\n const legend = ctx.chart.legend;\n const legendsAmount = legend.allItems.length;\n for (let i = 0; i < legendsAmount; i++) {\n (function (i) {\n const item = legend.allItems[i].legendItem;\n item.on(\"mouseover\", function (event: any) {\n if (ctx.chart.series[0].data[i].y) {\n ctx.chart.tooltip.refresh(ctx.chart.series[0].data[i]);\n }\n });\n })(i);\n }\n setTimeout(() => ctx.chart.reflow(), 100);\n },\n },\n };\n }\n get ChartOptions(): any {\n if (!this.chartLoaded) return {};\n const ctx = this;\n const options = {\n chart: ctx.chartSettings,\n title: {\n text: \"\",\n },\n legend: {\n useHTML: true,\n align: \"right\",\n verticalAlign: \"middle\",\n layout: \"vertical\",\n x: 0,\n symbolPadding: 0,\n symbolWidth: 0.1,\n symbolHeight: 0.1,\n symbolRadius: 0,\n itemStyle: {\n color: \"#000\",\n fontWeight: \"bold\",\n fontSize: \"1.7rem\",\n },\n labelFormatter: function () {\n const $this: any = this;\n return `\n
\n \n ${$this.name}\n
\n ${$this.y}\n \n `;\n },\n },\n plotOptions: {\n pie: {\n innerSize: \"60%\",\n shadow: false,\n borderWidth: 1,\n point: {\n events: { legendItemClick: () => false },\n },\n },\n series: {\n showInLegend: true,\n dataLabels: { enabled: false },\n },\n },\n tooltip: {\n useHTML: true,\n formatter: function () {\n const $this: any = this;\n let html = \"\";\n const vesselsCiiDataList = ctx.filterVesselsByRating($this.point.name);\n vesselsCiiDataList.forEach(cii => {\n html = html.concat(`\n
\n ${cii.vessel.name}:${cii.attainedCii.toFixed(1)} CO2g/nm\n
\n `);\n });\n return html;\n },\n animation: false,\n backgroundColor: \"rgba(0, 0, 0, 0)\",\n borderRadius: 15,\n borderWidth: 0,\n shadow: false,\n // outside: true,\n style: {\n color: \"#fff\",\n fontSize: \"12px\",\n zIndex: 100,\n },\n },\n series: [\n {\n data: this.seriesData,\n },\n ],\n credits: { enabled: false },\n exporting: { enabled: false },\n };\n\n return options;\n }\n\n get averageAttainedCii(): number | string {\n if (!this.ciiData.length) return \"No Data\";\n const averageAttainedCii = this.ciiData.reduce((acc: number, item: CiiData) => acc + item.attainedCii, 0) / this.ciiData.length;\n return new Intl.NumberFormat(undefined, { maximumFractionDigits: 1 }).format(averageAttainedCii);\n }\n\n get totalEmittedCO2(): string | undefined {\n if (!this.ciiData.length) return;\n const totalEmittedCO2 = this.ciiData.reduce((acc: number, item: CiiData) => acc + item.co2EmissionsInGrams, 0) / 1000000;\n return new Intl.NumberFormat(undefined, { maximumFractionDigits: 1 }).format(totalEmittedCO2);\n }\n\n get totalDistanceTravelled(): string | undefined {\n if (!this.ciiData.length) return;\n const totalDistanceTravelled = this.ciiData.reduce((acc: number, item: CiiData) => acc + item.distanceTravelledInNm, 0);\n return new Intl.NumberFormat(undefined, { maximumFractionDigits: 1 }).format(totalDistanceTravelled);\n }\n\n filterVesselsByRating(rating: string): CiiData[] {\n return this.ciiData.filter(item => item.ciiRating === rating);\n }\n\n get seriesData(): { name: string; y: number; color: string }[] {\n return [\n { name: \"A\", y: this.filterVesselsByRating(\"A\").length, color: \"#33a357\" },\n { name: \"B\", y: this.filterVesselsByRating(\"B\").length, color: \"#c3d545\" },\n { name: \"C\", y: this.filterVesselsByRating(\"C\").length, color: \"#fff12c\" },\n { name: \"D\", y: this.filterVesselsByRating(\"D\").length, color: \"#edb731\" },\n { name: \"E\", y: this.filterVesselsByRating(\"E\").length, color: \"#cc232a\" },\n ];\n }\n\n get averageRating(): { grade: string; color: string } {\n const ratingsAmount = this.seriesData.reduce((acc, series) => acc + series.y, 0);\n let a = 0,\n b = 0,\n c = 0,\n d = 0,\n e = 0;\n this.seriesData.forEach(series => {\n switch (series.name) {\n case \"A\":\n a = series.y * 5;\n case \"B\":\n b = series.y * 4;\n case \"C\":\n c = series.y * 3;\n case \"D\":\n d = series.y * 2;\n case \"E\":\n e = series.y * 1;\n }\n });\n const averageGrade = (a + b + c + d + e) / ratingsAmount;\n return this.letterGrade(averageGrade);\n }\n\n letterGrade(grade: number): { grade: string; color: string } {\n let letterGrade!: { grade: string; color: string };\n if (grade <= 1) {\n letterGrade = { grade: \"E\", color: \"#cc232a\" };\n } else if (grade <= 2) {\n letterGrade = { grade: \"D\", color: \"#edb731\" };\n } else if (grade <= 3) {\n letterGrade = { grade: \"C\", color: \"#fff12c\" };\n } else if (grade <= 4) {\n letterGrade = { grade: \"B\", color: \"#c3d545\" };\n } else if (grade <= 5 || grade > 5) {\n letterGrade = { grade: \"A\", color: \"#33a357\" };\n }\n return letterGrade;\n }\n\n get title(): string {\n // if (!this.averageRating) return \"\";\n return `\n \n ${this.averageRating.grade}\n Fleet average rating\n \n `;\n }\n\n chartReady(chart: any): void {\n this.chart = chart;\n this.chart.update(this.ChartOptions, true);\n this.chartLoaded = true;\n }\n\n get Highchart(): any {\n return this.chart;\n }\n\n onWindowResize(): void {\n setTimeout(() => {\n this.chart.reflow();\n }, 200);\n }\n\n created(): void {\n window.addEventListener(\"resize\", this.onWindowResize);\n }\n\n beforeDestroy(): void {\n if (this.reflowTimer) clearTimeout(this.reflowTimer);\n window.removeEventListener(\"resize\", this.onWindowResize);\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ChartView.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ChartView.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ChartView.vue?vue&type=template&id=6d48161a&scoped=true&\"\nimport script from \"./ChartView.vue?vue&type=script&lang=ts&\"\nexport * from \"./ChartView.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ChartView.vue?vue&type=style&index=0&id=6d48161a&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6d48161a\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VProgressLinear } from 'vuetify/lib/components/VProgressLinear';\ninstallComponents(component, {VProgressLinear})\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue, Ref, Prop, Watch } from \"vue-property-decorator\";\nimport store from \"@/store\";\n// helpers\nimport itemMixin from \"@/mixins/itemMixin.js\";\nimport moment from \"moment\";\n// types\nimport { CiiWidgetConfig } from \"@/types/ciiWidgetConfig\";\nimport { CiiData } from \"@/types/ciiData\";\nimport { Widget } from \"@/types/widget\";\nimport { ExtendedVessel, Vessel } from \"@/types/Vessel\";\n// components\nimport WidgetEditDialog from \"@/components/widgets/WidgetEditDialog.vue\";\nimport VesselSelect from \"@/components/VesselSelect.vue\";\nimport TableView from \"./TableView.vue\";\nimport ChartView from \"./ChartView.vue\";\n// modules\nimport { getModule } from \"vuex-module-decorators\";\nimport CiiWidgetModule from \"@/store/clients/CiiWidget.module\";\nimport DashboardModule from \"@/store/clients/Dashboard.module\";\nimport UserModule from \"@/store/clients/User.module\";\nimport CiiModule from \"@/store/clients/Cii.module\";\nimport VesselsModule from \"@/store/clients/Vessels.module\";\nimport SnackbarModule from \"@/store/clients/Snackbar.module\";\nimport dateHelper from \"@/Scripts/utilities/date-helper\";\n\nconst CiiWidgetConfiguration = getModule(CiiWidgetModule, store);\nconst Dash = getModule(DashboardModule, store);\nconst User = getModule(UserModule, store);\nconst Cii = getModule(CiiModule, store);\nconst Vessels = getModule(VesselsModule, store);\nconst Snackbar = getModule(SnackbarModule, store);\n\n@Component({\n mixins: [itemMixin],\n components: {\n WidgetEditDialog,\n VesselSelect,\n TableView,\n ChartView,\n },\n})\nexport default class CiiWidget extends Vue {\n @Prop() widgetRef!: Widget;\n @Ref(\"WidgetEditDialog\") WidgetEditDialog!: WidgetEditDialog;\n\n selectedVessels: ExtendedVessel[] = [];\n selectedYear: number | null = null;\n yearToDate = true;\n ciiData: CiiData[] = [];\n vesselsNoDataList: Vessel[] = [];\n isDataLoading = false;\n widgetComponentType = \"TableView\";\n widgetViewSelectTypes = [\"Table\", \"Chart\"];\n isModalActive = false;\n resized = false;\n currentVessel: ExtendedVessel | null = null;\n vesselSettingsDialog = false;\n vesselType: { id: number; name: string } | null = null;\n deadweight: number | null = null;\n grossTonnage: number | null = null;\n isAnyVesselUpdated = false;\n config: CiiWidgetConfig = {\n id: 0,\n vessels: [],\n ytd: true,\n year: null,\n showTable: true,\n showChart: false,\n };\n initialConfig: CiiWidgetConfig = {\n id: 0,\n vessels: [],\n ytd: true,\n year: null,\n showTable: true,\n showChart: false,\n };\n componentViewTypes = [\n { component: \"TableView\", text: \"Table\" },\n { component: \"ChartView\", text: \"Chart\" },\n ];\n componentViewType = this.componentViewTypes[0];\n // CII calculations use deadweight or gross tonnage depending on vessel type.\n // useDeadweight is a list of vessels that require a deadweight for calculations. Other types require gross tonnage.\n useDeadweight = [\"Containership\", \"Tanker\", \"LNG carrier\", \"Gas carrier\", \"Bulk carrier\", \"General cargo ship\", \"Refrigerated cargo carrier\", \"Combination carrier\"];\n\n //let Highcharts know it has been resized, otherwise it won't trigger chart reflow\n //resizing is a computed property in the itemMixin\n @Watch(\"resizing\")\n onResize(val: boolean): void {\n if (val) this.resized = val;\n setTimeout(() => (this.resized = false));\n }\n\n @Watch(\"config.ytd\")\n onYearToDateChanged(newValue: boolean): void {\n if (newValue) this.config.year = null;\n }\n\n get isPartOfSharedDashboard(): boolean {\n return Dash.activeDashboard.userId !== User.userId;\n }\n\n get dateRange(): { start: string; end: string } | undefined {\n if (!this.ciiData.length) return;\n return {\n start: dateHelper.getFormatedDateString(this.ciiData[0].start),\n end: dateHelper.getFormatedDateString(this.ciiData[0].end),\n };\n }\n\n get extendedVessels(): ExtendedVessel[] {\n return Vessels.extendedVessels;\n }\n\n get vesselTypes(): { id: number; name: string }[] {\n return Vessels.vesselTypes;\n }\n\n get lastYears(): number[] {\n // return years until 2019 including\n const currentYear = new Date().getFullYear();\n const lastYears: number[] = [];\n // 2019 is the first year where CII calculations can be done\n const yearsUntil2019 = new Date().getFullYear() - 2019;\n for (let i = 1; i <= yearsUntil2019; i++) {\n lastYears.push(currentYear - i);\n }\n return lastYears;\n }\n\n onModalClose(): void {\n this.closeEditDialog();\n }\n\n closeEditDialog(): void {\n this.isModalActive = false;\n // reset selected vessels to initial state after modal is closed\n setTimeout(() => {\n this.config = JSON.parse(JSON.stringify(this.initialConfig));\n }, 100);\n }\n\n onComponentViewTypeSelect(): void {\n this.config = { ...this.config, showTable: this.componentViewType.component === \"TableView\", showChart: this.componentViewType.component === \"ChartView\" };\n }\n\n async fetchVesselsCiiData(config: CiiWidgetConfig): Promise {\n const vesselIds = config.vessels.map(vessel => vessel.id);\n const query: { vesselIds: string; years: string } = {\n vesselIds: vesselIds.toString(),\n years: config.year ? config.year.toString() : \"\",\n };\n if (!vesselIds.length) return;\n config.ytd ? (this.ciiData = await Cii.fetchYtd(query)) : (this.ciiData = await Cii.fetchYear(query));\n\n // extract vessels with no data\n this.vesselsNoDataList = [];\n this.ciiData = this.ciiData.filter((item: any, i: number) => {\n if (item) return item;\n this.vesselsNoDataList.push(config.vessels[i]);\n });\n\n // fetch 14 days from last export date, calculate and set CII trend for the last 7 days\n Promise.all(\n this.ciiData.map(async item => {\n Vue.set(item, \"ciiTrend\", await this.evaluateAndSetCiiTrend(item));\n return item;\n })\n ).then(data => {\n this.ciiData = data;\n });\n }\n\n async evaluateAndSetCiiTrend(ciiData: CiiData): Promise<{ penultimate7DaysAverage: number; last7DaysAverage: number }> {\n const start = moment(ciiData.vessel.lastExportDate).subtract(14, \"days\").format(\"YYYY-MM-DD\");\n const end = moment(ciiData.vessel.lastExportDate).format(\"YYYY-MM-DD\");\n const last14Days: any = await Cii.fetchDays({ vesselIds: ciiData.vesselId, start: start, end: end });\n\n const penultimate7Days = last14Days[0].slice(0, 7);\n const penultimate7DaysAverage = penultimate7Days.reduce((acc: number, item: CiiData) => acc + item.attainedCii, 0) / 7;\n const last7Days = last14Days[0].slice(7, 14);\n const last7DaysAverage = last7Days.reduce((acc: number, item: any) => acc + item.attainedCii, 0) / 7;\n\n return {\n penultimate7DaysAverage: penultimate7DaysAverage,\n last7DaysAverage: last7DaysAverage,\n };\n }\n\n async saveConfig(): Promise {\n this.isDataLoading = true;\n try {\n await CiiWidgetConfiguration.updateCiiWidgetConfig(this.config);\n // re-assign config after update\n this.config = await CiiWidgetConfiguration.getCiiWidgetConfigById(this.widgetRef.configId);\n this.initialConfig = JSON.parse(JSON.stringify(this.config));\n this.widgetComponentType = this.componentViewType.component;\n this.closeEditDialog();\n await this.fetchVesselsCiiData(this.config);\n Snackbar.showSnackbar({ text: \"CII widget config successfully updated\", color: \"success\" });\n } catch (error) {\n Snackbar.showSnackbar({ text: \"Failed to update CII widget config\" });\n }\n this.isDataLoading = false;\n }\n\n isDeadweightRequired(vesselType: { id: number; name: string } | null): boolean {\n if (!vesselType) return true;\n return this.useDeadweight.includes(vesselType?.name);\n }\n\n isVesselSettingsRequired(vessel: ExtendedVessel): boolean {\n if (!vessel) return false;\n\n if (vessel?.vesselType?.name == null) return true;\n else if (this.isDeadweightRequired(vessel.vesselType) && vessel.deadweight === null) return true;\n else if (!this.isDeadweightRequired(vessel.vesselType) && vessel.grossTonnage === null) return true;\n else return false;\n }\n\n openVesselSettingsDialog(vessel: ExtendedVessel): void {\n this.currentVessel = vessel;\n if (!this.currentVessel) return;\n this.vesselType = this.currentVessel.vesselType;\n this.deadweight = this.currentVessel.deadweight;\n this.grossTonnage = this.currentVessel.grossTonnage;\n this.vesselSettingsDialog = true;\n }\n\n closeVesselSettingsDialog(): void {\n this.currentVessel = null;\n this.vesselType = null;\n this.deadweight = null;\n this.grossTonnage = null;\n this.vesselSettingsDialog = false;\n }\n\n get isSaveButtonDisabled(): boolean {\n return Boolean(this.vesselType == null || (this.isDeadweightRequired(this.vesselType) && this.deadweight == null) || (!this.isDeadweightRequired(this.vesselType) && this.grossTonnage == null));\n }\n\n async submitVesselSettings(): Promise {\n if (!this.currentVessel) return;\n try {\n await Vessels.updateVessel({\n id: this.currentVessel.id,\n vesselType: this.vesselType,\n deadweight: this.deadweight,\n grossTonnage: this.grossTonnage,\n });\n this.isAnyVesselUpdated = true;\n await Vessels.refreshExtendedVessels();\n this.config = {} as CiiWidgetConfig;\n this.config = await CiiWidgetConfiguration.getCiiWidgetConfigById(this.widgetRef.configId);\n this.initialConfig = JSON.parse(JSON.stringify(this.config));\n Snackbar.showSnackbar({ text: \"Vessel settings successfully updated\", color: \"success\" });\n } catch (error) {\n Snackbar.showSnackbar({ text: \"Could not update vessel settings\" });\n }\n this.vesselSettingsDialog = false;\n }\n\n async createNewConfig(): Promise {\n try {\n const newConfig = await CiiWidgetConfiguration.addNewConfig();\n Dash.updateWidget({ id: this.widgetRef.id, configId: newConfig.id });\n Snackbar.showSnackbar({ text: \"Config for this widget could not be found, so a new one has been created\", color: \"primary\" });\n } catch (error) {\n console.error(error);\n }\n }\n\n async initWidgetData(): Promise {\n this.isDataLoading = true;\n try {\n this.config = await CiiWidgetConfiguration.getCiiWidgetConfigById(this.widgetRef.configId);\n this.initialConfig = JSON.parse(JSON.stringify(this.config));\n this.componentViewType = this.config.showTable ? { component: \"TableView\", text: \"Table\" } : { component: \"ChartView\", text: \"Chart\" };\n this.widgetComponentType = this.componentViewType.component;\n await this.fetchVesselsCiiData(this.config);\n } catch (error) {\n console.warn(\"Could not find config for cii widget: \", error);\n await this.createNewConfig();\n }\n this.isDataLoading = false;\n }\n\n async onSaveWidgetName(name: string): Promise {\n await Dash.updateWidget({ id: this.widgetRef.id, name });\n }\n\n async created(): Promise {\n if (Vessels.extendedVesselsExpired) await Vessels.refreshExtendedVessels();\n await Vessels.fetchVesselTypes();\n await this.initWidgetData();\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=f1fceebe&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=ts&\"\nexport * from \"./index.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=f1fceebe&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"f1fceebe\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VAlert } from 'vuetify/lib/components/VAlert';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCheckbox } from 'vuetify/lib/components/VCheckbox';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSelect } from 'vuetify/lib/components/VSelect';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VAlert,VBtn,VCard,VCardActions,VCardText,VCheckbox,VDialog,VIcon,VSelect,VSpacer,VTextField,VToolbar,VToolbarTitle,VTooltip})\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Ref, Vue } from \"vue-property-decorator\";\nimport store from \"@/store\";\n// types\nimport { WidgetType } from \"@/types/widgetType\";\nimport { Widget } from \"@/types/widget\";\nimport { DashboardI } from \"@/types/dashboard\";\n// components\nimport DashboardControlDialog from \"@/components/DashboardControlDialog.vue\";\nimport WelcomeWidget from \"@/components/widgets/WelcomeWidget.vue\";\nimport MapWidget from \"@/components/widgets/MapWidget.vue\";\nimport Dashboard from \"@/components/3rdPartyComponents/VueResponsiveDash/Dashboard.vue\";\nimport DashLayout from \"@/components/3rdPartyComponents/VueResponsiveDash/DashLayout.vue\";\nimport DashItem from \"@/components/3rdPartyComponents/VueResponsiveDash/DashItem.vue\";\nimport VesselDataWidget from \"@/components/widgets/VesselDataWidget/index.vue\";\nimport PerformanceStatusWidget from \"@/components/widgets/PerformanceStatus/index.vue\";\nimport NotificationWidget from \"@/components/widgets/NotificationWidget/index.vue\";\nimport FoulingOverviewWidget from \"@/components/widgets/FoulingOverviewWidget/index.vue\";\nimport CiiWidget from \"@/components/widgets/CiiWidget/index.vue\";\nimport LoadingTextWave from \"@/components/LoadingTextWave.vue\";\n// modules\nimport { getModule } from \"vuex-module-decorators\";\nimport DashboardModule from \"@/store/clients/Dashboard.module\";\nimport VesselDataWidgetConfigurationModule from \"@/store/clients/VesselDataWidgetConfig.module\";\nimport VesselsModule from \"@/store/clients/Vessels.module\";\nimport VesselGroupsModule from \"@/store/clients/VesselGroups.module\";\nimport TaxonomyModule from \"@/store/clients/Taxonomy.module\";\nimport WidgetTypesModule from \"@/store/clients/WidgetTypes.module\";\nimport PerformanceStatusWidgetModule from \"@/store/clients/PerformanceStatusWidget.module\";\nimport NotificationWidgetModule from \"@/store/clients/NotificationWidget.module\";\nimport FoulingOverviewWidgetModule from \"@/store/clients/FoulingOverviewWidget.module\";\nimport SnackbarModule from \"@/store/clients/Snackbar.module\";\nimport UserModule from \"@/store/clients/User.module\";\nimport CiiWidgetModule from \"@/store/clients/CiiWidget.module\";\n\nconst Taxonomy = getModule(TaxonomyModule, store);\nconst Vessels = getModule(VesselsModule, store);\nconst VesselGroups = getModule(VesselGroupsModule, store);\nconst Dash = getModule(DashboardModule, store);\nconst VesselDataWidgetConfiguration = getModule(VesselDataWidgetConfigurationModule, store);\nconst WidgetTypes = getModule(WidgetTypesModule, store);\nconst PerfStatus = getModule(PerformanceStatusWidgetModule, store);\nconst NotificationWidgetConfiguration = getModule(NotificationWidgetModule, store);\nconst FoulingOverviewWidgetConfiguration = getModule(FoulingOverviewWidgetModule, store);\nconst CiiWidgetConfiguration = getModule(CiiWidgetModule, store);\nconst Snackbar = getModule(SnackbarModule, store);\nconst User = getModule(UserModule, store);\n\ninterface fabButton {\n title: string;\n icon: string;\n action: string;\n active?: boolean;\n disabled?: boolean;\n tooltip?: string;\n}\n\n@Component({\n components: {\n Dashboard,\n DashLayout,\n DashItem,\n WelcomeWidget,\n MapWidget,\n DashboardControlDialog,\n VesselDataWidget,\n PerformanceStatusWidget,\n LoadingTextWave,\n NotificationWidget,\n FoulingOverviewWidget,\n CiiWidget,\n },\n})\nexport default class DashboardView extends Vue {\n //using ref to gain access to the dashLayout child component internal properties\n @Ref(\"dashboardRef\") dashboardRef!: Vue;\n @Ref(\"dashboardControlDialog\") dashboardControlDialog!: DashboardControlDialog;\n\n fabOpen = false;\n editMode = false;\n isFabClicked = false;\n startupWidget = WidgetTypes.startup;\n loadingState = true;\n loadingTimeout = false;\n loadingError = false;\n showRedesignNotification = false;\n redesignNotificationSeen = Boolean(Vue.$cookies.get(\"redesignNotificationSeen\"));\n doNotShowRedesignNotificationAgain = false;\n\n //store getters\n get activeWidgets(): Widget[] {\n return Dash.activeWidgets;\n }\n\n get widgets(): Widget[] {\n return Dash.activeDashboardWidgets;\n }\n\n get dashboard(): DashboardI {\n return Dash.activeDashboard;\n }\n\n get isPersonalDashboard(): boolean {\n return Dash.activeDashboard.userId === User.userId;\n }\n\n get fabContent(): fabButton[] {\n return [\n {\n title: \"Add/remove widgets\",\n icon: \"mdi-view-dashboard\",\n action: \"add\",\n active: true,\n },\n {\n title: \"Edit dashboard layout\",\n icon: \"mdi-gesture-swipe\",\n action: \"edit\",\n active: !this.editMode,\n disabled: !this.activeWidgets.length,\n tooltip: \"You need to add widgets before you can edit the dashboard\",\n },\n {\n title: \"Exit edit mode\",\n icon: \"logout\",\n action: \"exitEdit\",\n active: this.editMode,\n },\n ];\n }\n\n get isFabInitial(): boolean {\n return !this.isFabClicked && !this.activeWidgets.length;\n }\n\n async created(): Promise {\n /* Start a timer in order to show a message to the user if\n loading is taking longer than expected (currently 8 sec). */\n setTimeout(() => {\n if (this.loadingState) this.loadingTimeout = true;\n }, 8000);\n\n try {\n await Promise.all([\n Vessels.refreshVessels(),\n Vessels.extendedVesselsExpired === true ? Vessels.refreshExtendedVessels() : null,\n VesselGroups.refreshVesselGroups(),\n Taxonomy.getTaxonomyCategories(),\n Dash.initializeDashboard(),\n VesselDataWidgetConfiguration.refreshVesselDataWidgetConfigs(),\n PerfStatus.refreshConfigs(),\n NotificationWidgetConfiguration.refreshConfigs(),\n FoulingOverviewWidgetConfiguration.refreshConfigs(),\n CiiWidgetConfiguration.refreshCiiWidgetConfigs(),\n ]);\n } catch (error) {\n this.loadingError = true;\n console.error(\"An error occurred when loading dashboard\", error);\n\n Snackbar.showSnackbar({\n text: \"An error occurred, and the dashboard could not be loaded. Refresh?\",\n timeout: -1,\n closeButton: true,\n });\n }\n\n this.loadingState = false;\n this.loadingTimeout = false;\n\n if (!this.redesignNotificationSeen) {\n this.showRedesignNotification = true;\n }\n }\n\n redesignNotificationAcknowledged(): void {\n if (this.doNotShowRedesignNotificationAgain) {\n Vue.$cookies.set(\"redesignNotificationSeen\", \"true\", \"1y\");\n }\n\n this.showRedesignNotification = false;\n }\n\n widgetMovedOrResized(): void {\n this.$nextTick(() => {\n const data: Partial = this.dashboardRef.$attrs;\n try {\n Dash.updateDashboardLayout({ id: data.id!, userId: User.userId, name: data.name!, widgets: data.widgets!, userIdsSharedWith: data.userIdsSharedWith! });\n } catch (error) {\n console.error(\"Saving changes to dashboard layout failed\" + error);\n\n Snackbar.showSnackbar({\n text: \"Widget was moved, but the changes could not be saved.
We recommend refreshing the page and trying again.\",\n timeout: 7000,\n });\n }\n });\n }\n\n fabAction(action: string): void {\n switch (action) {\n case \"add\":\n this.dashboardControlDialog.open();\n break;\n case \"edit\":\n this.editMode = true;\n break;\n case \"exitEdit\":\n this.editMode = false;\n break;\n }\n }\n\n //Create 2D grid of dashboard to use when placing new widgets\n //Todo: maybe get number of rows dynamic?\n createGrid(): boolean[][] {\n const rows = 50;\n const cols = (this.dashboardRef as any).numberOfCols;\n\n const grid = Array.from({ length: rows }, () => Array.from({ length: cols }, () => false));\n\n this.activeWidgets.forEach(widget => {\n for (let i = 0; i < widget.height; i++) {\n for (let j = 0; j < widget.width; j++) {\n grid[widget.y + i][widget.x + j] = true;\n }\n }\n });\n\n return grid;\n }\n\n getCoordinates(width: number, height: number): { y: number; x: number } {\n const grid = this.createGrid();\n const areal = width * height;\n\n for (let y = 0; y <= grid.length; y++) {\n for (let x = 0; x <= grid[y].length - width; x++) {\n if (!grid[y][x]) {\n let tooBig = false;\n let arealCounter = 0;\n\n for (let i = 0; i < height; i++) {\n for (let j = 0; j < width; j++) {\n if (grid[y + i][x + j]) {\n tooBig = true;\n break;\n } else {\n arealCounter++;\n }\n\n if (arealCounter === areal) {\n return { y, x };\n }\n }\n\n if (tooBig) {\n break;\n }\n }\n }\n }\n }\n\n return { y: 0, x: 0 };\n }\n\n //NOTE: setting minWidth/minHeight on items creates a bug with the placeholder where it gets stuck on the minWidth\n //of the previous item when trying to move/resize another item with different values.\n //This bug is in the vue-responsive-dash library, so we should not use minWidth/minHeight unless this is fixed in an update.\n async addNewWidget(type: WidgetType): Promise {\n let config;\n\n try {\n if (type.usingConfig) {\n switch (type.template) {\n case \"VesselDataWidget\":\n if (type.displayType === \"VesselDataTable\") config = await VesselDataWidgetConfiguration.newEmptyVesselDataWidgetConfig(\"VesselDataTable\");\n if (type.displayType === \"VesselDataGraph\") config = await VesselDataWidgetConfiguration.newEmptyVesselDataWidgetConfig(\"VesselDataGraph\");\n break;\n case WidgetTypes.performanceStatus.template:\n config = await PerfStatus.addNewConfig();\n break;\n case WidgetTypes.notification.template:\n config = await NotificationWidgetConfiguration.addNewConfig();\n break;\n case WidgetTypes.emissions.template:\n config = await CiiWidgetConfiguration.addNewConfig();\n break;\n case WidgetTypes.foulingOverview.template:\n config = await FoulingOverviewWidgetConfiguration.addNewConfig();\n break;\n }\n }\n\n const coordinates = this.getCoordinates(type.defaultWidth, type.defaultHeight);\n const widget: Widget = {\n id: 0,\n name: config ? type.defaultName : type.defaultName,\n x: coordinates.x,\n y: coordinates.y,\n width: type.defaultWidth,\n height: type.defaultHeight,\n active: true,\n configId: config ? config.id : -1,\n type: type,\n typeTemplate: type.displayType ? type.displayType : type.template,\n };\n\n const updatedDashboard = await Dash.addWidget(widget);\n //setting the id returned from database so we can target the DOM element using id.\n widget.id = updatedDashboard.widgets[updatedDashboard.widgets.length - 1].id;\n\n this.scrollAndHighlightElement(widget.id);\n } catch (error) {\n console.error(\"Creating new widget failed\", error);\n\n Snackbar.showSnackbar({\n text: \"Creating new widget failed.\",\n });\n\n return;\n }\n }\n\n async toggleWidgetActive(widget: Widget): Promise {\n if (widget.active) {\n try {\n await Dash.updateWidget({ id: widget.id, active: false });\n } catch (error) {\n console.error(\"Deactivating widget failed\", error);\n\n Snackbar.showSnackbar({\n text: \"Deactivating widget failed.\",\n });\n\n return;\n }\n\n if (!this.activeWidgets.length) {\n this.editMode = false;\n }\n } else {\n try {\n const coordinates = this.getCoordinates(widget.width, widget.height);\n await Dash.updateWidget({ id: widget.id, active: true, y: coordinates.y, x: coordinates.x });\n } catch (error) {\n console.error(\"Activating widget failed\", error);\n\n Snackbar.showSnackbar({\n text: \"Activating widget failed.\",\n });\n\n return;\n }\n\n this.scrollAndHighlightElement(widget.id);\n }\n }\n\n scrollAndHighlightElement(id: string | number): void {\n setTimeout(() => {\n const newElement = document.getElementById(\"item_\" + id);\n\n if (newElement) {\n newElement.scrollIntoView({ behavior: \"smooth\" });\n newElement.classList.add(\"highlight\");\n }\n }, 100);\n }\n\n beforeDestroy(): void {\n Snackbar.close();\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Dashboard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Dashboard.vue?vue&type=script&lang=ts&\"","// Styles\nimport './VBanner.sass'\n\n// Extensions\nimport VSheet from '../VSheet'\n\n// Components\nimport VAvatar from '../VAvatar'\nimport VIcon from '../VIcon'\nimport { VExpandTransition } from '../transitions'\n\n// Mixins\nimport Mobile from '../../mixins/mobile'\nimport Toggleable from '../../mixins/toggleable'\n\n// Utilities\nimport mixins from '../../util/mixins'\nimport {\n convertToUnit,\n getSlot,\n} from '../../util/helpers'\n\n// Typeslint\nimport { VNode } from 'vue'\n\n/* @vue/component */\nexport default mixins(\n VSheet,\n Mobile,\n Toggleable\n).extend({\n name: 'v-banner',\n\n inheritAttrs: false,\n\n props: {\n app: Boolean,\n icon: String,\n iconColor: String,\n singleLine: Boolean,\n sticky: Boolean,\n value: {\n type: Boolean,\n default: true,\n },\n },\n\n computed: {\n classes (): object {\n return {\n ...VSheet.options.computed.classes.call(this),\n 'v-banner--has-icon': this.hasIcon,\n 'v-banner--is-mobile': this.isMobile,\n 'v-banner--single-line': this.singleLine,\n 'v-banner--sticky': this.isSticky,\n }\n },\n hasIcon (): boolean {\n return Boolean(this.icon || this.$slots.icon)\n },\n isSticky (): boolean {\n return this.sticky || this.app\n },\n styles (): object {\n const styles: Record = { ...VSheet.options.computed.styles.call(this) }\n\n if (this.isSticky) {\n const top = !this.app\n ? 0\n : (this.$vuetify.application.bar + this.$vuetify.application.top)\n\n styles.top = convertToUnit(top)\n styles.position = 'sticky'\n styles.zIndex = 1\n }\n\n return styles\n },\n },\n\n methods: {\n /** @public */\n toggle () {\n this.isActive = !this.isActive\n },\n iconClick (e: MouseEvent) {\n this.$emit('click:icon', e)\n },\n genIcon () {\n if (!this.hasIcon) return undefined\n\n let content\n\n if (this.icon) {\n content = this.$createElement(VIcon, {\n props: {\n color: this.iconColor,\n size: 28,\n },\n }, [this.icon])\n } else {\n content = this.$slots.icon\n }\n\n return this.$createElement(VAvatar, {\n staticClass: 'v-banner__icon',\n props: {\n color: this.color,\n size: 40,\n },\n on: {\n click: this.iconClick,\n },\n }, [content])\n },\n genText () {\n return this.$createElement('div', {\n staticClass: 'v-banner__text',\n }, this.$slots.default)\n },\n genActions () {\n const children = getSlot(this, 'actions', {\n dismiss: () => this.isActive = false,\n })\n\n if (!children) return undefined\n\n return this.$createElement('div', {\n staticClass: 'v-banner__actions',\n }, children)\n },\n genContent () {\n return this.$createElement('div', {\n staticClass: 'v-banner__content',\n }, [\n this.genIcon(),\n this.genText(),\n ])\n },\n genWrapper () {\n return this.$createElement('div', {\n staticClass: 'v-banner__wrapper',\n }, [\n this.genContent(),\n this.genActions(),\n ])\n },\n },\n\n render (h): VNode {\n const data = {\n staticClass: 'v-banner',\n attrs: this.attrs$,\n class: this.classes,\n style: this.styles,\n directives: [{\n name: 'show',\n value: this.isActive,\n }],\n }\n\n return h(VExpandTransition, [\n h(\n 'div',\n this.outlined ? data : this.setBackgroundColor(this.color, data),\n [this.genWrapper()],\n ),\n ])\n },\n})\n","// Styles\nimport './VSpeedDial.sass'\n\n// Mixins\nimport Toggleable from '../../mixins/toggleable'\nimport Positionable from '../../mixins/positionable'\nimport Transitionable from '../../mixins/transitionable'\n\n// Directives\nimport ClickOutside from '../../directives/click-outside'\n\n// Types\nimport mixins from '../../util/mixins'\nimport { VNode, VNodeData } from 'vue'\nimport { Prop } from 'vue/types/options'\n\n/* @vue/component */\nexport default mixins(Positionable, Toggleable, Transitionable).extend({\n name: 'v-speed-dial',\n\n directives: { ClickOutside },\n\n props: {\n direction: {\n type: String as Prop<'top' | 'right' | 'bottom' | 'left'>,\n default: 'top',\n validator: (val: string) => {\n return ['top', 'right', 'bottom', 'left'].includes(val)\n },\n },\n openOnHover: Boolean,\n transition: {\n type: String,\n default: 'scale-transition',\n },\n },\n\n computed: {\n classes (): object {\n return {\n 'v-speed-dial': true,\n 'v-speed-dial--top': this.top,\n 'v-speed-dial--right': this.right,\n 'v-speed-dial--bottom': this.bottom,\n 'v-speed-dial--left': this.left,\n 'v-speed-dial--absolute': this.absolute,\n 'v-speed-dial--fixed': this.fixed,\n [`v-speed-dial--direction-${this.direction}`]: true,\n 'v-speed-dial--is-active': this.isActive,\n }\n },\n },\n\n render (h): VNode {\n let children: VNode[] = []\n const data: VNodeData = {\n class: this.classes,\n directives: [{\n name: 'click-outside',\n value: () => (this.isActive = false),\n }],\n on: {\n click: () => (this.isActive = !this.isActive),\n },\n }\n\n if (this.openOnHover) {\n data.on!.mouseenter = () => (this.isActive = true)\n data.on!.mouseleave = () => (this.isActive = false)\n }\n\n if (this.isActive) {\n let btnCount = 0\n children = (this.$slots.default || []).map((b, i) => {\n if (b.tag && typeof b.componentOptions !== 'undefined' && (b.componentOptions.Ctor.options.name === 'v-btn' || b.componentOptions.Ctor.options.name === 'v-tooltip')) {\n btnCount++\n return h('div', {\n style: {\n transitionDelay: btnCount * 0.05 + 's',\n },\n key: i,\n }, [b])\n } else {\n b.key = i\n return b\n }\n })\n }\n\n const list = h('transition-group', {\n class: 'v-speed-dial__list',\n props: {\n name: this.transition,\n mode: this.mode,\n origin: this.origin,\n tag: 'div',\n },\n }, children)\n\n return h('div', data, [this.$slots.activator, list])\n },\n})\n","import { render, staticRenderFns } from \"./Dashboard.vue?vue&type=template&id=57cb9eee&\"\nimport script from \"./Dashboard.vue?vue&type=script&lang=ts&\"\nexport * from \"./Dashboard.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Dashboard.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBanner } from 'vuetify/lib/components/VBanner';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCheckbox } from 'vuetify/lib/components/VCheckbox';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VFabTransition } from 'vuetify/lib/components/transitions';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VSpeedDial } from 'vuetify/lib/components/VSpeedDial';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VBanner,VBtn,VCard,VCardActions,VCardText,VCheckbox,VDialog,VFabTransition,VIcon,VSpacer,VSpeedDial,VToolbar,VToolbarTitle,VTooltip})\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoadingTextWave.vue?vue&type=style&index=0&id=10fd63c9&scoped=true&lang=scss&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=bdadc664&scoped=true&lang=scss&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MapWidget.vue?vue&type=style&index=0&id=3e5b20f9&lang=scss&scoped=true&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LogVariablesColumn.vue?vue&type=style&index=0&id=9e294684&scoped=true&lang=scss&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WidgetEditDialog.vue?vue&type=style&index=0&id=4cf9fc61&scoped=true&lang=scss&\"","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.DispatcherBase = void 0;\r\nconst __1 = require(\"..\");\r\n/**\r\n * Base class for implementation of the dispatcher. It facilitates the subscribe\r\n * and unsubscribe methods based on generic handlers. The TEventType specifies\r\n * the type of event that should be exposed. Use the asEvent to expose the\r\n * dispatcher as event.\r\n *\r\n * @export\r\n * @abstract\r\n * @class DispatcherBase\r\n * @implements {ISubscribable}\r\n * @template TEventHandler The type of event handler.\r\n */\r\nclass DispatcherBase {\r\n constructor() {\r\n /**\r\n * The subscriptions.\r\n *\r\n * @protected\r\n *\r\n * @memberOf DispatcherBase\r\n */\r\n this._subscriptions = new Array();\r\n }\r\n /**\r\n * Returns the number of subscriptions.\r\n *\r\n * @readonly\r\n * @type {number}\r\n * @memberOf DispatcherBase\r\n */\r\n get count() {\r\n return this._subscriptions.length;\r\n }\r\n /**\r\n * Triggered when subscriptions are changed (added or removed).\r\n *\r\n * @readonly\r\n * @type {ISubscribable}\r\n * @memberOf DispatcherBase\r\n */\r\n get onSubscriptionChange() {\r\n if (this._onSubscriptionChange == null) {\r\n this._onSubscriptionChange = new __1.SubscriptionChangeEventDispatcher();\r\n }\r\n return this._onSubscriptionChange.asEvent();\r\n }\r\n /**\r\n * Subscribe to the event dispatcher.\r\n *\r\n * @param {TEventHandler} fn The event handler that is called when the event is dispatched.\r\n * @returns A function that unsubscribes the event handler from the event.\r\n *\r\n * @memberOf DispatcherBase\r\n */\r\n subscribe(fn) {\r\n if (fn) {\r\n this._subscriptions.push(this.createSubscription(fn, false));\r\n this.triggerSubscriptionChange();\r\n }\r\n return () => {\r\n this.unsubscribe(fn);\r\n };\r\n }\r\n /**\r\n * Subscribe to the event dispatcher.\r\n *\r\n * @param {TEventHandler} fn The event handler that is called when the event is dispatched.\r\n * @returns A function that unsubscribes the event handler from the event.\r\n *\r\n * @memberOf DispatcherBase\r\n */\r\n sub(fn) {\r\n return this.subscribe(fn);\r\n }\r\n /**\r\n * Subscribe once to the event with the specified name.\r\n *\r\n * @param {TEventHandler} fn The event handler that is called when the event is dispatched.\r\n * @returns A function that unsubscribes the event handler from the event.\r\n *\r\n * @memberOf DispatcherBase\r\n */\r\n one(fn) {\r\n if (fn) {\r\n this._subscriptions.push(this.createSubscription(fn, true));\r\n this.triggerSubscriptionChange();\r\n }\r\n return () => {\r\n this.unsubscribe(fn);\r\n };\r\n }\r\n /**\r\n * Checks it the event has a subscription for the specified handler.\r\n *\r\n * @param {TEventHandler} fn The event handler.\r\n *\r\n * @memberOf DispatcherBase\r\n */\r\n has(fn) {\r\n if (!fn)\r\n return false;\r\n return this._subscriptions.some((sub) => sub.handler == fn);\r\n }\r\n /**\r\n * Unsubscribes the handler from the dispatcher.\r\n *\r\n * @param {TEventHandler} fn The event handler.\r\n *\r\n * @memberOf DispatcherBase\r\n */\r\n unsubscribe(fn) {\r\n if (!fn)\r\n return;\r\n let changes = false;\r\n for (let i = 0; i < this._subscriptions.length; i++) {\r\n if (this._subscriptions[i].handler == fn) {\r\n this._subscriptions.splice(i, 1);\r\n changes = true;\r\n break;\r\n }\r\n }\r\n if (changes) {\r\n this.triggerSubscriptionChange();\r\n }\r\n }\r\n /**\r\n * Unsubscribes the handler from the dispatcher.\r\n *\r\n * @param {TEventHandler} fn The event handler.\r\n *\r\n * @memberOf DispatcherBase\r\n */\r\n unsub(fn) {\r\n this.unsubscribe(fn);\r\n }\r\n /**\r\n * Generic dispatch will dispatch the handlers with the given arguments.\r\n *\r\n * @protected\r\n * @param {boolean} executeAsync `True` if the even should be executed async.\r\n * @param {*} scope The scope of the event. The scope becomes the `this` for handler.\r\n * @param {IArguments} args The arguments for the event.\r\n * @returns {(IPropagationStatus | null)} The propagation status, or if an `executeAsync` is used `null`.\r\n *\r\n * @memberOf DispatcherBase\r\n */\r\n _dispatch(executeAsync, scope, args) {\r\n //execute on a copy because of bug #9\r\n for (let sub of [...this._subscriptions]) {\r\n let ev = new __1.EventManagement(() => this.unsub(sub.handler));\r\n let nargs = Array.prototype.slice.call(args);\r\n nargs.push(ev);\r\n let s = sub;\r\n s.execute(executeAsync, scope, nargs);\r\n //cleanup subs that are no longer needed\r\n this.cleanup(sub);\r\n if (!executeAsync && ev.propagationStopped) {\r\n return { propagationStopped: true };\r\n }\r\n }\r\n if (executeAsync) {\r\n return null;\r\n }\r\n return { propagationStopped: false };\r\n }\r\n /**\r\n * Creates a subscription.\r\n *\r\n * @protected\r\n * @param {TEventHandler} handler The handler.\r\n * @param {boolean} isOnce True if the handler should run only one.\r\n * @returns {ISubscription} The subscription.\r\n *\r\n * @memberOf DispatcherBase\r\n */\r\n createSubscription(handler, isOnce) {\r\n return new __1.Subscription(handler, isOnce);\r\n }\r\n /**\r\n * Cleans up subs that ran and should run only once.\r\n *\r\n * @protected\r\n * @param {ISubscription} sub The subscription.\r\n *\r\n * @memberOf DispatcherBase\r\n */\r\n cleanup(sub) {\r\n let changes = false;\r\n if (sub.isOnce && sub.isExecuted) {\r\n let i = this._subscriptions.indexOf(sub);\r\n if (i > -1) {\r\n this._subscriptions.splice(i, 1);\r\n changes = true;\r\n }\r\n }\r\n if (changes) {\r\n this.triggerSubscriptionChange();\r\n }\r\n }\r\n /**\r\n * Creates an event from the dispatcher. Will return the dispatcher\r\n * in a wrapper. This will prevent exposure of any dispatcher methods.\r\n *\r\n * @returns {ISubscribable}\r\n *\r\n * @memberOf DispatcherBase\r\n */\r\n asEvent() {\r\n if (this._wrap == null) {\r\n this._wrap = new __1.DispatcherWrapper(this);\r\n }\r\n return this._wrap;\r\n }\r\n /**\r\n * Clears the subscriptions.\r\n *\r\n * @memberOf DispatcherBase\r\n */\r\n clear() {\r\n if (this._subscriptions.length != 0) {\r\n this._subscriptions.splice(0, this._subscriptions.length);\r\n this.triggerSubscriptionChange();\r\n }\r\n }\r\n /**\r\n * Triggers the subscription change event.\r\n *\r\n * @private\r\n *\r\n * @memberOf DispatcherBase\r\n */\r\n triggerSubscriptionChange() {\r\n if (this._onSubscriptionChange != null) {\r\n this._onSubscriptionChange.dispatch(this.count);\r\n }\r\n }\r\n}\r\nexports.DispatcherBase = DispatcherBase;\r\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DashItem.vue?vue&type=style&index=0&id=686fe940&scoped=true&lang=css&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DashLayout.vue?vue&type=style&index=0&id=9d8e0e52&scoped=true&lang=css&\"","module.exports = __webpack_public_path__ + \"img/dashboardillustration.b09685e6.jpg\";","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=f1fceebe&scoped=true&lang=scss&\"","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.HandlingBase = void 0;\r\n/**\r\n * Base class that implements event handling. With a an\r\n * event list this base class will expose events that can be\r\n * subscribed to. This will give your class generic events.\r\n *\r\n * @export\r\n * @abstract\r\n * @class HandlingBase\r\n * @template TEventHandler The type of event handler.\r\n * @template TDispatcher The type of dispatcher.\r\n * @template TList The type of event list.\r\n */\r\nclass HandlingBase {\r\n /**\r\n * Creates an instance of HandlingBase.\r\n * @param {TList} events The event list. Used for event management.\r\n *\r\n * @memberOf HandlingBase\r\n */\r\n constructor(events) {\r\n this.events = events;\r\n }\r\n /**\r\n * Subscribes once to the event with the specified name.\r\n * @param {string} name The name of the event.\r\n * @param {TEventHandler} fn The event handler.\r\n *\r\n * @memberOf HandlingBase\r\n */\r\n one(name, fn) {\r\n this.events.get(name).one(fn);\r\n }\r\n /**\r\n * Checks it the event has a subscription for the specified handler.\r\n * @param {string} name The name of the event.\r\n * @param {TEventHandler} fn The event handler.\r\n *\r\n * @memberOf HandlingBase\r\n */\r\n has(name, fn) {\r\n return this.events.get(name).has(fn);\r\n }\r\n /**\r\n * Subscribes to the event with the specified name.\r\n * @param {string} name The name of the event.\r\n * @param {TEventHandler} fn The event handler.\r\n *\r\n * @memberOf HandlingBase\r\n */\r\n subscribe(name, fn) {\r\n this.events.get(name).subscribe(fn);\r\n }\r\n /**\r\n * Subscribes to the event with the specified name.\r\n * @param {string} name The name of the event.\r\n * @param {TEventHandler} fn The event handler.\r\n *\r\n * @memberOf HandlingBase\r\n */\r\n sub(name, fn) {\r\n this.subscribe(name, fn);\r\n }\r\n /**\r\n * Unsubscribes from the event with the specified name.\r\n * @param {string} name The name of the event.\r\n * @param {TEventHandler} fn The event handler.\r\n *\r\n * @memberOf HandlingBase\r\n */\r\n unsubscribe(name, fn) {\r\n this.events.get(name).unsubscribe(fn);\r\n }\r\n /**\r\n * Unsubscribes from the event with the specified name.\r\n * @param {string} name The name of the event.\r\n * @param {TEventHandler} fn The event handler.\r\n *\r\n * @memberOf HandlingBase\r\n */\r\n unsub(name, fn) {\r\n this.unsubscribe(name, fn);\r\n }\r\n}\r\nexports.HandlingBase = HandlingBase;\r\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Dashboard.vue?vue&type=style&index=0&lang=scss&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _vm._m(0)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"loading-text d-flex justify-center\"},[_c('div',[_vm._v(\"L\")]),_c('div',[_vm._v(\"O\")]),_c('div',[_vm._v(\"A\")]),_c('div',[_vm._v(\"D\")]),_c('div',[_vm._v(\"I\")]),_c('div',[_vm._v(\"N\")]),_c('div',[_vm._v(\"G\")]),_c('div',[_vm._v(\".\")]),_c('div',[_vm._v(\".\")]),_c('div',[_vm._v(\".\")])])}]\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoadingTextWave.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoadingTextWave.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LoadingTextWave.vue?vue&type=template&id=10fd63c9&scoped=true&\"\nimport script from \"./LoadingTextWave.vue?vue&type=script&lang=js&\"\nexport * from \"./LoadingTextWave.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LoadingTextWave.vue?vue&type=style&index=0&id=10fd63c9&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"10fd63c9\",\n null\n \n)\n\nexport default component.exports","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.NonUniformSimpleEventList = void 0;\r\nconst SimpleEventDispatcher_1 = require(\"./SimpleEventDispatcher\");\r\n/**\r\n * Similar to EventList, but instead of TArgs, a map of event names ang argument types is provided with TArgsMap.\r\n */\r\nclass NonUniformSimpleEventList {\r\n constructor() {\r\n this._events = {};\r\n }\r\n /**\r\n * Gets the dispatcher associated with the name.\r\n * @param name The name of the event.\r\n */\r\n get(name) {\r\n if (this._events[name]) {\r\n // @TODO avoid typecasting. Not sure why TS thinks this._events[name] could still be undefined.\r\n return this._events[name];\r\n }\r\n const event = this.createDispatcher();\r\n this._events[name] = event;\r\n return event;\r\n }\r\n /**\r\n * Removes the dispatcher associated with the name.\r\n * @param name The name of the event.\r\n */\r\n remove(name) {\r\n delete this._events[name];\r\n }\r\n /**\r\n * Creates a new dispatcher instance.\r\n */\r\n createDispatcher() {\r\n return new SimpleEventDispatcher_1.SimpleEventDispatcher();\r\n }\r\n}\r\nexports.NonUniformSimpleEventList = NonUniformSimpleEventList;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SimpleEventDispatcher = void 0;\r\nconst ste_core_1 = require(\"ste-core\");\r\n/**\r\n * The dispatcher handles the storage of subsciptions and facilitates\r\n * subscription, unsubscription and dispatching of a simple event\r\n *\r\n * @export\r\n * @class SimpleEventDispatcher\r\n * @extends {DispatcherBase>}\r\n * @implements {ISimpleEvent}\r\n * @template TArgs\r\n */\r\nclass SimpleEventDispatcher extends ste_core_1.DispatcherBase {\r\n /**\r\n * Creates an instance of SimpleEventDispatcher.\r\n *\r\n * @memberOf SimpleEventDispatcher\r\n */\r\n constructor() {\r\n super();\r\n }\r\n /**\r\n * Dispatches the event.\r\n *\r\n * @param {TArgs} args The arguments object.\r\n * @returns {IPropagationStatus} The status of the event.\r\n *\r\n * @memberOf SimpleEventDispatcher\r\n */\r\n dispatch(args) {\r\n const result = this._dispatch(false, this, arguments);\r\n if (result == null) {\r\n throw new ste_core_1.DispatchError(\"Got `null` back from dispatch.\");\r\n }\r\n return result;\r\n }\r\n /**\r\n * Dispatches the event without waiting for the result.\r\n *\r\n * @param {TArgs} args The arguments object.\r\n *\r\n * @memberOf SimpleEventDispatcher\r\n */\r\n dispatchAsync(args) {\r\n this._dispatch(true, this, arguments);\r\n }\r\n /**\r\n * Creates an event from the dispatcher. Will return the dispatcher\r\n * in a wrapper. This will prevent exposure of any dispatcher methods.\r\n *\r\n * @returns {ISimpleEvent} The event.\r\n *\r\n * @memberOf SimpleEventDispatcher\r\n */\r\n asEvent() {\r\n return super.asEvent();\r\n }\r\n}\r\nexports.SimpleEventDispatcher = SimpleEventDispatcher;\r\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WelcomeWidget.vue?vue&type=style&index=0&id=17cfd4d0&scoped=true&lang=scss&\"","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.NonUniformSimpleEventList = exports.SimpleEventList = exports.SimpleEventHandlingBase = exports.SimpleEventDispatcher = void 0;\r\nconst SimpleEventDispatcher_1 = require(\"./SimpleEventDispatcher\");\r\nObject.defineProperty(exports, \"SimpleEventDispatcher\", { enumerable: true, get: function () { return SimpleEventDispatcher_1.SimpleEventDispatcher; } });\r\nconst SimpleEventHandlingBase_1 = require(\"./SimpleEventHandlingBase\");\r\nObject.defineProperty(exports, \"SimpleEventHandlingBase\", { enumerable: true, get: function () { return SimpleEventHandlingBase_1.SimpleEventHandlingBase; } });\r\nconst NonUniformSimpleEventList_1 = require(\"./NonUniformSimpleEventList\");\r\nObject.defineProperty(exports, \"NonUniformSimpleEventList\", { enumerable: true, get: function () { return NonUniformSimpleEventList_1.NonUniformSimpleEventList; } });\r\nconst SimpleEventList_1 = require(\"./SimpleEventList\");\r\nObject.defineProperty(exports, \"SimpleEventList\", { enumerable: true, get: function () { return SimpleEventList_1.SimpleEventList; } });\r\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DashboardControlDialog.vue?vue&type=style&index=0&lang=scss&\""],"sourceRoot":""}