{"version":3,"sources":["webpack:///./node_modules/core-js/modules/es.regexp.test.js","webpack:///./node_modules/echarts/lib/component/dataset.js","webpack:///./node_modules/zrender/lib/core/timsort.js","webpack:///./node_modules/zrender/lib/contain/polygon.js","webpack:///./node_modules/zrender/lib/animation/Animator.js","webpack:///./node_modules/zrender/lib/core/GestureMgr.js","webpack:///./node_modules/zrender/lib/mixin/Transformable.js","webpack:///./node_modules/zrender/lib/graphic/Image.js","webpack:///./src/@core/utils/filter.js","webpack:///./node_modules/echarts/lib/data/helper/sourceHelper.js","webpack:///./node_modules/core-js/internals/string-repeat.js","webpack:///./node_modules/bootstrap-vue/esm/components/form/form.js","webpack:///./node_modules/echarts/lib/helper.js","webpack:///./src/views/pages/Tasks/Todo.vue?b642","webpack:///./node_modules/zrender/lib/core/matrix.js","webpack:///./node_modules/echarts/lib/scale/Ordinal.js","webpack:///./node_modules/zrender/lib/graphic/Displayable.js","webpack:///./src/@core/comp-functions/ui/app.js","webpack:///./src/views/pages/Tasks/Todo.vue?7e25","webpack:///./node_modules/zrender/lib/mixin/Eventful.js","webpack:///./node_modules/base64-js/index.js","webpack:///./node_modules/echarts/lib/coord/axisModelCommonMixin.js","webpack:///./node_modules/echarts/lib/CoordinateSystem.js","webpack:///./node_modules/zrender/lib/core/PathProxy.js","webpack:///./node_modules/echarts/lib/scale/Time.js","webpack:///./node_modules/zrender/lib/core/env.js","webpack:///./node_modules/echarts/lib/util/graphic.js","webpack:///./node_modules/core-js/modules/es.regexp.to-string.js","webpack:///./node_modules/echarts/lib/preprocessor/helper/compatStyle.js","webpack:///./src/views/pages/Tasks/TodoTaskHandlerSidebar.vue?0213","webpack:///./node_modules/echarts/lib/model/mixin/makeStyleMapper.js","webpack:///./src/assets/images/avatars/1-small.png","webpack:///./node_modules/echarts/lib/lang.js","webpack:///./node_modules/echarts/lib/data/helper/dataProvider.js","webpack:///./node_modules/zrender/lib/graphic/Style.js","webpack:///./node_modules/zrender/lib/config.js","webpack:///./node_modules/echarts/lib/data/helper/dimensionHelper.js","webpack:///./node_modules/zrender/lib/tool/parseSVG.js","webpack:///./node_modules/zrender/lib/animation/Animation.js","webpack:///./node_modules/bootstrap-vue/esm/components/list-group/list-group.js","webpack:///./node_modules/echarts/lib/chart/helper/createListFromArray.js","webpack:///./node_modules/zrender/lib/tool/path.js","webpack:///./node_modules/bootstrap-vue/esm/components/input-group/input-group-prepend.js","webpack:///./node_modules/echarts/lib/util/number.js","webpack:///./node_modules/echarts/lib/model/mixin/dataFormat.js","webpack:///./node_modules/echarts/lib/model/mixin/lineStyle.js","webpack:///./node_modules/zrender/lib/graphic/IncrementalDisplayable.js","webpack:///./src/views/components/MultiStateSwitch.vue?4792","webpack:///src/views/components/MultiStateSwitch.vue","webpack:///./src/views/components/MultiStateSwitch.vue?a779","webpack:///./src/views/components/MultiStateSwitch.vue","webpack:///./src/views/pages/Tasks/Todo.vue?5ec0","webpack:///./node_modules/echarts/lib/echarts.js","webpack:///./node_modules/zrender/lib/core/vector.js","webpack:///./node_modules/core-js/internals/this-number-value.js","webpack:///./node_modules/zrender/lib/tool/color.js","webpack:///./node_modules/zrender/lib/graphic/Gradient.js","webpack:///./node_modules/echarts/lib/model/Model.js","webpack:///./node_modules/zrender/lib/animation/Clip.js","webpack:///./node_modules/zrender/lib/graphic/shape/Ring.js","webpack:///./node_modules/bootstrap-vue/esm/components/input-group/input-group-addon.js","webpack:///./node_modules/zrender/lib/graphic/LinearGradient.js","webpack:///./node_modules/zrender/lib/core/log.js","webpack:///./node_modules/zrender/lib/core/curve.js","webpack:///./node_modules/vue-select/dist/vue-select.js","webpack:///./node_modules/zrender/lib/graphic/shape/Sector.js","webpack:///./node_modules/echarts/lib/config.js","webpack:///./node_modules/echarts/lib/model/Series.js","webpack:///./node_modules/zrender/lib/graphic/helper/poly.js","webpack:///./node_modules/echarts/lib/model/mixin/itemStyle.js","webpack:///./node_modules/echarts/lib/data/DataDimensionInfo.js","webpack:///./node_modules/zrender/lib/graphic/helper/roundRect.js","webpack:///./node_modules/bootstrap-vue/esm/components/input-group/input-group.js","webpack:///./node_modules/zrender/lib/Layer.js","webpack:///./node_modules/zrender/lib/graphic/helper/image.js","webpack:///./node_modules/flatpickr/dist/esm/types/options.js","webpack:///./node_modules/flatpickr/dist/esm/l10n/default.js","webpack:///./node_modules/flatpickr/dist/esm/utils/index.js","webpack:///./node_modules/flatpickr/dist/esm/utils/dom.js","webpack:///./node_modules/flatpickr/dist/esm/utils/formatting.js","webpack:///./node_modules/flatpickr/dist/esm/utils/dates.js","webpack:///./node_modules/flatpickr/dist/esm/index.js","webpack:///./src/views/pages/Tasks/Todo.vue?fbc4","webpack:///./node_modules/bootstrap-vue/esm/components/sidebar/sidebar.js","webpack:///./src/views/pages/Tasks/TodoLeftSidebar.vue?1315","webpack:///src/views/pages/Tasks/TodoLeftSidebar.vue","webpack:///./src/views/pages/Tasks/TodoLeftSidebar.vue?aa3b","webpack:///./src/views/pages/Tasks/TodoLeftSidebar.vue","webpack:///./src/views/pages/Tasks/TodoTaskHandlerSidebar.vue?774a","webpack:///./src/@core/comp-functions/forms/form-validation.js","webpack:///./src/views/pages/Tasks/useTaskHandler.js","webpack:///src/views/pages/Tasks/TodoTaskHandlerSidebar.vue","webpack:///./src/views/pages/Tasks/TodoTaskHandlerSidebar.vue?8625","webpack:///./src/views/pages/Tasks/TodoTaskHandlerSidebar.vue","webpack:///src/views/pages/Tasks/Todo.vue","webpack:///./src/views/pages/Tasks/Todo.vue?4ae6","webpack:///./src/views/pages/Tasks/Todo.vue","webpack:///./node_modules/zrender/lib/core/event.js","webpack:///./node_modules/echarts/lib/data/List.js","webpack:///./node_modules/zrender/lib/graphic/helper/smoothSpline.js","webpack:///./node_modules/echarts/lib/util/clazz.js","webpack:///./node_modules/zrender/lib/core/dom.js","webpack:///./node_modules/zrender/lib/contain/quadratic.js","webpack:///./node_modules/echarts/lib/coord/axisHelper.js","webpack:///./node_modules/zrender/lib/zrender.js","webpack:///./node_modules/echarts/lib/stream/Scheduler.js","webpack:///./node_modules/echarts/lib/model/Component.js","webpack:///./node_modules/zrender/lib/core/util.js","webpack:///./node_modules/flatpickr/dist/esm/utils/polyfills.js","webpack:///./node_modules/zrender/lib/animation/easing.js","webpack:///./node_modules/zrender/lib/graphic/Text.js","webpack:///./node_modules/vee-validate/dist/vee-validate.esm.js","webpack:///./node_modules/zrender/lib/graphic/helper/fixShadow.js","webpack:///./node_modules/echarts/lib/model/Global.js","webpack:///./src/views/pages/Tasks/TodoTaskHandlerSidebar.vue?7999","webpack:///./node_modules/echarts/lib/data/DataDiffer.js","webpack:///./node_modules/zrender/lib/graphic/constant.js","webpack:///./node_modules/echarts/lib/ExtensionAPI.js","webpack:///./node_modules/echarts/lib/coord/Axis.js","webpack:///./node_modules/zrender/lib/core/fourPointsTransform.js","webpack:///./node_modules/zrender/lib/contain/util.js","webpack:///./node_modules/echarts/lib/data/helper/completeDimensions.js","webpack:///./node_modules/zrender/lib/contain/windingLine.js","webpack:///./node_modules/zrender/lib/graphic/shape/Polygon.js","webpack:///./node_modules/echarts/lib/util/throttle.js","webpack:///./node_modules/echarts/lib/util/component.js","webpack:///./node_modules/echarts/lib/model/globalDefault.js","webpack:///./node_modules/zrender/lib/graphic/helper/fixClipWithShadow.js","webpack:///./node_modules/echarts/lib/scale/Interval.js","webpack:///./node_modules/echarts/lib/model/referHelper.js","webpack:///./node_modules/echarts/lib/scale/Log.js","webpack:///./node_modules/zrender/lib/graphic/shape/Arc.js","webpack:///./node_modules/echarts/lib/data/OrdinalMeta.js","webpack:///./node_modules/vee-validate/dist/rules.js","webpack:///./src/@core/utils/validations/validators.js","webpack:///./src/@core/utils/validations/validations.js","webpack:///./node_modules/ieee754/index.js","webpack:///./node_modules/quill/dist/quill.js","webpack:///./node_modules/echarts/lib/data/helper/sourceType.js","webpack:///./node_modules/echarts/lib/scale/helper.js","webpack:///./node_modules/vue-quill-editor/dist/vue-quill-editor.js","webpack:///./node_modules/zrender/lib/contain/line.js","webpack:///./node_modules/zrender/lib/core/BoundingRect.js","webpack:///./node_modules/zrender/lib/animation/requestAnimationFrame.js","webpack:///./node_modules/echarts/lib/loading/default.js","webpack:///./node_modules/echarts/lib/model/mixin/areaStyle.js","webpack:///./node_modules/zrender/lib/graphic/helper/smoothBezier.js","webpack:///./node_modules/bootstrap-vue/esm/directives/visible/visible.js","webpack:///./node_modules/bootstrap-vue/esm/components/form-textarea/form-textarea.js","webpack:///./node_modules/zrender/lib/graphic/helper/subPixelOptimize.js","webpack:///./node_modules/echarts/lib/layout/barGrid.js","webpack:///./node_modules/vue-perfect-scrollbar/dist/index.js","webpack:///./node_modules/zrender/lib/graphic/mixin/RectText.js","webpack:///./node_modules/zrender/lib/contain/arc.js","webpack:///./node_modules/echarts/lib/util/symbol.js","webpack:///./node_modules/core-js/modules/es.array.splice.js","webpack:///./node_modules/zrender/lib/graphic/helper/text.js","webpack:///./src/assets/images/avatars/3-small.png","webpack:///./node_modules/bootstrap-vue/esm/mixins/form-custom.js","webpack:///./node_modules/sortablejs/modular/sortable.esm.js","webpack:///./node_modules/zrender/lib/graphic/shape/BezierCurve.js","webpack:///./node_modules/zrender/lib/graphic/shape/Ellipse.js","webpack:///./src/assets/images/avatars/7-small.png","webpack:///./node_modules/zrender/lib/Storage.js","webpack:///./node_modules/echarts/lib/view/Component.js","webpack:///./node_modules/echarts/lib/data/helper/createDimensions.js","webpack:///./node_modules/buffer/index.js","webpack:///./node_modules/core-js/modules/es.number.to-fixed.js","webpack:///./node_modules/echarts/lib/export.js","webpack:///./node_modules/vuedraggable/dist/vuedraggable.umd.js","webpack:///./node_modules/echarts/lib/visual/aria.js","webpack:///./src/assets/images/avatars/11-small.png","webpack:///./src/views/components/MultiStateSwitch.vue?be22","webpack:///./node_modules/zrender/lib/mixin/Animatable.js","webpack:///./node_modules/echarts/lib/coord/geo/parseGeoJson.js","webpack:///./node_modules/vue-flatpickr-component/dist/vue-flatpickr.min.js","webpack:///./node_modules/bootstrap-vue/esm/components/form-checkbox/form-checkbox.js","webpack:///./node_modules/bootstrap-vue/esm/utils/loose-index-of.js","webpack:///./node_modules/echarts/lib/theme/light.js","webpack:///./node_modules/zrender/lib/graphic/shape/Rect.js","webpack:///./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack:///./src/@core/utils/utils.js","webpack:///./node_modules/echarts/lib/model/OptionManager.js","webpack:///./node_modules/zrender/lib/graphic/shape/Line.js","webpack:///./node_modules/zrender/lib/mixin/Draggable.js","webpack:///./node_modules/zrender/lib/graphic/Path.js","webpack:///./node_modules/bootstrap-vue/esm/components/input-group/input-group-append.js","webpack:///./node_modules/echarts/lib/chart/helper/createRenderPlanner.js","webpack:///./node_modules/zrender/lib/dom/HandlerProxy.js","webpack:///./node_modules/echarts/lib/processor/dataStack.js","webpack:///./node_modules/bootstrap-vue/esm/components/input-group/input-group-text.js","webpack:///./node_modules/bootstrap-vue/esm/components/list-group/list-group-item.js","webpack:///./node_modules/core-js/modules/es.symbol.iterator.js","webpack:///./node_modules/zrender/lib/Handler.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/form-radio-check.js","webpack:///./node_modules/zrender/lib/graphic/shape/Polyline.js","webpack:///./node_modules/zrender/lib/graphic/CompoundPath.js","webpack:///./node_modules/zrender/lib/core/LRU.js","webpack:///./node_modules/zrender/lib/Element.js","webpack:///./node_modules/zrender/lib/contain/path.js","webpack:///./node_modules/zrender/lib/graphic/shape/Circle.js","webpack:///./src/assets/images/avatars/5-small.png","webpack:///./node_modules/zrender/lib/graphic/Pattern.js","webpack:///./node_modules/zrender/lib/graphic/RadialGradient.js","webpack:///./node_modules/zrender/lib/core/guid.js","webpack:///./node_modules/echarts/lib/model/mixin/boxLayout.js","webpack:///./node_modules/vue-ripple-directive/src/ripple.js","webpack:///./node_modules/core-js/modules/es.symbol.description.js","webpack:///./node_modules/echarts/lib/coord/axisTickLabelBuilder.js","webpack:///./node_modules/echarts/lib/util/model.js","webpack:///./node_modules/echarts/lib/scale/Scale.js","webpack:///./node_modules/zrender/lib/container/Group.js","webpack:///./node_modules/zrender/lib/core/bbox.js","webpack:///./node_modules/isarray/index.js","webpack:///./node_modules/echarts/lib/model/mixin/colorPalette.js","webpack:///./node_modules/zrender/lib/contain/cubic.js","webpack:///./node_modules/zrender/lib/contain/text.js","webpack:///./node_modules/echarts/lib/view/Chart.js","webpack:///./node_modules/echarts/lib/coord/geo/mapDataStorage.js","webpack:///./node_modules/echarts/lib/data/Source.js","webpack:///./node_modules/zrender/lib/Painter.js","webpack:///./node_modules/echarts/lib/util/format.js","webpack:///./node_modules/echarts/lib/data/helper/dataStackHelper.js","webpack:///./node_modules/zrender/lib/tool/transformPath.js","webpack:///./node_modules/echarts/lib/theme/dark.js","webpack:///./node_modules/echarts/lib/coord/geo/Region.js","webpack:///./node_modules/echarts/lib/stream/task.js","webpack:///./src/assets/images/avatars/9-small.png","webpack:///./node_modules/echarts/lib/util/layout.js","webpack:///./node_modules/echarts/lib/preprocessor/backwardCompat.js","webpack:///./node_modules/echarts/lib/visual/seriesColor.js","webpack:///./node_modules/echarts/lib/model/mixin/textStyle.js"],"names":["$","isObject","DELEGATES_TO_EXEC","execCalled","re","exec","apply","this","arguments","test","nativeTest","target","proto","forced","str","call","result","Error","ComponentModel","ComponentView","_sourceHelper","detectSourceFormat","_sourceType","SERIES_LAYOUT_BY_COLUMN","extend","type","defaultOption","seriesLayoutBy","sourceHeader","dimensions","source","optionUpdated","DEFAULT_MIN_MERGE","DEFAULT_MIN_GALLOPING","minRunLength","n","r","makeAscendingRun","array","lo","hi","compare","runHi","reverseRun","t","binaryInsertionSort","start","mid","pivot","left","right","gallopLeft","value","length","hint","lastOffset","maxOffset","offset","tmp","m","gallopRight","TimSort","runStart","runLength","minGallop","stackSize","pushRun","_runStart","_runLength","mergeRuns","mergeAt","forceMergeRuns","i","start1","length1","start2","length2","k","mergeLow","mergeHigh","cursor1","cursor2","dest","count1","count2","exit","_minGallop","customCursor","customDest","sort","remaining","ts","minRun","force","module","exports","windingLine","EPSILON","isAroundEqual","a","b","Math","abs","contain","points","x","y","w","p","p2","p0","Clip","color","_util","isArrayLike","arraySlice","Array","prototype","slice","defaultGetter","key","defaultSetter","interpolateNumber","p1","percent","interpolateString","interpolateArray","out","arrDim","len","len2","j","fillArr","arr0","arr1","arr0Len","arr1Len","isPreviousLarger","push","isNaN","isArraySame","catmullRomInterpolateArray","p3","t2","t3","catmullRomInterpolate","v0","v1","cloneValue","ret","rgba2String","rgba","floor","join","getArrayDim","keyframes","lastValue","createTrackClip","animator","easing","oneTrackDone","propName","forceAnimate","getter","_getter","setter","_setter","useSpline","trackLen","trackMaxTime","firstVal","isValueArray","isValueColor","isValueString","time","kfPercents","kfValues","prevValue","isAllValueEqual","colorArray","parse","_target","lastFrame","lastFramePercent","onframe","frame","min","range","clip","life","loop","_loop","delay","_delay","ondestroy","Animator","_tracks","_clipCount","_doneList","_onframeList","_clipList","when","props","tracks","hasOwnProperty","during","callback","pause","_paused","resume","isPaused","_doneCallback","doneList","lastClip","self","clipCount","animation","addClip","oldOnFrame","stop","forwardToLast","clipList","removeClip","done","cb","getClips","_default","eventUtil","GestureMgr","_track","dist","pointPair","dx","dy","sqrt","center","constructor","recognize","event","root","_doTrack","_recognize","clear","touches","trackItem","touch","pos","clientToLocal","zrX","zrY","eventName","recognizers","gestureInfo","pinch","track","pinchEnd","pinchPre","pinchScale","isFinite","pinchCenter","pinchX","pinchY","matrix","vector","mIdentity","identity","isNotAroundZero","val","Transformable","opts","position","rotation","scale","origin","transformableProto","transform","needLocalTransform","scaleTmp","updateTransform","parent","parentHasTransform","create","getLocalTransform","mul","copy","globalScaleRatio","getGlobalScale","relX","relY","sx","sy","invTransform","invert","setTransform","ctx","dpr","restoreTransform","tmpTransform","originTransform","setLocalTransform","atan2","decomposeTransform","transformCoordToLocal","v2","applyTransform","transformCoordToGlobal","rotate","Displayable","BoundingRect","zrUtil","imageHelper","ZImage","brush","prevEl","style","src","image","bind","_image","createOrUpdateImage","onload","isImageReady","width","height","aspect","sWidth","sHeight","drawImage","text","drawRectText","getBoundingRect","_rect","inherits","title","replacer","toString","arr","split","capitalizedArray","forEach","word","capitalized","charAt","toUpperCase","avatarText","nameArray","map","formatDate","formatting","month","day","year","Intl","DateTimeFormat","format","Date","formatDateToMonthShort","toTimeForCurrentDay","date","isToday","hour","minute","filterTags","replace","_config","_model","__DEV__","makeInner","getDataItemValue","createHashMap","each","isArray","isString","isTypedArray","Source","assert","SOURCE_FORMAT_ORIGINAL","SOURCE_FORMAT_ARRAY_ROWS","SOURCE_FORMAT_OBJECT_ROWS","SOURCE_FORMAT_KEYED_COLUMNS","SOURCE_FORMAT_UNKNOWN","SOURCE_FORMAT_TYPED_ARRAY","SERIES_LAYOUT_BY_ROW","BE_ORDINAL","Must","Might","Not","inner","datasetModel","data","option","sourceFormat","item","getSource","seriesModel","resetSourceDefaulter","ecModel","datasetMap","prepareSource","seriesOption","fromDataset","dimensionsDefine","getDatasetModel","datasetOption","completeResult","completeBySourceData","startIndex","dimensionsDetectCount","encodeDefine","encode","normalizeDimensionsDefine","arrayRowsTravelFirst","index","objectRowsCollectDimensions","colArr","value0","nameMap","name","displayName","exist","get","count","set","maxLoop","Infinity","obj","firstIndex","makeSeriesEncodeForAxisCoordSys","coordDimensions","baseCategoryDimIndex","categoryWayValueDimStart","encodeItemName","encodeSeriesName","uid","coordDimInfo","coordDimIdx","getDataDimCountOnCoordDim","datasetRecord","categoryWayDim","valueWayDim","pushDim","dimIdxArr","idxFrom","idxCount","dimsDef","coordDimName","itemName","seriesName","makeSeriesEncodeForNameBased","dimCount","potentialNameDimIndex","dim","idx","idxResult","idxRes0","idxRes1","guessRecords","guessResult","doGuessOrdinal","isPureNumber","v","fulfilled","nameDimIndex","thisData","getComponent","datasetIndex","guessOrdinal","dimIndex","dimName","dimType","dimDefItem","sample","detectValue","row","beStr","toInteger","requireObjectCoercible","repeat","String","RangeError","id","inline","novalidate","validated","BForm","functional","render","h","_ref","children","class","attrs","createListFromArray","axisHelper","axisModelCommonMixin","Model","_layout","getLayoutRect","_dataStackHelper","enableDataStack","isDimensionStacked","getStackedDimension","_completeDimensions","completeDimensions","_createDimensions","createDimensions","_symbol","createList","createSymbol","dataStack","createScale","dataExtent","axisModel","isInstance","mixin","createScaleByModel","setExtent","niceScaleExtent","mixinAxisModelCommonMethods","ArrayCtor","Float32Array","m1","m2","out0","out1","out2","out3","out4","out5","translate","rad","aa","ac","atx","ab","ad","aty","st","sin","ct","cos","vx","vy","det","clone","Scale","OrdinalMeta","scaleProto","OrdinalScale","init","ordinalMeta","extent","categories","_ordinalMeta","_extent","getOrdinal","round","rank","normalize","getTicks","ticks","getLabel","isBlank","unionExtentFromData","unionExtent","getApproximateExtent","getOrdinalMeta","niceTicks","noop","niceExtent","Style","Element","RectText","__clipPaths","__dirty","invisible","z","z2","zlevel","draggable","dragging","silent","culling","cursor","rectHover","progressive","incremental","beforeBrush","afterBrush","rectContain","traverse","context","coord","rect","dirty","__dirtyText","__zr","refresh","animateStyle","animate","attrKV","setStyle","useStyle","calculateTextPosition","useResponsiveAppLeftSidebarVisibility","mqShallShowLeftSidebar","ref","currentBreakPoint","computed","store","getters","watch","oldVal","arrySlice","Eventful","eventProcessor","_$handlers","_$eventProcessor","normalizeQuery","host","query","on","eventful","handler","isOnce","_h","wrap","one","callAtLast","zrEventfulCallAtLast","lastIndex","lastWrap","splice","isSilent","off","newList","l","trigger","args","argLen","hItem","filter","afterTrigger","triggerWithContext","byteLength","toByteArray","fromByteArray","lookup","revLookup","Arr","Uint8Array","code","charCodeAt","getLens","b64","validLen","indexOf","placeHoldersLen","lens","_byteLength","curByte","tripletToBase64","num","encodeChunk","uint8","end","output","extraBytes","parts","maxChunkLength","getMin","rangeStart","axis","eqNaN","getMax","max","rangeEnd","getNeedCrossZero","getCoordSysModel","setRange","resetRange","coordinateSystemCreators","CoordinateSystemManager","_coordinateSystems","api","coordinateSystems","creater","list","concat","update","coordSys","getCoordinateSystems","register","coordinateSystemCreator","curve","vec2","bbox","devicePixelRatio","CMD","M","L","C","Q","A","Z","R","min2","max2","mathMin","mathMax","mathCos","mathSin","mathSqrt","mathAbs","hasTypedArray","PathProxy","notSaveData","_saveData","_ctx","_xi","_yi","_x0","_y0","_ux","_uy","_len","_lineDash","_dashOffset","_dashIdx","_dashSum","setScale","segmentIgnoreThreshold","getContext","beginPath","moveTo","addData","lineTo","exceedUnit","_needsDash","_dashedLineTo","bezierCurveTo","x1","y1","x2","y2","x3","y3","_dashedBezierTo","quadraticCurveTo","_dashedQuadraticTo","arc","cx","cy","startAngle","endAngle","anticlockwise","arcTo","radius","closePath","x0","y0","fill","toStatic","stroke","setLineDash","lineDash","lineDashSum","setLineDashOffset","setData","appendPath","path","appendSize","appendPathData","cmd","_expandData","_prevCmd","newData","dash","dashSum","nDash","cubicAt","bezierLen","tmpLen","Number","MAX_VALUE","xi","yi","fromLine","fromCubic","fromQuadratic","rx","ry","fromArc","rebuildPath","d","ux","uy","theta","dTheta","psi","fs","scaleX","scaleY","isEllipse","numberUtil","formatUtil","scaleHelper","IntervalScale","intervalScaleProto","mathCeil","ceil","mathFloor","ONE_SECOND","ONE_MINUTE","ONE_HOUR","ONE_DAY","bisect","TimeScale","stepLvl","_stepLvl","formatTime","getSetting","opt","getFullYear","getMonth","getDate","splitNumber","minInterval","maxInterval","interval","_interval","fixMin","fixMax","approxTickNum","span","approxInterval","scaleLevelsLen","scaleLevels","level","yearSpan","yearStep","nice","timezoneOffset","getTimezoneOffset","fixExtent","_niceExtent","parseDate","methodName","model","useUTC","env","wx","getSystemInfoSync","browser","os","node","wxa","canvasSupported","svgSupported","touchEventsSupported","domSupported","document","worker","navigator","detect","userAgent","ua","firefox","match","ie","edge","weChat","version","createElement","SVGRect","window","pointerEventsSupported","pathTool","colorTool","Path","Image","Group","Text","Circle","Sector","Ring","Polygon","Polyline","Rect","Line","BezierCurve","Arc","CompoundPath","LinearGradient","RadialGradient","IncrementalDisplayable","subPixelOptimizeUtil","EMPTY_OBJ","Z2_EMPHASIS_LIFT","CACHED_LABEL_STYLE_PROPERTIES","textBorderColor","textBorderWidth","EMPHASIS","NORMAL","_highlightNextDigit","_highlightKeyMap","_customShapeMap","extendShape","extendPath","pathData","extendFromString","registerShape","ShapeClass","getShapeClass","makePath","layout","createFromString","centerGraphic","resizePath","makeImage","imageUrl","img","boundingRect","mergePath","pathRect","calculateTransform","subPixelOptimizeLine","param","shape","subPixelOptimizeRect","subPixelOptimize","hasFillOrStroke","fillOrStroke","liftedColorMap","liftedColorCount","liftColor","liftedColor","lift","cacheElementStl","el","__hoverStlDirty","hoverStyle","__hoverStl","normalStyle","__cachedNormalStl","__cachedNormalZ2","elStyle","singleEnterEmphasis","hoverStl","__highlighted","zr","useHoverLayer","painter","isGroup","elTarget","targetStyle","addHover","rollbackDefaultTextStyle","extendFrom","setDefaultHoverFillStroke","applyDefaultTextStyle","prop","singleEnterNormal","highlighted","removeHover","normalStl","normalZ2","traverseUpdate","updater","commonParam","fromState","toState","child","__highDownOnUpdate","setElementHoverStyle","onElementMouseOver","e","shouldSilent","__highByOuter","onElementMouseOut","onElementEmphasisEvent","highlightDigit","onElementNormalEvent","__highDownSilentOnTouch","zrByTouch","setHoverStyle","setAsHighDownDispatcher","asDispatcher","disable","highDownSilentOnTouch","highDownOnUpdate","__highDownDispatcher","method","isHighDownDispatcher","getHighlightDigit","highlightKey","setLabelStyle","emphasisStyle","normalModel","emphasisModel","normalSpecified","emphasisSpecified","baseText","labelFetcher","labelDataIndex","labelDimIndex","labelProp","showNormal","getShallow","showEmphasis","getFormattedLabel","isFunction","defaultText","normalStyleText","emphasisStyleText","retrieve2","setTextStyle","modifyLabelStyle","normalStyleProps","emphasisStyleProps","textStyle","textStyleModel","specifiedTextStyle","isEmphasis","setTextStyleCommon","setText","labelModel","defaultColor","isRectText","autoColor","textPosition","getTextPosition","textOffset","labelRotate","PI","textRotation","textDistance","richResult","globalTextStyle","richItemNames","getRichItemNames","richTextStyle","getModel","setTokenTextStyle","rich","forceRich","richItemNameMap","parentModel","isBlock","textFill","getAutoColor","textStroke","textStrokeWidth","insideRollbackOpt","fontStyle","fontWeight","fontSize","fontFamily","textAlign","textVerticalAlign","textLineHeight","textWidth","textHeight","textTag","disableBox","textBackgroundColor","textPadding","textBorderRadius","textBoxShadowColor","textBoxShadowBlur","textBoxShadowOffsetX","textBoxShadowOffsetY","textShadowColor","textShadowBlur","textShadowOffsetX","textShadowOffsetY","insideRollback","useInsideStyle","useInsideStyleCache","useAutoColorCache","getFont","gTextStyleModel","trim","animateOrSetProps","isUpdate","animatableModel","dataIndex","animationEnabled","isAnimationEnabled","postfix","duration","animationEasing","animationDelay","getAnimationDelayParams","animateTo","stopAnimation","attr","updateProps","initProps","getTransform","ancestor","mat","transformDirection","direction","hBase","vBase","vertex","groupTransition","g1","g2","elMap1","getElMap","anid","oldEl","newProp","getAnimatableProps","g","elMap","clipPointsByRect","point","clipRectByRect","targetRect","createIcon","iconStr","strokeNoScale","defaults","linePolygonIntersect","a1x","a1y","a2x","a2y","lineLineIntersect","b1x","b1y","b2x","b2y","mx","my","nx","ny","nmCrossProduct","crossProduct2d","nearZero","b1a1x","b1a1y","q","redefine","anObject","fails","flags","TO_STRING","RegExpPrototype","RegExp","nativeToString","NOT_GENERIC","INCORRECT_NAME","rf","f","undefined","unsafe","modelUtil","POSSIBLE_STYLES","compatEC2ItemStyle","itemStyleOpt","itemStyle","styleName","normalItemStyleOpt","normal","emphasisItemStyleOpt","emphasis","merge","convertNormalEmphasis","optType","useExtend","normalOpt","emphasisOpt","removeEC3NormalStatus","compatTextStyle","labelOptSingle","TEXT_STYLE_OPTIONS","compatEC3CommonStyles","processSeries","seriesOpt","markPoint","markLine","markArea","nodes","edgeData","links","edges","mpData","mlData","breadcrumb","levels","leaves","toArr","o","toObj","isTheme","series","axes","axisName","axisOpt","axisPointer","parallel","parallelOpt","parallelAxisDefault","calendar","calendarOpt","radar","radarOpt","geo","geoOpt","regions","regionObj","timeline","timelineOpt","toolbox","toolboxOpt","feature","featureOpt","tooltip","properties","excludes","includes","legend","selector","all","inverse","polygon","lineX","lineY","keep","dataView","lang","dataZoom","zoom","back","magicType","line","bar","stack","tiled","restore","saveAsImage","typeNames","pie","scatter","effectScatter","tree","treemap","boxplot","candlestick","heatmap","lines","graph","sankey","funnel","gauge","pictorialBar","themeRiver","sunburst","aria","general","withTitle","withoutTitle","single","prefix","withName","withoutName","multiple","separator","middle","allData","partialData","isDataItemOption","_number","DefaultDataProvider","dimSize","seriesDataToSource","_source","_data","_offset","_dimSize","methods","providerMethods","providerProto","pure","persistent","getItem","appendData","appendDataSimply","countSimply","getItemSimply","col","dims","newCol","oldCol","clean","rawValueGetters","arrayRows","getRawValueSimply","objectRows","dataItem","keyedColumns","original","typedArray","defaultDimValueGetters","getDimValueSimply","converDataValue","_dimensionInfos","_rawData","hasItemOption","dimInfo","parseAndCollect","NaN","retrieveRawValue","getRawDataItem","getProvider","getDimensionInfo","retrieveRawAttr","fixShadow","_constant","ContextCachedBy","STYLE_COMMON_PROPS","createLinearGradient","global","canvasGradient","createRadialGradient","opacity","fillOpacity","strokeOpacity","lineDashOffset","shadowBlur","shadowOffsetX","shadowOffsetY","lineWidth","font","textFont","textRect","transformText","textOrigin","truncate","blend","prevStyle","notCheckCache","__attrCachedBy","STYLE_BIND","fillStyle","strokeStyle","globalAlpha","globalCompositeOperation","hasStroke","getLineScale","hasFill","otherStyle","overwrite","newStyle","getGradient","colorStops","addColorStop","styleProto","debugMode","OTHER_DIMENSIONS","summarizeDimensions","summary","notExtraCoordDimMap","defaultedLabel","defaultedTooltip","userOutput","dimensionNames","dimItem","coordDim","coordDimIndex","getOrCreateEncodeArr","isExtraCoord","mayLabelDimType","defaultTooltip","otherDim","encodeArr","otherDims","dataDimsOnCoord","encodeFirstDimNotExtra","dimArr","encodeLabel","label","encodeTooltip","getDimensionTypeByAxis","axisType","Ellipse","_path","DILIMITER_REG","parseXML","svg","parser","DOMParser","parseFromString","nodeType","firstChild","nodeName","toLowerCase","nextSibling","SVGParser","_defs","_root","_isDefine","_isText","xml","viewBox","getAttribute","parseFloat","parseAttributes","viewBoxRect","viewBoxTransform","_parseNode","viewBoxArr","makeViewBoxTransform","ignoreViewBox","elRoot","add","ignoreRootClip","setClipPath","xmlNode","parentGroup","defineParsers","def","nodeParsers","_parseText","_textX","_textY","textContent","inheritStyle","setShape","circle","ellipse","parsePoints","polyline","parseInt","gradient","_parseGradientColorStops","stopColor","__inheritedStyle","pointsString","attributesMap","defs","onlyInlineStyle","zrStyle","isTextEl","parseTransformAttribute","parseStyleAttribute","svgAttrName","attrValue","elFillProp","elStrokeProp","getPaint","elPropName","textBaseline","urlRegex","urlMatch","url","transformRegex","transformOps","console","warn","styleRegex","styleRegResult","styleList","viewBoxScale","viewBoxPosition","parseSVG","util","_event","Dispatcher","requestAnimationFrame","Animation","options","stage","_clips","_running","_time","_pausedTime","_pauseStart","addAnimator","clips","removeAnimator","_update","getTime","delta","deferredEvents","deferredClips","step","_needsRemove","pop","fire","_startLoop","isFinished","_defineProperty","Object","defineProperty","enumerable","configurable","writable","flush","horizontal","tag","BListGroup","componentData","staticClass","List","_dimensionHelper","CoordinateSystem","_referHelper","getCoordSysInfoBySeries","coordSysDimDefs","coordSysName","registeredCoordSys","coordSysInfo","coordSysDims","axisMap","getDimensionsInfo","firstCategoryDimIndex","hasNameEncode","dimInfoList","generateCoord","encodeDefaulter","useEncodeDefaulter","curry","categoryAxisModel","categoryAxisMap","stackCalculationInfo","setCalculationInfo","dimValueGetter","isNeedCompleteOrdinalData","itemOpt","defaultDimValueGetter","initData","sampleItem","firstDataNotNull","transformPath","vMag","vRatio","u","vAngle","acos","processArc","fa","psiDeg","xp","yp","lambda","cxp","cyp","commandReg","numberReg","createPathProxyFromString","prevCmd","cpx","cpy","subpathX","subpathY","cmdList","cmdText","cmdStr","pLen","ctlPtx","ctlPty","createPathOptions","pathProxy","buildPath","pathEls","pathList","pathEl","createPathProxy","__dirtyPath","pathBundle","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","_objectSpread","getOwnPropertyDescriptors","defineProperties","BInputGroupPrepend","append","RADIAN_EPSILON","_trim","linearMap","domain","clamp","subDomain","subRange","parsePercent","precision","returnStr","toFixed","asc","getPrecision","getPrecisionSafe","eIndex","dotIndex","getPixelPrecision","pixelExtent","log","LN10","dataQuantity","sizeQuantity","getPercentWithPrecision","valueList","sum","reduce","acc","digits","pow","votesPerQuota","targetSeats","seats","votes","currentSum","remainder","NEGATIVE_INFINITY","maxId","MAX_SAFE_INTEGER","remRadian","radian","pi2","isRadianAroundZero","TIME_REG","UTC","quantity","quantityExponent","exp","nf","exponent","exp10","quantile","ascArr","H","reformIntervals","littleThan","curr","currClose","close","lg","isNumeric","_dataProvider","_format","getTooltipMarker","formatTpl","getTooltipRenderMode","DIMENSION_LABEL_REG","getDataParams","dataType","getData","rawValue","getRawValue","rawDataIndex","getRawIndex","getName","getItemVisual","borderColor","tooltipModel","renderModeOption","renderMode","mainType","isSeries","componentType","componentSubType","subType","componentIndex","seriesType","seriesIndex","seriesId","marker","$vars","status","itemModel","getItemModel","params","formatter","dimensionIndex","formatTooltip","makeStyleMapper","getLineStyle","getLineDash","lineType","dotSize","dashSize","Displayble","IncrementalDisplayble","_displayables","_temporaryDisplayables","_cursor","notClear","clearDisplaybles","addDisplayable","displayable","notPersistent","addDisplayables","displayables","eachPendingDisplayable","childRect","union","localPos","_vm","$createElement","_c","_self","staticStyle","_v","_s","_l","buttonClass","$event","onOptionSelect","staticRenderFns","default","components","$emit","beforeMount","component","zrender","timsort","GlobalModel","ExtensionAPI","OptionManager","backwardCompat","SeriesModel","ChartView","graphic","_throttle","throttle","seriesColor","loadingDefault","Scheduler","lightTheme","darkTheme","mapDataStorage","parseClassType","dependencies","TEST_FRAME_REMAIN_TIME","PRIORITY_PROCESSOR_FILTER","PRIORITY_PROCESSOR_SERIES_FILTER","PRIORITY_PROCESSOR_DATASTACK","PRIORITY_PROCESSOR_STATISTIC","PRIORITY_VISUAL_LAYOUT","PRIORITY_VISUAL_PROGRESSIVE_LAYOUT","PRIORITY_VISUAL_GLOBAL","PRIORITY_VISUAL_CHART","PRIORITY_VISUAL_POST_CHART_LAYOUT","PRIORITY_VISUAL_COMPONENT","PRIORITY_VISUAL_BRUSH","PRIORITY","PROCESSOR","FILTER","SERIES_FILTER","STATISTIC","VISUAL","LAYOUT","PROGRESSIVE_LAYOUT","GLOBAL","CHART","POST_CHART_LAYOUT","COMPONENT","BRUSH","IN_MAIN_PROCESS","OPTION_UPDATED","ACTION_REG","createRegisterEventWithLowercaseName","ignoreDisposed","_disposed","disposedWarning","MessageCenter","ECharts","dom","theme","themeStorage","group","_dom","defaultRenderer","_zr","renderer","_throttledZrFlush","_theme","_chartsViews","_chartsMap","_componentsViews","_componentsMap","_coordSysMgr","_api","createExtensionAPI","prioritySortFunc","__prio","visualFuncs","dataProcessorFuncs","_scheduler","_ecEventProcessor","EventProcessor","_messageCenter","_initEvents","resize","_pendingActions","_onframe","bindRenderedEvent","setAsPrimitive","echartsProto","doConvertPixel","finder","coordSysList","parseFinder","scheduler","prepare","updateMethods","flushPendingActions","triggerUpdatedEvent","unfinished","remainTime","startTime","performSeriesTasks","performDataProcessorTasks","updateStreamModes","performVisualTasks","renderSeries","getDom","getZr","setOption","notMerge","lazyUpdate","optionManager","optionPreprocessorFuncs","setTheme","error","getOption","getWidth","getHeight","getDevicePixelRatio","getRenderedCanvas","pixelRatio","backgroundColor","getSvgDataURL","storage","getDisplayList","toDataURL","getDataURL","excludeComponents","excludesComponentViews","eachComponent","view","__viewId","ignore","getType","getConnectedDataURL","isSvg","groupId","MAX_NUMBER","connectedGroups","top","bottom","canvasList","instances","chart","canvas","getSvgDom","innerHTML","getBoundingClientRect","targetCanvas","createCanvas","content","getSvgRoot","connectedBackgroundColor","setBackgroundColor","refreshImmediately","convertToPixel","convertFromPixel","containPixel","models","coordinateSystem","containPoint","getVisual","visualType","defaultMainType","dataIndexInside","indexOfRawIndex","getViewOfComponentModel","componentModel","getViewOfSeriesModel","prepareAndUpdate","payload","coordSysMgr","restoreData","clearColorPalette","colorArr","stringify","performPostUpdateFuncs","ecIns","componentDirtyList","componentView","__alive","seriesDirtyMap","eachSeries","chartView","setDirty","dirtyMap","updateView","markUpdateMethod","updateVisual","updateLayout","restorePipelines","prepareStageTasks","prepareView","plan","updateDirectly","condition","excludeSeriesId","normalizeToArray","callView","__model","chartsMap","doDispatchAction","payloadType","escapeConnect","actionWrap","actions","actionInfo","cptType","updateMethod","payloads","batched","batch","eventObj","eventObjBatch","isHighDown","batchItem","action","main","sub","pendingActions","shift","isComponent","viewList","viewMap","doPrepare","viewId","classType","Clazz","getClass","__id","__ecComponentInfo","renderTask","dispose","remove","renderComponents","dirtyList","updateZ","updatePayload","perform","getPerformArgs","updateBlend","updateHoverLayerStatus","postUpdateFuncs","func","_loadingFX","optionChanged","resetOption","showLoading","cfg","hideLoading","loadingEffects","makeActionFromEvent","eventActionMap","dispatchAction","getSeriesByIndex","MOUSE_EVENT_NAMES","elCount","preventUsingHoverLayer","blendMode","ecInstance","getComponentByElement","modelInfo","eventInfo","eveName","isGlobalOut","dataModel","eventData","targetEl","packedEvent","actionType","eventType","isDisposed","setAttribute","DOM_ATTRIBUTE_KEY","cptQuery","dataQuery","otherQuery","condCptType","suffixes","dataKeys","reserved","propSuffix","suffixPos","lastIndexOf","check","filterForExposedEvent","propOnHost","idBase","groupIdBase","enableConnect","STATUS_PENDING","STATUS_UPDATING","STATUS_UPDATED","STATUS_KEY","updateConnectedChartsStatus","charts","otherChart","otherCharts","existInstance","getInstanceByDom","connect","disConnect","disconnect","getInstanceById","registerTheme","registerPreprocessor","preprocessorFunc","registerProcessor","priority","processor","normalizeRegister","registerPostUpdate","postUpdateFunc","registerAction","registerCoordinateSystem","getCoordinateSystemDimensions","coordSysCreator","registerLayout","layoutTask","registerVisual","visualTask","targetList","fn","defaultPriority","stageHandler","wrapStageHandler","__raw","registerLoading","loadingFx","extendComponentModel","extendComponentView","extendSeriesModel","extendChartView","setCanvasCreator","creator","$override","registerMap","mapName","geoJson","specialAreas","getMap","records","retrieveMap","geoJSON","dataTool","___ec_export","scaleAndAdd","lenSquare","lengthSquare","div","dot","s","distance","distanceSquare","distSquare","negate","lerp","classof","TypeError","LRU","kCSSColorTable","clampCssByte","clampCssAngle","clampCssFloat","parseCssInt","parseCssFloat","cssHueToRgb","lerpNumber","setRgba","copyRgba","colorCache","lastRemovedArr","putToCache","colorStr","rgbaArr","put","cached","op","ep","fname","substr","alpha","hsla2rgba","iv","hsla","rgba2hsla","S","G","B","vMin","vMax","deltaR","deltaG","deltaB","toHex","fastLerp","normalizedValue","colors","leftIndex","rightIndex","leftColor","rightColor","dv","fastMapToColor","fullOutput","mapToColor","modifyHSL","modifyAlpha","arrColor","Gradient","_clazz","enableClassExtend","enableClassCheck","lineStyleMixin","areaStyleMixin","textStyleMixin","itemStyleMixin","doGet","pathArr","getParent","getParentMethod","mergeOption","ignoreParent","parsePath","thisParentModel","isEmpty","Ctor","setReadOnly","customizeGetParent","easingFuncs","_life","_initialized","gap","onrestart","globalTime","deltaTime","_startTime","easingFunc","schedule","restart","arg","r0","PI2","isText","BInputGroupAddon","globalCoord","logError","_vector","v2Create","v2DistSquare","mathPow","EPSILON_NUMERIC","THREE_SQRT","ONE_THIRD","_v0","_v1","_v2","isAroundZero","onet","cubicDerivativeAt","cubicRootAt","roots","c","t1","disc","K","discSqrt","Y1","Y2","T","ASqrt","cubicExtrema","extrema","cubicSubdivide","p01","p12","p23","p012","p123","p0123","cubicProjectPoint","prev","next","d1","d2","_t","quadraticAt","quadraticDerivativeAt","quadraticRootAt","quadraticExtremum","divider","quadraticSubdivide","quadraticProjectPoint","Symbol","toStringTag","__esModule","iterator","from","autoscroll","Boolean","typeAheadPointer","maybeAdjustScroll","$refs","dropdownMenu","getDropdownViewport","scrollTop","offsetTop","filteredOptions","selectable","typeAheadUp","typeAheadDown","typeAheadSelect","select","loading","mutableLoading","search","toggleLoading","_compiled","_scopeId","$vnode","ssrContext","__VUE_SSR_CONTEXT__","_registeredComponents","_ssrRegister","$root","$options","shadowRoot","_injectStyles","beforeCreate","Deselect","xmlns","OpenIndicator","inserted","appendToBody","toggle","scrollX","pageXOffset","scrollY","pageYOffset","unbindPosition","calculatePosition","body","appendChild","unbind","parentNode","removeChild","JSON","_","mixins","directives","disabled","clearable","searchable","placeholder","transition","clearSearchOnSelect","closeOnSelect","autocomplete","Function","getOptionLabel","getOptionKey","onTab","selectOnTab","isComposing","taggable","tabindex","pushTags","filterable","filterBy","createOption","optionList","resetOnOptionsChange","validator","clearSearchOnBlur","noDrop","inputId","dir","selectOnKeyCodes","searchInputQuerySelector","mapKeydown","open","pushedTags","_value","selectedValue","clearSelection","isTrackingValues","setInternalValueFromOptions","created","$on","pushTag","$data","findOptionFromReducedValue","isOptionSelected","optionExists","updateValue","onAfterSelect","deselect","optionComparator","searchEl","blur","toggleDropdown","preventDefault","deselectButtons","clearButton","some","contains","focus","find","closeSearchOptions","maybeDeleteValue","normalizeOptionForSlot","onEscape","onSearchBlur","mousedown","searching","onSearchFocus","onMousedown","onMouseUp","onSearchKeyDown","8","9","27","38","40","keyCode","propsData","$scopedSlots","selectedOptions","querySelector","scope","attributes","searchPlaceholder","readonly","dropdownOpen","events","compositionstart","compositionend","keydown","input","spinner","noOptions","openIndicator","role","listHeader","listFooter","header","footer","childComponents","stateClasses","isValueEmpty","unshift","showClearButton","O","refInFor","click","_e","_g","_b","rawName","expression","mouseup","mouseover","stopPropagation","display","visibility","ajax","pointer","pointerScroll","fixClipWithShadow","clockwise","unitX","unitY","dev","encodeHTML","addCommas","colorPaletteMixin","dataFormatMixin","getLayoutParams","mergeLayoutParam","_task","createTask","legendVisualProvider","visualColorAccessPath","visualBorderColorAccessPath","layoutMode","extraOpt","dataTask","dataTaskCount","reset","dataTaskReset","mergeDefaultAndTheme","getInitialData","wrapData","dataBeforeProcessed","autoSeriesName","inputPositionParams","themeSubType","hasClass","getTheme","getDefaultOption","defaultEmphasis","fillDataTextStyle","newSeriesOption","getRawData","task","getCurrentTask","getLinkedData","modifyOutputEnd","setOutputEnd","outputData","getBaseAxis","multipleSeries","newLine","isRichText","markers","markerId","formatArrayValue","vertially","setEachItem","markName","dimHead","dimHeadStr","valStr","tooltipDims","formatSingleValue","mapDimension","tooltipDimLen","isValueArr","formattedValue","colorEl","isNameSpecified","html","getColorFromPalette","requestColorNum","coordDimToDataDim","getProgressive","getProgressiveThreshold","getAxisTooltipData","getTooltipPosition","pipeTask","preventIncremental","pipelineContext","getSeriesAutoName","dataDims","nameArr","dataDim","cloneShallow","dataTaskProgress","CHANGABLE_METHODS","wrapMethod","onDataSelfChange","pipeline","getPipeline","currentTask","agentStubMap","smoothSpline","smoothBezier","smooth","controlPoints","smoothConstraint","cp1","cp2","getItemStyle","getBorderLineDash","DataDimensionInfo","r1","r2","r3","r4","total","appendHtml","prepend","prependHtml","size","BInputGroup","slots","scopedSlots","$slots","slotScope","$prepend","hasPrependSlot","domProps","$append","hasAppendSlot","Pattern","returnFalse","createDom","newDom","newDomStyle","Layer","domStyle","onselectstart","domBack","ctxBack","config","clearColor","motionBlur","lastFrameAlpha","__used","__drawIndex","__startIndex","__endIndex","getElementCount","initContext","createBackBuffer","clearAll","clearColorGradientOrPattern","haveMotionBLur","clearRect","__canvasGradient","getCanvasPattern","save","fillRect","globalImageCache","findExistImage","newImageOrSrc","cachedImgObj","hostEl","cbPayload","__zrImageSrc","pendingWrap","pending","onerror","imageOnLoad","__cachedImgObj","HOOKS","_disable","allowInput","allowInvalidPreload","altFormat","altInput","altInputClass","ariaDateFormat","autoFillDefaultTime","clickOpens","conjunction","dateFormat","defaultHour","defaultMinute","defaultSeconds","disableMobile","enableSeconds","enableTime","errorHandler","err","getWeek","givenDate","setHours","setDate","getDay","week1","hourIncrement","ignoredFocusElements","locale","minuteIncrement","mode","monthSelectorType","nextArrow","noCalendar","now","onChange","onClose","onDayCreate","onDestroy","onKeyDown","onMonthChange","onOpen","onParseConfig","onReady","onValueUpdate","onYearChange","onPreCalendarPosition","plugins","positionElement","prevArrow","shorthandCurrentMonth","showMonths","static","time_24hr","weekNumbers","english","weekdays","shorthand","longhand","months","daysInMonth","firstDayOfWeek","ordinal","nth","rangeSeparator","weekAbbreviation","scrollTitle","toggleTitle","amPM","yearAriaLabel","monthAriaLabel","hourAriaLabel","minuteAriaLabel","pad","number","bool","debounce","wait","_this","clearTimeout","setTimeout","arrayify","toggleClass","elem","className","classList","clearNode","findParent","createNumberInput","inputClassName","wrapper","numInput","arrowUp","arrowDown","pattern","getEventTarget","composedPath","doNothing","monthToStr","monthNumber","revFormat","D","F","dateObj","monthName","setMonth","getHours","J","shortMonth","seconds","setSeconds","U","unixSeconds","W","weekNum","weekNumber","Y","setFullYear","ISODate","minutes","setMinutes","unixMillSeconds","tokenRegex","toISOString","getSeconds","getMinutes","substring","createDateFormatter","_a","l10n","_d","isMobile","frmt","overrideLocale","createDateParser","givenFormat","timeless","customLocale","parsedDate","dateOrig","datestr","matched","ops","matchIndex","regexStr","token","isBackSlash","escaped","compareDates","date1","date2","isBetween","ts1","ts2","calculateSecondsSinceMidnight","hours","parseSeconds","secondsSinceMidnight","DAY","getDefaultHours","minDate","minHour","minMinutes","minSeconds","maxDate","maxHr","maxMinutes","__assign","assign","__spreadArrays","il","jl","DEBOUNCED_CHANGE_MS","FlatpickrInstance","element","instanceConfig","flatpickr","defaultConfig","setupHelperFunctions","utils","getDaysInMonth","yr","currentMonth","currentYear","isOpen","parseConfig","setupLocale","setupInputs","setupDates","build","bindEvents","selectedDates","setHoursFromDate","latestSelectedDateObj","setCalendarWidth","isSafari","positionCalendar","triggerEvent","getClosestActiveElement","calendarContainer","getRootNode","activeElement","bindToInstance","daysContainer","daysWidth","days","offsetWidth","weekWrapper","removeProperty","updateTime","defaultDate","getMilliseconds","timeWrapper","_input","setHoursFromInputs","_debouncedChange","ampm2military","military2ampm","hourElement","minuteElement","secondElement","limitMinHours","minTime","minDateHasTime","limitMaxHours","maxTime","maxDateHasTime","minBound","maxBound","currentTime","onYearInput","eventTarget","changeYear","ev","addEventListener","_handlers","removeEventListener","triggerChange","evt","querySelectorAll","setupMobile","debouncedResize","onResize","onMouseOver","ontouchstart","documentClick","capture","monthNav","onMonthNavClick","selectDate","timeContainer","selText","timeIncrement","onBlur","jumpToDate","jumpDate","jumpTo","oldYear","oldMonth","message","buildMonthSwitch","redraw","incrementNumInput","inputElem","createEvent","dispatchEvent","fragment","createDocumentFragment","tabIndex","buildMonthNav","innerContainer","buildWeeks","rContainer","buildWeekdays","buildDays","buildTime","customAppend","appendTo","insertBefore","createDay","_dayNumber","dateIsEnabled","isEnabled","dayElement","$i","todayDateElem","isDateSelected","selectedDateElem","isDateInRange","insertAdjacentHTML","focusOnDayElem","targetNode","getFirstAvailableDay","startMonth","endMonth","endIndex","getNextAvailableDay","current","givenMonth","loopDelta","numMonthDays","changeMonth","focusOnDay","dayFocused","isInView","startElem","buildMonthDays","firstOfMonth","prevMonthDays","isMultiMonth","prevMonthDayClass","nextMonthDayClass","dayNumber","dayIndex","dayNum","dayContainer","frag","shouldBuildMonth","monthsDropdownContainer","selected","buildMonth","monthElement","container","monthNavFragment","selectedMonth","yearInput","yearElement","getElementsByTagName","buildMonths","prevMonthNav","yearElements","monthElements","nextMonthNav","__hidePrevMonthArrow","__hideNextMonthArrow","currentYearElement","updateNavigationCurrentMonth","hourInput","minuteInput","secondInput","weekdayContainer","updateWeekdays","isOffset","_hidePrevMonthArrow","_hideNextMonthArrow","triggerChangeEvent","toInitial","mobileInput","_initialDate","destroy","lastChild","_type","removeAttribute","isCalendarElem","eventTarget_1","isCalendarElement","isInput","lostFocus","relatedTarget","isIgnored","newYear","newYearNum","isNewYear","dateToCheck","enable","parsed","to","valueChanged","trimEnd","getDateStr","allowKeydown","allowInlineKeydown","isTimeObj","focusAndClose","delta_1","ctrlKey","elems","pluginElements","shiftKey","cellClass","hoverDate","firstElementChild","initialDate","rangeStartDate","rangeEndDate","containsDisabled","minRange","maxRange","hoverableCells","dayElem","timestamp","outOfRange","_positionElement","wasOpen","minMaxDateSetter","inverseDateObj","boolOpts","userConfig","dataset","formats","_enable","dates","parseDateRules","timeMode","defaultDateFormat","defaultAltFormat","_minDate","_maxDate","minMaxTimeSetter","_minTime","_maxTime","hook","pluginConf","getInputElem","l10ns","customPositionElement","calendarHeight","offsetHeight","calendarWidth","configPos","configPosVertical","configPosHorizontal","inputBounds","distanceFromBottom","innerHeight","showOnTop","isCenter","isRight","rightMost","centerMost","doc","getDocumentStyleSheet","bodyWidth","centerLeft","centerBefore","centerAfter","centerIndex","cssRules","centerStyle","insertRule","editableSheet","styleSheets","sheet","createStyleSheet","head","msMaxTouchPoints","isSelectable","selectedDate","shouldChangeMonth","selectedIndex","loadedPlugins","_bind","_setHoursFromDate","_positionCalendar","_createElement","CALLBACKS","updatePositionElement","setSelectedDate","inputDate","rule","preloadedDate","required","inputType","mobileFormatStr","defaultValue","hooks","initEvent","specificFormat","dObj","isPrevMonth","isNextMonth","isKeyDown","curValue","which","newValue","isHourElem","isMinuteElem","_flatpickr","nodeList","HTMLElement","HTMLCollection","NodeList","Node","en","localize","setDefaults","jQuery","fp_incr","_watch","onTaskModalClose","user_type_tag","user_type_name","moment","created_at","tk_status","sendTaskMessage","$$v","chatMessage","show","searchQuery","fetchTasks","taskFilters","$set","userOptions","assignor","user_id","currentPage","studentOptions","student","sortByOptions","sortByOption","resetFilters","tasks","taskFields","handleRowClick","_u","isOverdue","deadline_date","addTask","statusMapper","start_date","assignee_user_name","assignor_user_name","student_user_name","university_name","course_name","showTaskChatModal","saveAssigneeComments","assignee_comments","resolveTagVariant","tk_priority","allowEdit","clearTaskData","isTaskHandlerSidebarActive","taskTags","currentPriority","modifiers","perfectScrollbarSettings","page","icon","Ripple","BButton","BListGroupItem","VuePerfectScrollbar","setup","maxScrollbarLength","isDynamicRouteActive","clearForm","tk_application_id","hide","taskLocal","tk_id","is_active","is_important","handleSubmit","resetForm","validationContext","getValidationState","errors","tk_title","$store","state","appConfig","isRTL","assigneeOptions","assignee","getAllStudents","user_profile_image","fullName","FILESURL","tk_assignee_id","getAllStudentApplications","user_name","studentApplicationOptions","applications","application","sa_mapper_id","tk_student_id","priorityOptions","editorOption","tk_description","CLASS_NAME","ROOT_ACTION_EVENT_NAME_REQUEST_STATE","ROOT_ACTION_EVENT_NAME_TOGGLE","ROOT_EVENT_NAME_STATE","ROOT_EVENT_NAME_SYNC_STATE","_makeModelMixin","modelMixin","modelProps","MODEL_PROP_NAME","MODEL_EVENT_NAME","ariaLabel","ariaLabelledby","backdrop","backdropVariant","bgVariant","bodyClass","closeLabel","footerClass","headerClass","lazy","noCloseOnBackdrop","noCloseOnEsc","noCloseOnRouteChange","noEnforceFocus","noHeader","noHeaderClose","noSlide","shadow","sidebarClass","textVariant","zIndex","normalizeSlot","safeId","$content","$title","$close","$footer","renderContent","$header","renderBackdrop","localShow","onBackdropClick","BSidebar","inheritAttrs","visible","transitionProps","css","enterClass","enterActiveClass","enterToClass","leaveClass","leaveActiveClass","leaveToClass","hasTitle","hasNormalizedSlot","titleId","computedAttrs","bvAttrs","oldValue","emitState","fullPath","$_returnFocusEl","mounted","listenOnRoot","handleToggle","handleSync","$nextTick","activated","emitSync","beforeDestroy","emitOnRoot","_this2","onKeydown","onTopTrapFocus","tabables","enforceFocus","reverse","onBottomTrapFocus","onBeforeEnter","onAfterEnter","onAfterLeave","$sidebar","beforeEnter","afterEnter","afterLeave","$backdrop","noFade","$tabTrapTop","$tabTrapBottom","formValidation","resetFormData","clearFormData","refFormObserver","resetObserver","fieldRequired","changed","valid","nextTick","useTaskHandler","emit","resetTaskLocal","onSubmit","taskData","avatar","require","resolveAvatarVariant","tags","tagOptions","BFormGroup","BFormInput","BFormTextarea","BAvatar","BFormInvalidFeedback","vSelect","flatPickr","quillEditor","ValidationProvider","ValidationObserver","email","modules","toolbar","fetchAllAssignees","CommonServices","initial","assignee_user_id","student_user_id","BDropdown","BDropdownItem","BFormCheckbox","BBadge","BCard","BRow","BCol","BTable","MultiStateSwitch","TodoLeftSidebar","TodoTaskHandlerSidebar","dueDate","description","isCompleted","isDeleted","isImportant","blankTask","in_progress","complete","handleTaskClick","university_id","student_id","tk_user_id","sortBy","showOverdue","currentDate","isAfter","deadlineDate","updateTask","getAllUniversities","getAllAssignees","clearInterval","getTaskChatInterval","updateTaskIsCompleted","universityOptions","loadTaskChat","taskChat","isCanvasEl","transformCoordWithViewport","isDomLevel2","MOUSE_EVENT_REG","_calcOut","calculate","calculateZrXY","layerX","offsetX","layerY","offsetY","ex","clientX","ey","clientY","box","getNativeEvent","normalizeEvent","isTouch","targetTouches","changedTouches","zrDelta","wheelDelta","detail","button","attachEvent","detachEvent","cancelBubble","returnValue","isMiddleOrRightButtonOnMouseUpDown","notLeftMouse","DataDiffer","UNDEFINED","INDEX_NOT_FOUND","ID_PREFIX","dataCtors","Float64Array","Int32Array","CtorUint32Array","Uint32Array","CtorInt32Array","CtorUint16Array","Uint16Array","getIndicesCtor","_rawCount","cloneChunk","originalChunk","TRANSFERABLE_PROPERTIES","CLONE_PROPERTIES","transferProperties","__wrappedMethods","_calculationInfo","hostModel","dimensionInfos","invertedIndicesMap","dimensionInfo","dimensionName","createInvertedIndices","_indices","_count","_storage","_nameList","_idList","_optionModels","_visual","_itemVisuals","hasItemVisual","_itemLayouts","_graphicEls","_chunkSize","_chunkCount","_rawExtent","_approximateExtent","_dimensionsSummary","_invertedIndicesMap","listProto","prepareChunks","chunkSize","chunkCount","DataCtor","lastChunkIndex","resizeChunkArray","newStore","prepareInvertedIndex","invertedIndices","getRawValueFromStore","rawIndex","chunkIndex","chunkOffset","chunk","getRawIndexWithoutIndices","getRawIndexWithIndices","getId","_idDimIdx","normalizeDimensions","cloneListForMapAndSample","excludeDimensions","allDimensions","originalStorage","cloneDimStore","getInitialExtent","originalDimStore","newDimStore","getDimension","getDimensionsOnCoord","dimensionsSummary","nameList","notProvider","_nameRepeatCount","_dimValueGetter","_dimValueGetterArrayRows","_initDataFromProvider","rawData","appendValues","values","names","dimLen","rawExtent","originalChunkCount","emptyDataItem","sourceIdx","dimRawExtent","nameDimIdx","dimensionInfoMap","idList","nameRepeatCount","_nameDimIdx","itemId","dimStorage","nameDim","nameDimChunk","getIndices","indices","thisCount","newIndices","buffer","chunkStore","getByRawIndex","rawIdx","dimStore","_getFast","getValues","hasValue","getDataExtent","dimData","initialExtent","dimExtent","currEnd","useRaw","setApproximateExtent","getCalculationInfo","getSum","getMedian","dimDataArray","sortedDimDataArray","rawIndexOf","indexOfName","indicesOfNearest","maxDistance","nearestIndices","minDist","minDiff","nearestIndicesLen","diff","contextCompat","filterSelf","dim0","selectRange","originalCount","quickFinished","chunkStorage","dimStorage2","chunkStorage2","val2","dimk","mapArray","tmpRetValue","dataCount","retValue","rawExtentOnDim","downSample","dimension","rate","sampleValue","sampleIndex","targetStorage","frameValues","frameSize","dataIdx","originalChunkIndex","originalChunkOffset","sampleFrameIdx","sampleChunkIndex","sampleChunkOffset","otherList","thisList","visual","setVisual","setLayout","getLayout","getItemLayout","setItemLayout","clearItemLayouts","itemVisual","setItemVisual","clearAllVisual","setItemDataAndSeriesIndex","setItemGraphicEl","getItemGraphicEl","eachItemGraphicEl","dimensionInfoList","injectFunction","originalMethod","res","TRANSFERABLE_METHODS","v2Distance","interpolate","isLoop","segs","w2","w3","TYPE_DELIMITER","IS_CONTAINER","checkClassType","RootClass","mandatoryMethods","$constructor","superClass","ExtendedClass","superCall","superApply","classBase","Clz","classAttr","random","enableClassManagement","entity","makeContainer","registerClass","componentMainType","throwWhenNotFound","getClassesByMainType","getAllClassMainTypes","types","hasSubTypes","registerWhenExtend","originalExtend","_fourPointsTransform","buildTransformer","EVENT_SAVED_PROP","transformLocalCoord","elFrom","inX","inY","saved","prepareCoordMarkers","transformer","preparePointerTransformer","propLR","propTB","stl","idxLR","idxTB","cssText","transformerName","oldSrcCoords","srcCoords","oldCoordTheSame","destCoords","ii","offsetLeft","_curve","containStroke","_barGrid","prepareLayoutBarSeries","makeColumnLayout","retrieveColumnLayout","getScaleExtent","axisDataLen","boundaryGap","scaleType","originalExtent","getExtent","getCategories","setBlank","isBaseAxisAndHasBarSeries","barSeriesModels","barWidthAndOffset","adjustedScale","adjustScaleForOverflow","axisExtent","axisLength","barsOnCurrentAxis","minOverflow","maxOverflow","totalOverFlow","oldRange","oldRangePercentOfNew","overflowBuffer","extentInfo","base","setInterval","ifAxisCrossZero","makeLabelFormatter","labelFormatter","getLabelModel","categoryTickStart","tpl","tickValue","getAxisRawValue","tick","estimateLabelUnionRect","realNumberScaleTicks","tickCount","isCategory","categoryScaleExtent","axisLabelModel","unrotatedSingleRect","getTextRect","singleRect","rotateTextRect","rotateRadians","boundingBox","plain","beforeWidth","beforeHeight","afterWidth","afterHeight","rotatedRect","getOptionCategoryInterval","shouldShowAllLabels","guid","Handler","Storage","Painter","HandlerProxy","useVML","painterCtors","ZRender","getInstance","registerPainter","delInstance","rendererType","vml","handerProxy","getViewportRoot","_needsRefresh","oldDelFromStorage","delFromStorage","oldAddToStorage","addToStorage","removeSelfFromZr","addSelfToZr","addRoot","delRoot","configLayer","zLevel","_needsRefreshHover","triggerRendered","refreshHoverImmediately","elMirror","refreshHover","clearHover","clearAnimation","pathToImage","setCursorStyle","cursorStyle","findHover","eventHandler","_component","getUID","dataProcessorHandlers","visualHandlers","_dataProcessorHandlers","_visualHandlers","_allHandlers","_stageTaskMap","performStageTasks","stageHandlers","needSetDirty","__pipeline","stageHandlerRecord","seriesTaskMap","overallTask","overallNeedDirty","stub","performArgs","block","pipelineId","skip","performRawSeries","isSeriesFiltered","taskRecord","_pipelineMap","pCtx","progressiveEnabled","progressiveRender","__idxInPipeline","blockIndex","modDataCount","modBy","dataLen","incrementalPrepareRender","threshold","large","pipelineMap","tail","pipe","stageTaskMap","record","createSeriesStageTask","overallReset","createOverallStageTask","__block","getUpstream","getTargetSeries","seriesTaskPlan","seriesTaskReset","seriesTaskCount","useClearVisual","isVisual","isLayout","createOnAllSeries","eachRawSeries","eachRawSeriesByType","removeKey","overallTaskReset","overallProgress","createStub","stubReset","onDirty","stubOnDirty","agent","getSeries","upstreamContext","stubProgress","getDownstream","resetDefines","makeSeriesTaskProgress","singleSeriesTaskProgress","resetDefineIdx","resetDefine","dataEach","progress","detectSeriseType","legacyFunc","ecModelMock","apiMock","mockMethods","eachSeriesByType","cond","componentUtil","boxLayoutMixin","dependentModels","themeModel","newCptOption","isInit","fields","optList","Class","getReferringComponents","queryComponents","getDependencies","deps","enableSubTypeDefaulter","enableTopologicalTravel","BUILTIN_OBJECT","TYPED_ARRAY","objToString","arrayProto","nativeForEach","nativeFilter","nativeSlice","nativeMap","nativeReduce","typeStr","isPrimitive","isDom","targetProp","sourceProp","isBuiltInObject","mergeAll","targetAndSources","overlay","clazz","baseClazz","clazzPrototype","memo","ownerDocument","retrieve","value1","retrieve3","value2","normalizeCssArray","primitiveKey","HashMap","isArr","thisMap","visit","concatArray","newArray","_i","_loop_1","args_1","linear","quadraticIn","quadraticOut","quadraticInOut","cubicIn","cubicOut","cubicInOut","quarticIn","quarticOut","quarticInOut","quinticIn","quinticOut","quinticInOut","sinusoidalIn","sinusoidalOut","sinusoidalInOut","exponentialIn","exponentialOut","exponentialInOut","circularIn","circularOut","circularInOut","elasticIn","asin","elasticOut","elasticInOut","backIn","backOut","backInOut","bounceIn","bounceOut","bounceInOut","textContain","textHelper","normalizeTextStyle","shadowColor","needDrawText","renderText","NONE","getStroke","__awaiter","thisArg","_arguments","P","generator","adopt","resolve","Promise","reject","rejected","then","__generator","sent","trys","verb","isNullOrUndefined","isEmptyArray","isRefEqual","lhs","rhs","isEqual","every","isSpecified","isCallable","isLocator","__locatorRef","findIndex","arrayLike","predicate","toArray","collection","_copyArray","createFlags","untouched","touched","pristine","invalid","passed","failed","cancelled","later","timeout","template","RULES","normalizeSchema","schema","RuleContainer","computesRequired","isLazy","isRequireRule","getRuleDefinition","ruleName","guardExtend","validate","DEFAULT_CONFIG","defaultMessage","skipOptional","classes","bails","useConstraintAttrs","currentConfig","getConfig","setConfig","newConf","normalizeRules","rules","_$$isNormalized","buildParams","parsedRule","parseRule","provided","ruleSchema","definedParams","lastDefinedParam_1","isTarget","createLocator","cast","castFn","locator","crossTable","extractLocators","shouldBail","skipIfEmpty","field","failedRules","regenerateMap","forceRequired","customMessages","_validate","msg","isInitial","shouldSkip","_shouldSkip","_test","requireRules","isEmptyAndOptional","isRequired","values_1","castValue","fillTargetValues","_field_","_value_","_rule_","_generateFieldError","ruleTargets","_getRuleTargets","_getUserTargets","userTargets","userMessage","_normalizeMessage","numTargets","ruleConfig","name_1","targetPart","aggressive","eager","passive","modes","setInteractionMode","implementation","EVENT_BUS","localeChanged","DICTIONARY","Dictionary","dictionary","_f","fieldContainer","messageContainer","messages","hasRule","isEvent","Event","srcElement","normalizeEventValue","files","_vModifiers","valueAsNumber","trimmedValue","isTextInput","vnode","elm","findModel","nonStandardVNodeData","findValue","findModelConfig","componentOptions","propsDataWithValue","extractChildren","findInputNodes","candidates","mergeVNodeListeners","fns","invoker","addNativeNodeListener","addComponentNodeListener","listeners","addVNodeListener","getInputEventName","event_1","isHTMLNode","resolveTextualRules","regex","maxlength","minlength","min_value","max_value","resolveRules","htmlTags","normalizeChildren","slotProps","shouldValidate","_ignoreImmediate","immediate","normalizedEvents","_needsValidation","initialized","createValidationCtx","ariaInput","ariaMsg","onRenderUpdate","vm","initialValue","validateNow","triggerThreadSafeValidation","validateSilent","$once","computeModeSetting","compute","pendingPromise","_pendingValidation","applyResult","createCommonHandlers","$veeOnInput","syncValue","setFlags","onInput","$veeOnBlur","onValidate","$veeHandler","$veeDebounce","_pendingReset","addListeners","_inputEventName","PROVIDER_COUNTER","fieldName","defaultValues","isActive","inject","$_veeObserver","createObserver","vid","slim","detectInput","deep","fieldDeps","normalizedRules","dep","depName","watchCrossFieldDep","_resolvedRules","computeClassObj","onLocaleChanged","_regenerateMap","errors_1","failedRules_1","$off","registerField","inputs","resolved","unobserve","deactivated","flag","createLookup","setErrors","updateRenderingContextRefs","cls","providers","refs","reduced","extractId","providedId","observe","withHooks","_veeWatchers","$watch","FLAGS_STRATEGIES","OBSERVER_COUNTER","data$1","createObserverFlags","observers","provideSelf","provide","computeObserverState","unregister","prepareSlotProps","$listeners","subscriber","kind","provider","$delete","validateWithInfo","results","isValid","obs","errorArr","observer","passes","vms","SHADOW_PROPS","globalDefault","OPTION_INNER_KEY","_optionManager","baseOption","mountOption","initBase","timelineOption","getTimelineOption","mediaOptions","getMediaOption","mediaOption","newOption","componentsMap","newCptTypes","visitComponent","newCptOptionList","mapResult","mappingToExists","makeIdAndName","keyInfo","determineSubType","getComponentsByTypes","resultItem","ComponentModelClass","createSeriesIndices","componentOption","topologicalTravel","_seriesIndicesMap","_seriesIndices","isIdInner","cpts","isIdArray","cpt","isNameArray","filterBySubType","findComponents","queryCond","getQueryCond","doFilter","indexAttr","idAttr","nameAttr","queryResult","getSeriesByName","oneSeries","getSeriesByType","getSeriesCount","assertSeriesInitialized","rawSeriesIndex","getCurrentSeriesIndices","filterSeries","filteredSeries","componentTypes","isNotTargetSeries","seiresIndex","mergeTheme","notMergeColorLayer","colorLayer","themeItem","existComponent","seriesModels","defaultKeyGetter","oldArr","newArr","oldKeyGetter","newKeyGetter","_old","_new","_oldKeyGetter","_newKeyGetter","initIndexMap","keyArr","keyGetterName","dataDiffer","existence","_add","_remove","execute","oldDataIndexMap","newDataIndexMap","oldDataKeyArr","newDataKeyArr","PLAIN_TEXT","WILL_BE_RESTORED","echartsAPIList","chartInstance","_axisTickLabelBuilder","createAxisTicks","createAxisLabels","calculateCategoryInterval","NORMALIZED_EXTENT","Axis","onBand","fixExtentWithBands","nTick","margin","fixOnBandTicksCoords","ticksCoords","alignWithLabel","ticksLen","last","diffSize","crossLen","ticksItem","containData","dataToCoord","coordToData","pointToData","getTicksCoords","tickModel","getTickModel","getMinorTicksCoords","minorTickModel","minorTicks","getMinorTicks","minorTicksCoords","minorTicksGroup","minorTick","getViewLabels","labels","getBandWidth","isHorizontal","getRotate","LN2","determinant","rows","rowStart","rowMask","colMask","detCache","cacheKey","fullRank","colStart","subRowMask","subRowStart","colLocalIdx","colTag","mA","vh","srcPointX","srcPointY","pk","normalizeRadian","angle","sysDims","dataDimNameMap","coordDimNameMap","getDimCount","userDimName","encodeDef","validDataDims","resultDimIdx","applyDim","availDimIdx","sysDimItem","sysDimIndex","sysDimItemDimsDef","sysDimItemOtherDims","sysDimItemDimsDefItem","generateCoordCount","fromZero","extra","genName","optDimCount","x_","polyHelper","ORIGIN_METHOD","RATE","THROTTLE_TYPE","currCall","debounceNextCall","lastCall","lastExec","timer","thisDelay","thisDebounce","debounceDelay","createOrUpdate","fnAttr","throttleType","originFn","lastThrottleType","lastRate","subTypeDefaulters","registerSubTypeDefaulter","defaulter","componentTypeMain","dependencyGetter","makeDepndencyGraph","fullNameList","noEntryList","thisItem","createDependencyGraphItem","originalDeps","availableDeps","getAvailableDependencies","entryCount","dependentName","predecessor","thatItem","successor","targetNameList","targetNameSet","currComponentType","currVertex","isInTargetNameSet","removeEdgeAndAdd","removeEdge","succComponentType","platform","gradientColor","animationDuration","animationDurationUpdate","animationEasingUpdate","animationThreshold","progressiveThreshold","hoverLayerThreshold","shadowTemp","orignalBrush","modified","clipPaths","clipPath","helper","roundNumber","_intervalPrecision","thisExtent","other","getInterval","getIntervalPrecision","expandToNicedExtent","niceTickExtent","intervalPrecision","safeLimit","lastNiceTick","prevTick","minorInterval","intervalScaleNiceTicks","expandSize","CoordSysInfo","fetch","fetchers","cartesian2d","xAxisModel","yAxisModel","singleAxis","singleAxisModel","polar","polarModel","radiusAxisModel","findAxisModel","angleAxisModel","parallelModel","parallelAxisIndex","axisIndex","axisDim","roundingErrorFix","mathLog","LogScale","_originalScale","originalScale","powVal","__fixMin","fixRoundingError","__fixMax","originalVal","_needCollect","needCollect","_deduplication","deduplication","_map","createByAxisModel","dedplication","getOrCreateMap","category","cs","da","de","es","fr","it","lt","nl","hu","pl","pt","ro","ru","sk","sr","sv","tr","uk","ar","az","alphanumeric","alphaDash","loc","alpha$1","validate$1","params$1","alpha_dash","validate$2","params$2","alpha_num","validate$4","params$4","between","validate$5","params$5","confirmed","validate$6","strVal","params$6","validate$8","emailStr","params$8","validate$d","integer","validate$g","params$b","validate$k","params$e","validate$n","params$g","validate$o","allowFalse","params$h","validatorPositive","validatorPassword","password","regExp","validPassword","validatorCreditCard","creditnum","cRegExp","validCreditCard","validatorUrlValidator","rule_required","rule_email","rule_min","rule_confirmed","rule_regex","rule_between","rule_alpha","rule_integer","rule_digits","rule_alpha_dash","rule_alpha_num","rule_length","read","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","write","rt","factory","installedModules","__webpack_require__","moduleId","property","container_1","format_1","leaf_1","scroll_1","inline_1","block_1","embed_1","text_1","attributor_1","class_1","style_1","store_1","Registry","Parchment","Scope","Container","Format","Leaf","Embed","Scroll","Block","Inline","Attributor","Attribute","Store","__extends","extendStatics","setPrototypeOf","__proto__","__","ParchmentError","_super","BlotClass","TEXT_NODE","bubble","DATA_KEY","blot","ANY","LEVEL","BLOCK","INLINE","tagName","TYPE","Definitions","Definition","blotName","attrName","keyName","tagNames","equal","NULL_CHARACTER","fromCharCode","Delta","insert","newOp","retain","lastOp","chop","partition","changeLength","delete","iter","hasNext","nextOp","compose","thisIter","otherIter","firstOther","peek","firstLeft","peekType","peekLength","thisOp","otherOp","rest","strings","prep","diffResult","opLength","INSERT","DELETE","EQUAL","eachLine","newline","transformPosition","nextType","hasOwn","toStr","gOPD","isPlainObject","hasOwnConstructor","hasIsPrototypeOf","setProperty","getProperty","copyIsArray","BlockEmbed","bubbleFormats","_createClass","descriptor","Constructor","protoProps","staticProps","_get","receiver","desc","getPrototypeOf","_extend","_extend2","_interopRequireDefault","_quillDelta","_quillDelta2","_parchment","_parchment2","_break","_break2","_inline","_inline2","_text","_text2","_classCallCheck","instance","_possibleConstructorReturn","ReferenceError","_inherits","subClass","NEWLINE_LENGTH","_Parchment$Embed","domNode","attribute","BLOCK_ATTRIBUTE","endsWith","insertAt","BLOCK_BLOT","_Parchment$Block","cache","descendants","leaf","statics","defaultChild","allowedChildren","overload","expandConfig","_typeof","_slicedToArray","sliceIterator","_arr","_n","_editor","_editor2","_emitter3","_emitter4","_module","_module2","_selection","_selection2","_logger","_logger2","_theme2","debug","Quill","__quill","addContainer","scrollingContainer","emitter","scroll","whitelist","editor","selection","keyboard","addModule","clipboard","history","EDITOR_CHANGE","TEXT_CHANGE","SCROLL_UPDATE","mutations","lastRange","modify","contents","convert","setContents","readOnly","limit","imports","startsWith","refNode","_this3","_overload","_overload2","deleteText","enabled","scrollIntoView","_this4","sources","API","getSelection","change","formatLine","formatText","setSelection","SILENT","_this5","_overload3","_overload4","_this6","_overload5","_overload6","bounds","getBounds","containerBounds","getLength","_overload7","_overload8","getContents","getFormat","getRange","_overload9","_overload10","getText","hasFocus","embed","_this7","insertEmbed","_this8","_overload11","_overload12","insertText","once","dangerouslyPasteHTML","_this9","_overload13","_overload14","removeFormat","_this10","deleted","applied","applyDelta","_overload15","_overload16","Range","USER","_this11","DEFAULTS","import","themeConfig","moduleNames","moduleConfig","moduleClass","modifier","strict","oldDelta","shiftRange","_emitter","_emitter2","_map2","_map3","_map4","_Parchment$Inline","BLOT","isolate","moveChildren","selfIndex","order","otherIndex","TextBlot","_Parchment$Text","_eventemitter","_eventemitter2","EVENTS","_key","_node$__quill$emitter","handleDOM","Emitter","_EventEmitter","_len2","_key2","SCROLL_BEFORE_UPDATE","SCROLL_OPTIMIZE","SELECTION_CHANGE","Module","quill","_console","namespace","ns","logger","newLevel","pSlice","objectKeys","isArguments","deepEqual","actual","expected","objEquiv","isUndefinedOrNull","isBuffer","ka","kb","attributeBit","ATTRIBUTE","canAdd","Code","_block","_block2","_Inline","CodeBlock","_Block","_descendant","descendant","_descendant2","deleteAt","nextNewline","newlineIndex","prevNewline","isolateLength","formatAt","_descendant3","_descendant4","searchIndex","optimize","unwrap","TAB","_op","_op2","_code","_code2","_cursor2","_clone","_clone2","_deepEqual","_deepEqual2","ASCII","Editor","getDelta","consumeNextNewline","scrollLength","batchStart","normalizeDelta","_scroll$line","_scroll$line2","_line$descendant","_line$descendant2","batchEnd","lengthRemaining","lineLength","codeIndex","codeLength","formatsArr","blots","combineFormats","_scroll$line3","_scroll$line4","suffixLength","suffix","cursorIndex","textBlot","CONTENTS","oldText","newText","diffDelta","combined","merged","bullet","_toConsumableArray","arr2","Selection","composing","mouseDown","savedRange","handleComposition","handleDragging","listenDOM","native","getNativeRange","textNode","setNativeRange","ignored","_context$range","startNode","startOffset","endNode","endOffset","nativeRange","collapsed","after","attach","_scroll$leaf","_scroll$leaf2","_leaf$position","_leaf$position2","createRange","setStart","_scroll$leaf3","_scroll$leaf4","_leaf$position3","_leaf$position4","setEnd","side","rangeCount","getRangeAt","normalizeNative","info","normalized","normalizedToRange","positions","indexes","_position","startContainer","endContainer","childNodes","_scroll$leaf5","_scroll$leaf6","_leaf$position5","_leaf$position6","first","scrollBounds","removeAllRanges","addRange","rangeToNative","_getRange","_getRange2","Break","linked_list_1","shadow_1","ContainerBlot","makeBlot","forEachAt","criteria","lengthLeft","detach","childBlot","refBlot","insertInto","targetParent","inclusive","addedNodes","removedNodes","mutation","compareDocumentPosition","DOCUMENT_POSITION_CONTAINED_BY","DOCUMENT_POSITION_FOLLOWING","replaceChild","FormatBlot","replaceWith","replacement","move","LeafBlot","INLINE_BLOT","lib","keepNull","Iterator","retOp","_instanceof","nativeSet","nativePromise","Map","Set","circular","depth","includeNonEnumerable","allParents","allChildren","useBuffer","Buffer","__isArray","__isRegExp","__getRegExpFlags","__isDate","allocUnsafe","keyChild","valueChild","entryChild","symbol","allPropertyNames","getOwnPropertyNames","propertyName","__objToStr","ignoreCase","multiline","clonePrototype","_container","_container2","isLine","_Parchment$Scroll","_line","_line2","_line3","_line4","_newlineIndex","getLines","takeRecords","SHORTKEY","_quill","_quill2","Keyboard","_Module","bindings","addBinding","ENTER","handleEnter","metaKey","altKey","BACKSPACE","handleBackspace","handleDelete","handleDeleteRange","listen","binding","defaultPrevented","_quill$getLine","getLine","_quill$getLine2","_quill$getLeaf","getLeaf","_quill$getLeaf2","leafStart","offsetStart","_ref2","leafEnd","offsetEnd","prefixText","suffixText","curContext","empty","prevented","makeEmbedArrowHandler","_ref3","where","LEFT","RIGHT","_quill$getLeaf3","_quill$getLeaf4","_quill$getLine11","_quill$getLine12","_quill$getLine13","_quill$getLine14","curFormats","prevFormats","nextLength","_quill$getLine15","_quill$getLine16","_quill$getLine17","_quill$getLine18","nextFormats","firstFormats","lastFormats","lineFormats","makeCodeBlockHandler","indent","_quill$scroll$descend","_quill$scroll$descend2","scrollIndex","getIndex","makeFormatHandler","shortKey","ESCAPE","UP","DOWN","cutoff","updateContents","_quill$getLine3","_quill$getLine4","_quill$getLine5","_quill$getLine6","_quill$getLine7","_quill$getLine8","_quill$getLine9","_quill$getLine10","Cursor","createTextNode","_length","restoreText","_Parchment$Container","ColorStyle","ColorClass","ColorAttributor","_Parchment$Attributor","sanitize","Link","_sanitize","PROTOCOL_WHITELIST","SANITIZED_URL","protocols","anchor","href","protocol","_keyboard","_keyboard2","_dropdown","_dropdown2","optionsCounter","toggleAriaAttribute","Picker","buildPicker","togglePicker","escape","hasAttribute","selectItem","buildItem","buildLabel","buildOptions","_embed","_embed2","_scroll","_scroll2","_clipboard","_clipboard2","_history","_history2","ShadowBlot","cloneNode","parentBlot","refDomNode","AttributorStore","styles","ClassAttributor","matches","camelize","part","StyleAttributor","Theme","themes","GUARD_TEXT","contentNode","childNode","leftGuard","rightGuard","prevLength","AlignStyle","AlignClass","AlignAttribute","BackgroundStyle","BackgroundClass","_color","DirectionStyle","DirectionClass","DirectionAttribute","FontClass","FontStyle","FontStyleAttributor","SizeStyle","SizeClass","getLastChangeIndex","History","lastRecorded","ignoreChange","userOnly","undo","redo","changeDelta","undoDelta","maxStack","endsWithNewlineChange","deleteLength","changeIndex","BaseTooltip","_colorPicker","_colorPicker2","_iconPicker","_iconPicker2","_picker","_picker2","_tooltip","_tooltip2","ALIGNS","COLORS","FONTS","HEADERS","SIZES","BaseTheme","_Theme","listener","textbox","pickers","picker","extendToolbar","buttons","icons","selects","fillSelect","align","handlers","formula","edit","fileInput","reader","FileReader","readAsDataURL","video","_Tooltip","boundsContainer","cancel","preview","linkRange","restoreFocus","extractVideoUrl","LinkedList","cur","curNode","curIndex","curLength","OBSERVER_CONFIG","characterData","characterDataOldValue","childList","subtree","MAX_OPTIMIZE_ITERATIONS","ScrollBlot","MutationObserver","mark","markParent","previousSibling","grandChild","obj1","obj2","InlineBlot","BlockBlot","EmbedBlot","splitText","_toggle","DOMTokenList","searchString","subjectString","execCommand","DIFF_DELETE","DIFF_INSERT","DIFF_EQUAL","diff_main","text1","text2","cursor_pos","commonlength","diff_commonPrefix","commonprefix","diff_commonSuffix","commonsuffix","diffs","diff_compute_","diff_cleanupMerge","fix_cursor","fix_emoji","longtext","shorttext","hm","diff_halfMatch_","text1_a","text1_b","text2_a","text2_b","mid_common","diffs_a","diffs_b","diff_bisect_","text1_length","text2_length","max_d","v_offset","v_length","front","k1start","k1end","k2start","k2end","k1","k1_offset","k2_offset","diff_bisectSplit_","k2","text1a","text2a","text1b","text2b","diffsb","pointermin","pointermax","pointermid","pointerstart","pointerend","diff_halfMatchI_","best_longtext_a","best_longtext_b","best_shorttext_a","best_shorttext_b","seed","best_common","prefixLength","hm1","hm2","count_delete","count_insert","text_delete","text_insert","changes","cursor_normalize_diff","current_pos","next_pos","split_pos","d_left","d_right","norm","ndiffs","cursor_pointer","d_next","merge_tuples","compact","starts_with_pair_end","ends_with_pair_start","fixed_diffs","left_d","right_d","shim","supportsArgumentsClass","supported","unsupported","propertyIsEnumerable","has","Events","EE","EventEmitter","_events","_eventsCount","eventNames","exists","available","ee","a1","a2","a3","a4","a5","removeListener","removeAllListeners","addListener","setMaxListeners","prefixed","matchText","matchSpacing","matchNewline","matchBlot","matchAttributor","_extend3","_align","_background","_direction","_font","_size","DOM_KEY","CLIPBOARD_CONFIG","matchBreak","ELEMENT_NODE","matchStyles","matchIndent","matchAlias","matchIgnore","ATTRIBUTE_ATTRIBUTORS","STYLE_ATTRIBUTORS","Clipboard","onPaste","matchers","matcher","matchVisual","addMatcher","innerText","_prepareMatching","prepareMatching","_prepareMatching2","elementMatchers","textMatchers","deltaEndsWith","paste","pair","_pair","applyFormat","computeStyle","getComputedStyle","endText","childrenDelta","nextElementSibling","nodeHeight","marginTop","marginBottom","italic","bold","textIndent","whiteSpace","collapse","Bold","addControls","Toolbar","_ret","controls","addHandler","_this$quill$selection","_this$quill$selection2","_quill$selection$getR","_quill$selection$getR2","prompt","addButton","groups","control","addSelect","link","ColorPicker","_Picker","colorLabel","IconPicker","defaultItem","Tooltip","TEMPLATE","reference","rootBounds","verticalShift","_base","_base2","_link","_link2","_icons","_icons2","TOOLBAR_CONFIG","SnowTheme","_BaseTheme","buildButtons","buildPickers","SnowTooltip","_BaseTooltip","_core","_core2","_indent","_blockquote","_blockquote2","_header","_header2","_list","_list2","_bold","_bold2","_italic","_italic2","_script","_script2","_strike","_strike2","_underline","_underline2","_image2","_video","_video2","_formula","_formula2","_syntax","_syntax2","_toolbar","_toolbar2","_bubble","_bubble2","_snow","_snow2","IndentClass","ListItem","IdentAttributor","Blockquote","Header","_Container","listEventHandler","Italic","_Bold","Script","Strike","Underline","ATTRIBUTES","Video","_BlockEmbed","FormulaBlot","_Embed","katex","throwOnError","errorColor","Formula","CodeToken","SyntaxCodeBlock","_CodeBlock","_highlight","cachedText","Syntax","highlight","hljs","highlightAuto","BubbleTooltip","BubbleTheme","lastLine","_bounds","arrow","marginLeft","install","globalOptions","boundary","script","background","_options","_content","defaultOptions","initialize","$el","pasteHTML","esModule","v2ApplyTransform","rb","lb","maxX","maxY","intersect","ax0","ax1","ay0","ay1","bx0","bx1","by0","by1","msRequestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","textColor","maskColor","showSpinner","spinnerRadius","mask","labelRect","lineCap","animateShape","getAreaStyle","v2Min","v2Max","v2Scale","v2Add","v2Clone","v2Sub","constraint","prevPoint","nextPoint","cps","d0","cp0","_defineProperties","OBSERVER_PROP_NAME","VisibilityObserver","doneOnce","IntersectionObserver","rootMargin","_unused","entries","entry","isIntersecting","intersectionRatio","mod","_prevModifiers","VBVisible","componentUpdated","maxRows","noAutoShrink","noResize","heightInPx","computedStyle","computedRows","overflowY","computedMinRows","math","computedMaxRows","form","plaintext","computedAriaInvalid","computedListeners","bvListeners","localValue","setHeight","visibleCallback","computeHeight","$isServer","lineHeight","border","borderTopWidth","borderBottomWidth","padding","paddingTop","paddingBottom","minHeight","oldHeight","scrollHeight","contentRows","computedClass","outputShape","inputShape","originX","originY","originWidth","originHeight","positiveOrNegative","doubledPosition","createRenderPlanner","STACK_PREFIX","LARGE_BAR_MIN_WIDTH","LargeArr","getSeriesStackId","getAxisKey","getLayoutOnAxis","baseAxis","axisKey","bandWidth","stackId","widthAndOffsets","doCalBarWidthAndOffset","offsetCenter","isOnCartesian","isInLargeMode","getValueAxesMinGaps","barSeries","axisValues","cartesian","cnt","axisMinGaps","valuesInAxis","seriesInfoList","minGap","extentSpan","scaleSpan","barWidth","barMaxWidth","barMinWidth","barGap","barCategoryGap","columnsMap","seriesInfo","columnsOnAxis","remainedWidth","autoWidthCount","categoryGap","stacks","maxWidth","minWidth","barGapPercent","autoWidth","column","finalWidth","lastColumn","widthSum","lastStackCoords","lastStackCoordsOrigin","columnLayoutInfo","columnOffset","columnWidth","valueAxis","getOtherAxis","barMinHeight","valueDim","baseDim","stacked","isValueAxisH","valueAxisStart","getValueAxisStart","baseValue","sign","baseCoord","dataToPoint","largeLayout","coordLayout","grid","getRect","valueAxisHorizontal","valueDimIdx","largePoints","largeBackgroundPoints","largeDataIndices","valuePair","pointsOffset","idxOffset","backgroundStart","toGlobalCoord","settings","tagname","ps","__init","__uninit","$route","updated","scrolling","isAlive","scrollingThreshold","CustomEvent","initCustomEvent","reach","paddingLeft","paddingRight","borderLeftWidth","borderRightWidth","minScrollbarLength","railXWidth","isRtl","negativeScrollAdjustment","scrollLeft","containerWidth","contentWidth","isScrollbarXUsingBottom","scrollbarXBottom","scrollbarXTop","scrollbarXRail","railYHeight","isScrollbarYUsingRight","scrollbarYRight","scrollbarYOuterWidth","scrollbarYLeft","scrollbarYRail","scrollbarX","scrollbarXLeft","scrollbarXWidth","railBorderXWidth","scrollbarY","scrollbarYTop","scrollbarYHeight","railBorderYWidth","clicking","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","thumb","rail","consuming","active","X","unbindAll","eventElements","eventElement","isWebKit","documentElement","supportsTouch","DocumentTouch","supportsIePointer","isChrome","clientWidth","containerHeight","clientHeight","scrollWidth","contentHeight","suppressScrollX","scrollXMarginOffset","scrollbarXActive","railXMarginWidth","railXRatio","suppressScrollY","scrollYMarginOffset","scrollbarYActive","railYMarginHeight","railYRatio","pageY","pageX","E","wheelPropagation","isDefaultPrevented","contentDocument","deltaX","deltaY","wheelDeltaX","wheelDeltaY","deltaMode","overflow","overflowX","useBothWheelAxes","wheelSpeed","onwheel","onmousewheel","pointerType","MSPOINTER_TYPE_MOUSE","swipeEasing","isInitialized","PointerEvent","MSPointerEvent","wheel","isNegativeScroll","marginRight","lastScrollTop","lastScrollLeft","onScroll","removePsClasses","$props","media","sourceMap","singleton","styleSheet","btoa","unescape","encodeURIComponent","DEBUG","locals","tmpRect","Triangle","Diamond","Pin","tanX","tanY","cpLen","cpLen2","Arrow","symbolCtors","roundRect","square","diamond","pin","triangle","symbolShapeMakers","symbolBuildProxies","SymbolClz","symbolType","inBundle","proxySymbol","symbolPathSetColor","innerColor","symbolStyle","symbolShape","__isEmptyBrush","keepAspect","symbolPath","setColor","toAbsoluteIndex","toLength","toObject","arraySpeciesCreate","createProperty","arrayMethodHasSpeciesSupport","arrayMethodUsesToLength","HAS_SPECIES_SUPPORT","USES_TO_LENGTH","ACCESSORS","0","1","MAXIMUM_ALLOWED_LENGTH_EXCEEDED","deleteCount","insertCount","actualDeleteCount","actualStart","argumentsLength","roundRectHelper","DEFAULT_FONT","VALID_TEXT_ALIGN","VALID_TEXT_VERTICAL_ALIGN","SHADOW_STYLE_COMMON_PROPS","_tmpTextPositionResult","_tmpBoxPositionResult","normalizeStyle","makeFont","renderRichText","renderPlainText","needDrawBg","needDrawBackground","checkCache","cachedByMe","styleFont","computedFont","__computedFont","__styleFont","contentBlock","__textCotentBlock","parsePlainText","outerHeight","textLines","boxPos","getBoxPosition","baseX","baseY","applyTextRotation","boxY","adjustTextY","textX","textY","outerWidth","boxX","adjustTextX","drawBackground","getTextXForPadding","propItem","styleProp","ctxProp","textStrokeWidthPrev","strokeWidthChanged","strokeChanged","getFill","strokeText","fillText","parseRichText","drawRichText","xLeft","lineTop","xRight","tokens","tokenCount","usedWidth","lineXLeft","lineXRight","placeToken","tokenStyle","isLineHolder","setCtx","isPlainBg","originalGlobalAlpha","onBgImageLoaded","maxValue","formCustomMixin","custom","_extends","_objectWithoutPropertiesLoose","excluded","sourceKeys","_objectWithoutProperties","sourceSymbolKeys","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","IE11OrLess","Edge","FireFox","Safari","IOS","ChromeForAndroid","captureMode","getParentOrHost","closest","includeCTX","_throttleTimeout","R_SPACE","defaultView","currentStyle","selfOnly","appliedTransforms","matrixFn","DOMMatrix","WebKitCSSMatrix","CSSMatrix","MSCSSMatrix","getWindowScrollingElement","scrollingElement","relativeToContainingBlock","relativeToNonStaticParent","undoScale","elRect","innerWidth","containerRect","elMatrix","isScrolledPast","elSide","parentSide","getParentAutoScrollElement","elSideVal","parentSideVal","getChild","childNum","currentChild","Sortable","ghost","dragged","lastElementChild","previousElementSibling","getRelativeScrollOffset","winScroller","indexOfObject","includeSelf","gotSelf","elemCSS","dst","isRectEqual","rect1","rect2","ms","cancelThrottle","scrollBy","Polymer","Zepto","setRect","unsetRect","expando","AnimationStateManager","animationCallbackId","animationStates","captureAnimationState","fromRect","thisAnimationDuration","childMatrix","addAnimationState","removeAnimationState","animateAll","animating","animationTime","toRect","prevFromRect","prevToRect","animatingRect","targetMatrix","calculateRealTime","animationResetTimer","currentRect","translateX","translateY","animatingX","animatingY","repaint","animated","initializeByDefault","PluginManager","mount","plugin","pluginEvent","sortable","eventCanceled","eventNameGlobal","pluginName","initializePlugins","modifyOption","getEventProperties","eventProperties","modifiedValue","optionListeners","rootEl","cloneEl","toEl","fromEl","oldIndex","newIndex","oldDraggableIndex","newDraggableIndex","originalEvent","putSortable","extraEventProperties","onName","bubbles","cancelable","pullMode","lastPutMode","allEventProperties","dragEl","parentEl","ghostEl","nextEl","lastDownEl","cloneHidden","dragStarted","moved","activeSortable","hideGhostForTarget","_hideGhostForTarget","unhideGhostForTarget","_unhideGhostForTarget","cloneNowHidden","cloneNowShown","dispatchSortableEvent","_dispatchEvent","activeGroup","tapEvt","touchEvt","lastDx","lastDy","tapDistanceLeft","tapDistanceTop","lastTarget","lastDirection","targetMoveDistance","ghostRelativeParent","awaitingDragStarted","ignoreNextClick","sortables","pastFirstInvertThresh","isCircumstantialInvert","ghostRelativeParentInitialScroll","_silent","savedInputChecked","documentExists","PositionGhostAbsolutely","CSSFloatProperty","supportDraggable","supportCssPointerEvents","pointerEvents","_detectDirection","elCSS","elWidth","child1","child2","firstChildCSS","secondChildCSS","firstChildWidth","secondChildWidth","flexDirection","gridTemplateColumns","touchingSideChild2","_dragElInRowColumn","dragRect","vertical","dragElS1Opp","dragElS2Opp","dragElOppLength","targetS1Opp","targetS2Opp","targetOppLength","_detectNearestEmptySortable","emptyInsertThreshold","insideHorizontally","insideVertically","_prepareGroup","toFn","pull","sameGroup","otherGroup","originalGroup","checkPull","checkPut","revertClone","stopImmediatePropagation","nearestEmptyInsertDetectEvent","nearest","_onDragOver","_checkOutsideTargetEl","_isOutsideThisEl","handle","swapThreshold","invertSwap","invertedSwapThreshold","removeCloneOnHide","ghostClass","chosenClass","dragClass","preventOnFilter","dataTransfer","dropBubble","dragoverBubble","dataIdAttr","delayOnTouchOnly","touchStartThreshold","forceFallback","fallbackClass","fallbackOnBody","fallbackTolerance","fallbackOffset","supportPointer","nativeDraggable","_onTapStart","_globalDragOver","dropEffect","_onMove","willInsertAfter","retVal","onMoveFn","onMove","draggedRect","related","relatedRect","_disableDraggable","_unsilent","_ghostIsLast","spacer","_getSwapDirection","isLastTarget","mouseOnAxis","targetLength","targetS1","targetS2","_getInsertDirection","_generateId","_saveInputCheckedState","checked","_nextTick","_cancelNextTick","_getDirection","originalTarget","isContentEditable","_prepareDragStart","dragStartFn","_lastX","_lastY","_onDrop","_disableDelayedDragEvents","_triggerDragStart","_disableDelayedDrag","_delayedDragTouchMoveHandler","_dragStartTimer","_onTouchMove","_onDragStart","_dragStarted","fallback","_appendGhost","_nulling","_emulateDragOver","elementFromPoint","ghostMatrix","relativeScrollOffset","cssMatrix","_hideClone","cloneId","_loopId","effectAllowed","_dragStartId","revert","isOwner","canSort","fromSortable","completedFired","dragOverEvent","_ignoreWhileAnimating","completed","elLastChild","targetBeforeFirstSwap","sibling","differentLevel","differentRowCol","side1","scrolledPastTop","scrollBefore","dragIndex","moveVector","insertion","_showClone","_offMoveEvents","_offUpEvents","handleEvent","items","is","cancelNextTick","detectDirection","scrollEl","scrollRootEl","lastAutoScrollX","lastAutoScrollY","touchEvt$1","pointerElemChangedInterval","autoScrolls","AutoScrollPlugin","AutoScroll","scrollSensitivity","scrollSpeed","bubbleScroll","_handleAutoScroll","_handleFallbackAutoScroll","dragOverCompleted","dragOverBubble","drop","clearPointerElemChangedInterval","clearAutoScrolls","nulling","autoScroll","ogElemScroller","newElem","pid","lastSwapEl","isFallback","scrollCustomFn","sens","speed","scrollThisInstance","scrollFn","layersOut","currentParent","canScrollX","canScrollY","scrollPosX","scrollPosY","layer","scrollOffsetY","scrollOffsetX","toSortable","onSpill","Revert","Remove","SwapPlugin","Swap","swapClass","dragStart","dragOverValid","swap","prevSwapEl","swapNodes","swapItem","n1","n2","i1","i2","isEqualNode","_ref4","parentSortable","lastMultiDragSelect","multiDragSortable","dragEl$1","clonesFromRect","clonesHidden","multiDragElements","multiDragClones","initialFolding","folding","MultiDragPlugin","MultiDrag","_deselectMultiDrag","_checkKeyDown","_checkKeyUp","selectedClass","multiDragKey","multiDragElement","multiDragKeyDown","isMultiDrag","delayStartGlobal","delayEnded","setupClone","sortableIndex","insertMultiDragClones","showClone","hideClone","_ref5","dragStartGlobal","_ref6","multiDrag","_ref7","removeMultiDragElements","dragOver","_ref8","_ref9","insertMultiDragElements","_ref10","dragRectAbsolute","clonesHiddenBefore","dragOverAnimationCapture","_ref11","dragMatrix","dragOverAnimationComplete","_ref12","originalEvt","currentIndex","multiDragIndex","nullingGlobal","destroyGlobal","oldIndicies","newIndicies","clones","clonesInserted","elementsInserted","someVectorAt","isTangent","cpx2","cpy2","cpx1","cpy1","pointAt","tangentAt","ox","oy","shapeCompareFunc","_roots","_displayList","_displayListLen","includeIgnore","updateDisplayList","displayList","_updateAndAddDisplayable","beforeUpdate","afterUpdate","userSetClipPath","currentClipPath","parentClipPath","_children","__storage","addChildrenToStorage","delChildrenFromStorage","_renderList","displayableSortFunc","clazzUtil","Component","componentProto","dimensionsCount","base64","ieee754","typedArraySupport","foo","subarray","kMaxLength","TYPED_ARRAY_SUPPORT","createBuffer","that","encodingOrOffset","ArrayBuffer","fromArrayBuffer","fromString","fromObject","assertSize","alloc","encoding","string","isEncoding","fromArrayLike","byteOffset","isnan","SlowBuffer","isView","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","bidirectionalIndexOf","arrayIndexOf","indexSize","arrLength","valLength","buf","readUInt16BE","foundIndex","found","hexWrite","strLen","utf8Write","blitBuffer","asciiWrite","asciiToBytes","latin1Write","base64Write","ucs2Write","utf16leToBytes","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","decodeCodePointsArray","INSPECT_MAX_BYTES","poolSize","_augment","species","allocUnsafeSlow","_isBuffer","swap16","swap32","swap64","equals","inspect","thisStart","thisEnd","thisCopy","targetCopy","toJSON","MAX_ARGUMENTS_LENGTH","codePoints","bytes","checkOffset","ext","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","maxBytes","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","INVALID_BASE64_RE","base64clean","stringtrim","units","leadSurrogate","byteArray","thisNumberValue","nativeToFixed","FORCED","fractionDigits","fractDigits","multiply","c2","divide","dataToString","graphicUtil","ecHelper","parseGeoJSON","_List","_Model","_Axis","_env","parseGeoJson","ecUtil","__WEBPACK_EXTERNAL_MODULE_a352__","LIBRARY","$export","Iterators","$iterCreate","setToStringTag","ITERATOR","BUGGY","FF_ITERATOR","KEYS","VALUES","returnThis","Base","NAME","DEFAULT","IS_SET","IteratorPrototype","getMethod","TAG","DEF_VALUES","VALUES_BUG","$native","$default","$entries","$anyNative","defined","at","unicode","sticky","$keys","enumBugKeys","dP","getKeys","Properties","wks","regexpExec","SPECIES","REPLACE_SUPPORTS_NAMED_GROUPS","SPLIT_WORKS_WITH_OVERWRITTEN_EXEC","originalExec","KEY","SYMBOL","DELEGATES_TO_SYMBOL","nativeRegExpMethod","nativeMethod","regexp","arg2","forceStringMethod","strfn","rxfn","cof","ARG","tryGet","callee","SRC","$toString","TPL","inspectSource","safe","dPs","IE_PROTO","Empty","PROTOTYPE","createDict","iframeDocument","iframe","gt","contentWindow","USE_SYMBOL","$exports","INCLUDES","createDesc","ObjectProto","bitmap","MATCH","regexpFlags","nativeExec","nativeReplace","patchedExec","LAST_INDEX","UPDATES_LAST_INDEX_WRONG","re1","re2","NPCG_INCLUDED","PATCH","reCopy","core","SHARED","copyright","own","IS_FORCED","IS_GLOBAL","IS_STATIC","IS_PROTO","IS_BIND","expProto","builtinExec","shared","$includes","IObject","valueOf","gOPS","pIE","$assign","aLen","getSymbols","isEnum","__g","stat","__e","IE8_DOM_DEFINE","toPrimitive","Attributes","aFunction","UNSCOPABLES","ArrayProto","advanceStringIndex","regExpExec","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","maybeToString","REPLACE","$replace","maybeCallNative","searchValue","replaceValue","functionalReplace","fullUnicode","matchStr","accumulatedResult","nextSourcePosition","captures","namedCaptures","replacerArgs","getSubstitution","tailPos","ch","isRegExp","$iterators","TO_STRING_TAG","ArrayValues","DOMIterables","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DataTransferItemList","FileList","HTMLAllCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","collections","explicit","Collection","toIObject","IS_INCLUDES","$this","fromIndex","__webpack_exports__","insertNodeAt","removeNode","getConsole","hit","parentElement","fatherNode","px","addToUnscopables","iterated","_k","Arguments","STARTS_WITH","$startsWith","currentScript","scripts","readyState","setPublicPath_i","_arrayWithHoles","_iterableToArrayLimit","_arrayLikeToArray","_unsupportedIterableToArray","minLen","_nonIterableRest","external_commonjs_sortablejs_commonjs2_sortablejs_amd_sortablejs_root_Sortable_","external_commonjs_sortablejs_commonjs2_sortablejs_amd_sortablejs_root_Sortable_default","buildAttribute","computeVmIndex","vnodes","elt","_computeIndexes","isTransition","footerOffset","elmFromNodes","footerIndex","rawIndexes","ind","evtName","evtData","delegateAndEmit","realList","isTransitionName","vuedraggable_isTransition","_slots","getSlot","slot","scopedSlot","computeChildrenAndOffsets","headerOffset","getComponentAttributes","$attrs","componentDataAttrs","eventsListened","eventsToEmit","readonlyProperties","draggingElement","noTransitionOnDrag","draggableComponent","transitionMode","noneFunctionalComponentMode","_computeChildrenAndOf","getTag","getIsFunctional","optionsAdded","onDragMove","_sortable","rootContainer","computeIndexes","newOptionValue","updateOptions","fnOptions","_vnode","getChildrenNodes","$children","rawNodes","visibleIndexes","getUnderlyingVm","htmlElt","getUnderlyingPotencialDraggableComponent","vue","__vue__","_componentTag","$parent","emitChanges","alterList","onList","spliceList","updatePosition","getRelatedContextFromMoveEvent","destination","getVmIndex","domIndex","numberIndexes","componentInstance","resetTransitionData","transitionContainer","kept","onDragStart","_underlying_vm_","onDragAdd","added","onDragRemove","removed","onDragUpdate","updateProperty","computeFutureIndex","relatedContext","domChildren","currentDOMIndex","draggedInList","draggedContext","futureIndex","sendEvt","onDragEnd","Vue","vuedraggable","ariaModel","seriesCnt","maxDataCnt","maxSeriesCnt","displaySeriesCnt","getTitle","seriesLabels","seriesCount","seriesLabel","seriesTpl","getSeriesTypeName","displayCnt","dataLabels","keyValues","Animatable","animators","animatable","animateToShallow","objShallow","propertyCount","setAttrByPath","animatingShape","pathSplitted","animateFrom","Region","decode","json","UTF8Encoding","encodeScale","UTF8Scale","features","geometry","coordinates","encodeOffsets","coordinate","decodePolygon","prevX","prevY","nameProperty","featureObj","geometries","exterior","interiors","region","cp","fp","getElem","fpInput","watchDisabled","_objectSpread2","MODEL_PROP_NAME_INDETERMINATE","MODEL_EVENT_NAME_INDETERMINATE","bvGroup","isChecked","computedLocalChecked","isRadio","setIndeterminate","computedLocalCheckedWatcher","$input","indeterminate","handleChange","_ref$target","uncheckedValue","localChecked","colorAll","_subPixelOptimize","subPixelOptimizeOutputShape","today","route","router","resolvedRoute","currentRoute","useRouter","getCurrentInstance","proxy","reactive","toRefs","$router","QUERY_REG","_timelineOptions","_mediaList","_mediaDefault","_currentMediaIndices","_optionBackup","_newBaseOption","parseRawOption","rawOption","isNew","mediaDefault","timelineOptions","mediaList","singleMedia","preProcess","applyMediaQuery","ecWidth","ecHeight","realMap","aspectratio","applicatable","operator","realAttr","real","expect","indicesEquals","indices1","indices2","oldOption","newCptOpt","oldCptOpt","oldOptionBackup","newParsedOption","isRecreate","optionBackup","timelineModel","getCurrentIndex","Draggable","_dragStart","_drag","_dragEnd","topTarget","draggingTarget","_draggingTarget","_x","_y","dispatchToElement","drift","dropTarget","lastDropTarget","_dropTarget","pathContain","pathProxyForDraw","strokeContainThreshold","hasFillGradient","hasStrokeGradient","hasFillPattern","hasStrokePattern","_fillGradient","_strokeGradient","ctxLineDash","shapeCfg","needsUpdateRect","rectWithStroke","_rectWithStroke","lineScale","dirtyPath","__clipTarget","Sub","defaultShape","thisShape","BInputGroupAppend","originalLarge","originalProgressive","TOUCH_CLICK_DELAY","globalEventSupported","localNativeListenerNames","mouseHandlerNames","touchHandlerNames","pointerEventNameMap","pointerdown","pointerup","pointermove","pointerout","pointerHandlerNames","nm","mouse","globalNativeListenerNames","eventNameFix","isPointerFromTouch","setTouchTimer","touching","touchTimer","markTouch","normalizeGlobalEvent","FakeGlobalEvent","isLocalEl","elTmp","isLocal","domBelongToZr","painterRoot","currentTarget","fakeGlobalEventProto","localDOMHandlers","_mayPointerCapture","mousemove","downPoint","togglePointerCapture","mouseout","_pointerCapturing","zrEventControl","toElement","zrIsToLocalDOM","touchstart","_lastTouchMoment","processGesture","touchmove","touchend","globalDOMHandlers","pointerCaptureReleasing","mountLocalDOMEventListeners","domHandlers","nativeEventName","mountSingleDOMEventListener","mountGlobalDOMEventListeners","nativeEventListener","listenerOpts","domTarget","unmountDOMEventListeners","isPointerCapturing","globalHandlerScope","_globalHandlerScope","DOMHandlerScope","HandlerDomProxy","_localHandlerScope","handlerDomProxyProto","setCursor","stackInfoMap","stackInfoList","stackInfo","stackResultDimension","stackedOverDimension","stackedDimension","stackedByDimension","isStackedByIndex","calculateStack","targetStackInfo","idxInStack","resultVal","resultNaN","targetData","byValue","stackedDataRawIndex","stackedOver","BInputGroupText","actionTags","linkProps","variant","_class","itemProps","defineWellKnownSymbol","eventTool","makeEventPacket","eveType","targetInfo","gestureEvent","stopEvent","EmptyProxy","handlerNames","_hovered","_gestureMgr","setHandlerProxy","isHover","isOutsideBoundary","handlerInstance","isOutside","lastHovered","lastHoveredTarget","hovered","hoveredTarget","eventControl","dispatch","eventArgs","eventPacket","eachOtherLayer","exclude","hoverCheckResult","gestureMgr","_downEl","_downPoint","_upEl","_methods","buttonVariant","formRadioCheckMixin","isBtnMode","isPlain","isCustom","isSwitch","switches","switch","isInline","isDisabled","computedName","groupName","computedForm","computedSize","computedState","computedButtonVariant","buttonClasses","stateClass","handleFocus","$button","$label","for","paths","_updatePathDirty","linkedListProto","Entry","insertEntry","maxSize","_maxSize","_lastRemovedEntry","LRUProto","leastUsedEntry","removeClipPath","cubic","quadratic","swapExtrema","windingCubic","nRoots","y0_","y1_","nExtrema","unit","windingQuadratic","y_","windingArc","containPath","isStroke","createPattern","idStart","getBoxLayoutParams","setProps","rippler","bg","targetBorder","ripple","rippleContainer","borderRadius","storedTargetPosition","clearRipple","clearPosition","borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius","DESCRIPTORS","copyConstructorProperties","NativeSymbol","EmptyStringDescriptionStore","SymbolWrapper","symbolPrototype","symbolToString","_axisHelper","makeCategoryLabels","makeRealNumberLabels","makeCategoryTicks","makeCategoryLabelsActually","labelCategoryInterval","numericLabelInterval","labelsCache","getListCache","optionLabelInterval","listCacheGet","makeLabelsByCustomizedCategoryInterval","makeAutoCategoryInterval","makeLabelsByNumericCategoryInterval","listCacheSet","tickCategoryInterval","ticksCache","optionTickInterval","labelsResult","labelItem","formattedLabel","rawLabel","autoInterval","fetchAutoCategoryIntervalCalculationParams","axisRotate","ordinalScale","ordinalExtent","unitSpan","unitW","unitH","maxW","maxH","dw","dh","lastAutoInterval","lastTickCount","axisExtend0","axisExtend1","categoryInterval","onlyTick","startTick","showAllLabel","includeMinLabel","includeMaxLabel","addItem","tVal","DUMMY_COMPONENT_NAME_PREFIX","subOpts","subOptName","newCptOptions","cptOption","idMap","existCpt","idNum","compressBatches","batchA","batchB","mapA","mapB","makeMap","mapToArray","sourceBatch","otherMap","dataIndices","otherDataIndices","lenj","isData","queryDataIndex","innerUniqueIndex","hostObj","parsedKey","queryType","includeMainTypes","queryParam","groupData","getKey","buckets","setting","_setting","_isBlank","childAt","childOfName","childCount","_doAdd","addBefore","removeAll","eachChild","includeChildren","tmpMat","extremity","fromPoints","xDim","yDim","tx","ty","vec2Min","vec2Max","getNearestColorPalette","paletteNum","colorIdx","colorNameMap","scopeFields","defaultColorPalette","layeredColorPalette","colorPalette","textWidthCache","textWidthCacheCounter","TEXT_CACHE_MAX","STYLE_REG","measureText","getRichTextRect","getPlainTextRect","halfHeight","adjustTextPositionOnRect","dummyStyle","truncateText","ellipsis","prepareTruncateOptions","truncateSingleLine","maxIterations","minChar","cnCharWidth","ascCharWidth","ellipsisWidth","textLine","subLength","estimateLength","charCode","getLineHeight","canCacheByTextString","truncOuterHeight","truncOuterWidth","matchedIndex","pushTokens","pendingList","stlPadding","truncateWidth","truncateHeight","tokenHeight","tokenWidth","tokenWidthNotSpecified","percentWidth","bgImg","paddingW","remianTruncWidth","isEmptyStr","strs","tokensLen","renderPlanner","Chart","renderTaskPlan","renderTaskReset","toggleHighlight","downplay","incrementalRender","chartProto","elSetState","progressMethodMap","forceFirstProgress","_parseSVG","rawGeoJson","rawSpecialAreas","parsers","svgXML","HOVER_LAYER_ZLEVEL","CANVAS_ZLEVEL","EL_AFTER_INCREMENTAL_INC","INCREMENTAL_INC","parseInt10","isLayerValid","__builtin__","viewRect","isDisplayableCulled","isClipPathChanged","prevClipPaths","doClip","createRoot","domRoot","singleCanvas","_opts","_singleCanvas","rootStyle","zlevelList","_zlevelList","layers","_layers","_layerConfig","_needsManuallyCompositing","_width","_height","mainLayer","_domRoot","_getSize","_hoverlayer","_hoverElements","isSingleCanvas","getViewportRootOffset","viewportRoot","paintAll","_redrawId","_paintList","_backgroundColor","__hoverMir","__from","hoverElements","hoverLayer","getLayer","originalEl","_doPaintEl","getHoverLayer","redrawId","_updateLayerStatus","finished","_doPaintList","_compositeManually","eachBuiltinLayer","virtual","layerList","zi","useTimer","firstEl","dTime","prevElClipPaths","draw","currentLayer","forcePaint","insertLayer","layersMap","prevLayer","prevDom","eachLayer","getLayers","updatePrevLayer","prevZlevel","incrementalLayerCount","_clearLayer","layerConfig","_zlevel","delLayer","_progressiveLayers","clearLayer","imageLayer","renderToCanvas","whIdx","wh","cwh","plt","prb","shadowBlurSize","leftMargin","rightMargin","topMargin","bottomMargin","pathTransform","ImageShape","imgShape","toCamelCase","upperCaseFirst","group1","replaceReg","replaceMap","'","TPL_VAR_ALIAS","wrapVar","varName","seriesIdx","paramsList","seriesLen","alias","formatTplSimple","extraCssText","isUTC","utc","capitalFirst","getTextBoundingRect","windowOpen","blank","opener","location","stackedByDimInfo","stackedDimInfo","byIndex","stackedCoordDimension","mayStack","stackedDimCoordDim","stackedDimType","stackedDimCoordIndex","isCalculationCoord","stackedDim","targetDim","mathAtan2","nPoint","contrastColor","axisCommon","axisLine","lineStyle","axisTick","axisLabel","splitLine","splitArea","areaStyle","crossStyle","iconStyle","visualMap","controlStyle","timeAxis","logAxis","categoryAxis","color0","borderColor0","polygonContain","loopGeo","transformTo","newRegion","define","Task","_reset","_plan","_onDirty","_dirty","taskProto","planResult","upTask","_upstream","lastModBy","normalizeModBy","_modBy","lastModDataCount","_modDataCount","_dueEnd","_outputDueEnd","_progress","_dueIndex","doProgress","outputDueEnd","_settedOutputEnd","winCount","sStep","sCount","modNext","sequentialNext","taskIns","_callingProgress","downstream","_downstream","downTask","LOCATION_PARAMS","HV_NAMES","boxLayout","orient","maxHeight","currentLineMaxSize","nextX","nextY","nextChild","nextChildRect","moveX","moveY","vbox","hbox","getAvailableSize","positionInfo","verticalMargin","horizontalMargin","hv","boundingMode","elPos","sizeCalculable","hvIdx","targetOption","ignoreSize","hResult","vResult","newParams","newValueCount","mergedValueCount","enoughParamNumber","hasProp","copyLayoutParams","compatStyle","compatLayoutProperties","LAYOUT_PROPERTIES","COMPATITABLE_COMPONENTS","clipOverflow","clockWise","pointerColor","dataRange","componentName","colorAccessPath","colorCallback","borderColorAccessPath","PATH_COLOR","getTextColor"],"mappings":"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","file":"js/chunk-4fb1c82c.84779d83.js","sourcesContent":["'use strict';\n// TODO: Remove from `core-js@4` since it's moved to entry points\nrequire('../modules/es.regexp.exec');\nvar $ = require('../internals/export');\nvar isObject = require('../internals/is-object');\n\nvar DELEGATES_TO_EXEC = function () {\n var execCalled = false;\n var re = /[ac]/;\n re.exec = function () {\n execCalled = true;\n return /./.exec.apply(this, arguments);\n };\n return re.test('abc') === true && execCalled;\n}();\n\nvar nativeTest = /./.test;\n\n$({ target: 'RegExp', proto: true, forced: !DELEGATES_TO_EXEC }, {\n test: function (str) {\n if (typeof this.exec !== 'function') {\n return nativeTest.call(this, str);\n }\n var result = this.exec(str);\n if (result !== null && !isObject(result)) {\n throw new Error('RegExp exec method returned something other than an Object or null');\n }\n return !!result;\n }\n});\n","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar ComponentModel = require(\"../model/Component\");\n\nvar ComponentView = require(\"../view/Component\");\n\nvar _sourceHelper = require(\"../data/helper/sourceHelper\");\n\nvar detectSourceFormat = _sourceHelper.detectSourceFormat;\n\nvar _sourceType = require(\"../data/helper/sourceType\");\n\nvar SERIES_LAYOUT_BY_COLUMN = _sourceType.SERIES_LAYOUT_BY_COLUMN;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * This module is imported by echarts directly.\n *\n * Notice:\n * Always keep this file exists for backward compatibility.\n * Because before 4.1.0, dataset is an optional component,\n * some users may import this module manually.\n */\nComponentModel.extend({\n type: 'dataset',\n\n /**\n * @protected\n */\n defaultOption: {\n // 'row', 'column'\n seriesLayoutBy: SERIES_LAYOUT_BY_COLUMN,\n // null/'auto': auto detect header, see \"module:echarts/data/helper/sourceHelper\"\n sourceHeader: null,\n dimensions: null,\n source: null\n },\n optionUpdated: function () {\n detectSourceFormat(this);\n }\n});\nComponentView.extend({\n type: 'dataset'\n});","// https://github.com/mziccard/node-timsort\nvar DEFAULT_MIN_MERGE = 32;\nvar DEFAULT_MIN_GALLOPING = 7;\nvar DEFAULT_TMP_STORAGE_LENGTH = 256;\n\nfunction minRunLength(n) {\n var r = 0;\n\n while (n >= DEFAULT_MIN_MERGE) {\n r |= n & 1;\n n >>= 1;\n }\n\n return n + r;\n}\n\nfunction makeAscendingRun(array, lo, hi, compare) {\n var runHi = lo + 1;\n\n if (runHi === hi) {\n return 1;\n }\n\n if (compare(array[runHi++], array[lo]) < 0) {\n while (runHi < hi && compare(array[runHi], array[runHi - 1]) < 0) {\n runHi++;\n }\n\n reverseRun(array, lo, runHi);\n } else {\n while (runHi < hi && compare(array[runHi], array[runHi - 1]) >= 0) {\n runHi++;\n }\n }\n\n return runHi - lo;\n}\n\nfunction reverseRun(array, lo, hi) {\n hi--;\n\n while (lo < hi) {\n var t = array[lo];\n array[lo++] = array[hi];\n array[hi--] = t;\n }\n}\n\nfunction binaryInsertionSort(array, lo, hi, start, compare) {\n if (start === lo) {\n start++;\n }\n\n for (; start < hi; start++) {\n var pivot = array[start];\n var left = lo;\n var right = start;\n var mid;\n\n while (left < right) {\n mid = left + right >>> 1;\n\n if (compare(pivot, array[mid]) < 0) {\n right = mid;\n } else {\n left = mid + 1;\n }\n }\n\n var n = start - left;\n\n switch (n) {\n case 3:\n array[left + 3] = array[left + 2];\n\n case 2:\n array[left + 2] = array[left + 1];\n\n case 1:\n array[left + 1] = array[left];\n break;\n\n default:\n while (n > 0) {\n array[left + n] = array[left + n - 1];\n n--;\n }\n\n }\n\n array[left] = pivot;\n }\n}\n\nfunction gallopLeft(value, array, start, length, hint, compare) {\n var lastOffset = 0;\n var maxOffset = 0;\n var offset = 1;\n\n if (compare(value, array[start + hint]) > 0) {\n maxOffset = length - hint;\n\n while (offset < maxOffset && compare(value, array[start + hint + offset]) > 0) {\n lastOffset = offset;\n offset = (offset << 1) + 1;\n\n if (offset <= 0) {\n offset = maxOffset;\n }\n }\n\n if (offset > maxOffset) {\n offset = maxOffset;\n }\n\n lastOffset += hint;\n offset += hint;\n } else {\n maxOffset = hint + 1;\n\n while (offset < maxOffset && compare(value, array[start + hint - offset]) <= 0) {\n lastOffset = offset;\n offset = (offset << 1) + 1;\n\n if (offset <= 0) {\n offset = maxOffset;\n }\n }\n\n if (offset > maxOffset) {\n offset = maxOffset;\n }\n\n var tmp = lastOffset;\n lastOffset = hint - offset;\n offset = hint - tmp;\n }\n\n lastOffset++;\n\n while (lastOffset < offset) {\n var m = lastOffset + (offset - lastOffset >>> 1);\n\n if (compare(value, array[start + m]) > 0) {\n lastOffset = m + 1;\n } else {\n offset = m;\n }\n }\n\n return offset;\n}\n\nfunction gallopRight(value, array, start, length, hint, compare) {\n var lastOffset = 0;\n var maxOffset = 0;\n var offset = 1;\n\n if (compare(value, array[start + hint]) < 0) {\n maxOffset = hint + 1;\n\n while (offset < maxOffset && compare(value, array[start + hint - offset]) < 0) {\n lastOffset = offset;\n offset = (offset << 1) + 1;\n\n if (offset <= 0) {\n offset = maxOffset;\n }\n }\n\n if (offset > maxOffset) {\n offset = maxOffset;\n }\n\n var tmp = lastOffset;\n lastOffset = hint - offset;\n offset = hint - tmp;\n } else {\n maxOffset = length - hint;\n\n while (offset < maxOffset && compare(value, array[start + hint + offset]) >= 0) {\n lastOffset = offset;\n offset = (offset << 1) + 1;\n\n if (offset <= 0) {\n offset = maxOffset;\n }\n }\n\n if (offset > maxOffset) {\n offset = maxOffset;\n }\n\n lastOffset += hint;\n offset += hint;\n }\n\n lastOffset++;\n\n while (lastOffset < offset) {\n var m = lastOffset + (offset - lastOffset >>> 1);\n\n if (compare(value, array[start + m]) < 0) {\n offset = m;\n } else {\n lastOffset = m + 1;\n }\n }\n\n return offset;\n}\n\nfunction TimSort(array, compare) {\n var minGallop = DEFAULT_MIN_GALLOPING;\n var length = 0;\n var tmpStorageLength = DEFAULT_TMP_STORAGE_LENGTH;\n var stackLength = 0;\n var runStart;\n var runLength;\n var stackSize = 0;\n length = array.length;\n\n if (length < 2 * DEFAULT_TMP_STORAGE_LENGTH) {\n tmpStorageLength = length >>> 1;\n }\n\n var tmp = [];\n stackLength = length < 120 ? 5 : length < 1542 ? 10 : length < 119151 ? 19 : 40;\n runStart = [];\n runLength = [];\n\n function pushRun(_runStart, _runLength) {\n runStart[stackSize] = _runStart;\n runLength[stackSize] = _runLength;\n stackSize += 1;\n }\n\n function mergeRuns() {\n while (stackSize > 1) {\n var n = stackSize - 2;\n\n if (n >= 1 && runLength[n - 1] <= runLength[n] + runLength[n + 1] || n >= 2 && runLength[n - 2] <= runLength[n] + runLength[n - 1]) {\n if (runLength[n - 1] < runLength[n + 1]) {\n n--;\n }\n } else if (runLength[n] > runLength[n + 1]) {\n break;\n }\n\n mergeAt(n);\n }\n }\n\n function forceMergeRuns() {\n while (stackSize > 1) {\n var n = stackSize - 2;\n\n if (n > 0 && runLength[n - 1] < runLength[n + 1]) {\n n--;\n }\n\n mergeAt(n);\n }\n }\n\n function mergeAt(i) {\n var start1 = runStart[i];\n var length1 = runLength[i];\n var start2 = runStart[i + 1];\n var length2 = runLength[i + 1];\n runLength[i] = length1 + length2;\n\n if (i === stackSize - 3) {\n runStart[i + 1] = runStart[i + 2];\n runLength[i + 1] = runLength[i + 2];\n }\n\n stackSize--;\n var k = gallopRight(array[start2], array, start1, length1, 0, compare);\n start1 += k;\n length1 -= k;\n\n if (length1 === 0) {\n return;\n }\n\n length2 = gallopLeft(array[start1 + length1 - 1], array, start2, length2, length2 - 1, compare);\n\n if (length2 === 0) {\n return;\n }\n\n if (length1 <= length2) {\n mergeLow(start1, length1, start2, length2);\n } else {\n mergeHigh(start1, length1, start2, length2);\n }\n }\n\n function mergeLow(start1, length1, start2, length2) {\n var i = 0;\n\n for (i = 0; i < length1; i++) {\n tmp[i] = array[start1 + i];\n }\n\n var cursor1 = 0;\n var cursor2 = start2;\n var dest = start1;\n array[dest++] = array[cursor2++];\n\n if (--length2 === 0) {\n for (i = 0; i < length1; i++) {\n array[dest + i] = tmp[cursor1 + i];\n }\n\n return;\n }\n\n if (length1 === 1) {\n for (i = 0; i < length2; i++) {\n array[dest + i] = array[cursor2 + i];\n }\n\n array[dest + length2] = tmp[cursor1];\n return;\n }\n\n var _minGallop = minGallop;\n var count1;\n var count2;\n var exit;\n\n while (1) {\n count1 = 0;\n count2 = 0;\n exit = false;\n\n do {\n if (compare(array[cursor2], tmp[cursor1]) < 0) {\n array[dest++] = array[cursor2++];\n count2++;\n count1 = 0;\n\n if (--length2 === 0) {\n exit = true;\n break;\n }\n } else {\n array[dest++] = tmp[cursor1++];\n count1++;\n count2 = 0;\n\n if (--length1 === 1) {\n exit = true;\n break;\n }\n }\n } while ((count1 | count2) < _minGallop);\n\n if (exit) {\n break;\n }\n\n do {\n count1 = gallopRight(array[cursor2], tmp, cursor1, length1, 0, compare);\n\n if (count1 !== 0) {\n for (i = 0; i < count1; i++) {\n array[dest + i] = tmp[cursor1 + i];\n }\n\n dest += count1;\n cursor1 += count1;\n length1 -= count1;\n\n if (length1 <= 1) {\n exit = true;\n break;\n }\n }\n\n array[dest++] = array[cursor2++];\n\n if (--length2 === 0) {\n exit = true;\n break;\n }\n\n count2 = gallopLeft(tmp[cursor1], array, cursor2, length2, 0, compare);\n\n if (count2 !== 0) {\n for (i = 0; i < count2; i++) {\n array[dest + i] = array[cursor2 + i];\n }\n\n dest += count2;\n cursor2 += count2;\n length2 -= count2;\n\n if (length2 === 0) {\n exit = true;\n break;\n }\n }\n\n array[dest++] = tmp[cursor1++];\n\n if (--length1 === 1) {\n exit = true;\n break;\n }\n\n _minGallop--;\n } while (count1 >= DEFAULT_MIN_GALLOPING || count2 >= DEFAULT_MIN_GALLOPING);\n\n if (exit) {\n break;\n }\n\n if (_minGallop < 0) {\n _minGallop = 0;\n }\n\n _minGallop += 2;\n }\n\n minGallop = _minGallop;\n minGallop < 1 && (minGallop = 1);\n\n if (length1 === 1) {\n for (i = 0; i < length2; i++) {\n array[dest + i] = array[cursor2 + i];\n }\n\n array[dest + length2] = tmp[cursor1];\n } else if (length1 === 0) {\n throw new Error(); // throw new Error('mergeLow preconditions were not respected');\n } else {\n for (i = 0; i < length1; i++) {\n array[dest + i] = tmp[cursor1 + i];\n }\n }\n }\n\n function mergeHigh(start1, length1, start2, length2) {\n var i = 0;\n\n for (i = 0; i < length2; i++) {\n tmp[i] = array[start2 + i];\n }\n\n var cursor1 = start1 + length1 - 1;\n var cursor2 = length2 - 1;\n var dest = start2 + length2 - 1;\n var customCursor = 0;\n var customDest = 0;\n array[dest--] = array[cursor1--];\n\n if (--length1 === 0) {\n customCursor = dest - (length2 - 1);\n\n for (i = 0; i < length2; i++) {\n array[customCursor + i] = tmp[i];\n }\n\n return;\n }\n\n if (length2 === 1) {\n dest -= length1;\n cursor1 -= length1;\n customDest = dest + 1;\n customCursor = cursor1 + 1;\n\n for (i = length1 - 1; i >= 0; i--) {\n array[customDest + i] = array[customCursor + i];\n }\n\n array[dest] = tmp[cursor2];\n return;\n }\n\n var _minGallop = minGallop;\n\n while (true) {\n var count1 = 0;\n var count2 = 0;\n var exit = false;\n\n do {\n if (compare(tmp[cursor2], array[cursor1]) < 0) {\n array[dest--] = array[cursor1--];\n count1++;\n count2 = 0;\n\n if (--length1 === 0) {\n exit = true;\n break;\n }\n } else {\n array[dest--] = tmp[cursor2--];\n count2++;\n count1 = 0;\n\n if (--length2 === 1) {\n exit = true;\n break;\n }\n }\n } while ((count1 | count2) < _minGallop);\n\n if (exit) {\n break;\n }\n\n do {\n count1 = length1 - gallopRight(tmp[cursor2], array, start1, length1, length1 - 1, compare);\n\n if (count1 !== 0) {\n dest -= count1;\n cursor1 -= count1;\n length1 -= count1;\n customDest = dest + 1;\n customCursor = cursor1 + 1;\n\n for (i = count1 - 1; i >= 0; i--) {\n array[customDest + i] = array[customCursor + i];\n }\n\n if (length1 === 0) {\n exit = true;\n break;\n }\n }\n\n array[dest--] = tmp[cursor2--];\n\n if (--length2 === 1) {\n exit = true;\n break;\n }\n\n count2 = length2 - gallopLeft(array[cursor1], tmp, 0, length2, length2 - 1, compare);\n\n if (count2 !== 0) {\n dest -= count2;\n cursor2 -= count2;\n length2 -= count2;\n customDest = dest + 1;\n customCursor = cursor2 + 1;\n\n for (i = 0; i < count2; i++) {\n array[customDest + i] = tmp[customCursor + i];\n }\n\n if (length2 <= 1) {\n exit = true;\n break;\n }\n }\n\n array[dest--] = array[cursor1--];\n\n if (--length1 === 0) {\n exit = true;\n break;\n }\n\n _minGallop--;\n } while (count1 >= DEFAULT_MIN_GALLOPING || count2 >= DEFAULT_MIN_GALLOPING);\n\n if (exit) {\n break;\n }\n\n if (_minGallop < 0) {\n _minGallop = 0;\n }\n\n _minGallop += 2;\n }\n\n minGallop = _minGallop;\n\n if (minGallop < 1) {\n minGallop = 1;\n }\n\n if (length2 === 1) {\n dest -= length1;\n cursor1 -= length1;\n customDest = dest + 1;\n customCursor = cursor1 + 1;\n\n for (i = length1 - 1; i >= 0; i--) {\n array[customDest + i] = array[customCursor + i];\n }\n\n array[dest] = tmp[cursor2];\n } else if (length2 === 0) {\n throw new Error(); // throw new Error('mergeHigh preconditions were not respected');\n } else {\n customCursor = dest - (length2 - 1);\n\n for (i = 0; i < length2; i++) {\n array[customCursor + i] = tmp[i];\n }\n }\n }\n\n this.mergeRuns = mergeRuns;\n this.forceMergeRuns = forceMergeRuns;\n this.pushRun = pushRun;\n}\n\nfunction sort(array, compare, lo, hi) {\n if (!lo) {\n lo = 0;\n }\n\n if (!hi) {\n hi = array.length;\n }\n\n var remaining = hi - lo;\n\n if (remaining < 2) {\n return;\n }\n\n var runLength = 0;\n\n if (remaining < DEFAULT_MIN_MERGE) {\n runLength = makeAscendingRun(array, lo, hi, compare);\n binaryInsertionSort(array, lo, hi, lo + runLength, compare);\n return;\n }\n\n var ts = new TimSort(array, compare);\n var minRun = minRunLength(remaining);\n\n do {\n runLength = makeAscendingRun(array, lo, hi, compare);\n\n if (runLength < minRun) {\n var force = remaining;\n\n if (force > minRun) {\n force = minRun;\n }\n\n binaryInsertionSort(array, lo, lo + force, lo + runLength, compare);\n runLength = force;\n }\n\n ts.pushRun(lo, runLength);\n ts.mergeRuns();\n remaining -= runLength;\n lo += runLength;\n } while (remaining !== 0);\n\n ts.forceMergeRuns();\n}\n\nmodule.exports = sort;","var windingLine = require(\"./windingLine\");\n\nvar EPSILON = 1e-8;\n\nfunction isAroundEqual(a, b) {\n return Math.abs(a - b) < EPSILON;\n}\n\nfunction contain(points, x, y) {\n var w = 0;\n var p = points[0];\n\n if (!p) {\n return false;\n }\n\n for (var i = 1; i < points.length; i++) {\n var p2 = points[i];\n w += windingLine(p[0], p[1], p2[0], p2[1], x, y);\n p = p2;\n } // Close polygon\n\n\n var p0 = points[0];\n\n if (!isAroundEqual(p[0], p0[0]) || !isAroundEqual(p[1], p0[1])) {\n w += windingLine(p[0], p[1], p0[0], p0[1], x, y);\n }\n\n return w !== 0;\n}\n\nexports.contain = contain;","var Clip = require(\"./Clip\");\n\nvar color = require(\"../tool/color\");\n\nvar _util = require(\"../core/util\");\n\nvar isArrayLike = _util.isArrayLike;\n\n/**\n * @module echarts/animation/Animator\n */\nvar arraySlice = Array.prototype.slice;\n\nfunction defaultGetter(target, key) {\n return target[key];\n}\n\nfunction defaultSetter(target, key, value) {\n target[key] = value;\n}\n/**\n * @param {number} p0\n * @param {number} p1\n * @param {number} percent\n * @return {number}\n */\n\n\nfunction interpolateNumber(p0, p1, percent) {\n return (p1 - p0) * percent + p0;\n}\n/**\n * @param {string} p0\n * @param {string} p1\n * @param {number} percent\n * @return {string}\n */\n\n\nfunction interpolateString(p0, p1, percent) {\n return percent > 0.5 ? p1 : p0;\n}\n/**\n * @param {Array} p0\n * @param {Array} p1\n * @param {number} percent\n * @param {Array} out\n * @param {number} arrDim\n */\n\n\nfunction interpolateArray(p0, p1, percent, out, arrDim) {\n var len = p0.length;\n\n if (arrDim === 1) {\n for (var i = 0; i < len; i++) {\n out[i] = interpolateNumber(p0[i], p1[i], percent);\n }\n } else {\n var len2 = len && p0[0].length;\n\n for (var i = 0; i < len; i++) {\n for (var j = 0; j < len2; j++) {\n out[i][j] = interpolateNumber(p0[i][j], p1[i][j], percent);\n }\n }\n }\n} // arr0 is source array, arr1 is target array.\n// Do some preprocess to avoid error happened when interpolating from arr0 to arr1\n\n\nfunction fillArr(arr0, arr1, arrDim) {\n var arr0Len = arr0.length;\n var arr1Len = arr1.length;\n\n if (arr0Len !== arr1Len) {\n // FIXME Not work for TypedArray\n var isPreviousLarger = arr0Len > arr1Len;\n\n if (isPreviousLarger) {\n // Cut the previous\n arr0.length = arr1Len;\n } else {\n // Fill the previous\n for (var i = arr0Len; i < arr1Len; i++) {\n arr0.push(arrDim === 1 ? arr1[i] : arraySlice.call(arr1[i]));\n }\n }\n } // Handling NaN value\n\n\n var len2 = arr0[0] && arr0[0].length;\n\n for (var i = 0; i < arr0.length; i++) {\n if (arrDim === 1) {\n if (isNaN(arr0[i])) {\n arr0[i] = arr1[i];\n }\n } else {\n for (var j = 0; j < len2; j++) {\n if (isNaN(arr0[i][j])) {\n arr0[i][j] = arr1[i][j];\n }\n }\n }\n }\n}\n/**\n * @param {Array} arr0\n * @param {Array} arr1\n * @param {number} arrDim\n * @return {boolean}\n */\n\n\nfunction isArraySame(arr0, arr1, arrDim) {\n if (arr0 === arr1) {\n return true;\n }\n\n var len = arr0.length;\n\n if (len !== arr1.length) {\n return false;\n }\n\n if (arrDim === 1) {\n for (var i = 0; i < len; i++) {\n if (arr0[i] !== arr1[i]) {\n return false;\n }\n }\n } else {\n var len2 = arr0[0].length;\n\n for (var i = 0; i < len; i++) {\n for (var j = 0; j < len2; j++) {\n if (arr0[i][j] !== arr1[i][j]) {\n return false;\n }\n }\n }\n }\n\n return true;\n}\n/**\n * Catmull Rom interpolate array\n * @param {Array} p0\n * @param {Array} p1\n * @param {Array} p2\n * @param {Array} p3\n * @param {number} t\n * @param {number} t2\n * @param {number} t3\n * @param {Array} out\n * @param {number} arrDim\n */\n\n\nfunction catmullRomInterpolateArray(p0, p1, p2, p3, t, t2, t3, out, arrDim) {\n var len = p0.length;\n\n if (arrDim === 1) {\n for (var i = 0; i < len; i++) {\n out[i] = catmullRomInterpolate(p0[i], p1[i], p2[i], p3[i], t, t2, t3);\n }\n } else {\n var len2 = p0[0].length;\n\n for (var i = 0; i < len; i++) {\n for (var j = 0; j < len2; j++) {\n out[i][j] = catmullRomInterpolate(p0[i][j], p1[i][j], p2[i][j], p3[i][j], t, t2, t3);\n }\n }\n }\n}\n/**\n * Catmull Rom interpolate number\n * @param {number} p0\n * @param {number} p1\n * @param {number} p2\n * @param {number} p3\n * @param {number} t\n * @param {number} t2\n * @param {number} t3\n * @return {number}\n */\n\n\nfunction catmullRomInterpolate(p0, p1, p2, p3, t, t2, t3) {\n var v0 = (p2 - p0) * 0.5;\n var v1 = (p3 - p1) * 0.5;\n return (2 * (p1 - p2) + v0 + v1) * t3 + (-3 * (p1 - p2) - 2 * v0 - v1) * t2 + v0 * t + p1;\n}\n\nfunction cloneValue(value) {\n if (isArrayLike(value)) {\n var len = value.length;\n\n if (isArrayLike(value[0])) {\n var ret = [];\n\n for (var i = 0; i < len; i++) {\n ret.push(arraySlice.call(value[i]));\n }\n\n return ret;\n }\n\n return arraySlice.call(value);\n }\n\n return value;\n}\n\nfunction rgba2String(rgba) {\n rgba[0] = Math.floor(rgba[0]);\n rgba[1] = Math.floor(rgba[1]);\n rgba[2] = Math.floor(rgba[2]);\n return 'rgba(' + rgba.join(',') + ')';\n}\n\nfunction getArrayDim(keyframes) {\n var lastValue = keyframes[keyframes.length - 1].value;\n return isArrayLike(lastValue && lastValue[0]) ? 2 : 1;\n}\n\nfunction createTrackClip(animator, easing, oneTrackDone, keyframes, propName, forceAnimate) {\n var getter = animator._getter;\n var setter = animator._setter;\n var useSpline = easing === 'spline';\n var trackLen = keyframes.length;\n\n if (!trackLen) {\n return;\n } // Guess data type\n\n\n var firstVal = keyframes[0].value;\n var isValueArray = isArrayLike(firstVal);\n var isValueColor = false;\n var isValueString = false; // For vertices morphing\n\n var arrDim = isValueArray ? getArrayDim(keyframes) : 0;\n var trackMaxTime; // Sort keyframe as ascending\n\n keyframes.sort(function (a, b) {\n return a.time - b.time;\n });\n trackMaxTime = keyframes[trackLen - 1].time; // Percents of each keyframe\n\n var kfPercents = []; // Value of each keyframe\n\n var kfValues = [];\n var prevValue = keyframes[0].value;\n var isAllValueEqual = true;\n\n for (var i = 0; i < trackLen; i++) {\n kfPercents.push(keyframes[i].time / trackMaxTime); // Assume value is a color when it is a string\n\n var value = keyframes[i].value; // Check if value is equal, deep check if value is array\n\n if (!(isValueArray && isArraySame(value, prevValue, arrDim) || !isValueArray && value === prevValue)) {\n isAllValueEqual = false;\n }\n\n prevValue = value; // Try converting a string to a color array\n\n if (typeof value === 'string') {\n var colorArray = color.parse(value);\n\n if (colorArray) {\n value = colorArray;\n isValueColor = true;\n } else {\n isValueString = true;\n }\n }\n\n kfValues.push(value);\n }\n\n if (!forceAnimate && isAllValueEqual) {\n return;\n }\n\n var lastValue = kfValues[trackLen - 1]; // Polyfill array and NaN value\n\n for (var i = 0; i < trackLen - 1; i++) {\n if (isValueArray) {\n fillArr(kfValues[i], lastValue, arrDim);\n } else {\n if (isNaN(kfValues[i]) && !isNaN(lastValue) && !isValueString && !isValueColor) {\n kfValues[i] = lastValue;\n }\n }\n }\n\n isValueArray && fillArr(getter(animator._target, propName), lastValue, arrDim); // Cache the key of last frame to speed up when\n // animation playback is sequency\n\n var lastFrame = 0;\n var lastFramePercent = 0;\n var start;\n var w;\n var p0;\n var p1;\n var p2;\n var p3;\n\n if (isValueColor) {\n var rgba = [0, 0, 0, 0];\n }\n\n var onframe = function (target, percent) {\n // Find the range keyframes\n // kf1-----kf2---------current--------kf3\n // find kf2 and kf3 and do interpolation\n var frame; // In the easing function like elasticOut, percent may less than 0\n\n if (percent < 0) {\n frame = 0;\n } else if (percent < lastFramePercent) {\n // Start from next key\n // PENDING start from lastFrame ?\n start = Math.min(lastFrame + 1, trackLen - 1);\n\n for (frame = start; frame >= 0; frame--) {\n if (kfPercents[frame] <= percent) {\n break;\n }\n } // PENDING really need to do this ?\n\n\n frame = Math.min(frame, trackLen - 2);\n } else {\n for (frame = lastFrame; frame < trackLen; frame++) {\n if (kfPercents[frame] > percent) {\n break;\n }\n }\n\n frame = Math.min(frame - 1, trackLen - 2);\n }\n\n lastFrame = frame;\n lastFramePercent = percent;\n var range = kfPercents[frame + 1] - kfPercents[frame];\n\n if (range === 0) {\n return;\n } else {\n w = (percent - kfPercents[frame]) / range;\n }\n\n if (useSpline) {\n p1 = kfValues[frame];\n p0 = kfValues[frame === 0 ? frame : frame - 1];\n p2 = kfValues[frame > trackLen - 2 ? trackLen - 1 : frame + 1];\n p3 = kfValues[frame > trackLen - 3 ? trackLen - 1 : frame + 2];\n\n if (isValueArray) {\n catmullRomInterpolateArray(p0, p1, p2, p3, w, w * w, w * w * w, getter(target, propName), arrDim);\n } else {\n var value;\n\n if (isValueColor) {\n value = catmullRomInterpolateArray(p0, p1, p2, p3, w, w * w, w * w * w, rgba, 1);\n value = rgba2String(rgba);\n } else if (isValueString) {\n // String is step(0.5)\n return interpolateString(p1, p2, w);\n } else {\n value = catmullRomInterpolate(p0, p1, p2, p3, w, w * w, w * w * w);\n }\n\n setter(target, propName, value);\n }\n } else {\n if (isValueArray) {\n interpolateArray(kfValues[frame], kfValues[frame + 1], w, getter(target, propName), arrDim);\n } else {\n var value;\n\n if (isValueColor) {\n interpolateArray(kfValues[frame], kfValues[frame + 1], w, rgba, 1);\n value = rgba2String(rgba);\n } else if (isValueString) {\n // String is step(0.5)\n return interpolateString(kfValues[frame], kfValues[frame + 1], w);\n } else {\n value = interpolateNumber(kfValues[frame], kfValues[frame + 1], w);\n }\n\n setter(target, propName, value);\n }\n }\n };\n\n var clip = new Clip({\n target: animator._target,\n life: trackMaxTime,\n loop: animator._loop,\n delay: animator._delay,\n onframe: onframe,\n ondestroy: oneTrackDone\n });\n\n if (easing && easing !== 'spline') {\n clip.easing = easing;\n }\n\n return clip;\n}\n/**\n * @alias module:zrender/animation/Animator\n * @constructor\n * @param {Object} target\n * @param {boolean} loop\n * @param {Function} getter\n * @param {Function} setter\n */\n\n\nvar Animator = function (target, loop, getter, setter) {\n this._tracks = {};\n this._target = target;\n this._loop = loop || false;\n this._getter = getter || defaultGetter;\n this._setter = setter || defaultSetter;\n this._clipCount = 0;\n this._delay = 0;\n this._doneList = [];\n this._onframeList = [];\n this._clipList = [];\n};\n\nAnimator.prototype = {\n /**\n * Set Animation keyframe\n * @param {number} time 关键帧时间,单位是ms\n * @param {Object} props 关键帧的属性值,key-value表示\n * @return {module:zrender/animation/Animator}\n */\n when: function (time\n /* ms */\n , props) {\n var tracks = this._tracks;\n\n for (var propName in props) {\n if (!props.hasOwnProperty(propName)) {\n continue;\n }\n\n if (!tracks[propName]) {\n tracks[propName] = []; // Invalid value\n\n var value = this._getter(this._target, propName);\n\n if (value == null) {\n // zrLog('Invalid property ' + propName);\n continue;\n } // If time is 0\n // Then props is given initialize value\n // Else\n // Initialize value from current prop value\n\n\n if (time !== 0) {\n tracks[propName].push({\n time: 0,\n value: cloneValue(value)\n });\n }\n }\n\n tracks[propName].push({\n time: time,\n value: props[propName]\n });\n }\n\n return this;\n },\n\n /**\n * 添加动画每一帧的回调函数\n * @param {Function} callback\n * @return {module:zrender/animation/Animator}\n */\n during: function (callback) {\n this._onframeList.push(callback);\n\n return this;\n },\n pause: function () {\n for (var i = 0; i < this._clipList.length; i++) {\n this._clipList[i].pause();\n }\n\n this._paused = true;\n },\n resume: function () {\n for (var i = 0; i < this._clipList.length; i++) {\n this._clipList[i].resume();\n }\n\n this._paused = false;\n },\n isPaused: function () {\n return !!this._paused;\n },\n _doneCallback: function () {\n // Clear all tracks\n this._tracks = {}; // Clear all clips\n\n this._clipList.length = 0;\n var doneList = this._doneList;\n var len = doneList.length;\n\n for (var i = 0; i < len; i++) {\n doneList[i].call(this);\n }\n },\n\n /**\n * Start the animation\n * @param {string|Function} [easing]\n * 动画缓动函数,详见{@link module:zrender/animation/easing}\n * @param {boolean} forceAnimate\n * @return {module:zrender/animation/Animator}\n */\n start: function (easing, forceAnimate) {\n var self = this;\n var clipCount = 0;\n\n var oneTrackDone = function () {\n clipCount--;\n\n if (!clipCount) {\n self._doneCallback();\n }\n };\n\n var lastClip;\n\n for (var propName in this._tracks) {\n if (!this._tracks.hasOwnProperty(propName)) {\n continue;\n }\n\n var clip = createTrackClip(this, easing, oneTrackDone, this._tracks[propName], propName, forceAnimate);\n\n if (clip) {\n this._clipList.push(clip);\n\n clipCount++; // If start after added to animation\n\n if (this.animation) {\n this.animation.addClip(clip);\n }\n\n lastClip = clip;\n }\n } // Add during callback on the last clip\n\n\n if (lastClip) {\n var oldOnFrame = lastClip.onframe;\n\n lastClip.onframe = function (target, percent) {\n oldOnFrame(target, percent);\n\n for (var i = 0; i < self._onframeList.length; i++) {\n self._onframeList[i](target, percent);\n }\n };\n } // This optimization will help the case that in the upper application\n // the view may be refreshed frequently, where animation will be\n // called repeatly but nothing changed.\n\n\n if (!clipCount) {\n this._doneCallback();\n }\n\n return this;\n },\n\n /**\n * Stop animation\n * @param {boolean} forwardToLast If move to last frame before stop\n */\n stop: function (forwardToLast) {\n var clipList = this._clipList;\n var animation = this.animation;\n\n for (var i = 0; i < clipList.length; i++) {\n var clip = clipList[i];\n\n if (forwardToLast) {\n // Move to last frame before stop\n clip.onframe(this._target, 1);\n }\n\n animation && animation.removeClip(clip);\n }\n\n clipList.length = 0;\n },\n\n /**\n * Set when animation delay starts\n * @param {number} time 单位ms\n * @return {module:zrender/animation/Animator}\n */\n delay: function (time) {\n this._delay = time;\n return this;\n },\n\n /**\n * Add callback for animation end\n * @param {Function} cb\n * @return {module:zrender/animation/Animator}\n */\n done: function (cb) {\n if (cb) {\n this._doneList.push(cb);\n }\n\n return this;\n },\n\n /**\n * @return {Array.}\n */\n getClips: function () {\n return this._clipList;\n }\n};\nvar _default = Animator;\nmodule.exports = _default;","var eventUtil = require(\"./event\");\n\n/**\n * Only implements needed gestures for mobile.\n */\nvar GestureMgr = function () {\n /**\n * @private\n * @type {Array.}\n */\n this._track = [];\n};\n\nGestureMgr.prototype = {\n constructor: GestureMgr,\n recognize: function (event, target, root) {\n this._doTrack(event, target, root);\n\n return this._recognize(event);\n },\n clear: function () {\n this._track.length = 0;\n return this;\n },\n _doTrack: function (event, target, root) {\n var touches = event.touches;\n\n if (!touches) {\n return;\n }\n\n var trackItem = {\n points: [],\n touches: [],\n target: target,\n event: event\n };\n\n for (var i = 0, len = touches.length; i < len; i++) {\n var touch = touches[i];\n var pos = eventUtil.clientToLocal(root, touch, {});\n trackItem.points.push([pos.zrX, pos.zrY]);\n trackItem.touches.push(touch);\n }\n\n this._track.push(trackItem);\n },\n _recognize: function (event) {\n for (var eventName in recognizers) {\n if (recognizers.hasOwnProperty(eventName)) {\n var gestureInfo = recognizers[eventName](this._track, event);\n\n if (gestureInfo) {\n return gestureInfo;\n }\n }\n }\n }\n};\n\nfunction dist(pointPair) {\n var dx = pointPair[1][0] - pointPair[0][0];\n var dy = pointPair[1][1] - pointPair[0][1];\n return Math.sqrt(dx * dx + dy * dy);\n}\n\nfunction center(pointPair) {\n return [(pointPair[0][0] + pointPair[1][0]) / 2, (pointPair[0][1] + pointPair[1][1]) / 2];\n}\n\nvar recognizers = {\n pinch: function (track, event) {\n var trackLen = track.length;\n\n if (!trackLen) {\n return;\n }\n\n var pinchEnd = (track[trackLen - 1] || {}).points;\n var pinchPre = (track[trackLen - 2] || {}).points || pinchEnd;\n\n if (pinchPre && pinchPre.length > 1 && pinchEnd && pinchEnd.length > 1) {\n var pinchScale = dist(pinchEnd) / dist(pinchPre);\n !isFinite(pinchScale) && (pinchScale = 1);\n event.pinchScale = pinchScale;\n var pinchCenter = center(pinchEnd);\n event.pinchX = pinchCenter[0];\n event.pinchY = pinchCenter[1];\n return {\n type: 'pinch',\n target: track[0].target,\n event: event\n };\n }\n } // Only pinch currently.\n\n};\nvar _default = GestureMgr;\nmodule.exports = _default;","var matrix = require(\"../core/matrix\");\n\nvar vector = require(\"../core/vector\");\n\n/**\n * 提供变换扩展\n * @module zrender/mixin/Transformable\n * @author pissang (https://www.github.com/pissang)\n */\nvar mIdentity = matrix.identity;\nvar EPSILON = 5e-5;\n\nfunction isNotAroundZero(val) {\n return val > EPSILON || val < -EPSILON;\n}\n/**\n * @alias module:zrender/mixin/Transformable\n * @constructor\n */\n\n\nvar Transformable = function (opts) {\n opts = opts || {}; // If there are no given position, rotation, scale\n\n if (!opts.position) {\n /**\n * 平移\n * @type {Array.}\n * @default [0, 0]\n */\n this.position = [0, 0];\n }\n\n if (opts.rotation == null) {\n /**\n * 旋转\n * @type {Array.}\n * @default 0\n */\n this.rotation = 0;\n }\n\n if (!opts.scale) {\n /**\n * 缩放\n * @type {Array.}\n * @default [1, 1]\n */\n this.scale = [1, 1];\n }\n /**\n * 旋转和缩放的原点\n * @type {Array.}\n * @default null\n */\n\n\n this.origin = this.origin || null;\n};\n\nvar transformableProto = Transformable.prototype;\ntransformableProto.transform = null;\n/**\n * 判断是否需要有坐标变换\n * 如果有坐标变换, 则从position, rotation, scale以及父节点的transform计算出自身的transform矩阵\n */\n\ntransformableProto.needLocalTransform = function () {\n return isNotAroundZero(this.rotation) || isNotAroundZero(this.position[0]) || isNotAroundZero(this.position[1]) || isNotAroundZero(this.scale[0] - 1) || isNotAroundZero(this.scale[1] - 1);\n};\n\nvar scaleTmp = [];\n\ntransformableProto.updateTransform = function () {\n var parent = this.parent;\n var parentHasTransform = parent && parent.transform;\n var needLocalTransform = this.needLocalTransform();\n var m = this.transform;\n\n if (!(needLocalTransform || parentHasTransform)) {\n m && mIdentity(m);\n return;\n }\n\n m = m || matrix.create();\n\n if (needLocalTransform) {\n this.getLocalTransform(m);\n } else {\n mIdentity(m);\n } // 应用父节点变换\n\n\n if (parentHasTransform) {\n if (needLocalTransform) {\n matrix.mul(m, parent.transform, m);\n } else {\n matrix.copy(m, parent.transform);\n }\n } // 保存这个变换矩阵\n\n\n this.transform = m;\n var globalScaleRatio = this.globalScaleRatio;\n\n if (globalScaleRatio != null && globalScaleRatio !== 1) {\n this.getGlobalScale(scaleTmp);\n var relX = scaleTmp[0] < 0 ? -1 : 1;\n var relY = scaleTmp[1] < 0 ? -1 : 1;\n var sx = ((scaleTmp[0] - relX) * globalScaleRatio + relX) / scaleTmp[0] || 0;\n var sy = ((scaleTmp[1] - relY) * globalScaleRatio + relY) / scaleTmp[1] || 0;\n m[0] *= sx;\n m[1] *= sx;\n m[2] *= sy;\n m[3] *= sy;\n }\n\n this.invTransform = this.invTransform || matrix.create();\n matrix.invert(this.invTransform, m);\n};\n\ntransformableProto.getLocalTransform = function (m) {\n return Transformable.getLocalTransform(this, m);\n};\n/**\n * 将自己的transform应用到context上\n * @param {CanvasRenderingContext2D} ctx\n */\n\n\ntransformableProto.setTransform = function (ctx) {\n var m = this.transform;\n var dpr = ctx.dpr || 1;\n\n if (m) {\n ctx.setTransform(dpr * m[0], dpr * m[1], dpr * m[2], dpr * m[3], dpr * m[4], dpr * m[5]);\n } else {\n ctx.setTransform(dpr, 0, 0, dpr, 0, 0);\n }\n};\n\ntransformableProto.restoreTransform = function (ctx) {\n var dpr = ctx.dpr || 1;\n ctx.setTransform(dpr, 0, 0, dpr, 0, 0);\n};\n\nvar tmpTransform = [];\nvar originTransform = matrix.create();\n\ntransformableProto.setLocalTransform = function (m) {\n if (!m) {\n // TODO return or set identity?\n return;\n }\n\n var sx = m[0] * m[0] + m[1] * m[1];\n var sy = m[2] * m[2] + m[3] * m[3];\n var position = this.position;\n var scale = this.scale;\n\n if (isNotAroundZero(sx - 1)) {\n sx = Math.sqrt(sx);\n }\n\n if (isNotAroundZero(sy - 1)) {\n sy = Math.sqrt(sy);\n }\n\n if (m[0] < 0) {\n sx = -sx;\n }\n\n if (m[3] < 0) {\n sy = -sy;\n }\n\n position[0] = m[4];\n position[1] = m[5];\n scale[0] = sx;\n scale[1] = sy;\n this.rotation = Math.atan2(-m[1] / sy, m[0] / sx);\n};\n/**\n * 分解`transform`矩阵到`position`, `rotation`, `scale`\n */\n\n\ntransformableProto.decomposeTransform = function () {\n if (!this.transform) {\n return;\n }\n\n var parent = this.parent;\n var m = this.transform;\n\n if (parent && parent.transform) {\n // Get local transform and decompose them to position, scale, rotation\n matrix.mul(tmpTransform, parent.invTransform, m);\n m = tmpTransform;\n }\n\n var origin = this.origin;\n\n if (origin && (origin[0] || origin[1])) {\n originTransform[4] = origin[0];\n originTransform[5] = origin[1];\n matrix.mul(tmpTransform, m, originTransform);\n tmpTransform[4] -= origin[0];\n tmpTransform[5] -= origin[1];\n m = tmpTransform;\n }\n\n this.setLocalTransform(m);\n};\n/**\n * Get global scale\n * @return {Array.}\n */\n\n\ntransformableProto.getGlobalScale = function (out) {\n var m = this.transform;\n out = out || [];\n\n if (!m) {\n out[0] = 1;\n out[1] = 1;\n return out;\n }\n\n out[0] = Math.sqrt(m[0] * m[0] + m[1] * m[1]);\n out[1] = Math.sqrt(m[2] * m[2] + m[3] * m[3]);\n\n if (m[0] < 0) {\n out[0] = -out[0];\n }\n\n if (m[3] < 0) {\n out[1] = -out[1];\n }\n\n return out;\n};\n/**\n * 变换坐标位置到 shape 的局部坐标空间\n * @method\n * @param {number} x\n * @param {number} y\n * @return {Array.}\n */\n\n\ntransformableProto.transformCoordToLocal = function (x, y) {\n var v2 = [x, y];\n var invTransform = this.invTransform;\n\n if (invTransform) {\n vector.applyTransform(v2, v2, invTransform);\n }\n\n return v2;\n};\n/**\n * 变换局部坐标位置到全局坐标空间\n * @method\n * @param {number} x\n * @param {number} y\n * @return {Array.}\n */\n\n\ntransformableProto.transformCoordToGlobal = function (x, y) {\n var v2 = [x, y];\n var transform = this.transform;\n\n if (transform) {\n vector.applyTransform(v2, v2, transform);\n }\n\n return v2;\n};\n/**\n * @static\n * @param {Object} target\n * @param {Array.} target.origin\n * @param {number} target.rotation\n * @param {Array.} target.position\n * @param {Array.} [m]\n */\n\n\nTransformable.getLocalTransform = function (target, m) {\n m = m || [];\n mIdentity(m);\n var origin = target.origin;\n var scale = target.scale || [1, 1];\n var rotation = target.rotation || 0;\n var position = target.position || [0, 0];\n\n if (origin) {\n // Translate to origin\n m[4] -= origin[0];\n m[5] -= origin[1];\n }\n\n matrix.scale(m, m, scale);\n\n if (rotation) {\n matrix.rotate(m, m, rotation);\n }\n\n if (origin) {\n // Translate back from origin\n m[4] += origin[0];\n m[5] += origin[1];\n }\n\n m[4] += position[0];\n m[5] += position[1];\n return m;\n};\n\nvar _default = Transformable;\nmodule.exports = _default;","var Displayable = require(\"./Displayable\");\n\nvar BoundingRect = require(\"../core/BoundingRect\");\n\nvar zrUtil = require(\"../core/util\");\n\nvar imageHelper = require(\"./helper/image\");\n\n/**\n * @alias zrender/graphic/Image\n * @extends module:zrender/graphic/Displayable\n * @constructor\n * @param {Object} opts\n */\nfunction ZImage(opts) {\n Displayable.call(this, opts);\n}\n\nZImage.prototype = {\n constructor: ZImage,\n type: 'image',\n brush: function (ctx, prevEl) {\n var style = this.style;\n var src = style.image; // Must bind each time\n\n style.bind(ctx, this, prevEl);\n var image = this._image = imageHelper.createOrUpdateImage(src, this._image, this, this.onload);\n\n if (!image || !imageHelper.isImageReady(image)) {\n return;\n } // 图片已经加载完成\n // if (image.nodeName.toUpperCase() == 'IMG') {\n // if (!image.complete) {\n // return;\n // }\n // }\n // Else is canvas\n\n\n var x = style.x || 0;\n var y = style.y || 0;\n var width = style.width;\n var height = style.height;\n var aspect = image.width / image.height;\n\n if (width == null && height != null) {\n // Keep image/height ratio\n width = height * aspect;\n } else if (height == null && width != null) {\n height = width / aspect;\n } else if (width == null && height == null) {\n width = image.width;\n height = image.height;\n } // 设置transform\n\n\n this.setTransform(ctx);\n\n if (style.sWidth && style.sHeight) {\n var sx = style.sx || 0;\n var sy = style.sy || 0;\n ctx.drawImage(image, sx, sy, style.sWidth, style.sHeight, x, y, width, height);\n } else if (style.sx && style.sy) {\n var sx = style.sx;\n var sy = style.sy;\n var sWidth = width - sx;\n var sHeight = height - sy;\n ctx.drawImage(image, sx, sy, sWidth, sHeight, x, y, width, height);\n } else {\n ctx.drawImage(image, x, y, width, height);\n } // Draw rect text\n\n\n if (style.text != null) {\n // Only restore transform when needs draw text.\n this.restoreTransform(ctx);\n this.drawRectText(ctx, this.getBoundingRect());\n }\n },\n getBoundingRect: function () {\n var style = this.style;\n\n if (!this._rect) {\n this._rect = new BoundingRect(style.x || 0, style.y || 0, style.width || 0, style.height || 0);\n }\n\n return this._rect;\n }\n};\nzrUtil.inherits(ZImage, Displayable);\nvar _default = ZImage;\nmodule.exports = _default;","import { isToday } from './utils'\n\nexport const kFormatter = num => (num > 999 ? `${(num / 1000).toFixed(1)}k` : num)\n\nexport const title = (value, replacer = ' ') => {\n if (!value) return ''\n const str = value.toString()\n\n const arr = str.split(replacer)\n const capitalizedArray = []\n arr.forEach(word => {\n const capitalized = word.charAt(0).toUpperCase() + word.slice(1)\n capitalizedArray.push(capitalized)\n })\n return capitalizedArray.join(' ')\n}\n\nexport const avatarText = value => {\n if (!value) return ''\n const nameArray = value.split(' ')\n return nameArray.map(word => word.charAt(0).toUpperCase()).join('')\n}\n\n/**\n * Format and return date in Humanize format\n * Intl docs: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/format\n * Intl Constructor: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat\n * @param {String} value date to format\n * @param {Object} formatting Intl object to format with\n */\nexport const formatDate = (value, formatting = { month: 'short', day: 'numeric', year: 'numeric' }) => {\n if (!value) return value\n return new Intl.DateTimeFormat('en-US', formatting).format(new Date(value))\n}\n\n/**\n * Return short human friendly month representation of date\n * Can also convert date to only time if date is of today (Better UX)\n * @param {String} value date to format\n * @param {Boolean} toTimeForCurrentDay Shall convert to time if day is today/current\n */\nexport const formatDateToMonthShort = (value, toTimeForCurrentDay = true) => {\n const date = new Date(value)\n let formatting = { month: 'short', day: 'numeric' }\n\n if (toTimeForCurrentDay && isToday(date)) {\n formatting = { hour: 'numeric', minute: 'numeric' }\n }\n\n return new Intl.DateTimeFormat('en-US', formatting).format(new Date(value))\n}\n\n// Strip all the tags from markup and return plain text\nexport const filterTags = value => value.replace(/<\\/?[^>]+(>|$)/g, '')\n","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar _model = require(\"../../util/model\");\n\nvar makeInner = _model.makeInner;\nvar getDataItemValue = _model.getDataItemValue;\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar createHashMap = _util.createHashMap;\nvar each = _util.each;\nvar map = _util.map;\nvar isArray = _util.isArray;\nvar isString = _util.isString;\nvar isObject = _util.isObject;\nvar isTypedArray = _util.isTypedArray;\nvar isArrayLike = _util.isArrayLike;\nvar extend = _util.extend;\nvar assert = _util.assert;\n\nvar Source = require(\"../Source\");\n\nvar _sourceType = require(\"./sourceType\");\n\nvar SOURCE_FORMAT_ORIGINAL = _sourceType.SOURCE_FORMAT_ORIGINAL;\nvar SOURCE_FORMAT_ARRAY_ROWS = _sourceType.SOURCE_FORMAT_ARRAY_ROWS;\nvar SOURCE_FORMAT_OBJECT_ROWS = _sourceType.SOURCE_FORMAT_OBJECT_ROWS;\nvar SOURCE_FORMAT_KEYED_COLUMNS = _sourceType.SOURCE_FORMAT_KEYED_COLUMNS;\nvar SOURCE_FORMAT_UNKNOWN = _sourceType.SOURCE_FORMAT_UNKNOWN;\nvar SOURCE_FORMAT_TYPED_ARRAY = _sourceType.SOURCE_FORMAT_TYPED_ARRAY;\nvar SERIES_LAYOUT_BY_ROW = _sourceType.SERIES_LAYOUT_BY_ROW;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// The result of `guessOrdinal`.\nvar BE_ORDINAL = {\n Must: 1,\n // Encounter string but not '-' and not number-like.\n Might: 2,\n // Encounter string but number-like.\n Not: 3 // Other cases\n\n};\nvar inner = makeInner();\n/**\n * @see {module:echarts/data/Source}\n * @param {module:echarts/component/dataset/DatasetModel} datasetModel\n * @return {string} sourceFormat\n */\n\nfunction detectSourceFormat(datasetModel) {\n var data = datasetModel.option.source;\n var sourceFormat = SOURCE_FORMAT_UNKNOWN;\n\n if (isTypedArray(data)) {\n sourceFormat = SOURCE_FORMAT_TYPED_ARRAY;\n } else if (isArray(data)) {\n // FIXME Whether tolerate null in top level array?\n if (data.length === 0) {\n sourceFormat = SOURCE_FORMAT_ARRAY_ROWS;\n }\n\n for (var i = 0, len = data.length; i < len; i++) {\n var item = data[i];\n\n if (item == null) {\n continue;\n } else if (isArray(item)) {\n sourceFormat = SOURCE_FORMAT_ARRAY_ROWS;\n break;\n } else if (isObject(item)) {\n sourceFormat = SOURCE_FORMAT_OBJECT_ROWS;\n break;\n }\n }\n } else if (isObject(data)) {\n for (var key in data) {\n if (data.hasOwnProperty(key) && isArrayLike(data[key])) {\n sourceFormat = SOURCE_FORMAT_KEYED_COLUMNS;\n break;\n }\n }\n } else if (data != null) {\n throw new Error('Invalid data');\n }\n\n inner(datasetModel).sourceFormat = sourceFormat;\n}\n/**\n * [Scenarios]:\n * (1) Provide source data directly:\n * series: {\n * encode: {...},\n * dimensions: [...]\n * seriesLayoutBy: 'row',\n * data: [[...]]\n * }\n * (2) Refer to datasetModel.\n * series: [{\n * encode: {...}\n * // Ignore datasetIndex means `datasetIndex: 0`\n * // and the dimensions defination in dataset is used\n * }, {\n * encode: {...},\n * seriesLayoutBy: 'column',\n * datasetIndex: 1\n * }]\n *\n * Get data from series itself or datset.\n * @return {module:echarts/data/Source} source\n */\n\n\nfunction getSource(seriesModel) {\n return inner(seriesModel).source;\n}\n/**\n * MUST be called before mergeOption of all series.\n * @param {module:echarts/model/Global} ecModel\n */\n\n\nfunction resetSourceDefaulter(ecModel) {\n // `datasetMap` is used to make default encode.\n inner(ecModel).datasetMap = createHashMap();\n}\n/**\n * [Caution]:\n * MUST be called after series option merged and\n * before \"series.getInitailData()\" called.\n *\n * [The rule of making default encode]:\n * Category axis (if exists) alway map to the first dimension.\n * Each other axis occupies a subsequent dimension.\n *\n * [Why make default encode]:\n * Simplify the typing of encode in option, avoiding the case like that:\n * series: [{encode: {x: 0, y: 1}}, {encode: {x: 0, y: 2}}, {encode: {x: 0, y: 3}}],\n * where the \"y\" have to be manually typed as \"1, 2, 3, ...\".\n *\n * @param {module:echarts/model/Series} seriesModel\n */\n\n\nfunction prepareSource(seriesModel) {\n var seriesOption = seriesModel.option;\n var data = seriesOption.data;\n var sourceFormat = isTypedArray(data) ? SOURCE_FORMAT_TYPED_ARRAY : SOURCE_FORMAT_ORIGINAL;\n var fromDataset = false;\n var seriesLayoutBy = seriesOption.seriesLayoutBy;\n var sourceHeader = seriesOption.sourceHeader;\n var dimensionsDefine = seriesOption.dimensions;\n var datasetModel = getDatasetModel(seriesModel);\n\n if (datasetModel) {\n var datasetOption = datasetModel.option;\n data = datasetOption.source;\n sourceFormat = inner(datasetModel).sourceFormat;\n fromDataset = true; // These settings from series has higher priority.\n\n seriesLayoutBy = seriesLayoutBy || datasetOption.seriesLayoutBy;\n sourceHeader == null && (sourceHeader = datasetOption.sourceHeader);\n dimensionsDefine = dimensionsDefine || datasetOption.dimensions;\n }\n\n var completeResult = completeBySourceData(data, sourceFormat, seriesLayoutBy, sourceHeader, dimensionsDefine);\n inner(seriesModel).source = new Source({\n data: data,\n fromDataset: fromDataset,\n seriesLayoutBy: seriesLayoutBy,\n sourceFormat: sourceFormat,\n dimensionsDefine: completeResult.dimensionsDefine,\n startIndex: completeResult.startIndex,\n dimensionsDetectCount: completeResult.dimensionsDetectCount,\n // Note: dataset option does not have `encode`.\n encodeDefine: seriesOption.encode\n });\n} // return {startIndex, dimensionsDefine, dimensionsCount}\n\n\nfunction completeBySourceData(data, sourceFormat, seriesLayoutBy, sourceHeader, dimensionsDefine) {\n if (!data) {\n return {\n dimensionsDefine: normalizeDimensionsDefine(dimensionsDefine)\n };\n }\n\n var dimensionsDetectCount;\n var startIndex;\n\n if (sourceFormat === SOURCE_FORMAT_ARRAY_ROWS) {\n // Rule: Most of the first line are string: it is header.\n // Caution: consider a line with 5 string and 1 number,\n // it still can not be sure it is a head, because the\n // 5 string may be 5 values of category columns.\n if (sourceHeader === 'auto' || sourceHeader == null) {\n arrayRowsTravelFirst(function (val) {\n // '-' is regarded as null/undefined.\n if (val != null && val !== '-') {\n if (isString(val)) {\n startIndex == null && (startIndex = 1);\n } else {\n startIndex = 0;\n }\n } // 10 is an experience number, avoid long loop.\n\n }, seriesLayoutBy, data, 10);\n } else {\n startIndex = sourceHeader ? 1 : 0;\n }\n\n if (!dimensionsDefine && startIndex === 1) {\n dimensionsDefine = [];\n arrayRowsTravelFirst(function (val, index) {\n dimensionsDefine[index] = val != null ? val : '';\n }, seriesLayoutBy, data);\n }\n\n dimensionsDetectCount = dimensionsDefine ? dimensionsDefine.length : seriesLayoutBy === SERIES_LAYOUT_BY_ROW ? data.length : data[0] ? data[0].length : null;\n } else if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS) {\n if (!dimensionsDefine) {\n dimensionsDefine = objectRowsCollectDimensions(data);\n }\n } else if (sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS) {\n if (!dimensionsDefine) {\n dimensionsDefine = [];\n each(data, function (colArr, key) {\n dimensionsDefine.push(key);\n });\n }\n } else if (sourceFormat === SOURCE_FORMAT_ORIGINAL) {\n var value0 = getDataItemValue(data[0]);\n dimensionsDetectCount = isArray(value0) && value0.length || 1;\n } else if (sourceFormat === SOURCE_FORMAT_TYPED_ARRAY) {}\n\n return {\n startIndex: startIndex,\n dimensionsDefine: normalizeDimensionsDefine(dimensionsDefine),\n dimensionsDetectCount: dimensionsDetectCount\n };\n} // Consider dimensions defined like ['A', 'price', 'B', 'price', 'C', 'price'],\n// which is reasonable. But dimension name is duplicated.\n// Returns undefined or an array contains only object without null/undefiend or string.\n\n\nfunction normalizeDimensionsDefine(dimensionsDefine) {\n if (!dimensionsDefine) {\n // The meaning of null/undefined is different from empty array.\n return;\n }\n\n var nameMap = createHashMap();\n return map(dimensionsDefine, function (item, index) {\n item = extend({}, isObject(item) ? item : {\n name: item\n }); // User can set null in dimensions.\n // We dont auto specify name, othewise a given name may\n // cause it be refered unexpectedly.\n\n if (item.name == null) {\n return item;\n } // Also consider number form like 2012.\n\n\n item.name += ''; // User may also specify displayName.\n // displayName will always exists except user not\n // specified or dim name is not specified or detected.\n // (A auto generated dim name will not be used as\n // displayName).\n\n if (item.displayName == null) {\n item.displayName = item.name;\n }\n\n var exist = nameMap.get(item.name);\n\n if (!exist) {\n nameMap.set(item.name, {\n count: 1\n });\n } else {\n item.name += '-' + exist.count++;\n }\n\n return item;\n });\n}\n\nfunction arrayRowsTravelFirst(cb, seriesLayoutBy, data, maxLoop) {\n maxLoop == null && (maxLoop = Infinity);\n\n if (seriesLayoutBy === SERIES_LAYOUT_BY_ROW) {\n for (var i = 0; i < data.length && i < maxLoop; i++) {\n cb(data[i] ? data[i][0] : null, i);\n }\n } else {\n var value0 = data[0] || [];\n\n for (var i = 0; i < value0.length && i < maxLoop; i++) {\n cb(value0[i], i);\n }\n }\n}\n\nfunction objectRowsCollectDimensions(data) {\n var firstIndex = 0;\n var obj;\n\n while (firstIndex < data.length && !(obj = data[firstIndex++])) {} // jshint ignore: line\n\n\n if (obj) {\n var dimensions = [];\n each(obj, function (value, key) {\n dimensions.push(key);\n });\n return dimensions;\n }\n}\n/**\n * [The strategy of the arrengment of data dimensions for dataset]:\n * \"value way\": all axes are non-category axes. So series one by one take\n * several (the number is coordSysDims.length) dimensions from dataset.\n * The result of data arrengment of data dimensions like:\n * | ser0_x | ser0_y | ser1_x | ser1_y | ser2_x | ser2_y |\n * \"category way\": at least one axis is category axis. So the the first data\n * dimension is always mapped to the first category axis and shared by\n * all of the series. The other data dimensions are taken by series like\n * \"value way\" does.\n * The result of data arrengment of data dimensions like:\n * | ser_shared_x | ser0_y | ser1_y | ser2_y |\n *\n * @param {Array.} coordDimensions [{name: , type: , dimsDef: }, ...]\n * @param {module:model/Series} seriesModel\n * @param {module:data/Source} source\n * @return {Object} encode Never be `null/undefined`.\n */\n\n\nfunction makeSeriesEncodeForAxisCoordSys(coordDimensions, seriesModel, source) {\n var encode = {};\n var datasetModel = getDatasetModel(seriesModel); // Currently only make default when using dataset, util more reqirements occur.\n\n if (!datasetModel || !coordDimensions) {\n return encode;\n }\n\n var encodeItemName = [];\n var encodeSeriesName = [];\n var ecModel = seriesModel.ecModel;\n var datasetMap = inner(ecModel).datasetMap;\n var key = datasetModel.uid + '_' + source.seriesLayoutBy;\n var baseCategoryDimIndex;\n var categoryWayValueDimStart;\n coordDimensions = coordDimensions.slice();\n each(coordDimensions, function (coordDimInfo, coordDimIdx) {\n !isObject(coordDimInfo) && (coordDimensions[coordDimIdx] = {\n name: coordDimInfo\n });\n\n if (coordDimInfo.type === 'ordinal' && baseCategoryDimIndex == null) {\n baseCategoryDimIndex = coordDimIdx;\n categoryWayValueDimStart = getDataDimCountOnCoordDim(coordDimensions[coordDimIdx]);\n }\n\n encode[coordDimInfo.name] = [];\n });\n var datasetRecord = datasetMap.get(key) || datasetMap.set(key, {\n categoryWayDim: categoryWayValueDimStart,\n valueWayDim: 0\n }); // TODO\n // Auto detect first time axis and do arrangement.\n\n each(coordDimensions, function (coordDimInfo, coordDimIdx) {\n var coordDimName = coordDimInfo.name;\n var count = getDataDimCountOnCoordDim(coordDimInfo); // In value way.\n\n if (baseCategoryDimIndex == null) {\n var start = datasetRecord.valueWayDim;\n pushDim(encode[coordDimName], start, count);\n pushDim(encodeSeriesName, start, count);\n datasetRecord.valueWayDim += count; // ??? TODO give a better default series name rule?\n // especially when encode x y specified.\n // consider: when mutiple series share one dimension\n // category axis, series name should better use\n // the other dimsion name. On the other hand, use\n // both dimensions name.\n } // In category way, the first category axis.\n else if (baseCategoryDimIndex === coordDimIdx) {\n pushDim(encode[coordDimName], 0, count);\n pushDim(encodeItemName, 0, count);\n } // In category way, the other axis.\n else {\n var start = datasetRecord.categoryWayDim;\n pushDim(encode[coordDimName], start, count);\n pushDim(encodeSeriesName, start, count);\n datasetRecord.categoryWayDim += count;\n }\n });\n\n function pushDim(dimIdxArr, idxFrom, idxCount) {\n for (var i = 0; i < idxCount; i++) {\n dimIdxArr.push(idxFrom + i);\n }\n }\n\n function getDataDimCountOnCoordDim(coordDimInfo) {\n var dimsDef = coordDimInfo.dimsDef;\n return dimsDef ? dimsDef.length : 1;\n }\n\n encodeItemName.length && (encode.itemName = encodeItemName);\n encodeSeriesName.length && (encode.seriesName = encodeSeriesName);\n return encode;\n}\n/**\n * Work for data like [{name: ..., value: ...}, ...].\n *\n * @param {module:model/Series} seriesModel\n * @param {module:data/Source} source\n * @return {Object} encode Never be `null/undefined`.\n */\n\n\nfunction makeSeriesEncodeForNameBased(seriesModel, source, dimCount) {\n var encode = {};\n var datasetModel = getDatasetModel(seriesModel); // Currently only make default when using dataset, util more reqirements occur.\n\n if (!datasetModel) {\n return encode;\n }\n\n var sourceFormat = source.sourceFormat;\n var dimensionsDefine = source.dimensionsDefine;\n var potentialNameDimIndex;\n\n if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS || sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS) {\n each(dimensionsDefine, function (dim, idx) {\n if ((isObject(dim) ? dim.name : dim) === 'name') {\n potentialNameDimIndex = idx;\n }\n });\n } // idxResult: {v, n}.\n\n\n var idxResult = function () {\n var idxRes0 = {};\n var idxRes1 = {};\n var guessRecords = []; // 5 is an experience value.\n\n for (var i = 0, len = Math.min(5, dimCount); i < len; i++) {\n var guessResult = doGuessOrdinal(source.data, sourceFormat, source.seriesLayoutBy, dimensionsDefine, source.startIndex, i);\n guessRecords.push(guessResult);\n var isPureNumber = guessResult === BE_ORDINAL.Not; // [Strategy of idxRes0]: find the first BE_ORDINAL.Not as the value dim,\n // and then find a name dim with the priority:\n // \"BE_ORDINAL.Might|BE_ORDINAL.Must\" > \"other dim\" > \"the value dim itself\".\n\n if (isPureNumber && idxRes0.v == null && i !== potentialNameDimIndex) {\n idxRes0.v = i;\n }\n\n if (idxRes0.n == null || idxRes0.n === idxRes0.v || !isPureNumber && guessRecords[idxRes0.n] === BE_ORDINAL.Not) {\n idxRes0.n = i;\n }\n\n if (fulfilled(idxRes0) && guessRecords[idxRes0.n] !== BE_ORDINAL.Not) {\n return idxRes0;\n } // [Strategy of idxRes1]: if idxRes0 not satisfied (that is, no BE_ORDINAL.Not),\n // find the first BE_ORDINAL.Might as the value dim,\n // and then find a name dim with the priority:\n // \"other dim\" > \"the value dim itself\".\n // That is for backward compat: number-like (e.g., `'3'`, `'55'`) can be\n // treated as number.\n\n\n if (!isPureNumber) {\n if (guessResult === BE_ORDINAL.Might && idxRes1.v == null && i !== potentialNameDimIndex) {\n idxRes1.v = i;\n }\n\n if (idxRes1.n == null || idxRes1.n === idxRes1.v) {\n idxRes1.n = i;\n }\n }\n }\n\n function fulfilled(idxResult) {\n return idxResult.v != null && idxResult.n != null;\n }\n\n return fulfilled(idxRes0) ? idxRes0 : fulfilled(idxRes1) ? idxRes1 : null;\n }();\n\n if (idxResult) {\n encode.value = idxResult.v; // `potentialNameDimIndex` has highest priority.\n\n var nameDimIndex = potentialNameDimIndex != null ? potentialNameDimIndex : idxResult.n; // By default, label use itemName in charts.\n // So we dont set encodeLabel here.\n\n encode.itemName = [nameDimIndex];\n encode.seriesName = [nameDimIndex];\n }\n\n return encode;\n}\n/**\n * If return null/undefined, indicate that should not use datasetModel.\n */\n\n\nfunction getDatasetModel(seriesModel) {\n var option = seriesModel.option; // Caution: consider the scenario:\n // A dataset is declared and a series is not expected to use the dataset,\n // and at the beginning `setOption({series: { noData })` (just prepare other\n // option but no data), then `setOption({series: {data: [...]}); In this case,\n // the user should set an empty array to avoid that dataset is used by default.\n\n var thisData = option.data;\n\n if (!thisData) {\n return seriesModel.ecModel.getComponent('dataset', option.datasetIndex || 0);\n }\n}\n/**\n * The rule should not be complex, otherwise user might not\n * be able to known where the data is wrong.\n * The code is ugly, but how to make it neat?\n *\n * @param {module:echars/data/Source} source\n * @param {number} dimIndex\n * @return {BE_ORDINAL} guess result.\n */\n\n\nfunction guessOrdinal(source, dimIndex) {\n return doGuessOrdinal(source.data, source.sourceFormat, source.seriesLayoutBy, source.dimensionsDefine, source.startIndex, dimIndex);\n} // dimIndex may be overflow source data.\n// return {BE_ORDINAL}\n\n\nfunction doGuessOrdinal(data, sourceFormat, seriesLayoutBy, dimensionsDefine, startIndex, dimIndex) {\n var result; // Experience value.\n\n var maxLoop = 5;\n\n if (isTypedArray(data)) {\n return BE_ORDINAL.Not;\n } // When sourceType is 'objectRows' or 'keyedColumns', dimensionsDefine\n // always exists in source.\n\n\n var dimName;\n var dimType;\n\n if (dimensionsDefine) {\n var dimDefItem = dimensionsDefine[dimIndex];\n\n if (isObject(dimDefItem)) {\n dimName = dimDefItem.name;\n dimType = dimDefItem.type;\n } else if (isString(dimDefItem)) {\n dimName = dimDefItem;\n }\n }\n\n if (dimType != null) {\n return dimType === 'ordinal' ? BE_ORDINAL.Must : BE_ORDINAL.Not;\n }\n\n if (sourceFormat === SOURCE_FORMAT_ARRAY_ROWS) {\n if (seriesLayoutBy === SERIES_LAYOUT_BY_ROW) {\n var sample = data[dimIndex];\n\n for (var i = 0; i < (sample || []).length && i < maxLoop; i++) {\n if ((result = detectValue(sample[startIndex + i])) != null) {\n return result;\n }\n }\n } else {\n for (var i = 0; i < data.length && i < maxLoop; i++) {\n var row = data[startIndex + i];\n\n if (row && (result = detectValue(row[dimIndex])) != null) {\n return result;\n }\n }\n }\n } else if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS) {\n if (!dimName) {\n return BE_ORDINAL.Not;\n }\n\n for (var i = 0; i < data.length && i < maxLoop; i++) {\n var item = data[i];\n\n if (item && (result = detectValue(item[dimName])) != null) {\n return result;\n }\n }\n } else if (sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS) {\n if (!dimName) {\n return BE_ORDINAL.Not;\n }\n\n var sample = data[dimName];\n\n if (!sample || isTypedArray(sample)) {\n return BE_ORDINAL.Not;\n }\n\n for (var i = 0; i < sample.length && i < maxLoop; i++) {\n if ((result = detectValue(sample[i])) != null) {\n return result;\n }\n }\n } else if (sourceFormat === SOURCE_FORMAT_ORIGINAL) {\n for (var i = 0; i < data.length && i < maxLoop; i++) {\n var item = data[i];\n var val = getDataItemValue(item);\n\n if (!isArray(val)) {\n return BE_ORDINAL.Not;\n }\n\n if ((result = detectValue(val[dimIndex])) != null) {\n return result;\n }\n }\n }\n\n function detectValue(val) {\n var beStr = isString(val); // Consider usage convenience, '1', '2' will be treated as \"number\".\n // `isFinit('')` get `true`.\n\n if (val != null && isFinite(val) && val !== '') {\n return beStr ? BE_ORDINAL.Might : BE_ORDINAL.Not;\n } else if (beStr && val !== '-') {\n return BE_ORDINAL.Must;\n }\n }\n\n return BE_ORDINAL.Not;\n}\n\nexports.BE_ORDINAL = BE_ORDINAL;\nexports.detectSourceFormat = detectSourceFormat;\nexports.getSource = getSource;\nexports.resetSourceDefaulter = resetSourceDefaulter;\nexports.prepareSource = prepareSource;\nexports.makeSeriesEncodeForAxisCoordSys = makeSeriesEncodeForAxisCoordSys;\nexports.makeSeriesEncodeForNameBased = makeSeriesEncodeForNameBased;\nexports.guessOrdinal = guessOrdinal;","'use strict';\nvar toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `String.prototype.repeat` method implementation\n// https://tc39.github.io/ecma262/#sec-string.prototype.repeat\nmodule.exports = ''.repeat || function repeat(count) {\n var str = String(requireObjectCoercible(this));\n var result = '';\n var n = toInteger(count);\n if (n < 0 || n == Infinity) throw RangeError('Wrong number of repetitions');\n for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) result += str;\n return result;\n};\n","import { Vue, mergeData } from '../../vue';\nimport { NAME_FORM } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n id: makeProp(PROP_TYPE_STRING),\n inline: makeProp(PROP_TYPE_BOOLEAN, false),\n novalidate: makeProp(PROP_TYPE_BOOLEAN, false),\n validated: makeProp(PROP_TYPE_BOOLEAN, false)\n}, NAME_FORM); // --- Main component ---\n// @vue/component\n\nexport var BForm = /*#__PURE__*/Vue.extend({\n name: NAME_FORM,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h('form', mergeData(data, {\n class: {\n 'form-inline': props.inline,\n 'was-validated': props.validated\n },\n attrs: {\n id: props.id,\n novalidate: props.novalidate\n }\n }), children);\n }\n});","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar createListFromArray = require(\"./chart/helper/createListFromArray\");\n\nvar axisHelper = require(\"./coord/axisHelper\");\n\nvar axisModelCommonMixin = require(\"./coord/axisModelCommonMixin\");\n\nvar Model = require(\"./model/Model\");\n\nvar _layout = require(\"./util/layout\");\n\nvar getLayoutRect = _layout.getLayoutRect;\nexports.getLayoutRect = _layout.getLayoutRect;\n\nvar _dataStackHelper = require(\"./data/helper/dataStackHelper\");\n\nvar enableDataStack = _dataStackHelper.enableDataStack;\nvar isDimensionStacked = _dataStackHelper.isDimensionStacked;\nvar getStackedDimension = _dataStackHelper.getStackedDimension;\n\nvar _completeDimensions = require(\"./data/helper/completeDimensions\");\n\nexports.completeDimensions = _completeDimensions;\n\nvar _createDimensions = require(\"./data/helper/createDimensions\");\n\nexports.createDimensions = _createDimensions;\n\nvar _symbol = require(\"./util/symbol\");\n\nexports.createSymbol = _symbol.createSymbol;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// import createGraphFromNodeEdge from './chart/helper/createGraphFromNodeEdge';\n\n/**\n * Create a muti dimension List structure from seriesModel.\n * @param {module:echarts/model/Model} seriesModel\n * @return {module:echarts/data/List} list\n */\nfunction createList(seriesModel) {\n return createListFromArray(seriesModel.getSource(), seriesModel);\n} // export function createGraph(seriesModel) {\n// var nodes = seriesModel.get('data');\n// var links = seriesModel.get('links');\n// return createGraphFromNodeEdge(nodes, links, seriesModel);\n// }\n\n\nvar dataStack = {\n isDimensionStacked: isDimensionStacked,\n enableDataStack: enableDataStack,\n getStackedDimension: getStackedDimension\n};\n/**\n * Create a symbol element with given symbol configuration: shape, x, y, width, height, color\n * @param {string} symbolDesc\n * @param {number} x\n * @param {number} y\n * @param {number} w\n * @param {number} h\n * @param {string} color\n */\n\n/**\n * Create scale\n * @param {Array.} dataExtent\n * @param {Object|module:echarts/Model} option\n */\nfunction createScale(dataExtent, option) {\n var axisModel = option;\n\n if (!Model.isInstance(option)) {\n axisModel = new Model(option);\n zrUtil.mixin(axisModel, axisModelCommonMixin);\n }\n\n var scale = axisHelper.createScaleByModel(axisModel);\n scale.setExtent(dataExtent[0], dataExtent[1]);\n axisHelper.niceScaleExtent(scale, axisModel);\n return scale;\n}\n/**\n * Mixin common methods to axis model,\n *\n * Inlcude methods\n * `getFormattedLabels() => Array.`\n * `getCategories() => Array.`\n * `getMin(origin: boolean) => number`\n * `getMax(origin: boolean) => number`\n * `getNeedCrossZero() => boolean`\n * `setRange(start: number, end: number)`\n * `resetRange()`\n */\n\n\nfunction mixinAxisModelCommonMethods(Model) {\n zrUtil.mixin(Model, axisModelCommonMixin);\n}\n\nexports.createList = createList;\nexports.dataStack = dataStack;\nexports.createScale = createScale;\nexports.mixinAxisModelCommonMethods = mixinAxisModelCommonMethods;","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!./Todo.vue?vue&type=style&index=0&id=374f59fb&lang=scss&scoped=true&\"","/**\n * 3x2矩阵操作类\n * @exports zrender/tool/matrix\n */\n\n/* global Float32Array */\nvar ArrayCtor = typeof Float32Array === 'undefined' ? Array : Float32Array;\n/**\n * Create a identity matrix.\n * @return {Float32Array|Array.}\n */\n\nfunction create() {\n var out = new ArrayCtor(6);\n identity(out);\n return out;\n}\n/**\n * 设置矩阵为单位矩阵\n * @param {Float32Array|Array.} out\n */\n\n\nfunction identity(out) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 1;\n out[4] = 0;\n out[5] = 0;\n return out;\n}\n/**\n * 复制矩阵\n * @param {Float32Array|Array.} out\n * @param {Float32Array|Array.} m\n */\n\n\nfunction copy(out, m) {\n out[0] = m[0];\n out[1] = m[1];\n out[2] = m[2];\n out[3] = m[3];\n out[4] = m[4];\n out[5] = m[5];\n return out;\n}\n/**\n * 矩阵相乘\n * @param {Float32Array|Array.} out\n * @param {Float32Array|Array.} m1\n * @param {Float32Array|Array.} m2\n */\n\n\nfunction mul(out, m1, m2) {\n // Consider matrix.mul(m, m2, m);\n // where out is the same as m2.\n // So use temp variable to escape error.\n var out0 = m1[0] * m2[0] + m1[2] * m2[1];\n var out1 = m1[1] * m2[0] + m1[3] * m2[1];\n var out2 = m1[0] * m2[2] + m1[2] * m2[3];\n var out3 = m1[1] * m2[2] + m1[3] * m2[3];\n var out4 = m1[0] * m2[4] + m1[2] * m2[5] + m1[4];\n var out5 = m1[1] * m2[4] + m1[3] * m2[5] + m1[5];\n out[0] = out0;\n out[1] = out1;\n out[2] = out2;\n out[3] = out3;\n out[4] = out4;\n out[5] = out5;\n return out;\n}\n/**\n * 平移变换\n * @param {Float32Array|Array.} out\n * @param {Float32Array|Array.} a\n * @param {Float32Array|Array.} v\n */\n\n\nfunction translate(out, a, v) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4] + v[0];\n out[5] = a[5] + v[1];\n return out;\n}\n/**\n * 旋转变换\n * @param {Float32Array|Array.} out\n * @param {Float32Array|Array.} a\n * @param {number} rad\n */\n\n\nfunction rotate(out, a, rad) {\n var aa = a[0];\n var ac = a[2];\n var atx = a[4];\n var ab = a[1];\n var ad = a[3];\n var aty = a[5];\n var st = Math.sin(rad);\n var ct = Math.cos(rad);\n out[0] = aa * ct + ab * st;\n out[1] = -aa * st + ab * ct;\n out[2] = ac * ct + ad * st;\n out[3] = -ac * st + ct * ad;\n out[4] = ct * atx + st * aty;\n out[5] = ct * aty - st * atx;\n return out;\n}\n/**\n * 缩放变换\n * @param {Float32Array|Array.} out\n * @param {Float32Array|Array.} a\n * @param {Float32Array|Array.} v\n */\n\n\nfunction scale(out, a, v) {\n var vx = v[0];\n var vy = v[1];\n out[0] = a[0] * vx;\n out[1] = a[1] * vy;\n out[2] = a[2] * vx;\n out[3] = a[3] * vy;\n out[4] = a[4] * vx;\n out[5] = a[5] * vy;\n return out;\n}\n/**\n * 求逆矩阵\n * @param {Float32Array|Array.} out\n * @param {Float32Array|Array.} a\n */\n\n\nfunction invert(out, a) {\n var aa = a[0];\n var ac = a[2];\n var atx = a[4];\n var ab = a[1];\n var ad = a[3];\n var aty = a[5];\n var det = aa * ad - ab * ac;\n\n if (!det) {\n return null;\n }\n\n det = 1.0 / det;\n out[0] = ad * det;\n out[1] = -ab * det;\n out[2] = -ac * det;\n out[3] = aa * det;\n out[4] = (ac * aty - ad * atx) * det;\n out[5] = (ab * atx - aa * aty) * det;\n return out;\n}\n/**\n * Clone a new matrix.\n * @param {Float32Array|Array.} a\n */\n\n\nfunction clone(a) {\n var b = create();\n copy(b, a);\n return b;\n}\n\nexports.create = create;\nexports.identity = identity;\nexports.copy = copy;\nexports.mul = mul;\nexports.translate = translate;\nexports.rotate = rotate;\nexports.scale = scale;\nexports.invert = invert;\nexports.clone = clone;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar Scale = require(\"./Scale\");\n\nvar OrdinalMeta = require(\"../data/OrdinalMeta\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Linear continuous scale\n * @module echarts/coord/scale/Ordinal\n *\n * http://en.wikipedia.org/wiki/Level_of_measurement\n */\n// FIXME only one data\nvar scaleProto = Scale.prototype;\nvar OrdinalScale = Scale.extend({\n type: 'ordinal',\n\n /**\n * @param {module:echarts/data/OrdianlMeta|Array.} ordinalMeta\n */\n init: function (ordinalMeta, extent) {\n // Caution: Should not use instanceof, consider ec-extensions using\n // import approach to get OrdinalMeta class.\n if (!ordinalMeta || zrUtil.isArray(ordinalMeta)) {\n ordinalMeta = new OrdinalMeta({\n categories: ordinalMeta\n });\n }\n\n this._ordinalMeta = ordinalMeta;\n this._extent = extent || [0, ordinalMeta.categories.length - 1];\n },\n parse: function (val) {\n return typeof val === 'string' ? this._ordinalMeta.getOrdinal(val) // val might be float.\n : Math.round(val);\n },\n contain: function (rank) {\n rank = this.parse(rank);\n return scaleProto.contain.call(this, rank) && this._ordinalMeta.categories[rank] != null;\n },\n\n /**\n * Normalize given rank or name to linear [0, 1]\n * @param {number|string} [val]\n * @return {number}\n */\n normalize: function (val) {\n return scaleProto.normalize.call(this, this.parse(val));\n },\n scale: function (val) {\n return Math.round(scaleProto.scale.call(this, val));\n },\n\n /**\n * @return {Array}\n */\n getTicks: function () {\n var ticks = [];\n var extent = this._extent;\n var rank = extent[0];\n\n while (rank <= extent[1]) {\n ticks.push(rank);\n rank++;\n }\n\n return ticks;\n },\n\n /**\n * Get item on rank n\n * @param {number} n\n * @return {string}\n */\n getLabel: function (n) {\n if (!this.isBlank()) {\n // Note that if no data, ordinalMeta.categories is an empty array.\n return this._ordinalMeta.categories[n];\n }\n },\n\n /**\n * @return {number}\n */\n count: function () {\n return this._extent[1] - this._extent[0] + 1;\n },\n\n /**\n * @override\n */\n unionExtentFromData: function (data, dim) {\n this.unionExtent(data.getApproximateExtent(dim));\n },\n getOrdinalMeta: function () {\n return this._ordinalMeta;\n },\n niceTicks: zrUtil.noop,\n niceExtent: zrUtil.noop\n});\n/**\n * @return {module:echarts/scale/Time}\n */\n\nOrdinalScale.create = function () {\n return new OrdinalScale();\n};\n\nvar _default = OrdinalScale;\nmodule.exports = _default;","var zrUtil = require(\"../core/util\");\n\nvar Style = require(\"./Style\");\n\nvar Element = require(\"../Element\");\n\nvar RectText = require(\"./mixin/RectText\");\n\n/**\n * Base class of all displayable graphic objects\n * @module zrender/graphic/Displayable\n */\n\n/**\n * @alias module:zrender/graphic/Displayable\n * @extends module:zrender/Element\n * @extends module:zrender/graphic/mixin/RectText\n */\nfunction Displayable(opts) {\n opts = opts || {};\n Element.call(this, opts); // Extend properties\n\n for (var name in opts) {\n if (opts.hasOwnProperty(name) && name !== 'style') {\n this[name] = opts[name];\n }\n }\n /**\n * @type {module:zrender/graphic/Style}\n */\n\n\n this.style = new Style(opts.style, this);\n this._rect = null; // Shapes for cascade clipping.\n // Can only be `null`/`undefined` or an non-empty array, MUST NOT be an empty array.\n // because it is easy to only using null to check whether clipPaths changed.\n\n this.__clipPaths = null; // FIXME Stateful must be mixined after style is setted\n // Stateful.call(this, opts);\n}\n\nDisplayable.prototype = {\n constructor: Displayable,\n type: 'displayable',\n\n /**\n * Dirty flag. From which painter will determine if this displayable object needs brush.\n * @name module:zrender/graphic/Displayable#__dirty\n * @type {boolean}\n */\n __dirty: true,\n\n /**\n * Whether the displayable object is visible. when it is true, the displayable object\n * is not drawn, but the mouse event can still trigger the object.\n * @name module:/zrender/graphic/Displayable#invisible\n * @type {boolean}\n * @default false\n */\n invisible: false,\n\n /**\n * @name module:/zrender/graphic/Displayable#z\n * @type {number}\n * @default 0\n */\n z: 0,\n\n /**\n * @name module:/zrender/graphic/Displayable#z\n * @type {number}\n * @default 0\n */\n z2: 0,\n\n /**\n * The z level determines the displayable object can be drawn in which layer canvas.\n * @name module:/zrender/graphic/Displayable#zlevel\n * @type {number}\n * @default 0\n */\n zlevel: 0,\n\n /**\n * Whether it can be dragged.\n * @name module:/zrender/graphic/Displayable#draggable\n * @type {boolean}\n * @default false\n */\n draggable: false,\n\n /**\n * Whether is it dragging.\n * @name module:/zrender/graphic/Displayable#draggable\n * @type {boolean}\n * @default false\n */\n dragging: false,\n\n /**\n * Whether to respond to mouse events.\n * @name module:/zrender/graphic/Displayable#silent\n * @type {boolean}\n * @default false\n */\n silent: false,\n\n /**\n * If enable culling\n * @type {boolean}\n * @default false\n */\n culling: false,\n\n /**\n * Mouse cursor when hovered\n * @name module:/zrender/graphic/Displayable#cursor\n * @type {string}\n */\n cursor: 'pointer',\n\n /**\n * If hover area is bounding rect\n * @name module:/zrender/graphic/Displayable#rectHover\n * @type {string}\n */\n rectHover: false,\n\n /**\n * Render the element progressively when the value >= 0,\n * usefull for large data.\n * @type {boolean}\n */\n progressive: false,\n\n /**\n * @type {boolean}\n */\n incremental: false,\n\n /**\n * Scale ratio for global scale.\n * @type {boolean}\n */\n globalScaleRatio: 1,\n beforeBrush: function (ctx) {},\n afterBrush: function (ctx) {},\n\n /**\n * Graphic drawing method.\n * @param {CanvasRenderingContext2D} ctx\n */\n // Interface\n brush: function (ctx, prevEl) {},\n\n /**\n * Get the minimum bounding box.\n * @return {module:zrender/core/BoundingRect}\n */\n // Interface\n getBoundingRect: function () {},\n\n /**\n * If displayable element contain coord x, y\n * @param {number} x\n * @param {number} y\n * @return {boolean}\n */\n contain: function (x, y) {\n return this.rectContain(x, y);\n },\n\n /**\n * @param {Function} cb\n * @param {} context\n */\n traverse: function (cb, context) {\n cb.call(context, this);\n },\n\n /**\n * If bounding rect of element contain coord x, y\n * @param {number} x\n * @param {number} y\n * @return {boolean}\n */\n rectContain: function (x, y) {\n var coord = this.transformCoordToLocal(x, y);\n var rect = this.getBoundingRect();\n return rect.contain(coord[0], coord[1]);\n },\n\n /**\n * Mark displayable element dirty and refresh next frame\n */\n dirty: function () {\n this.__dirty = this.__dirtyText = true;\n this._rect = null;\n this.__zr && this.__zr.refresh();\n },\n\n /**\n * If displayable object binded any event\n * @return {boolean}\n */\n // TODO, events bound by bind\n // isSilent: function () {\n // return !(\n // this.hoverable || this.draggable\n // || this.onmousemove || this.onmouseover || this.onmouseout\n // || this.onmousedown || this.onmouseup || this.onclick\n // || this.ondragenter || this.ondragover || this.ondragleave\n // || this.ondrop\n // );\n // },\n\n /**\n * Alias for animate('style')\n * @param {boolean} loop\n */\n animateStyle: function (loop) {\n return this.animate('style', loop);\n },\n attrKV: function (key, value) {\n if (key !== 'style') {\n Element.prototype.attrKV.call(this, key, value);\n } else {\n this.style.set(value);\n }\n },\n\n /**\n * @param {Object|string} key\n * @param {*} value\n */\n setStyle: function (key, value) {\n this.style.set(key, value);\n this.dirty(false);\n return this;\n },\n\n /**\n * Use given style object\n * @param {Object} obj\n */\n useStyle: function (obj) {\n this.style = new Style(obj, this);\n this.dirty(false);\n return this;\n },\n\n /**\n * The string value of `textPosition` needs to be calculated to a real postion.\n * For example, `'inside'` is calculated to `[rect.width/2, rect.height/2]`\n * by default. See `contain/text.js#calculateTextPosition` for more details.\n * But some coutom shapes like \"pin\", \"flag\" have center that is not exactly\n * `[width/2, height/2]`. So we provide this hook to customize the calculation\n * for those shapes. It will be called if the `style.textPosition` is a string.\n * @param {Obejct} [out] Prepared out object. If not provided, this method should\n * be responsible for creating one.\n * @param {module:zrender/graphic/Style} style\n * @param {Object} rect {x, y, width, height}\n * @return {Obejct} out The same as the input out.\n * {\n * x: number. mandatory.\n * y: number. mandatory.\n * textAlign: string. optional. use style.textAlign by default.\n * textVerticalAlign: string. optional. use style.textVerticalAlign by default.\n * }\n */\n calculateTextPosition: null\n};\nzrUtil.inherits(Displayable, Element);\nzrUtil.mixin(Displayable, RectText); // zrUtil.mixin(Displayable, Stateful);\n\nvar _default = Displayable;\nmodule.exports = _default;","import store from '@/store'\nimport { ref, watch, computed } from '@vue/composition-api'\n\nexport const useResponsiveAppLeftSidebarVisibility = () => {\n const mqShallShowLeftSidebar = ref(false)\n // Close Active Sidebars and other stuff when going in large device\n const currentBreakPoint = computed(() => store.getters['app/currentBreakPoint'])\n watch(currentBreakPoint, (val, oldVal) => {\n // Reset chats & contacts left sidebar\n if (oldVal === 'md' && val === 'lg') mqShallShowLeftSidebar.value = false\n })\n\n return {\n mqShallShowLeftSidebar,\n }\n}\n\nexport const _ = {}\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!./Todo.vue?vue&type=style&index=2&lang=scss&\"","/**\n * Event Mixin\n * @module zrender/mixin/Eventful\n * @author Kener (@Kener-林峰, kener.linfeng@gmail.com)\n * pissang (https://www.github.com/pissang)\n */\nvar arrySlice = Array.prototype.slice;\n/**\n * Event dispatcher.\n *\n * @alias module:zrender/mixin/Eventful\n * @constructor\n * @param {Object} [eventProcessor] The object eventProcessor is the scope when\n * `eventProcessor.xxx` called.\n * @param {Function} [eventProcessor.normalizeQuery]\n * param: {string|Object} Raw query.\n * return: {string|Object} Normalized query.\n * @param {Function} [eventProcessor.filter] Event will be dispatched only\n * if it returns `true`.\n * param: {string} eventType\n * param: {string|Object} query\n * return: {boolean}\n * @param {Function} [eventProcessor.afterTrigger] Called after all handlers called.\n * param: {string} eventType\n */\n\nvar Eventful = function (eventProcessor) {\n this._$handlers = {};\n this._$eventProcessor = eventProcessor;\n};\n\nEventful.prototype = {\n constructor: Eventful,\n\n /**\n * The handler can only be triggered once, then removed.\n *\n * @param {string} event The event name.\n * @param {string|Object} [query] Condition used on event filter.\n * @param {Function} handler The event handler.\n * @param {Object} context\n */\n one: function (event, query, handler, context) {\n return on(this, event, query, handler, context, true);\n },\n\n /**\n * Bind a handler.\n *\n * @param {string} event The event name.\n * @param {string|Object} [query] Condition used on event filter.\n * @param {Function} handler The event handler.\n * @param {Object} [context]\n */\n on: function (event, query, handler, context) {\n return on(this, event, query, handler, context, false);\n },\n\n /**\n * Whether any handler has bound.\n *\n * @param {string} event\n * @return {boolean}\n */\n isSilent: function (event) {\n var _h = this._$handlers;\n return !_h[event] || !_h[event].length;\n },\n\n /**\n * Unbind a event.\n *\n * @param {string} [event] The event name.\n * If no `event` input, \"off\" all listeners.\n * @param {Function} [handler] The event handler.\n * If no `handler` input, \"off\" all listeners of the `event`.\n */\n off: function (event, handler) {\n var _h = this._$handlers;\n\n if (!event) {\n this._$handlers = {};\n return this;\n }\n\n if (handler) {\n if (_h[event]) {\n var newList = [];\n\n for (var i = 0, l = _h[event].length; i < l; i++) {\n if (_h[event][i].h !== handler) {\n newList.push(_h[event][i]);\n }\n }\n\n _h[event] = newList;\n }\n\n if (_h[event] && _h[event].length === 0) {\n delete _h[event];\n }\n } else {\n delete _h[event];\n }\n\n return this;\n },\n\n /**\n * Dispatch a event.\n *\n * @param {string} type The event name.\n */\n trigger: function (type) {\n var _h = this._$handlers[type];\n var eventProcessor = this._$eventProcessor;\n\n if (_h) {\n var args = arguments;\n var argLen = args.length;\n\n if (argLen > 3) {\n args = arrySlice.call(args, 1);\n }\n\n var len = _h.length;\n\n for (var i = 0; i < len;) {\n var hItem = _h[i];\n\n if (eventProcessor && eventProcessor.filter && hItem.query != null && !eventProcessor.filter(type, hItem.query)) {\n i++;\n continue;\n } // Optimize advise from backbone\n\n\n switch (argLen) {\n case 1:\n hItem.h.call(hItem.ctx);\n break;\n\n case 2:\n hItem.h.call(hItem.ctx, args[1]);\n break;\n\n case 3:\n hItem.h.call(hItem.ctx, args[1], args[2]);\n break;\n\n default:\n // have more than 2 given arguments\n hItem.h.apply(hItem.ctx, args);\n break;\n }\n\n if (hItem.one) {\n _h.splice(i, 1);\n\n len--;\n } else {\n i++;\n }\n }\n }\n\n eventProcessor && eventProcessor.afterTrigger && eventProcessor.afterTrigger(type);\n return this;\n },\n\n /**\n * Dispatch a event with context, which is specified at the last parameter.\n *\n * @param {string} type The event name.\n */\n triggerWithContext: function (type) {\n var _h = this._$handlers[type];\n var eventProcessor = this._$eventProcessor;\n\n if (_h) {\n var args = arguments;\n var argLen = args.length;\n\n if (argLen > 4) {\n args = arrySlice.call(args, 1, args.length - 1);\n }\n\n var ctx = args[args.length - 1];\n var len = _h.length;\n\n for (var i = 0; i < len;) {\n var hItem = _h[i];\n\n if (eventProcessor && eventProcessor.filter && hItem.query != null && !eventProcessor.filter(type, hItem.query)) {\n i++;\n continue;\n } // Optimize advise from backbone\n\n\n switch (argLen) {\n case 1:\n hItem.h.call(ctx);\n break;\n\n case 2:\n hItem.h.call(ctx, args[1]);\n break;\n\n case 3:\n hItem.h.call(ctx, args[1], args[2]);\n break;\n\n default:\n // have more than 2 given arguments\n hItem.h.apply(ctx, args);\n break;\n }\n\n if (hItem.one) {\n _h.splice(i, 1);\n\n len--;\n } else {\n i++;\n }\n }\n }\n\n eventProcessor && eventProcessor.afterTrigger && eventProcessor.afterTrigger(type);\n return this;\n }\n};\n\nfunction normalizeQuery(host, query) {\n var eventProcessor = host._$eventProcessor;\n\n if (query != null && eventProcessor && eventProcessor.normalizeQuery) {\n query = eventProcessor.normalizeQuery(query);\n }\n\n return query;\n}\n\nfunction on(eventful, event, query, handler, context, isOnce) {\n var _h = eventful._$handlers;\n\n if (typeof query === 'function') {\n context = handler;\n handler = query;\n query = null;\n }\n\n if (!handler || !event) {\n return eventful;\n }\n\n query = normalizeQuery(eventful, query);\n\n if (!_h[event]) {\n _h[event] = [];\n }\n\n for (var i = 0; i < _h[event].length; i++) {\n if (_h[event][i].h === handler) {\n return eventful;\n }\n }\n\n var wrap = {\n h: handler,\n one: isOnce,\n query: query,\n ctx: context || eventful,\n // FIXME\n // Do not publish this feature util it is proved that it makes sense.\n callAtLast: handler.zrEventfulCallAtLast\n };\n var lastIndex = _h[event].length - 1;\n var lastWrap = _h[event][lastIndex];\n lastWrap && lastWrap.callAtLast ? _h[event].splice(lastIndex, 0, wrap) : _h[event].push(wrap);\n return eventful;\n} // ----------------------\n// The events in zrender\n// ----------------------\n\n/**\n * @event module:zrender/mixin/Eventful#onclick\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#onmouseover\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#onmouseout\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#onmousemove\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#onmousewheel\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#onmousedown\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#onmouseup\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#ondrag\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#ondragstart\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#ondragend\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#ondragenter\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#ondragleave\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#ondragover\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#ondrop\n * @type {Function}\n * @default null\n */\n\n\nvar _default = Eventful;\nmodule.exports = _default;","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// import * as axisHelper from './axisHelper';\nvar _default = {\n /**\n * @param {boolean} origin\n * @return {number|string} min value or 'dataMin' or null/undefined (means auto) or NaN\n */\n getMin: function (origin) {\n var option = this.option;\n var min = !origin && option.rangeStart != null ? option.rangeStart : option.min;\n\n if (this.axis && min != null && min !== 'dataMin' && typeof min !== 'function' && !zrUtil.eqNaN(min)) {\n min = this.axis.scale.parse(min);\n }\n\n return min;\n },\n\n /**\n * @param {boolean} origin\n * @return {number|string} max value or 'dataMax' or null/undefined (means auto) or NaN\n */\n getMax: function (origin) {\n var option = this.option;\n var max = !origin && option.rangeEnd != null ? option.rangeEnd : option.max;\n\n if (this.axis && max != null && max !== 'dataMax' && typeof max !== 'function' && !zrUtil.eqNaN(max)) {\n max = this.axis.scale.parse(max);\n }\n\n return max;\n },\n\n /**\n * @return {boolean}\n */\n getNeedCrossZero: function () {\n var option = this.option;\n return option.rangeStart != null || option.rangeEnd != null ? false : !option.scale;\n },\n\n /**\n * Should be implemented by each axis model if necessary.\n * @return {module:echarts/model/Component} coordinate system model\n */\n getCoordSysModel: zrUtil.noop,\n\n /**\n * @param {number} rangeStart Can only be finite number or null/undefined or NaN.\n * @param {number} rangeEnd Can only be finite number or null/undefined or NaN.\n */\n setRange: function (rangeStart, rangeEnd) {\n this.option.rangeStart = rangeStart;\n this.option.rangeEnd = rangeEnd;\n },\n\n /**\n * Reset range\n */\n resetRange: function () {\n // rangeStart and rangeEnd is readonly.\n this.option.rangeStart = this.option.rangeEnd = null;\n }\n};\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar coordinateSystemCreators = {};\n\nfunction CoordinateSystemManager() {\n this._coordinateSystems = [];\n}\n\nCoordinateSystemManager.prototype = {\n constructor: CoordinateSystemManager,\n create: function (ecModel, api) {\n var coordinateSystems = [];\n zrUtil.each(coordinateSystemCreators, function (creater, type) {\n var list = creater.create(ecModel, api);\n coordinateSystems = coordinateSystems.concat(list || []);\n });\n this._coordinateSystems = coordinateSystems;\n },\n update: function (ecModel, api) {\n zrUtil.each(this._coordinateSystems, function (coordSys) {\n coordSys.update && coordSys.update(ecModel, api);\n });\n },\n getCoordinateSystems: function () {\n return this._coordinateSystems.slice();\n }\n};\n\nCoordinateSystemManager.register = function (type, coordinateSystemCreator) {\n coordinateSystemCreators[type] = coordinateSystemCreator;\n};\n\nCoordinateSystemManager.get = function (type) {\n return coordinateSystemCreators[type];\n};\n\nvar _default = CoordinateSystemManager;\nmodule.exports = _default;","var curve = require(\"./curve\");\n\nvar vec2 = require(\"./vector\");\n\nvar bbox = require(\"./bbox\");\n\nvar BoundingRect = require(\"./BoundingRect\");\n\nvar _config = require(\"../config\");\n\nvar dpr = _config.devicePixelRatio;\n\n/**\n * Path 代理,可以在`buildPath`中用于替代`ctx`, 会保存每个path操作的命令到pathCommands属性中\n * 可以用于 isInsidePath 判断以及获取boundingRect\n *\n * @module zrender/core/PathProxy\n * @author Yi Shen (http://www.github.com/pissang)\n */\n// TODO getTotalLength, getPointAtLength\n\n/* global Float32Array */\nvar CMD = {\n M: 1,\n L: 2,\n C: 3,\n Q: 4,\n A: 5,\n Z: 6,\n // Rect\n R: 7\n}; // var CMD_MEM_SIZE = {\n// M: 3,\n// L: 3,\n// C: 7,\n// Q: 5,\n// A: 9,\n// R: 5,\n// Z: 1\n// };\n\nvar min = [];\nvar max = [];\nvar min2 = [];\nvar max2 = [];\nvar mathMin = Math.min;\nvar mathMax = Math.max;\nvar mathCos = Math.cos;\nvar mathSin = Math.sin;\nvar mathSqrt = Math.sqrt;\nvar mathAbs = Math.abs;\nvar hasTypedArray = typeof Float32Array !== 'undefined';\n/**\n * @alias module:zrender/core/PathProxy\n * @constructor\n */\n\nvar PathProxy = function (notSaveData) {\n this._saveData = !(notSaveData || false);\n\n if (this._saveData) {\n /**\n * Path data. Stored as flat array\n * @type {Array.}\n */\n this.data = [];\n }\n\n this._ctx = null;\n};\n/**\n * 快速计算Path包围盒(并不是最小包围盒)\n * @return {Object}\n */\n\n\nPathProxy.prototype = {\n constructor: PathProxy,\n _xi: 0,\n _yi: 0,\n _x0: 0,\n _y0: 0,\n // Unit x, Unit y. Provide for avoiding drawing that too short line segment\n _ux: 0,\n _uy: 0,\n _len: 0,\n _lineDash: null,\n _dashOffset: 0,\n _dashIdx: 0,\n _dashSum: 0,\n\n /**\n * @readOnly\n */\n setScale: function (sx, sy, segmentIgnoreThreshold) {\n // Compat. Previously there is no segmentIgnoreThreshold.\n segmentIgnoreThreshold = segmentIgnoreThreshold || 0;\n this._ux = mathAbs(segmentIgnoreThreshold / dpr / sx) || 0;\n this._uy = mathAbs(segmentIgnoreThreshold / dpr / sy) || 0;\n },\n getContext: function () {\n return this._ctx;\n },\n\n /**\n * @param {CanvasRenderingContext2D} ctx\n * @return {module:zrender/core/PathProxy}\n */\n beginPath: function (ctx) {\n this._ctx = ctx;\n ctx && ctx.beginPath();\n ctx && (this.dpr = ctx.dpr); // Reset\n\n if (this._saveData) {\n this._len = 0;\n }\n\n if (this._lineDash) {\n this._lineDash = null;\n this._dashOffset = 0;\n }\n\n return this;\n },\n\n /**\n * @param {number} x\n * @param {number} y\n * @return {module:zrender/core/PathProxy}\n */\n moveTo: function (x, y) {\n this.addData(CMD.M, x, y);\n this._ctx && this._ctx.moveTo(x, y); // x0, y0, xi, yi 是记录在 _dashedXXXXTo 方法中使用\n // xi, yi 记录当前点, x0, y0 在 closePath 的时候回到起始点。\n // 有可能在 beginPath 之后直接调用 lineTo,这时候 x0, y0 需要\n // 在 lineTo 方法中记录,这里先不考虑这种情况,dashed line 也只在 IE10- 中不支持\n\n this._x0 = x;\n this._y0 = y;\n this._xi = x;\n this._yi = y;\n return this;\n },\n\n /**\n * @param {number} x\n * @param {number} y\n * @return {module:zrender/core/PathProxy}\n */\n lineTo: function (x, y) {\n var exceedUnit = mathAbs(x - this._xi) > this._ux || mathAbs(y - this._yi) > this._uy // Force draw the first segment\n || this._len < 5;\n this.addData(CMD.L, x, y);\n\n if (this._ctx && exceedUnit) {\n this._needsDash() ? this._dashedLineTo(x, y) : this._ctx.lineTo(x, y);\n }\n\n if (exceedUnit) {\n this._xi = x;\n this._yi = y;\n }\n\n return this;\n },\n\n /**\n * @param {number} x1\n * @param {number} y1\n * @param {number} x2\n * @param {number} y2\n * @param {number} x3\n * @param {number} y3\n * @return {module:zrender/core/PathProxy}\n */\n bezierCurveTo: function (x1, y1, x2, y2, x3, y3) {\n this.addData(CMD.C, x1, y1, x2, y2, x3, y3);\n\n if (this._ctx) {\n this._needsDash() ? this._dashedBezierTo(x1, y1, x2, y2, x3, y3) : this._ctx.bezierCurveTo(x1, y1, x2, y2, x3, y3);\n }\n\n this._xi = x3;\n this._yi = y3;\n return this;\n },\n\n /**\n * @param {number} x1\n * @param {number} y1\n * @param {number} x2\n * @param {number} y2\n * @return {module:zrender/core/PathProxy}\n */\n quadraticCurveTo: function (x1, y1, x2, y2) {\n this.addData(CMD.Q, x1, y1, x2, y2);\n\n if (this._ctx) {\n this._needsDash() ? this._dashedQuadraticTo(x1, y1, x2, y2) : this._ctx.quadraticCurveTo(x1, y1, x2, y2);\n }\n\n this._xi = x2;\n this._yi = y2;\n return this;\n },\n\n /**\n * @param {number} cx\n * @param {number} cy\n * @param {number} r\n * @param {number} startAngle\n * @param {number} endAngle\n * @param {boolean} anticlockwise\n * @return {module:zrender/core/PathProxy}\n */\n arc: function (cx, cy, r, startAngle, endAngle, anticlockwise) {\n this.addData(CMD.A, cx, cy, r, r, startAngle, endAngle - startAngle, 0, anticlockwise ? 0 : 1);\n this._ctx && this._ctx.arc(cx, cy, r, startAngle, endAngle, anticlockwise);\n this._xi = mathCos(endAngle) * r + cx;\n this._yi = mathSin(endAngle) * r + cy;\n return this;\n },\n // TODO\n arcTo: function (x1, y1, x2, y2, radius) {\n if (this._ctx) {\n this._ctx.arcTo(x1, y1, x2, y2, radius);\n }\n\n return this;\n },\n // TODO\n rect: function (x, y, w, h) {\n this._ctx && this._ctx.rect(x, y, w, h);\n this.addData(CMD.R, x, y, w, h);\n return this;\n },\n\n /**\n * @return {module:zrender/core/PathProxy}\n */\n closePath: function () {\n this.addData(CMD.Z);\n var ctx = this._ctx;\n var x0 = this._x0;\n var y0 = this._y0;\n\n if (ctx) {\n this._needsDash() && this._dashedLineTo(x0, y0);\n ctx.closePath();\n }\n\n this._xi = x0;\n this._yi = y0;\n return this;\n },\n\n /**\n * Context 从外部传入,因为有可能是 rebuildPath 完之后再 fill。\n * stroke 同样\n * @param {CanvasRenderingContext2D} ctx\n * @return {module:zrender/core/PathProxy}\n */\n fill: function (ctx) {\n ctx && ctx.fill();\n this.toStatic();\n },\n\n /**\n * @param {CanvasRenderingContext2D} ctx\n * @return {module:zrender/core/PathProxy}\n */\n stroke: function (ctx) {\n ctx && ctx.stroke();\n this.toStatic();\n },\n\n /**\n * 必须在其它绘制命令前调用\n * Must be invoked before all other path drawing methods\n * @return {module:zrender/core/PathProxy}\n */\n setLineDash: function (lineDash) {\n if (lineDash instanceof Array) {\n this._lineDash = lineDash;\n this._dashIdx = 0;\n var lineDashSum = 0;\n\n for (var i = 0; i < lineDash.length; i++) {\n lineDashSum += lineDash[i];\n }\n\n this._dashSum = lineDashSum;\n }\n\n return this;\n },\n\n /**\n * 必须在其它绘制命令前调用\n * Must be invoked before all other path drawing methods\n * @return {module:zrender/core/PathProxy}\n */\n setLineDashOffset: function (offset) {\n this._dashOffset = offset;\n return this;\n },\n\n /**\n *\n * @return {boolean}\n */\n len: function () {\n return this._len;\n },\n\n /**\n * 直接设置 Path 数据\n */\n setData: function (data) {\n var len = data.length;\n\n if (!(this.data && this.data.length === len) && hasTypedArray) {\n this.data = new Float32Array(len);\n }\n\n for (var i = 0; i < len; i++) {\n this.data[i] = data[i];\n }\n\n this._len = len;\n },\n\n /**\n * 添加子路径\n * @param {module:zrender/core/PathProxy|Array.} path\n */\n appendPath: function (path) {\n if (!(path instanceof Array)) {\n path = [path];\n }\n\n var len = path.length;\n var appendSize = 0;\n var offset = this._len;\n\n for (var i = 0; i < len; i++) {\n appendSize += path[i].len();\n }\n\n if (hasTypedArray && this.data instanceof Float32Array) {\n this.data = new Float32Array(offset + appendSize);\n }\n\n for (var i = 0; i < len; i++) {\n var appendPathData = path[i].data;\n\n for (var k = 0; k < appendPathData.length; k++) {\n this.data[offset++] = appendPathData[k];\n }\n }\n\n this._len = offset;\n },\n\n /**\n * 填充 Path 数据。\n * 尽量复用而不申明新的数组。大部分图形重绘的指令数据长度都是不变的。\n */\n addData: function (cmd) {\n if (!this._saveData) {\n return;\n }\n\n var data = this.data;\n\n if (this._len + arguments.length > data.length) {\n // 因为之前的数组已经转换成静态的 Float32Array\n // 所以不够用时需要扩展一个新的动态数组\n this._expandData();\n\n data = this.data;\n }\n\n for (var i = 0; i < arguments.length; i++) {\n data[this._len++] = arguments[i];\n }\n\n this._prevCmd = cmd;\n },\n _expandData: function () {\n // Only if data is Float32Array\n if (!(this.data instanceof Array)) {\n var newData = [];\n\n for (var i = 0; i < this._len; i++) {\n newData[i] = this.data[i];\n }\n\n this.data = newData;\n }\n },\n\n /**\n * If needs js implemented dashed line\n * @return {boolean}\n * @private\n */\n _needsDash: function () {\n return this._lineDash;\n },\n _dashedLineTo: function (x1, y1) {\n var dashSum = this._dashSum;\n var offset = this._dashOffset;\n var lineDash = this._lineDash;\n var ctx = this._ctx;\n var x0 = this._xi;\n var y0 = this._yi;\n var dx = x1 - x0;\n var dy = y1 - y0;\n var dist = mathSqrt(dx * dx + dy * dy);\n var x = x0;\n var y = y0;\n var dash;\n var nDash = lineDash.length;\n var idx;\n dx /= dist;\n dy /= dist;\n\n if (offset < 0) {\n // Convert to positive offset\n offset = dashSum + offset;\n }\n\n offset %= dashSum;\n x -= offset * dx;\n y -= offset * dy;\n\n while (dx > 0 && x <= x1 || dx < 0 && x >= x1 || dx === 0 && (dy > 0 && y <= y1 || dy < 0 && y >= y1)) {\n idx = this._dashIdx;\n dash = lineDash[idx];\n x += dx * dash;\n y += dy * dash;\n this._dashIdx = (idx + 1) % nDash; // Skip positive offset\n\n if (dx > 0 && x < x0 || dx < 0 && x > x0 || dy > 0 && y < y0 || dy < 0 && y > y0) {\n continue;\n }\n\n ctx[idx % 2 ? 'moveTo' : 'lineTo'](dx >= 0 ? mathMin(x, x1) : mathMax(x, x1), dy >= 0 ? mathMin(y, y1) : mathMax(y, y1));\n } // Offset for next lineTo\n\n\n dx = x - x1;\n dy = y - y1;\n this._dashOffset = -mathSqrt(dx * dx + dy * dy);\n },\n // Not accurate dashed line to\n _dashedBezierTo: function (x1, y1, x2, y2, x3, y3) {\n var dashSum = this._dashSum;\n var offset = this._dashOffset;\n var lineDash = this._lineDash;\n var ctx = this._ctx;\n var x0 = this._xi;\n var y0 = this._yi;\n var t;\n var dx;\n var dy;\n var cubicAt = curve.cubicAt;\n var bezierLen = 0;\n var idx = this._dashIdx;\n var nDash = lineDash.length;\n var x;\n var y;\n var tmpLen = 0;\n\n if (offset < 0) {\n // Convert to positive offset\n offset = dashSum + offset;\n }\n\n offset %= dashSum; // Bezier approx length\n\n for (t = 0; t < 1; t += 0.1) {\n dx = cubicAt(x0, x1, x2, x3, t + 0.1) - cubicAt(x0, x1, x2, x3, t);\n dy = cubicAt(y0, y1, y2, y3, t + 0.1) - cubicAt(y0, y1, y2, y3, t);\n bezierLen += mathSqrt(dx * dx + dy * dy);\n } // Find idx after add offset\n\n\n for (; idx < nDash; idx++) {\n tmpLen += lineDash[idx];\n\n if (tmpLen > offset) {\n break;\n }\n }\n\n t = (tmpLen - offset) / bezierLen;\n\n while (t <= 1) {\n x = cubicAt(x0, x1, x2, x3, t);\n y = cubicAt(y0, y1, y2, y3, t); // Use line to approximate dashed bezier\n // Bad result if dash is long\n\n idx % 2 ? ctx.moveTo(x, y) : ctx.lineTo(x, y);\n t += lineDash[idx] / bezierLen;\n idx = (idx + 1) % nDash;\n } // Finish the last segment and calculate the new offset\n\n\n idx % 2 !== 0 && ctx.lineTo(x3, y3);\n dx = x3 - x;\n dy = y3 - y;\n this._dashOffset = -mathSqrt(dx * dx + dy * dy);\n },\n _dashedQuadraticTo: function (x1, y1, x2, y2) {\n // Convert quadratic to cubic using degree elevation\n var x3 = x2;\n var y3 = y2;\n x2 = (x2 + 2 * x1) / 3;\n y2 = (y2 + 2 * y1) / 3;\n x1 = (this._xi + 2 * x1) / 3;\n y1 = (this._yi + 2 * y1) / 3;\n\n this._dashedBezierTo(x1, y1, x2, y2, x3, y3);\n },\n\n /**\n * 转成静态的 Float32Array 减少堆内存占用\n * Convert dynamic array to static Float32Array\n */\n toStatic: function () {\n var data = this.data;\n\n if (data instanceof Array) {\n data.length = this._len;\n\n if (hasTypedArray) {\n this.data = new Float32Array(data);\n }\n }\n },\n\n /**\n * @return {module:zrender/core/BoundingRect}\n */\n getBoundingRect: function () {\n min[0] = min[1] = min2[0] = min2[1] = Number.MAX_VALUE;\n max[0] = max[1] = max2[0] = max2[1] = -Number.MAX_VALUE;\n var data = this.data;\n var xi = 0;\n var yi = 0;\n var x0 = 0;\n var y0 = 0;\n\n for (var i = 0; i < data.length;) {\n var cmd = data[i++];\n\n if (i === 1) {\n // 如果第一个命令是 L, C, Q\n // 则 previous point 同绘制命令的第一个 point\n //\n // 第一个命令为 Arc 的情况下会在后面特殊处理\n xi = data[i];\n yi = data[i + 1];\n x0 = xi;\n y0 = yi;\n }\n\n switch (cmd) {\n case CMD.M:\n // moveTo 命令重新创建一个新的 subpath, 并且更新新的起点\n // 在 closePath 的时候使用\n x0 = data[i++];\n y0 = data[i++];\n xi = x0;\n yi = y0;\n min2[0] = x0;\n min2[1] = y0;\n max2[0] = x0;\n max2[1] = y0;\n break;\n\n case CMD.L:\n bbox.fromLine(xi, yi, data[i], data[i + 1], min2, max2);\n xi = data[i++];\n yi = data[i++];\n break;\n\n case CMD.C:\n bbox.fromCubic(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], min2, max2);\n xi = data[i++];\n yi = data[i++];\n break;\n\n case CMD.Q:\n bbox.fromQuadratic(xi, yi, data[i++], data[i++], data[i], data[i + 1], min2, max2);\n xi = data[i++];\n yi = data[i++];\n break;\n\n case CMD.A:\n // TODO Arc 判断的开销比较大\n var cx = data[i++];\n var cy = data[i++];\n var rx = data[i++];\n var ry = data[i++];\n var startAngle = data[i++];\n var endAngle = data[i++] + startAngle; // TODO Arc 旋转\n\n i += 1;\n var anticlockwise = 1 - data[i++];\n\n if (i === 1) {\n // 直接使用 arc 命令\n // 第一个命令起点还未定义\n x0 = mathCos(startAngle) * rx + cx;\n y0 = mathSin(startAngle) * ry + cy;\n }\n\n bbox.fromArc(cx, cy, rx, ry, startAngle, endAngle, anticlockwise, min2, max2);\n xi = mathCos(endAngle) * rx + cx;\n yi = mathSin(endAngle) * ry + cy;\n break;\n\n case CMD.R:\n x0 = xi = data[i++];\n y0 = yi = data[i++];\n var width = data[i++];\n var height = data[i++]; // Use fromLine\n\n bbox.fromLine(x0, y0, x0 + width, y0 + height, min2, max2);\n break;\n\n case CMD.Z:\n xi = x0;\n yi = y0;\n break;\n } // Union\n\n\n vec2.min(min, min, min2);\n vec2.max(max, max, max2);\n } // No data\n\n\n if (i === 0) {\n min[0] = min[1] = max[0] = max[1] = 0;\n }\n\n return new BoundingRect(min[0], min[1], max[0] - min[0], max[1] - min[1]);\n },\n\n /**\n * Rebuild path from current data\n * Rebuild path will not consider javascript implemented line dash.\n * @param {CanvasRenderingContext2D} ctx\n */\n rebuildPath: function (ctx) {\n var d = this.data;\n var x0;\n var y0;\n var xi;\n var yi;\n var x;\n var y;\n var ux = this._ux;\n var uy = this._uy;\n var len = this._len;\n\n for (var i = 0; i < len;) {\n var cmd = d[i++];\n\n if (i === 1) {\n // 如果第一个命令是 L, C, Q\n // 则 previous point 同绘制命令的第一个 point\n //\n // 第一个命令为 Arc 的情况下会在后面特殊处理\n xi = d[i];\n yi = d[i + 1];\n x0 = xi;\n y0 = yi;\n }\n\n switch (cmd) {\n case CMD.M:\n x0 = xi = d[i++];\n y0 = yi = d[i++];\n ctx.moveTo(xi, yi);\n break;\n\n case CMD.L:\n x = d[i++];\n y = d[i++]; // Not draw too small seg between\n\n if (mathAbs(x - xi) > ux || mathAbs(y - yi) > uy || i === len - 1) {\n ctx.lineTo(x, y);\n xi = x;\n yi = y;\n }\n\n break;\n\n case CMD.C:\n ctx.bezierCurveTo(d[i++], d[i++], d[i++], d[i++], d[i++], d[i++]);\n xi = d[i - 2];\n yi = d[i - 1];\n break;\n\n case CMD.Q:\n ctx.quadraticCurveTo(d[i++], d[i++], d[i++], d[i++]);\n xi = d[i - 2];\n yi = d[i - 1];\n break;\n\n case CMD.A:\n var cx = d[i++];\n var cy = d[i++];\n var rx = d[i++];\n var ry = d[i++];\n var theta = d[i++];\n var dTheta = d[i++];\n var psi = d[i++];\n var fs = d[i++];\n var r = rx > ry ? rx : ry;\n var scaleX = rx > ry ? 1 : rx / ry;\n var scaleY = rx > ry ? ry / rx : 1;\n var isEllipse = Math.abs(rx - ry) > 1e-3;\n var endAngle = theta + dTheta;\n\n if (isEllipse) {\n ctx.translate(cx, cy);\n ctx.rotate(psi);\n ctx.scale(scaleX, scaleY);\n ctx.arc(0, 0, r, theta, endAngle, 1 - fs);\n ctx.scale(1 / scaleX, 1 / scaleY);\n ctx.rotate(-psi);\n ctx.translate(-cx, -cy);\n } else {\n ctx.arc(cx, cy, r, theta, endAngle, 1 - fs);\n }\n\n if (i === 1) {\n // 直接使用 arc 命令\n // 第一个命令起点还未定义\n x0 = mathCos(theta) * rx + cx;\n y0 = mathSin(theta) * ry + cy;\n }\n\n xi = mathCos(endAngle) * rx + cx;\n yi = mathSin(endAngle) * ry + cy;\n break;\n\n case CMD.R:\n x0 = xi = d[i];\n y0 = yi = d[i + 1];\n ctx.rect(d[i++], d[i++], d[i++], d[i++]);\n break;\n\n case CMD.Z:\n ctx.closePath();\n xi = x0;\n yi = y0;\n }\n }\n }\n};\nPathProxy.CMD = CMD;\nvar _default = PathProxy;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar numberUtil = require(\"../util/number\");\n\nvar formatUtil = require(\"../util/format\");\n\nvar scaleHelper = require(\"./helper\");\n\nvar IntervalScale = require(\"./Interval\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* A third-party license is embeded for some of the code in this file:\n* The \"scaleLevels\" was originally copied from \"d3.js\" with some\n* modifications made for this project.\n* (See more details in the comment on the definition of \"scaleLevels\" below.)\n* The use of the source code of this file is also subject to the terms\n* and consitions of the license of \"d3.js\" (BSD-3Clause, see\n* ).\n*/\n// [About UTC and local time zone]:\n// In most cases, `number.parseDate` will treat input data string as local time\n// (except time zone is specified in time string). And `format.formateTime` returns\n// local time by default. option.useUTC is false by default. This design have\n// concidered these common case:\n// (1) Time that is persistent in server is in UTC, but it is needed to be diplayed\n// in local time by default.\n// (2) By default, the input data string (e.g., '2011-01-02') should be displayed\n// as its original time, without any time difference.\nvar intervalScaleProto = IntervalScale.prototype;\nvar mathCeil = Math.ceil;\nvar mathFloor = Math.floor;\nvar ONE_SECOND = 1000;\nvar ONE_MINUTE = ONE_SECOND * 60;\nvar ONE_HOUR = ONE_MINUTE * 60;\nvar ONE_DAY = ONE_HOUR * 24; // FIXME 公用?\n\nvar bisect = function (a, x, lo, hi) {\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n\n if (a[mid][1] < x) {\n lo = mid + 1;\n } else {\n hi = mid;\n }\n }\n\n return lo;\n};\n/**\n * @alias module:echarts/coord/scale/Time\n * @constructor\n */\n\n\nvar TimeScale = IntervalScale.extend({\n type: 'time',\n\n /**\n * @override\n */\n getLabel: function (val) {\n var stepLvl = this._stepLvl;\n var date = new Date(val);\n return formatUtil.formatTime(stepLvl[0], date, this.getSetting('useUTC'));\n },\n\n /**\n * @override\n */\n niceExtent: function (opt) {\n var extent = this._extent; // If extent start and end are same, expand them\n\n if (extent[0] === extent[1]) {\n // Expand extent\n extent[0] -= ONE_DAY;\n extent[1] += ONE_DAY;\n } // If there are no data and extent are [Infinity, -Infinity]\n\n\n if (extent[1] === -Infinity && extent[0] === Infinity) {\n var d = new Date();\n extent[1] = +new Date(d.getFullYear(), d.getMonth(), d.getDate());\n extent[0] = extent[1] - ONE_DAY;\n }\n\n this.niceTicks(opt.splitNumber, opt.minInterval, opt.maxInterval); // var extent = this._extent;\n\n var interval = this._interval;\n\n if (!opt.fixMin) {\n extent[0] = numberUtil.round(mathFloor(extent[0] / interval) * interval);\n }\n\n if (!opt.fixMax) {\n extent[1] = numberUtil.round(mathCeil(extent[1] / interval) * interval);\n }\n },\n\n /**\n * @override\n */\n niceTicks: function (approxTickNum, minInterval, maxInterval) {\n approxTickNum = approxTickNum || 10;\n var extent = this._extent;\n var span = extent[1] - extent[0];\n var approxInterval = span / approxTickNum;\n\n if (minInterval != null && approxInterval < minInterval) {\n approxInterval = minInterval;\n }\n\n if (maxInterval != null && approxInterval > maxInterval) {\n approxInterval = maxInterval;\n }\n\n var scaleLevelsLen = scaleLevels.length;\n var idx = bisect(scaleLevels, approxInterval, 0, scaleLevelsLen);\n var level = scaleLevels[Math.min(idx, scaleLevelsLen - 1)];\n var interval = level[1]; // Same with interval scale if span is much larger than 1 year\n\n if (level[0] === 'year') {\n var yearSpan = span / interval; // From \"Nice Numbers for Graph Labels\" of Graphic Gems\n // var niceYearSpan = numberUtil.nice(yearSpan, false);\n\n var yearStep = numberUtil.nice(yearSpan / approxTickNum, true);\n interval *= yearStep;\n }\n\n var timezoneOffset = this.getSetting('useUTC') ? 0 : new Date(+extent[0] || +extent[1]).getTimezoneOffset() * 60 * 1000;\n var niceExtent = [Math.round(mathCeil((extent[0] - timezoneOffset) / interval) * interval + timezoneOffset), Math.round(mathFloor((extent[1] - timezoneOffset) / interval) * interval + timezoneOffset)];\n scaleHelper.fixExtent(niceExtent, extent);\n this._stepLvl = level; // Interval will be used in getTicks\n\n this._interval = interval;\n this._niceExtent = niceExtent;\n },\n parse: function (val) {\n // val might be float.\n return +numberUtil.parseDate(val);\n }\n});\nzrUtil.each(['contain', 'normalize'], function (methodName) {\n TimeScale.prototype[methodName] = function (val) {\n return intervalScaleProto[methodName].call(this, this.parse(val));\n };\n});\n/**\n * This implementation was originally copied from \"d3.js\"\n * \n * with some modifications made for this program.\n * See the license statement at the head of this file.\n */\n\nvar scaleLevels = [// Format interval\n['hh:mm:ss', ONE_SECOND], // 1s\n['hh:mm:ss', ONE_SECOND * 5], // 5s\n['hh:mm:ss', ONE_SECOND * 10], // 10s\n['hh:mm:ss', ONE_SECOND * 15], // 15s\n['hh:mm:ss', ONE_SECOND * 30], // 30s\n['hh:mm\\nMM-dd', ONE_MINUTE], // 1m\n['hh:mm\\nMM-dd', ONE_MINUTE * 5], // 5m\n['hh:mm\\nMM-dd', ONE_MINUTE * 10], // 10m\n['hh:mm\\nMM-dd', ONE_MINUTE * 15], // 15m\n['hh:mm\\nMM-dd', ONE_MINUTE * 30], // 30m\n['hh:mm\\nMM-dd', ONE_HOUR], // 1h\n['hh:mm\\nMM-dd', ONE_HOUR * 2], // 2h\n['hh:mm\\nMM-dd', ONE_HOUR * 6], // 6h\n['hh:mm\\nMM-dd', ONE_HOUR * 12], // 12h\n['MM-dd\\nyyyy', ONE_DAY], // 1d\n['MM-dd\\nyyyy', ONE_DAY * 2], // 2d\n['MM-dd\\nyyyy', ONE_DAY * 3], // 3d\n['MM-dd\\nyyyy', ONE_DAY * 4], // 4d\n['MM-dd\\nyyyy', ONE_DAY * 5], // 5d\n['MM-dd\\nyyyy', ONE_DAY * 6], // 6d\n['week', ONE_DAY * 7], // 7d\n['MM-dd\\nyyyy', ONE_DAY * 10], // 10d\n['week', ONE_DAY * 14], // 2w\n['week', ONE_DAY * 21], // 3w\n['month', ONE_DAY * 31], // 1M\n['week', ONE_DAY * 42], // 6w\n['month', ONE_DAY * 62], // 2M\n['week', ONE_DAY * 70], // 10w\n['quarter', ONE_DAY * 95], // 3M\n['month', ONE_DAY * 31 * 4], // 4M\n['month', ONE_DAY * 31 * 5], // 5M\n['half-year', ONE_DAY * 380 / 2], // 6M\n['month', ONE_DAY * 31 * 8], // 8M\n['month', ONE_DAY * 31 * 10], // 10M\n['year', ONE_DAY * 380] // 1Y\n];\n/**\n * @param {module:echarts/model/Model}\n * @return {module:echarts/scale/Time}\n */\n\nTimeScale.create = function (model) {\n return new TimeScale({\n useUTC: model.ecModel.get('useUTC')\n });\n};\n\nvar _default = TimeScale;\nmodule.exports = _default;","/**\n * echarts设备环境识别\n *\n * @desc echarts基于Canvas,纯Javascript图表库,提供直观,生动,可交互,可个性化定制的数据统计图表。\n * @author firede[firede@firede.us]\n * @desc thanks zepto.\n */\n\n/* global wx */\nvar env = {};\n\nif (typeof wx === 'object' && typeof wx.getSystemInfoSync === 'function') {\n // In Weixin Application\n env = {\n browser: {},\n os: {},\n node: false,\n wxa: true,\n // Weixin Application\n canvasSupported: true,\n svgSupported: false,\n touchEventsSupported: true,\n domSupported: false\n };\n} else if (typeof document === 'undefined' && typeof self !== 'undefined') {\n // In worker\n env = {\n browser: {},\n os: {},\n node: false,\n worker: true,\n canvasSupported: true,\n domSupported: false\n };\n} else if (typeof navigator === 'undefined') {\n // In node\n env = {\n browser: {},\n os: {},\n node: true,\n worker: false,\n // Assume canvas is supported\n canvasSupported: true,\n svgSupported: true,\n domSupported: false\n };\n} else {\n env = detect(navigator.userAgent);\n}\n\nvar _default = env; // Zepto.js\n// (c) 2010-2013 Thomas Fuchs\n// Zepto.js may be freely distributed under the MIT license.\n\nfunction detect(ua) {\n var os = {};\n var browser = {}; // var webkit = ua.match(/Web[kK]it[\\/]{0,1}([\\d.]+)/);\n // var android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/);\n // var ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n // var ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n // var iphone = !ipad && ua.match(/(iPhone\\sOS)\\s([\\d_]+)/);\n // var webos = ua.match(/(webOS|hpwOS)[\\s\\/]([\\d.]+)/);\n // var touchpad = webos && ua.match(/TouchPad/);\n // var kindle = ua.match(/Kindle\\/([\\d.]+)/);\n // var silk = ua.match(/Silk\\/([\\d._]+)/);\n // var blackberry = ua.match(/(BlackBerry).*Version\\/([\\d.]+)/);\n // var bb10 = ua.match(/(BB10).*Version\\/([\\d.]+)/);\n // var rimtabletos = ua.match(/(RIM\\sTablet\\sOS)\\s([\\d.]+)/);\n // var playbook = ua.match(/PlayBook/);\n // var chrome = ua.match(/Chrome\\/([\\d.]+)/) || ua.match(/CriOS\\/([\\d.]+)/);\n\n var firefox = ua.match(/Firefox\\/([\\d.]+)/); // var safari = webkit && ua.match(/Mobile\\//) && !chrome;\n // var webview = ua.match(/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/) && !chrome;\n\n var ie = ua.match(/MSIE\\s([\\d.]+)/) // IE 11 Trident/7.0; rv:11.0\n || ua.match(/Trident\\/.+?rv:(([\\d.]+))/);\n var edge = ua.match(/Edge\\/([\\d.]+)/); // IE 12 and 12+\n\n var weChat = /micromessenger/i.test(ua); // Todo: clean this up with a better OS/browser seperation:\n // - discern (more) between multiple browsers on android\n // - decide if kindle fire in silk mode is android or not\n // - Firefox on Android doesn't specify the Android version\n // - possibly devide in os, device and browser hashes\n // if (browser.webkit = !!webkit) browser.version = webkit[1];\n // if (android) os.android = true, os.version = android[2];\n // if (iphone && !ipod) os.ios = os.iphone = true, os.version = iphone[2].replace(/_/g, '.');\n // if (ipad) os.ios = os.ipad = true, os.version = ipad[2].replace(/_/g, '.');\n // if (ipod) os.ios = os.ipod = true, os.version = ipod[3] ? ipod[3].replace(/_/g, '.') : null;\n // if (webos) os.webos = true, os.version = webos[2];\n // if (touchpad) os.touchpad = true;\n // if (blackberry) os.blackberry = true, os.version = blackberry[2];\n // if (bb10) os.bb10 = true, os.version = bb10[2];\n // if (rimtabletos) os.rimtabletos = true, os.version = rimtabletos[2];\n // if (playbook) browser.playbook = true;\n // if (kindle) os.kindle = true, os.version = kindle[1];\n // if (silk) browser.silk = true, browser.version = silk[1];\n // if (!silk && os.android && ua.match(/Kindle Fire/)) browser.silk = true;\n // if (chrome) browser.chrome = true, browser.version = chrome[1];\n\n if (firefox) {\n browser.firefox = true;\n browser.version = firefox[1];\n } // if (safari && (ua.match(/Safari/) || !!os.ios)) browser.safari = true;\n // if (webview) browser.webview = true;\n\n\n if (ie) {\n browser.ie = true;\n browser.version = ie[1];\n }\n\n if (edge) {\n browser.edge = true;\n browser.version = edge[1];\n } // It is difficult to detect WeChat in Win Phone precisely, because ua can\n // not be set on win phone. So we do not consider Win Phone.\n\n\n if (weChat) {\n browser.weChat = true;\n } // os.tablet = !!(ipad || playbook || (android && !ua.match(/Mobile/)) ||\n // (firefox && ua.match(/Tablet/)) || (ie && !ua.match(/Phone/) && ua.match(/Touch/)));\n // os.phone = !!(!os.tablet && !os.ipod && (android || iphone || webos ||\n // (chrome && ua.match(/Android/)) || (chrome && ua.match(/CriOS\\/([\\d.]+)/)) ||\n // (firefox && ua.match(/Mobile/)) || (ie && ua.match(/Touch/))));\n\n\n return {\n browser: browser,\n os: os,\n node: false,\n // 原生canvas支持,改极端点了\n // canvasSupported : !(browser.ie && parseFloat(browser.version) < 9)\n canvasSupported: !!document.createElement('canvas').getContext,\n svgSupported: typeof SVGRect !== 'undefined',\n // works on most browsers\n // IE10/11 does not support touch event, and MS Edge supports them but not by\n // default, so we dont check navigator.maxTouchPoints for them here.\n touchEventsSupported: 'ontouchstart' in window && !browser.ie && !browser.edge,\n // .\n pointerEventsSupported: // (1) Firefox supports pointer but not by default, only MS browsers are reliable on pointer\n // events currently. So we dont use that on other browsers unless tested sufficiently.\n // For example, in iOS 13 Mobile Chromium 78, if the touching behavior starts page\n // scroll, the `pointermove` event can not be fired any more. That will break some\n // features like \"pan horizontally to move something and pan vertically to page scroll\".\n // The horizontal pan probably be interrupted by the casually triggered page scroll.\n // (2) Although IE 10 supports pointer event, it use old style and is different from the\n // standard. So we exclude that. (IE 10 is hardly used on touch device)\n 'onpointerdown' in window && (browser.edge || browser.ie && browser.version >= 11),\n // passiveSupported: detectPassiveSupport()\n domSupported: typeof document !== 'undefined'\n };\n} // See https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md#feature-detection\n// function detectPassiveSupport() {\n// // Test via a getter in the options object to see if the passive property is accessed\n// var supportsPassive = false;\n// try {\n// var opts = Object.defineProperty({}, 'passive', {\n// get: function() {\n// supportsPassive = true;\n// }\n// });\n// window.addEventListener('testPassive', function() {}, opts);\n// } catch (e) {\n// }\n// return supportsPassive;\n// }\n\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar pathTool = require(\"zrender/lib/tool/path\");\n\nvar colorTool = require(\"zrender/lib/tool/color\");\n\nvar matrix = require(\"zrender/lib/core/matrix\");\n\nvar vector = require(\"zrender/lib/core/vector\");\n\nvar Path = require(\"zrender/lib/graphic/Path\");\n\nvar Transformable = require(\"zrender/lib/mixin/Transformable\");\n\nvar ZImage = require(\"zrender/lib/graphic/Image\");\n\nexports.Image = ZImage;\n\nvar Group = require(\"zrender/lib/container/Group\");\n\nexports.Group = Group;\n\nvar Text = require(\"zrender/lib/graphic/Text\");\n\nexports.Text = Text;\n\nvar Circle = require(\"zrender/lib/graphic/shape/Circle\");\n\nexports.Circle = Circle;\n\nvar Sector = require(\"zrender/lib/graphic/shape/Sector\");\n\nexports.Sector = Sector;\n\nvar Ring = require(\"zrender/lib/graphic/shape/Ring\");\n\nexports.Ring = Ring;\n\nvar Polygon = require(\"zrender/lib/graphic/shape/Polygon\");\n\nexports.Polygon = Polygon;\n\nvar Polyline = require(\"zrender/lib/graphic/shape/Polyline\");\n\nexports.Polyline = Polyline;\n\nvar Rect = require(\"zrender/lib/graphic/shape/Rect\");\n\nexports.Rect = Rect;\n\nvar Line = require(\"zrender/lib/graphic/shape/Line\");\n\nexports.Line = Line;\n\nvar BezierCurve = require(\"zrender/lib/graphic/shape/BezierCurve\");\n\nexports.BezierCurve = BezierCurve;\n\nvar Arc = require(\"zrender/lib/graphic/shape/Arc\");\n\nexports.Arc = Arc;\n\nvar CompoundPath = require(\"zrender/lib/graphic/CompoundPath\");\n\nexports.CompoundPath = CompoundPath;\n\nvar LinearGradient = require(\"zrender/lib/graphic/LinearGradient\");\n\nexports.LinearGradient = LinearGradient;\n\nvar RadialGradient = require(\"zrender/lib/graphic/RadialGradient\");\n\nexports.RadialGradient = RadialGradient;\n\nvar BoundingRect = require(\"zrender/lib/core/BoundingRect\");\n\nexports.BoundingRect = BoundingRect;\n\nvar IncrementalDisplayable = require(\"zrender/lib/graphic/IncrementalDisplayable\");\n\nexports.IncrementalDisplayable = IncrementalDisplayable;\n\nvar subPixelOptimizeUtil = require(\"zrender/lib/graphic/helper/subPixelOptimize\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar mathMax = Math.max;\nvar mathMin = Math.min;\nvar EMPTY_OBJ = {};\nvar Z2_EMPHASIS_LIFT = 1; // key: label model property nane, value: style property name.\n\nvar CACHED_LABEL_STYLE_PROPERTIES = {\n color: 'textFill',\n textBorderColor: 'textStroke',\n textBorderWidth: 'textStrokeWidth'\n};\nvar EMPHASIS = 'emphasis';\nvar NORMAL = 'normal'; // Reserve 0 as default.\n\nvar _highlightNextDigit = 1;\nvar _highlightKeyMap = {};\nvar _customShapeMap = {};\n/**\n * Extend shape with parameters\n */\n\nfunction extendShape(opts) {\n return Path.extend(opts);\n}\n/**\n * Extend path\n */\n\n\nfunction extendPath(pathData, opts) {\n return pathTool.extendFromString(pathData, opts);\n}\n/**\n * Register a user defined shape.\n * The shape class can be fetched by `getShapeClass`\n * This method will overwrite the registered shapes, including\n * the registered built-in shapes, if using the same `name`.\n * The shape can be used in `custom series` and\n * `graphic component` by declaring `{type: name}`.\n *\n * @param {string} name\n * @param {Object} ShapeClass Can be generated by `extendShape`.\n */\n\n\nfunction registerShape(name, ShapeClass) {\n _customShapeMap[name] = ShapeClass;\n}\n/**\n * Find shape class registered by `registerShape`. Usually used in\n * fetching user defined shape.\n *\n * [Caution]:\n * (1) This method **MUST NOT be used inside echarts !!!**, unless it is prepared\n * to use user registered shapes.\n * Because the built-in shape (see `getBuiltInShape`) will be registered by\n * `registerShape` by default. That enables users to get both built-in\n * shapes as well as the shapes belonging to themsleves. But users can overwrite\n * the built-in shapes by using names like 'circle', 'rect' via calling\n * `registerShape`. So the echarts inner featrues should not fetch shapes from here\n * in case that it is overwritten by users, except that some features, like\n * `custom series`, `graphic component`, do it deliberately.\n *\n * (2) In the features like `custom series`, `graphic component`, the user input\n * `{tpye: 'xxx'}` does not only specify shapes but also specify other graphic\n * elements like `'group'`, `'text'`, `'image'` or event `'path'`. Those names\n * are reserved names, that is, if some user register a shape named `'image'`,\n * the shape will not be used. If we intending to add some more reserved names\n * in feature, that might bring break changes (disable some existing user shape\n * names). But that case probably rearly happen. So we dont make more mechanism\n * to resolve this issue here.\n *\n * @param {string} name\n * @return {Object} The shape class. If not found, return nothing.\n */\n\n\nfunction getShapeClass(name) {\n if (_customShapeMap.hasOwnProperty(name)) {\n return _customShapeMap[name];\n }\n}\n/**\n * Create a path element from path data string\n * @param {string} pathData\n * @param {Object} opts\n * @param {module:zrender/core/BoundingRect} rect\n * @param {string} [layout=cover] 'center' or 'cover'\n */\n\n\nfunction makePath(pathData, opts, rect, layout) {\n var path = pathTool.createFromString(pathData, opts);\n\n if (rect) {\n if (layout === 'center') {\n rect = centerGraphic(rect, path.getBoundingRect());\n }\n\n resizePath(path, rect);\n }\n\n return path;\n}\n/**\n * Create a image element from image url\n * @param {string} imageUrl image url\n * @param {Object} opts options\n * @param {module:zrender/core/BoundingRect} rect constrain rect\n * @param {string} [layout=cover] 'center' or 'cover'\n */\n\n\nfunction makeImage(imageUrl, rect, layout) {\n var path = new ZImage({\n style: {\n image: imageUrl,\n x: rect.x,\n y: rect.y,\n width: rect.width,\n height: rect.height\n },\n onload: function (img) {\n if (layout === 'center') {\n var boundingRect = {\n width: img.width,\n height: img.height\n };\n path.setStyle(centerGraphic(rect, boundingRect));\n }\n }\n });\n return path;\n}\n/**\n * Get position of centered element in bounding box.\n *\n * @param {Object} rect element local bounding box\n * @param {Object} boundingRect constraint bounding box\n * @return {Object} element position containing x, y, width, and height\n */\n\n\nfunction centerGraphic(rect, boundingRect) {\n // Set rect to center, keep width / height ratio.\n var aspect = boundingRect.width / boundingRect.height;\n var width = rect.height * aspect;\n var height;\n\n if (width <= rect.width) {\n height = rect.height;\n } else {\n width = rect.width;\n height = width / aspect;\n }\n\n var cx = rect.x + rect.width / 2;\n var cy = rect.y + rect.height / 2;\n return {\n x: cx - width / 2,\n y: cy - height / 2,\n width: width,\n height: height\n };\n}\n\nvar mergePath = pathTool.mergePath;\n/**\n * Resize a path to fit the rect\n * @param {module:zrender/graphic/Path} path\n * @param {Object} rect\n */\n\nfunction resizePath(path, rect) {\n if (!path.applyTransform) {\n return;\n }\n\n var pathRect = path.getBoundingRect();\n var m = pathRect.calculateTransform(rect);\n path.applyTransform(m);\n}\n/**\n * Sub pixel optimize line for canvas\n *\n * @param {Object} param\n * @param {Object} [param.shape]\n * @param {number} [param.shape.x1]\n * @param {number} [param.shape.y1]\n * @param {number} [param.shape.x2]\n * @param {number} [param.shape.y2]\n * @param {Object} [param.style]\n * @param {number} [param.style.lineWidth]\n * @return {Object} Modified param\n */\n\n\nfunction subPixelOptimizeLine(param) {\n subPixelOptimizeUtil.subPixelOptimizeLine(param.shape, param.shape, param.style);\n return param;\n}\n/**\n * Sub pixel optimize rect for canvas\n *\n * @param {Object} param\n * @param {Object} [param.shape]\n * @param {number} [param.shape.x]\n * @param {number} [param.shape.y]\n * @param {number} [param.shape.width]\n * @param {number} [param.shape.height]\n * @param {Object} [param.style]\n * @param {number} [param.style.lineWidth]\n * @return {Object} Modified param\n */\n\n\nfunction subPixelOptimizeRect(param) {\n subPixelOptimizeUtil.subPixelOptimizeRect(param.shape, param.shape, param.style);\n return param;\n}\n/**\n * Sub pixel optimize for canvas\n *\n * @param {number} position Coordinate, such as x, y\n * @param {number} lineWidth Should be nonnegative integer.\n * @param {boolean=} positiveOrNegative Default false (negative).\n * @return {number} Optimized position.\n */\n\n\nvar subPixelOptimize = subPixelOptimizeUtil.subPixelOptimize;\n\nfunction hasFillOrStroke(fillOrStroke) {\n return fillOrStroke != null && fillOrStroke !== 'none';\n} // Most lifted color are duplicated.\n\n\nvar liftedColorMap = zrUtil.createHashMap();\nvar liftedColorCount = 0;\n\nfunction liftColor(color) {\n if (typeof color !== 'string') {\n return color;\n }\n\n var liftedColor = liftedColorMap.get(color);\n\n if (!liftedColor) {\n liftedColor = colorTool.lift(color, -0.1);\n\n if (liftedColorCount < 10000) {\n liftedColorMap.set(color, liftedColor);\n liftedColorCount++;\n }\n }\n\n return liftedColor;\n}\n\nfunction cacheElementStl(el) {\n if (!el.__hoverStlDirty) {\n return;\n }\n\n el.__hoverStlDirty = false;\n var hoverStyle = el.__hoverStl;\n\n if (!hoverStyle) {\n el.__cachedNormalStl = el.__cachedNormalZ2 = null;\n return;\n }\n\n var normalStyle = el.__cachedNormalStl = {};\n el.__cachedNormalZ2 = el.z2;\n var elStyle = el.style;\n\n for (var name in hoverStyle) {\n // See comment in `singleEnterEmphasis`.\n if (hoverStyle[name] != null) {\n normalStyle[name] = elStyle[name];\n }\n } // Always cache fill and stroke to normalStyle for lifting color.\n\n\n normalStyle.fill = elStyle.fill;\n normalStyle.stroke = elStyle.stroke;\n}\n\nfunction singleEnterEmphasis(el) {\n var hoverStl = el.__hoverStl;\n\n if (!hoverStl || el.__highlighted) {\n return;\n }\n\n var zr = el.__zr;\n var useHoverLayer = el.useHoverLayer && zr && zr.painter.type === 'canvas';\n el.__highlighted = useHoverLayer ? 'layer' : 'plain';\n\n if (el.isGroup || !zr && el.useHoverLayer) {\n return;\n }\n\n var elTarget = el;\n var targetStyle = el.style;\n\n if (useHoverLayer) {\n elTarget = zr.addHover(el);\n targetStyle = elTarget.style;\n }\n\n rollbackDefaultTextStyle(targetStyle);\n\n if (!useHoverLayer) {\n cacheElementStl(elTarget);\n } // styles can be:\n // {\n // label: {\n // show: false,\n // position: 'outside',\n // fontSize: 18\n // },\n // emphasis: {\n // label: {\n // show: true\n // }\n // }\n // },\n // where properties of `emphasis` may not appear in `normal`. We previously use\n // module:echarts/util/model#defaultEmphasis to merge `normal` to `emphasis`.\n // But consider rich text and setOption in merge mode, it is impossible to cover\n // all properties in merge. So we use merge mode when setting style here.\n // But we choose the merge strategy that only properties that is not `null/undefined`.\n // Because when making a textStyle (espacially rich text), it is not easy to distinguish\n // `hasOwnProperty` and `null/undefined` in code, so we trade them as the same for simplicity.\n // But this strategy brings a trouble that `null/undefined` can not be used to remove\n // style any more in `emphasis`. Users can both set properties directly on normal and\n // emphasis to avoid this issue, or we might support `'none'` for this case if required.\n\n\n targetStyle.extendFrom(hoverStl);\n setDefaultHoverFillStroke(targetStyle, hoverStl, 'fill');\n setDefaultHoverFillStroke(targetStyle, hoverStl, 'stroke');\n applyDefaultTextStyle(targetStyle);\n\n if (!useHoverLayer) {\n el.dirty(false);\n el.z2 += Z2_EMPHASIS_LIFT;\n }\n}\n\nfunction setDefaultHoverFillStroke(targetStyle, hoverStyle, prop) {\n if (!hasFillOrStroke(hoverStyle[prop]) && hasFillOrStroke(targetStyle[prop])) {\n targetStyle[prop] = liftColor(targetStyle[prop]);\n }\n}\n\nfunction singleEnterNormal(el) {\n var highlighted = el.__highlighted;\n\n if (!highlighted) {\n return;\n }\n\n el.__highlighted = false;\n\n if (el.isGroup) {\n return;\n }\n\n if (highlighted === 'layer') {\n el.__zr && el.__zr.removeHover(el);\n } else {\n var style = el.style;\n var normalStl = el.__cachedNormalStl;\n\n if (normalStl) {\n rollbackDefaultTextStyle(style);\n el.setStyle(normalStl);\n applyDefaultTextStyle(style);\n } // `__cachedNormalZ2` will not be reset if calling `setElementHoverStyle`\n // when `el` is on emphasis state. So here by comparing with 1, we try\n // hard to make the bug case rare.\n\n\n var normalZ2 = el.__cachedNormalZ2;\n\n if (normalZ2 != null && el.z2 - normalZ2 === Z2_EMPHASIS_LIFT) {\n el.z2 = normalZ2;\n }\n }\n}\n\nfunction traverseUpdate(el, updater, commonParam) {\n // If root is group, also enter updater for `highDownOnUpdate`.\n var fromState = NORMAL;\n var toState = NORMAL;\n var trigger; // See the rule of `highDownOnUpdate` on `graphic.setAsHighDownDispatcher`.\n\n el.__highlighted && (fromState = EMPHASIS, trigger = true);\n updater(el, commonParam);\n el.__highlighted && (toState = EMPHASIS, trigger = true);\n el.isGroup && el.traverse(function (child) {\n !child.isGroup && updater(child, commonParam);\n });\n trigger && el.__highDownOnUpdate && el.__highDownOnUpdate(fromState, toState);\n}\n/**\n * Set hover style (namely \"emphasis style\") of element, based on the current\n * style of the given `el`.\n * This method should be called after all of the normal styles have been adopted\n * to the `el`. See the reason on `setHoverStyle`.\n *\n * @param {module:zrender/Element} el Should not be `zrender/container/Group`.\n * @param {Object} [el.hoverStyle] Can be set on el or its descendants,\n * e.g., `el.hoverStyle = ...; graphic.setHoverStyle(el); `.\n * Often used when item group has a label element and it's hoverStyle is different.\n * @param {Object|boolean} [hoverStl] The specified hover style.\n * If set as `false`, disable the hover style.\n * Similarly, The `el.hoverStyle` can alse be set\n * as `false` to disable the hover style.\n * Otherwise, use the default hover style if not provided.\n */\n\n\nfunction setElementHoverStyle(el, hoverStl) {\n // For performance consideration, it might be better to make the \"hover style\" only the\n // difference properties from the \"normal style\", but not a entire copy of all styles.\n hoverStl = el.__hoverStl = hoverStl !== false && (el.hoverStyle || hoverStl || {});\n el.__hoverStlDirty = true; // FIXME\n // It is not completely right to save \"normal\"/\"emphasis\" flag on elements.\n // It probably should be saved on `data` of series. Consider the cases:\n // (1) A highlighted elements are moved out of the view port and re-enter\n // again by dataZoom.\n // (2) call `setOption` and replace elements totally when they are highlighted.\n\n if (el.__highlighted) {\n // Consider the case:\n // The styles of a highlighted `el` is being updated. The new \"emphasis style\"\n // should be adapted to the `el`. Notice here new \"normal styles\" should have\n // been set outside and the cached \"normal style\" is out of date.\n el.__cachedNormalStl = null; // Do not clear `__cachedNormalZ2` here, because setting `z2` is not a constraint\n // of this method. In most cases, `z2` is not set and hover style should be able\n // to rollback. Of course, that would bring bug, but only in a rare case, see\n // `doSingleLeaveHover` for details.\n\n singleEnterNormal(el);\n singleEnterEmphasis(el);\n }\n}\n\nfunction onElementMouseOver(e) {\n !shouldSilent(this, e) // \"emphasis\" event highlight has higher priority than mouse highlight.\n && !this.__highByOuter && traverseUpdate(this, singleEnterEmphasis);\n}\n\nfunction onElementMouseOut(e) {\n !shouldSilent(this, e) // \"emphasis\" event highlight has higher priority than mouse highlight.\n && !this.__highByOuter && traverseUpdate(this, singleEnterNormal);\n}\n\nfunction onElementEmphasisEvent(highlightDigit) {\n this.__highByOuter |= 1 << (highlightDigit || 0);\n traverseUpdate(this, singleEnterEmphasis);\n}\n\nfunction onElementNormalEvent(highlightDigit) {\n !(this.__highByOuter &= ~(1 << (highlightDigit || 0))) && traverseUpdate(this, singleEnterNormal);\n}\n\nfunction shouldSilent(el, e) {\n return el.__highDownSilentOnTouch && e.zrByTouch;\n}\n/**\n * Set hover style (namely \"emphasis style\") of element,\n * based on the current style of the given `el`.\n *\n * (1)\n * **CONSTRAINTS** for this method:\n * This method MUST be called after all of the normal styles having been adopted\n * to the `el`.\n * The input `hoverStyle` (that is, \"emphasis style\") MUST be the subset of the\n * \"normal style\" having been set to the el.\n * `color` MUST be one of the \"normal styles\" (because color might be lifted as\n * a default hover style).\n *\n * The reason: this method treat the current style of the `el` as the \"normal style\"\n * and cache them when enter/update the \"emphasis style\". Consider the case: the `el`\n * is in \"emphasis\" state and `setOption`/`dispatchAction` trigger the style updating\n * logic, where the el should shift from the original emphasis style to the new\n * \"emphasis style\" and should be able to \"downplay\" back to the new \"normal style\".\n *\n * Indeed, it is error-prone to make a interface has so many constraints, but I have\n * not found a better solution yet to fit the backward compatibility, performance and\n * the current programming style.\n *\n * (2)\n * Call the method for a \"root\" element once. Do not call it for each descendants.\n * If the descendants elemenets of a group has itself hover style different from the\n * root group, we can simply mount the style on `el.hoverStyle` for them, but should\n * not call this method for them.\n *\n * (3) These input parameters can be set directly on `el`:\n *\n * @param {module:zrender/Element} el\n * @param {Object} [el.hoverStyle] See `graphic.setElementHoverStyle`.\n * @param {boolean} [el.highDownSilentOnTouch=false] See `graphic.setAsHighDownDispatcher`.\n * @param {Function} [el.highDownOnUpdate] See `graphic.setAsHighDownDispatcher`.\n * @param {Object|boolean} [hoverStyle] See `graphic.setElementHoverStyle`.\n */\n\n\nfunction setHoverStyle(el, hoverStyle) {\n setAsHighDownDispatcher(el, true);\n traverseUpdate(el, setElementHoverStyle, hoverStyle);\n}\n/**\n * @param {module:zrender/Element} el\n * @param {Function} [el.highDownOnUpdate] Called when state updated.\n * Since `setHoverStyle` has the constraint that it must be called after\n * all of the normal style updated, `highDownOnUpdate` is not needed to\n * trigger if both `fromState` and `toState` is 'normal', and needed to\n * trigger if both `fromState` and `toState` is 'emphasis', which enables\n * to sync outside style settings to \"emphasis\" state.\n * @this {string} This dispatcher `el`.\n * @param {string} fromState Can be \"normal\" or \"emphasis\".\n * `fromState` might equal to `toState`,\n * for example, when this method is called when `el` is\n * on \"emphasis\" state.\n * @param {string} toState Can be \"normal\" or \"emphasis\".\n *\n * FIXME\n * CAUTION: Do not expose `highDownOnUpdate` outside echarts.\n * Because it is not a complete solution. The update\n * listener should not have been mount in element,\n * and the normal/emphasis state should not have\n * mantained on elements.\n *\n * @param {boolean} [el.highDownSilentOnTouch=false]\n * In touch device, mouseover event will be trigger on touchstart event\n * (see module:zrender/dom/HandlerProxy). By this mechanism, we can\n * conveniently use hoverStyle when tap on touch screen without additional\n * code for compatibility.\n * But if the chart/component has select feature, which usually also use\n * hoverStyle, there might be conflict between 'select-highlight' and\n * 'hover-highlight' especially when roam is enabled (see geo for example).\n * In this case, `highDownSilentOnTouch` should be used to disable\n * hover-highlight on touch device.\n * @param {boolean} [asDispatcher=true] If `false`, do not set as \"highDownDispatcher\".\n */\n\n\nfunction setAsHighDownDispatcher(el, asDispatcher) {\n var disable = asDispatcher === false; // Make `highDownSilentOnTouch` and `highDownOnUpdate` only work after\n // `setAsHighDownDispatcher` called. Avoid it is modified by user unexpectedly.\n\n el.__highDownSilentOnTouch = el.highDownSilentOnTouch;\n el.__highDownOnUpdate = el.highDownOnUpdate; // Simple optimize, since this method might be\n // called for each elements of a group in some cases.\n\n if (!disable || el.__highDownDispatcher) {\n var method = disable ? 'off' : 'on'; // Duplicated function will be auto-ignored, see Eventful.js.\n\n el[method]('mouseover', onElementMouseOver)[method]('mouseout', onElementMouseOut); // Emphasis, normal can be triggered manually by API or other components like hover link.\n\n el[method]('emphasis', onElementEmphasisEvent)[method]('normal', onElementNormalEvent); // Also keep previous record.\n\n el.__highByOuter = el.__highByOuter || 0;\n el.__highDownDispatcher = !disable;\n }\n}\n/**\n * @param {module:zrender/src/Element} el\n * @return {boolean}\n */\n\n\nfunction isHighDownDispatcher(el) {\n return !!(el && el.__highDownDispatcher);\n}\n/**\n * Support hightlight/downplay record on each elements.\n * For the case: hover highlight/downplay (legend, visualMap, ...) and\n * user triggerred hightlight/downplay should not conflict.\n * Only all of the highlightDigit cleared, return to normal.\n * @param {string} highlightKey\n * @return {number} highlightDigit\n */\n\n\nfunction getHighlightDigit(highlightKey) {\n var highlightDigit = _highlightKeyMap[highlightKey];\n\n if (highlightDigit == null && _highlightNextDigit <= 32) {\n highlightDigit = _highlightKeyMap[highlightKey] = _highlightNextDigit++;\n }\n\n return highlightDigit;\n}\n/**\n * See more info in `setTextStyleCommon`.\n * @param {Object|module:zrender/graphic/Style} normalStyle\n * @param {Object} emphasisStyle\n * @param {module:echarts/model/Model} normalModel\n * @param {module:echarts/model/Model} emphasisModel\n * @param {Object} opt Check `opt` of `setTextStyleCommon` to find other props.\n * @param {string|Function} [opt.defaultText]\n * @param {module:echarts/model/Model} [opt.labelFetcher] Fetch text by\n * `opt.labelFetcher.getFormattedLabel(opt.labelDataIndex, 'normal'/'emphasis', null, opt.labelDimIndex, opt.labelProp)`\n * @param {number} [opt.labelDataIndex] Fetch text by\n * `opt.textFetcher.getFormattedLabel(opt.labelDataIndex, 'normal'/'emphasis', null, opt.labelDimIndex, opt.labelProp)`\n * @param {number} [opt.labelDimIndex] Fetch text by\n * `opt.textFetcher.getFormattedLabel(opt.labelDataIndex, 'normal'/'emphasis', null, opt.labelDimIndex, opt.labelProp)`\n * @param {string} [opt.labelProp] Fetch text by\n * `opt.textFetcher.getFormattedLabel(opt.labelDataIndex, 'normal'/'emphasis', null, opt.labelDimIndex, opt.labelProp)`\n * @param {Object} [normalSpecified]\n * @param {Object} [emphasisSpecified]\n */\n\n\nfunction setLabelStyle(normalStyle, emphasisStyle, normalModel, emphasisModel, opt, normalSpecified, emphasisSpecified) {\n opt = opt || EMPTY_OBJ;\n var labelFetcher = opt.labelFetcher;\n var labelDataIndex = opt.labelDataIndex;\n var labelDimIndex = opt.labelDimIndex;\n var labelProp = opt.labelProp; // This scenario, `label.normal.show = true; label.emphasis.show = false`,\n // is not supported util someone requests.\n\n var showNormal = normalModel.getShallow('show');\n var showEmphasis = emphasisModel.getShallow('show'); // Consider performance, only fetch label when necessary.\n // If `normal.show` is `false` and `emphasis.show` is `true` and `emphasis.formatter` is not set,\n // label should be displayed, where text is fetched by `normal.formatter` or `opt.defaultText`.\n\n var baseText;\n\n if (showNormal || showEmphasis) {\n if (labelFetcher) {\n baseText = labelFetcher.getFormattedLabel(labelDataIndex, 'normal', null, labelDimIndex, labelProp);\n }\n\n if (baseText == null) {\n baseText = zrUtil.isFunction(opt.defaultText) ? opt.defaultText(labelDataIndex, opt) : opt.defaultText;\n }\n }\n\n var normalStyleText = showNormal ? baseText : null;\n var emphasisStyleText = showEmphasis ? zrUtil.retrieve2(labelFetcher ? labelFetcher.getFormattedLabel(labelDataIndex, 'emphasis', null, labelDimIndex, labelProp) : null, baseText) : null; // Optimize: If style.text is null, text will not be drawn.\n\n if (normalStyleText != null || emphasisStyleText != null) {\n // Always set `textStyle` even if `normalStyle.text` is null, because default\n // values have to be set on `normalStyle`.\n // If we set default values on `emphasisStyle`, consider case:\n // Firstly, `setOption(... label: {normal: {text: null}, emphasis: {show: true}} ...);`\n // Secondly, `setOption(... label: {noraml: {show: true, text: 'abc', color: 'red'} ...);`\n // Then the 'red' will not work on emphasis.\n setTextStyle(normalStyle, normalModel, normalSpecified, opt);\n setTextStyle(emphasisStyle, emphasisModel, emphasisSpecified, opt, true);\n }\n\n normalStyle.text = normalStyleText;\n emphasisStyle.text = emphasisStyleText;\n}\n/**\n * Modify label style manually.\n * Only works after `setLabelStyle` and `setElementHoverStyle` called.\n *\n * @param {module:zrender/src/Element} el\n * @param {Object} [normalStyleProps] optional\n * @param {Object} [emphasisStyleProps] optional\n */\n\n\nfunction modifyLabelStyle(el, normalStyleProps, emphasisStyleProps) {\n var elStyle = el.style;\n\n if (normalStyleProps) {\n rollbackDefaultTextStyle(elStyle);\n el.setStyle(normalStyleProps);\n applyDefaultTextStyle(elStyle);\n }\n\n elStyle = el.__hoverStl;\n\n if (emphasisStyleProps && elStyle) {\n rollbackDefaultTextStyle(elStyle);\n zrUtil.extend(elStyle, emphasisStyleProps);\n applyDefaultTextStyle(elStyle);\n }\n}\n/**\n * Set basic textStyle properties.\n * See more info in `setTextStyleCommon`.\n * @param {Object|module:zrender/graphic/Style} textStyle\n * @param {module:echarts/model/Model} model\n * @param {Object} [specifiedTextStyle] Can be overrided by settings in model.\n * @param {Object} [opt] See `opt` of `setTextStyleCommon`.\n * @param {boolean} [isEmphasis]\n */\n\n\nfunction setTextStyle(textStyle, textStyleModel, specifiedTextStyle, opt, isEmphasis) {\n setTextStyleCommon(textStyle, textStyleModel, opt, isEmphasis);\n specifiedTextStyle && zrUtil.extend(textStyle, specifiedTextStyle); // textStyle.host && textStyle.host.dirty && textStyle.host.dirty(false);\n\n return textStyle;\n}\n/**\n * Set text option in the style.\n * See more info in `setTextStyleCommon`.\n * @deprecated\n * @param {Object} textStyle\n * @param {module:echarts/model/Model} labelModel\n * @param {string|boolean} defaultColor Default text color.\n * If set as false, it will be processed as a emphasis style.\n */\n\n\nfunction setText(textStyle, labelModel, defaultColor) {\n var opt = {\n isRectText: true\n };\n var isEmphasis;\n\n if (defaultColor === false) {\n isEmphasis = true;\n } else {\n // Support setting color as 'auto' to get visual color.\n opt.autoColor = defaultColor;\n }\n\n setTextStyleCommon(textStyle, labelModel, opt, isEmphasis); // textStyle.host && textStyle.host.dirty && textStyle.host.dirty(false);\n}\n/**\n * The uniform entry of set text style, that is, retrieve style definitions\n * from `model` and set to `textStyle` object.\n *\n * Never in merge mode, but in overwrite mode, that is, all of the text style\n * properties will be set. (Consider the states of normal and emphasis and\n * default value can be adopted, merge would make the logic too complicated\n * to manage.)\n *\n * The `textStyle` object can either be a plain object or an instance of\n * `zrender/src/graphic/Style`, and either be the style of normal or emphasis.\n * After this mothod called, the `textStyle` object can then be used in\n * `el.setStyle(textStyle)` or `el.hoverStyle = textStyle`.\n *\n * Default value will be adopted and `insideRollbackOpt` will be created.\n * See `applyDefaultTextStyle` `rollbackDefaultTextStyle` for more details.\n *\n * opt: {\n * disableBox: boolean, Whether diable drawing box of block (outer most).\n * isRectText: boolean,\n * autoColor: string, specify a color when color is 'auto',\n * for textFill, textStroke, textBackgroundColor, and textBorderColor.\n * If autoColor specified, it is used as default textFill.\n * useInsideStyle:\n * `true`: Use inside style (textFill, textStroke, textStrokeWidth)\n * if `textFill` is not specified.\n * `false`: Do not use inside style.\n * `null/undefined`: use inside style if `isRectText` is true and\n * `textFill` is not specified and textPosition contains `'inside'`.\n * forceRich: boolean\n * }\n */\n\n\nfunction setTextStyleCommon(textStyle, textStyleModel, opt, isEmphasis) {\n // Consider there will be abnormal when merge hover style to normal style if given default value.\n opt = opt || EMPTY_OBJ;\n\n if (opt.isRectText) {\n var textPosition;\n\n if (opt.getTextPosition) {\n textPosition = opt.getTextPosition(textStyleModel, isEmphasis);\n } else {\n textPosition = textStyleModel.getShallow('position') || (isEmphasis ? null : 'inside'); // 'outside' is not a valid zr textPostion value, but used\n // in bar series, and magric type should be considered.\n\n textPosition === 'outside' && (textPosition = 'top');\n }\n\n textStyle.textPosition = textPosition;\n textStyle.textOffset = textStyleModel.getShallow('offset');\n var labelRotate = textStyleModel.getShallow('rotate');\n labelRotate != null && (labelRotate *= Math.PI / 180);\n textStyle.textRotation = labelRotate;\n textStyle.textDistance = zrUtil.retrieve2(textStyleModel.getShallow('distance'), isEmphasis ? null : 5);\n }\n\n var ecModel = textStyleModel.ecModel;\n var globalTextStyle = ecModel && ecModel.option.textStyle; // Consider case:\n // {\n // data: [{\n // value: 12,\n // label: {\n // rich: {\n // // no 'a' here but using parent 'a'.\n // }\n // }\n // }],\n // rich: {\n // a: { ... }\n // }\n // }\n\n var richItemNames = getRichItemNames(textStyleModel);\n var richResult;\n\n if (richItemNames) {\n richResult = {};\n\n for (var name in richItemNames) {\n if (richItemNames.hasOwnProperty(name)) {\n // Cascade is supported in rich.\n var richTextStyle = textStyleModel.getModel(['rich', name]); // In rich, never `disableBox`.\n // FIXME: consider `label: {formatter: '{a|xx}', color: 'blue', rich: {a: {}}}`,\n // the default color `'blue'` will not be adopted if no color declared in `rich`.\n // That might confuses users. So probably we should put `textStyleModel` as the\n // root ancestor of the `richTextStyle`. But that would be a break change.\n\n setTokenTextStyle(richResult[name] = {}, richTextStyle, globalTextStyle, opt, isEmphasis);\n }\n }\n }\n\n textStyle.rich = richResult;\n setTokenTextStyle(textStyle, textStyleModel, globalTextStyle, opt, isEmphasis, true);\n\n if (opt.forceRich && !opt.textStyle) {\n opt.textStyle = {};\n }\n\n return textStyle;\n} // Consider case:\n// {\n// data: [{\n// value: 12,\n// label: {\n// rich: {\n// // no 'a' here but using parent 'a'.\n// }\n// }\n// }],\n// rich: {\n// a: { ... }\n// }\n// }\n\n\nfunction getRichItemNames(textStyleModel) {\n // Use object to remove duplicated names.\n var richItemNameMap;\n\n while (textStyleModel && textStyleModel !== textStyleModel.ecModel) {\n var rich = (textStyleModel.option || EMPTY_OBJ).rich;\n\n if (rich) {\n richItemNameMap = richItemNameMap || {};\n\n for (var name in rich) {\n if (rich.hasOwnProperty(name)) {\n richItemNameMap[name] = 1;\n }\n }\n }\n\n textStyleModel = textStyleModel.parentModel;\n }\n\n return richItemNameMap;\n}\n\nfunction setTokenTextStyle(textStyle, textStyleModel, globalTextStyle, opt, isEmphasis, isBlock) {\n // In merge mode, default value should not be given.\n globalTextStyle = !isEmphasis && globalTextStyle || EMPTY_OBJ;\n textStyle.textFill = getAutoColor(textStyleModel.getShallow('color'), opt) || globalTextStyle.color;\n textStyle.textStroke = getAutoColor(textStyleModel.getShallow('textBorderColor'), opt) || globalTextStyle.textBorderColor;\n textStyle.textStrokeWidth = zrUtil.retrieve2(textStyleModel.getShallow('textBorderWidth'), globalTextStyle.textBorderWidth);\n\n if (!isEmphasis) {\n if (isBlock) {\n textStyle.insideRollbackOpt = opt;\n applyDefaultTextStyle(textStyle);\n } // Set default finally.\n\n\n if (textStyle.textFill == null) {\n textStyle.textFill = opt.autoColor;\n }\n } // Do not use `getFont` here, because merge should be supported, where\n // part of these properties may be changed in emphasis style, and the\n // others should remain their original value got from normal style.\n\n\n textStyle.fontStyle = textStyleModel.getShallow('fontStyle') || globalTextStyle.fontStyle;\n textStyle.fontWeight = textStyleModel.getShallow('fontWeight') || globalTextStyle.fontWeight;\n textStyle.fontSize = textStyleModel.getShallow('fontSize') || globalTextStyle.fontSize;\n textStyle.fontFamily = textStyleModel.getShallow('fontFamily') || globalTextStyle.fontFamily;\n textStyle.textAlign = textStyleModel.getShallow('align');\n textStyle.textVerticalAlign = textStyleModel.getShallow('verticalAlign') || textStyleModel.getShallow('baseline');\n textStyle.textLineHeight = textStyleModel.getShallow('lineHeight');\n textStyle.textWidth = textStyleModel.getShallow('width');\n textStyle.textHeight = textStyleModel.getShallow('height');\n textStyle.textTag = textStyleModel.getShallow('tag');\n\n if (!isBlock || !opt.disableBox) {\n textStyle.textBackgroundColor = getAutoColor(textStyleModel.getShallow('backgroundColor'), opt);\n textStyle.textPadding = textStyleModel.getShallow('padding');\n textStyle.textBorderColor = getAutoColor(textStyleModel.getShallow('borderColor'), opt);\n textStyle.textBorderWidth = textStyleModel.getShallow('borderWidth');\n textStyle.textBorderRadius = textStyleModel.getShallow('borderRadius');\n textStyle.textBoxShadowColor = textStyleModel.getShallow('shadowColor');\n textStyle.textBoxShadowBlur = textStyleModel.getShallow('shadowBlur');\n textStyle.textBoxShadowOffsetX = textStyleModel.getShallow('shadowOffsetX');\n textStyle.textBoxShadowOffsetY = textStyleModel.getShallow('shadowOffsetY');\n }\n\n textStyle.textShadowColor = textStyleModel.getShallow('textShadowColor') || globalTextStyle.textShadowColor;\n textStyle.textShadowBlur = textStyleModel.getShallow('textShadowBlur') || globalTextStyle.textShadowBlur;\n textStyle.textShadowOffsetX = textStyleModel.getShallow('textShadowOffsetX') || globalTextStyle.textShadowOffsetX;\n textStyle.textShadowOffsetY = textStyleModel.getShallow('textShadowOffsetY') || globalTextStyle.textShadowOffsetY;\n}\n\nfunction getAutoColor(color, opt) {\n return color !== 'auto' ? color : opt && opt.autoColor ? opt.autoColor : null;\n}\n/**\n * Give some default value to the input `textStyle` object, based on the current settings\n * in this `textStyle` object.\n *\n * The Scenario:\n * when text position is `inside` and `textFill` is not specified, we show\n * text border by default for better view. But it should be considered that text position\n * might be changed when hovering or being emphasis, where the `insideRollback` is used to\n * restore the style.\n *\n * Usage (& NOTICE):\n * When a style object (eithor plain object or instance of `zrender/src/graphic/Style`) is\n * about to be modified on its text related properties, `rollbackDefaultTextStyle` should\n * be called before the modification and `applyDefaultTextStyle` should be called after that.\n * (For the case that all of the text related properties is reset, like `setTextStyleCommon`\n * does, `rollbackDefaultTextStyle` is not needed to be called).\n */\n\n\nfunction applyDefaultTextStyle(textStyle) {\n var textPosition = textStyle.textPosition;\n var opt = textStyle.insideRollbackOpt;\n var insideRollback;\n\n if (opt && textStyle.textFill == null) {\n var autoColor = opt.autoColor;\n var isRectText = opt.isRectText;\n var useInsideStyle = opt.useInsideStyle;\n var useInsideStyleCache = useInsideStyle !== false && (useInsideStyle === true || isRectText && textPosition // textPosition can be [10, 30]\n && typeof textPosition === 'string' && textPosition.indexOf('inside') >= 0);\n var useAutoColorCache = !useInsideStyleCache && autoColor != null; // All of the props declared in `CACHED_LABEL_STYLE_PROPERTIES` are to be cached.\n\n if (useInsideStyleCache || useAutoColorCache) {\n insideRollback = {\n textFill: textStyle.textFill,\n textStroke: textStyle.textStroke,\n textStrokeWidth: textStyle.textStrokeWidth\n };\n }\n\n if (useInsideStyleCache) {\n textStyle.textFill = '#fff'; // Consider text with #fff overflow its container.\n\n if (textStyle.textStroke == null) {\n textStyle.textStroke = autoColor;\n textStyle.textStrokeWidth == null && (textStyle.textStrokeWidth = 2);\n }\n }\n\n if (useAutoColorCache) {\n textStyle.textFill = autoColor;\n }\n } // Always set `insideRollback`, so that the previous one can be cleared.\n\n\n textStyle.insideRollback = insideRollback;\n}\n/**\n * Consider the case: in a scatter,\n * label: {\n * normal: {position: 'inside'},\n * emphasis: {position: 'top'}\n * }\n * In the normal state, the `textFill` will be set as '#fff' for pretty view (see\n * `applyDefaultTextStyle`), but when switching to emphasis state, the `textFill`\n * should be retured to 'autoColor', but not keep '#fff'.\n */\n\n\nfunction rollbackDefaultTextStyle(style) {\n var insideRollback = style.insideRollback;\n\n if (insideRollback) {\n // Reset all of the props in `CACHED_LABEL_STYLE_PROPERTIES`.\n style.textFill = insideRollback.textFill;\n style.textStroke = insideRollback.textStroke;\n style.textStrokeWidth = insideRollback.textStrokeWidth;\n style.insideRollback = null;\n }\n}\n\nfunction getFont(opt, ecModel) {\n var gTextStyleModel = ecModel && ecModel.getModel('textStyle');\n return zrUtil.trim([// FIXME in node-canvas fontWeight is before fontStyle\n opt.fontStyle || gTextStyleModel && gTextStyleModel.getShallow('fontStyle') || '', opt.fontWeight || gTextStyleModel && gTextStyleModel.getShallow('fontWeight') || '', (opt.fontSize || gTextStyleModel && gTextStyleModel.getShallow('fontSize') || 12) + 'px', opt.fontFamily || gTextStyleModel && gTextStyleModel.getShallow('fontFamily') || 'sans-serif'].join(' '));\n}\n\nfunction animateOrSetProps(isUpdate, el, props, animatableModel, dataIndex, cb) {\n if (typeof dataIndex === 'function') {\n cb = dataIndex;\n dataIndex = null;\n } // Do not check 'animation' property directly here. Consider this case:\n // animation model is an `itemModel`, whose does not have `isAnimationEnabled`\n // but its parent model (`seriesModel`) does.\n\n\n var animationEnabled = animatableModel && animatableModel.isAnimationEnabled();\n\n if (animationEnabled) {\n var postfix = isUpdate ? 'Update' : '';\n var duration = animatableModel.getShallow('animationDuration' + postfix);\n var animationEasing = animatableModel.getShallow('animationEasing' + postfix);\n var animationDelay = animatableModel.getShallow('animationDelay' + postfix);\n\n if (typeof animationDelay === 'function') {\n animationDelay = animationDelay(dataIndex, animatableModel.getAnimationDelayParams ? animatableModel.getAnimationDelayParams(el, dataIndex) : null);\n }\n\n if (typeof duration === 'function') {\n duration = duration(dataIndex);\n }\n\n duration > 0 ? el.animateTo(props, duration, animationDelay || 0, animationEasing, cb, !!cb) : (el.stopAnimation(), el.attr(props), cb && cb());\n } else {\n el.stopAnimation();\n el.attr(props);\n cb && cb();\n }\n}\n/**\n * Update graphic element properties with or without animation according to the\n * configuration in series.\n *\n * Caution: this method will stop previous animation.\n * So do not use this method to one element twice before\n * animation starts, unless you know what you are doing.\n *\n * @param {module:zrender/Element} el\n * @param {Object} props\n * @param {module:echarts/model/Model} [animatableModel]\n * @param {number} [dataIndex]\n * @param {Function} [cb]\n * @example\n * graphic.updateProps(el, {\n * position: [100, 100]\n * }, seriesModel, dataIndex, function () { console.log('Animation done!'); });\n * // Or\n * graphic.updateProps(el, {\n * position: [100, 100]\n * }, seriesModel, function () { console.log('Animation done!'); });\n */\n\n\nfunction updateProps(el, props, animatableModel, dataIndex, cb) {\n animateOrSetProps(true, el, props, animatableModel, dataIndex, cb);\n}\n/**\n * Init graphic element properties with or without animation according to the\n * configuration in series.\n *\n * Caution: this method will stop previous animation.\n * So do not use this method to one element twice before\n * animation starts, unless you know what you are doing.\n *\n * @param {module:zrender/Element} el\n * @param {Object} props\n * @param {module:echarts/model/Model} [animatableModel]\n * @param {number} [dataIndex]\n * @param {Function} cb\n */\n\n\nfunction initProps(el, props, animatableModel, dataIndex, cb) {\n animateOrSetProps(false, el, props, animatableModel, dataIndex, cb);\n}\n/**\n * Get transform matrix of target (param target),\n * in coordinate of its ancestor (param ancestor)\n *\n * @param {module:zrender/mixin/Transformable} target\n * @param {module:zrender/mixin/Transformable} [ancestor]\n */\n\n\nfunction getTransform(target, ancestor) {\n var mat = matrix.identity([]);\n\n while (target && target !== ancestor) {\n matrix.mul(mat, target.getLocalTransform(), mat);\n target = target.parent;\n }\n\n return mat;\n}\n/**\n * Apply transform to an vertex.\n * @param {Array.} target [x, y]\n * @param {Array.|TypedArray.|Object} transform Can be:\n * + Transform matrix: like [1, 0, 0, 1, 0, 0]\n * + {position, rotation, scale}, the same as `zrender/Transformable`.\n * @param {boolean=} invert Whether use invert matrix.\n * @return {Array.} [x, y]\n */\n\n\nfunction applyTransform(target, transform, invert) {\n if (transform && !zrUtil.isArrayLike(transform)) {\n transform = Transformable.getLocalTransform(transform);\n }\n\n if (invert) {\n transform = matrix.invert([], transform);\n }\n\n return vector.applyTransform([], target, transform);\n}\n/**\n * @param {string} direction 'left' 'right' 'top' 'bottom'\n * @param {Array.} transform Transform matrix: like [1, 0, 0, 1, 0, 0]\n * @param {boolean=} invert Whether use invert matrix.\n * @return {string} Transformed direction. 'left' 'right' 'top' 'bottom'\n */\n\n\nfunction transformDirection(direction, transform, invert) {\n // Pick a base, ensure that transform result will not be (0, 0).\n var hBase = transform[4] === 0 || transform[5] === 0 || transform[0] === 0 ? 1 : Math.abs(2 * transform[4] / transform[0]);\n var vBase = transform[4] === 0 || transform[5] === 0 || transform[2] === 0 ? 1 : Math.abs(2 * transform[4] / transform[2]);\n var vertex = [direction === 'left' ? -hBase : direction === 'right' ? hBase : 0, direction === 'top' ? -vBase : direction === 'bottom' ? vBase : 0];\n vertex = applyTransform(vertex, transform, invert);\n return Math.abs(vertex[0]) > Math.abs(vertex[1]) ? vertex[0] > 0 ? 'right' : 'left' : vertex[1] > 0 ? 'bottom' : 'top';\n}\n/**\n * Apply group transition animation from g1 to g2.\n * If no animatableModel, no animation.\n */\n\n\nfunction groupTransition(g1, g2, animatableModel, cb) {\n if (!g1 || !g2) {\n return;\n }\n\n function getElMap(g) {\n var elMap = {};\n g.traverse(function (el) {\n if (!el.isGroup && el.anid) {\n elMap[el.anid] = el;\n }\n });\n return elMap;\n }\n\n function getAnimatableProps(el) {\n var obj = {\n position: vector.clone(el.position),\n rotation: el.rotation\n };\n\n if (el.shape) {\n obj.shape = zrUtil.extend({}, el.shape);\n }\n\n return obj;\n }\n\n var elMap1 = getElMap(g1);\n g2.traverse(function (el) {\n if (!el.isGroup && el.anid) {\n var oldEl = elMap1[el.anid];\n\n if (oldEl) {\n var newProp = getAnimatableProps(el);\n el.attr(getAnimatableProps(oldEl));\n updateProps(el, newProp, animatableModel, el.dataIndex);\n } // else {\n // if (el.previousProps) {\n // graphic.updateProps\n // }\n // }\n\n }\n });\n}\n/**\n * @param {Array.>} points Like: [[23, 44], [53, 66], ...]\n * @param {Object} rect {x, y, width, height}\n * @return {Array.>} A new clipped points.\n */\n\n\nfunction clipPointsByRect(points, rect) {\n // FIXME: this way migth be incorrect when grpahic clipped by a corner.\n // and when element have border.\n return zrUtil.map(points, function (point) {\n var x = point[0];\n x = mathMax(x, rect.x);\n x = mathMin(x, rect.x + rect.width);\n var y = point[1];\n y = mathMax(y, rect.y);\n y = mathMin(y, rect.y + rect.height);\n return [x, y];\n });\n}\n/**\n * @param {Object} targetRect {x, y, width, height}\n * @param {Object} rect {x, y, width, height}\n * @return {Object} A new clipped rect. If rect size are negative, return undefined.\n */\n\n\nfunction clipRectByRect(targetRect, rect) {\n var x = mathMax(targetRect.x, rect.x);\n var x2 = mathMin(targetRect.x + targetRect.width, rect.x + rect.width);\n var y = mathMax(targetRect.y, rect.y);\n var y2 = mathMin(targetRect.y + targetRect.height, rect.y + rect.height); // If the total rect is cliped, nothing, including the border,\n // should be painted. So return undefined.\n\n if (x2 >= x && y2 >= y) {\n return {\n x: x,\n y: y,\n width: x2 - x,\n height: y2 - y\n };\n }\n}\n/**\n * @param {string} iconStr Support 'image://' or 'path://' or direct svg path.\n * @param {Object} [opt] Properties of `module:zrender/Element`, except `style`.\n * @param {Object} [rect] {x, y, width, height}\n * @return {module:zrender/Element} Icon path or image element.\n */\n\n\nfunction createIcon(iconStr, opt, rect) {\n opt = zrUtil.extend({\n rectHover: true\n }, opt);\n var style = opt.style = {\n strokeNoScale: true\n };\n rect = rect || {\n x: -1,\n y: -1,\n width: 2,\n height: 2\n };\n\n if (iconStr) {\n return iconStr.indexOf('image://') === 0 ? (style.image = iconStr.slice(8), zrUtil.defaults(style, rect), new ZImage(opt)) : makePath(iconStr.replace('path://', ''), opt, rect, 'center');\n }\n}\n/**\n * Return `true` if the given line (line `a`) and the given polygon\n * are intersect.\n * Note that we do not count colinear as intersect here because no\n * requirement for that. We could do that if required in future.\n *\n * @param {number} a1x\n * @param {number} a1y\n * @param {number} a2x\n * @param {number} a2y\n * @param {Array.>} points Points of the polygon.\n * @return {boolean}\n */\n\n\nfunction linePolygonIntersect(a1x, a1y, a2x, a2y, points) {\n for (var i = 0, p2 = points[points.length - 1]; i < points.length; i++) {\n var p = points[i];\n\n if (lineLineIntersect(a1x, a1y, a2x, a2y, p[0], p[1], p2[0], p2[1])) {\n return true;\n }\n\n p2 = p;\n }\n}\n/**\n * Return `true` if the given two lines (line `a` and line `b`)\n * are intersect.\n * Note that we do not count colinear as intersect here because no\n * requirement for that. We could do that if required in future.\n *\n * @param {number} a1x\n * @param {number} a1y\n * @param {number} a2x\n * @param {number} a2y\n * @param {number} b1x\n * @param {number} b1y\n * @param {number} b2x\n * @param {number} b2y\n * @return {boolean}\n */\n\n\nfunction lineLineIntersect(a1x, a1y, a2x, a2y, b1x, b1y, b2x, b2y) {\n // let `vec_m` to be `vec_a2 - vec_a1` and `vec_n` to be `vec_b2 - vec_b1`.\n var mx = a2x - a1x;\n var my = a2y - a1y;\n var nx = b2x - b1x;\n var ny = b2y - b1y; // `vec_m` and `vec_n` are parallel iff\n // exising `k` such that `vec_m = k · vec_n`, equivalent to `vec_m X vec_n = 0`.\n\n var nmCrossProduct = crossProduct2d(nx, ny, mx, my);\n\n if (nearZero(nmCrossProduct)) {\n return false;\n } // `vec_m` and `vec_n` are intersect iff\n // existing `p` and `q` in [0, 1] such that `vec_a1 + p * vec_m = vec_b1 + q * vec_n`,\n // such that `q = ((vec_a1 - vec_b1) X vec_m) / (vec_n X vec_m)`\n // and `p = ((vec_a1 - vec_b1) X vec_n) / (vec_n X vec_m)`.\n\n\n var b1a1x = a1x - b1x;\n var b1a1y = a1y - b1y;\n var q = crossProduct2d(b1a1x, b1a1y, mx, my) / nmCrossProduct;\n\n if (q < 0 || q > 1) {\n return false;\n }\n\n var p = crossProduct2d(b1a1x, b1a1y, nx, ny) / nmCrossProduct;\n\n if (p < 0 || p > 1) {\n return false;\n }\n\n return true;\n}\n/**\n * Cross product of 2-dimension vector.\n */\n\n\nfunction crossProduct2d(x1, y1, x2, y2) {\n return x1 * y2 - x2 * y1;\n}\n\nfunction nearZero(val) {\n return val <= 1e-6 && val >= -1e-6;\n} // Register built-in shapes. These shapes might be overwirtten\n// by users, although we do not recommend that.\n\n\nregisterShape('circle', Circle);\nregisterShape('sector', Sector);\nregisterShape('ring', Ring);\nregisterShape('polygon', Polygon);\nregisterShape('polyline', Polyline);\nregisterShape('rect', Rect);\nregisterShape('line', Line);\nregisterShape('bezierCurve', BezierCurve);\nregisterShape('arc', Arc);\nexports.Z2_EMPHASIS_LIFT = Z2_EMPHASIS_LIFT;\nexports.CACHED_LABEL_STYLE_PROPERTIES = CACHED_LABEL_STYLE_PROPERTIES;\nexports.extendShape = extendShape;\nexports.extendPath = extendPath;\nexports.registerShape = registerShape;\nexports.getShapeClass = getShapeClass;\nexports.makePath = makePath;\nexports.makeImage = makeImage;\nexports.mergePath = mergePath;\nexports.resizePath = resizePath;\nexports.subPixelOptimizeLine = subPixelOptimizeLine;\nexports.subPixelOptimizeRect = subPixelOptimizeRect;\nexports.subPixelOptimize = subPixelOptimize;\nexports.setElementHoverStyle = setElementHoverStyle;\nexports.setHoverStyle = setHoverStyle;\nexports.setAsHighDownDispatcher = setAsHighDownDispatcher;\nexports.isHighDownDispatcher = isHighDownDispatcher;\nexports.getHighlightDigit = getHighlightDigit;\nexports.setLabelStyle = setLabelStyle;\nexports.modifyLabelStyle = modifyLabelStyle;\nexports.setTextStyle = setTextStyle;\nexports.setText = setText;\nexports.getFont = getFont;\nexports.updateProps = updateProps;\nexports.initProps = initProps;\nexports.getTransform = getTransform;\nexports.applyTransform = applyTransform;\nexports.transformDirection = transformDirection;\nexports.groupTransition = groupTransition;\nexports.clipPointsByRect = clipPointsByRect;\nexports.clipRectByRect = clipRectByRect;\nexports.createIcon = createIcon;\nexports.linePolygonIntersect = linePolygonIntersect;\nexports.lineLineIntersect = lineLineIntersect;","'use strict';\nvar redefine = require('../internals/redefine');\nvar anObject = require('../internals/an-object');\nvar fails = require('../internals/fails');\nvar flags = require('../internals/regexp-flags');\n\nvar TO_STRING = 'toString';\nvar RegExpPrototype = RegExp.prototype;\nvar nativeToString = RegExpPrototype[TO_STRING];\n\nvar NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });\n// FF44- RegExp#toString has a wrong name\nvar INCORRECT_NAME = nativeToString.name != TO_STRING;\n\n// `RegExp.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-regexp.prototype.tostring\nif (NOT_GENERIC || INCORRECT_NAME) {\n redefine(RegExp.prototype, TO_STRING, function toString() {\n var R = anObject(this);\n var p = String(R.source);\n var rf = R.flags;\n var f = String(rf === undefined && R instanceof RegExp && !('flags' in RegExpPrototype) ? flags.call(R) : rf);\n return '/' + p + '/' + f;\n }, { unsafe: true });\n}\n","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar modelUtil = require(\"../../util/model\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar each = zrUtil.each;\nvar isObject = zrUtil.isObject;\nvar POSSIBLE_STYLES = ['areaStyle', 'lineStyle', 'nodeStyle', 'linkStyle', 'chordStyle', 'label', 'labelLine'];\n\nfunction compatEC2ItemStyle(opt) {\n var itemStyleOpt = opt && opt.itemStyle;\n\n if (!itemStyleOpt) {\n return;\n }\n\n for (var i = 0, len = POSSIBLE_STYLES.length; i < len; i++) {\n var styleName = POSSIBLE_STYLES[i];\n var normalItemStyleOpt = itemStyleOpt.normal;\n var emphasisItemStyleOpt = itemStyleOpt.emphasis;\n\n if (normalItemStyleOpt && normalItemStyleOpt[styleName]) {\n opt[styleName] = opt[styleName] || {};\n\n if (!opt[styleName].normal) {\n opt[styleName].normal = normalItemStyleOpt[styleName];\n } else {\n zrUtil.merge(opt[styleName].normal, normalItemStyleOpt[styleName]);\n }\n\n normalItemStyleOpt[styleName] = null;\n }\n\n if (emphasisItemStyleOpt && emphasisItemStyleOpt[styleName]) {\n opt[styleName] = opt[styleName] || {};\n\n if (!opt[styleName].emphasis) {\n opt[styleName].emphasis = emphasisItemStyleOpt[styleName];\n } else {\n zrUtil.merge(opt[styleName].emphasis, emphasisItemStyleOpt[styleName]);\n }\n\n emphasisItemStyleOpt[styleName] = null;\n }\n }\n}\n\nfunction convertNormalEmphasis(opt, optType, useExtend) {\n if (opt && opt[optType] && (opt[optType].normal || opt[optType].emphasis)) {\n var normalOpt = opt[optType].normal;\n var emphasisOpt = opt[optType].emphasis;\n\n if (normalOpt) {\n // Timeline controlStyle has other properties besides normal and emphasis\n if (useExtend) {\n opt[optType].normal = opt[optType].emphasis = null;\n zrUtil.defaults(opt[optType], normalOpt);\n } else {\n opt[optType] = normalOpt;\n }\n }\n\n if (emphasisOpt) {\n opt.emphasis = opt.emphasis || {};\n opt.emphasis[optType] = emphasisOpt;\n }\n }\n}\n\nfunction removeEC3NormalStatus(opt) {\n convertNormalEmphasis(opt, 'itemStyle');\n convertNormalEmphasis(opt, 'lineStyle');\n convertNormalEmphasis(opt, 'areaStyle');\n convertNormalEmphasis(opt, 'label');\n convertNormalEmphasis(opt, 'labelLine'); // treemap\n\n convertNormalEmphasis(opt, 'upperLabel'); // graph\n\n convertNormalEmphasis(opt, 'edgeLabel');\n}\n\nfunction compatTextStyle(opt, propName) {\n // Check whether is not object (string\\null\\undefined ...)\n var labelOptSingle = isObject(opt) && opt[propName];\n var textStyle = isObject(labelOptSingle) && labelOptSingle.textStyle;\n\n if (textStyle) {\n for (var i = 0, len = modelUtil.TEXT_STYLE_OPTIONS.length; i < len; i++) {\n var propName = modelUtil.TEXT_STYLE_OPTIONS[i];\n\n if (textStyle.hasOwnProperty(propName)) {\n labelOptSingle[propName] = textStyle[propName];\n }\n }\n }\n}\n\nfunction compatEC3CommonStyles(opt) {\n if (opt) {\n removeEC3NormalStatus(opt);\n compatTextStyle(opt, 'label');\n opt.emphasis && compatTextStyle(opt.emphasis, 'label');\n }\n}\n\nfunction processSeries(seriesOpt) {\n if (!isObject(seriesOpt)) {\n return;\n }\n\n compatEC2ItemStyle(seriesOpt);\n removeEC3NormalStatus(seriesOpt);\n compatTextStyle(seriesOpt, 'label'); // treemap\n\n compatTextStyle(seriesOpt, 'upperLabel'); // graph\n\n compatTextStyle(seriesOpt, 'edgeLabel');\n\n if (seriesOpt.emphasis) {\n compatTextStyle(seriesOpt.emphasis, 'label'); // treemap\n\n compatTextStyle(seriesOpt.emphasis, 'upperLabel'); // graph\n\n compatTextStyle(seriesOpt.emphasis, 'edgeLabel');\n }\n\n var markPoint = seriesOpt.markPoint;\n\n if (markPoint) {\n compatEC2ItemStyle(markPoint);\n compatEC3CommonStyles(markPoint);\n }\n\n var markLine = seriesOpt.markLine;\n\n if (markLine) {\n compatEC2ItemStyle(markLine);\n compatEC3CommonStyles(markLine);\n }\n\n var markArea = seriesOpt.markArea;\n\n if (markArea) {\n compatEC3CommonStyles(markArea);\n }\n\n var data = seriesOpt.data; // Break with ec3: if `setOption` again, there may be no `type` in option,\n // then the backward compat based on option type will not be performed.\n\n if (seriesOpt.type === 'graph') {\n data = data || seriesOpt.nodes;\n var edgeData = seriesOpt.links || seriesOpt.edges;\n\n if (edgeData && !zrUtil.isTypedArray(edgeData)) {\n for (var i = 0; i < edgeData.length; i++) {\n compatEC3CommonStyles(edgeData[i]);\n }\n }\n\n zrUtil.each(seriesOpt.categories, function (opt) {\n removeEC3NormalStatus(opt);\n });\n }\n\n if (data && !zrUtil.isTypedArray(data)) {\n for (var i = 0; i < data.length; i++) {\n compatEC3CommonStyles(data[i]);\n }\n } // mark point data\n\n\n var markPoint = seriesOpt.markPoint;\n\n if (markPoint && markPoint.data) {\n var mpData = markPoint.data;\n\n for (var i = 0; i < mpData.length; i++) {\n compatEC3CommonStyles(mpData[i]);\n }\n } // mark line data\n\n\n var markLine = seriesOpt.markLine;\n\n if (markLine && markLine.data) {\n var mlData = markLine.data;\n\n for (var i = 0; i < mlData.length; i++) {\n if (zrUtil.isArray(mlData[i])) {\n compatEC3CommonStyles(mlData[i][0]);\n compatEC3CommonStyles(mlData[i][1]);\n } else {\n compatEC3CommonStyles(mlData[i]);\n }\n }\n } // Series\n\n\n if (seriesOpt.type === 'gauge') {\n compatTextStyle(seriesOpt, 'axisLabel');\n compatTextStyle(seriesOpt, 'title');\n compatTextStyle(seriesOpt, 'detail');\n } else if (seriesOpt.type === 'treemap') {\n convertNormalEmphasis(seriesOpt.breadcrumb, 'itemStyle');\n zrUtil.each(seriesOpt.levels, function (opt) {\n removeEC3NormalStatus(opt);\n });\n } else if (seriesOpt.type === 'tree') {\n removeEC3NormalStatus(seriesOpt.leaves);\n } // sunburst starts from ec4, so it does not need to compat levels.\n\n}\n\nfunction toArr(o) {\n return zrUtil.isArray(o) ? o : o ? [o] : [];\n}\n\nfunction toObj(o) {\n return (zrUtil.isArray(o) ? o[0] : o) || {};\n}\n\nfunction _default(option, isTheme) {\n each(toArr(option.series), function (seriesOpt) {\n isObject(seriesOpt) && processSeries(seriesOpt);\n });\n var axes = ['xAxis', 'yAxis', 'radiusAxis', 'angleAxis', 'singleAxis', 'parallelAxis', 'radar'];\n isTheme && axes.push('valueAxis', 'categoryAxis', 'logAxis', 'timeAxis');\n each(axes, function (axisName) {\n each(toArr(option[axisName]), function (axisOpt) {\n if (axisOpt) {\n compatTextStyle(axisOpt, 'axisLabel');\n compatTextStyle(axisOpt.axisPointer, 'label');\n }\n });\n });\n each(toArr(option.parallel), function (parallelOpt) {\n var parallelAxisDefault = parallelOpt && parallelOpt.parallelAxisDefault;\n compatTextStyle(parallelAxisDefault, 'axisLabel');\n compatTextStyle(parallelAxisDefault && parallelAxisDefault.axisPointer, 'label');\n });\n each(toArr(option.calendar), function (calendarOpt) {\n convertNormalEmphasis(calendarOpt, 'itemStyle');\n compatTextStyle(calendarOpt, 'dayLabel');\n compatTextStyle(calendarOpt, 'monthLabel');\n compatTextStyle(calendarOpt, 'yearLabel');\n }); // radar.name.textStyle\n\n each(toArr(option.radar), function (radarOpt) {\n compatTextStyle(radarOpt, 'name');\n });\n each(toArr(option.geo), function (geoOpt) {\n if (isObject(geoOpt)) {\n compatEC3CommonStyles(geoOpt);\n each(toArr(geoOpt.regions), function (regionObj) {\n compatEC3CommonStyles(regionObj);\n });\n }\n });\n each(toArr(option.timeline), function (timelineOpt) {\n compatEC3CommonStyles(timelineOpt);\n convertNormalEmphasis(timelineOpt, 'label');\n convertNormalEmphasis(timelineOpt, 'itemStyle');\n convertNormalEmphasis(timelineOpt, 'controlStyle', true);\n var data = timelineOpt.data;\n zrUtil.isArray(data) && zrUtil.each(data, function (item) {\n if (zrUtil.isObject(item)) {\n convertNormalEmphasis(item, 'label');\n convertNormalEmphasis(item, 'itemStyle');\n }\n });\n });\n each(toArr(option.toolbox), function (toolboxOpt) {\n convertNormalEmphasis(toolboxOpt, 'iconStyle');\n each(toolboxOpt.feature, function (featureOpt) {\n convertNormalEmphasis(featureOpt, 'iconStyle');\n });\n });\n compatTextStyle(toObj(option.axisPointer), 'label');\n compatTextStyle(toObj(option.tooltip).axisPointer, 'label');\n}\n\nmodule.exports = _default;","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!./TodoTaskHandlerSidebar.vue?vue&type=style&index=0&lang=scss&\"","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// TODO Parse shadow style\n// TODO Only shallow path support\nfunction _default(properties) {\n // Normalize\n for (var i = 0; i < properties.length; i++) {\n if (!properties[i][1]) {\n properties[i][1] = properties[i][0];\n }\n }\n\n return function (model, excludes, includes) {\n var style = {};\n\n for (var i = 0; i < properties.length; i++) {\n var propName = properties[i][1];\n\n if (excludes && zrUtil.indexOf(excludes, propName) >= 0 || includes && zrUtil.indexOf(includes, propName) < 0) {\n continue;\n }\n\n var val = model.getShallow(propName);\n\n if (val != null) {\n style[properties[i][0]] = val;\n }\n }\n\n return style;\n };\n}\n\nmodule.exports = _default;","module.exports = __webpack_public_path__ + \"img/1-small.1b74d2ba.png\";","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Language: (Simplified) Chinese.\n */\nvar _default = {\n legend: {\n selector: {\n all: '全选',\n inverse: '反选'\n }\n },\n toolbox: {\n brush: {\n title: {\n rect: '矩形选择',\n polygon: '圈选',\n lineX: '横向选择',\n lineY: '纵向选择',\n keep: '保持选择',\n clear: '清除选择'\n }\n },\n dataView: {\n title: '数据视图',\n lang: ['数据视图', '关闭', '刷新']\n },\n dataZoom: {\n title: {\n zoom: '区域缩放',\n back: '区域缩放还原'\n }\n },\n magicType: {\n title: {\n line: '切换为折线图',\n bar: '切换为柱状图',\n stack: '切换为堆叠',\n tiled: '切换为平铺'\n }\n },\n restore: {\n title: '还原'\n },\n saveAsImage: {\n title: '保存为图片',\n lang: ['右键另存为图片']\n }\n },\n series: {\n typeNames: {\n pie: '饼图',\n bar: '柱状图',\n line: '折线图',\n scatter: '散点图',\n effectScatter: '涟漪散点图',\n radar: '雷达图',\n tree: '树图',\n treemap: '矩形树图',\n boxplot: '箱型图',\n candlestick: 'K线图',\n k: 'K线图',\n heatmap: '热力图',\n map: '地图',\n parallel: '平行坐标图',\n lines: '线图',\n graph: '关系图',\n sankey: '桑基图',\n funnel: '漏斗图',\n gauge: '仪表盘图',\n pictorialBar: '象形柱图',\n themeRiver: '主题河流图',\n sunburst: '旭日图'\n }\n },\n aria: {\n general: {\n withTitle: '这是一个关于“{title}”的图表。',\n withoutTitle: '这是一个图表,'\n },\n series: {\n single: {\n prefix: '',\n withName: '图表类型是{seriesType},表示{seriesName}。',\n withoutName: '图表类型是{seriesType}。'\n },\n multiple: {\n prefix: '它由{seriesCount}个图表系列组成。',\n withName: '第{seriesId}个系列是一个表示{seriesName}的{seriesType},',\n withoutName: '第{seriesId}个系列是一个{seriesType},',\n separator: {\n middle: ';',\n end: '。'\n }\n }\n },\n data: {\n allData: '其数据是——',\n partialData: '其中,前{displayCnt}项是——',\n withName: '{name}的数据是{value}',\n withoutName: '{value}',\n separator: {\n middle: ',',\n end: ''\n }\n }\n }\n};\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar isTypedArray = _util.isTypedArray;\nvar extend = _util.extend;\nvar assert = _util.assert;\nvar each = _util.each;\nvar isObject = _util.isObject;\n\nvar _model = require(\"../../util/model\");\n\nvar getDataItemValue = _model.getDataItemValue;\nvar isDataItemOption = _model.isDataItemOption;\n\nvar _number = require(\"../../util/number\");\n\nvar parseDate = _number.parseDate;\n\nvar Source = require(\"../Source\");\n\nvar _sourceType = require(\"./sourceType\");\n\nvar SOURCE_FORMAT_TYPED_ARRAY = _sourceType.SOURCE_FORMAT_TYPED_ARRAY;\nvar SOURCE_FORMAT_ARRAY_ROWS = _sourceType.SOURCE_FORMAT_ARRAY_ROWS;\nvar SOURCE_FORMAT_ORIGINAL = _sourceType.SOURCE_FORMAT_ORIGINAL;\nvar SOURCE_FORMAT_OBJECT_ROWS = _sourceType.SOURCE_FORMAT_OBJECT_ROWS;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// TODO\n// ??? refactor? check the outer usage of data provider.\n// merge with defaultDimValueGetter?\n\n/**\n * If normal array used, mutable chunk size is supported.\n * If typed array used, chunk size must be fixed.\n */\nfunction DefaultDataProvider(source, dimSize) {\n if (!Source.isInstance(source)) {\n source = Source.seriesDataToSource(source);\n }\n\n this._source = source;\n var data = this._data = source.data;\n var sourceFormat = source.sourceFormat; // Typed array. TODO IE10+?\n\n if (sourceFormat === SOURCE_FORMAT_TYPED_ARRAY) {\n this._offset = 0;\n this._dimSize = dimSize;\n this._data = data;\n }\n\n var methods = providerMethods[sourceFormat === SOURCE_FORMAT_ARRAY_ROWS ? sourceFormat + '_' + source.seriesLayoutBy : sourceFormat];\n extend(this, methods);\n}\n\nvar providerProto = DefaultDataProvider.prototype; // If data is pure without style configuration\n\nproviderProto.pure = false; // If data is persistent and will not be released after use.\n\nproviderProto.persistent = true; // ???! FIXME legacy data provider do not has method getSource\n\nproviderProto.getSource = function () {\n return this._source;\n};\n\nvar providerMethods = {\n 'arrayRows_column': {\n pure: true,\n count: function () {\n return Math.max(0, this._data.length - this._source.startIndex);\n },\n getItem: function (idx) {\n return this._data[idx + this._source.startIndex];\n },\n appendData: appendDataSimply\n },\n 'arrayRows_row': {\n pure: true,\n count: function () {\n var row = this._data[0];\n return row ? Math.max(0, row.length - this._source.startIndex) : 0;\n },\n getItem: function (idx) {\n idx += this._source.startIndex;\n var item = [];\n var data = this._data;\n\n for (var i = 0; i < data.length; i++) {\n var row = data[i];\n item.push(row ? row[idx] : null);\n }\n\n return item;\n },\n appendData: function () {\n throw new Error('Do not support appendData when set seriesLayoutBy: \"row\".');\n }\n },\n 'objectRows': {\n pure: true,\n count: countSimply,\n getItem: getItemSimply,\n appendData: appendDataSimply\n },\n 'keyedColumns': {\n pure: true,\n count: function () {\n var dimName = this._source.dimensionsDefine[0].name;\n var col = this._data[dimName];\n return col ? col.length : 0;\n },\n getItem: function (idx) {\n var item = [];\n var dims = this._source.dimensionsDefine;\n\n for (var i = 0; i < dims.length; i++) {\n var col = this._data[dims[i].name];\n item.push(col ? col[idx] : null);\n }\n\n return item;\n },\n appendData: function (newData) {\n var data = this._data;\n each(newData, function (newCol, key) {\n var oldCol = data[key] || (data[key] = []);\n\n for (var i = 0; i < (newCol || []).length; i++) {\n oldCol.push(newCol[i]);\n }\n });\n }\n },\n 'original': {\n count: countSimply,\n getItem: getItemSimply,\n appendData: appendDataSimply\n },\n 'typedArray': {\n persistent: false,\n pure: true,\n count: function () {\n return this._data ? this._data.length / this._dimSize : 0;\n },\n getItem: function (idx, out) {\n idx = idx - this._offset;\n out = out || [];\n var offset = this._dimSize * idx;\n\n for (var i = 0; i < this._dimSize; i++) {\n out[i] = this._data[offset + i];\n }\n\n return out;\n },\n appendData: function (newData) {\n this._data = newData;\n },\n // Clean self if data is already used.\n clean: function () {\n // PENDING\n this._offset += this.count();\n this._data = null;\n }\n }\n};\n\nfunction countSimply() {\n return this._data.length;\n}\n\nfunction getItemSimply(idx) {\n return this._data[idx];\n}\n\nfunction appendDataSimply(newData) {\n for (var i = 0; i < newData.length; i++) {\n this._data.push(newData[i]);\n }\n}\n\nvar rawValueGetters = {\n arrayRows: getRawValueSimply,\n objectRows: function (dataItem, dataIndex, dimIndex, dimName) {\n return dimIndex != null ? dataItem[dimName] : dataItem;\n },\n keyedColumns: getRawValueSimply,\n original: function (dataItem, dataIndex, dimIndex, dimName) {\n // FIXME\n // In some case (markpoint in geo (geo-map.html)), dataItem\n // is {coord: [...]}\n var value = getDataItemValue(dataItem);\n return dimIndex == null || !(value instanceof Array) ? value : value[dimIndex];\n },\n typedArray: getRawValueSimply\n};\n\nfunction getRawValueSimply(dataItem, dataIndex, dimIndex, dimName) {\n return dimIndex != null ? dataItem[dimIndex] : dataItem;\n}\n\nvar defaultDimValueGetters = {\n arrayRows: getDimValueSimply,\n objectRows: function (dataItem, dimName, dataIndex, dimIndex) {\n return converDataValue(dataItem[dimName], this._dimensionInfos[dimName]);\n },\n keyedColumns: getDimValueSimply,\n original: function (dataItem, dimName, dataIndex, dimIndex) {\n // Performance sensitive, do not use modelUtil.getDataItemValue.\n // If dataItem is an plain object with no value field, the var `value`\n // will be assigned with the object, but it will be tread correctly\n // in the `convertDataValue`.\n var value = dataItem && (dataItem.value == null ? dataItem : dataItem.value); // If any dataItem is like { value: 10 }\n\n if (!this._rawData.pure && isDataItemOption(dataItem)) {\n this.hasItemOption = true;\n }\n\n return converDataValue(value instanceof Array ? value[dimIndex] // If value is a single number or something else not array.\n : value, this._dimensionInfos[dimName]);\n },\n typedArray: function (dataItem, dimName, dataIndex, dimIndex) {\n return dataItem[dimIndex];\n }\n};\n\nfunction getDimValueSimply(dataItem, dimName, dataIndex, dimIndex) {\n return converDataValue(dataItem[dimIndex], this._dimensionInfos[dimName]);\n}\n/**\n * This helper method convert value in data.\n * @param {string|number|Date} value\n * @param {Object|string} [dimInfo] If string (like 'x'), dimType defaults 'number'.\n * If \"dimInfo.ordinalParseAndSave\", ordinal value can be parsed.\n */\n\n\nfunction converDataValue(value, dimInfo) {\n // Performance sensitive.\n var dimType = dimInfo && dimInfo.type;\n\n if (dimType === 'ordinal') {\n // If given value is a category string\n var ordinalMeta = dimInfo && dimInfo.ordinalMeta;\n return ordinalMeta ? ordinalMeta.parseAndCollect(value) : value;\n }\n\n if (dimType === 'time' // spead up when using timestamp\n && typeof value !== 'number' && value != null && value !== '-') {\n value = +parseDate(value);\n } // dimType defaults 'number'.\n // If dimType is not ordinal and value is null or undefined or NaN or '-',\n // parse to NaN.\n\n\n return value == null || value === '' ? NaN // If string (like '-'), using '+' parse to NaN\n // If object, also parse to NaN\n : +value;\n} // ??? FIXME can these logic be more neat: getRawValue, getRawDataItem,\n// Consider persistent.\n// Caution: why use raw value to display on label or tooltip?\n// A reason is to avoid format. For example time value we do not know\n// how to format is expected. More over, if stack is used, calculated\n// value may be 0.91000000001, which have brings trouble to display.\n// TODO: consider how to treat null/undefined/NaN when display?\n\n/**\n * @param {module:echarts/data/List} data\n * @param {number} dataIndex\n * @param {string|number} [dim] dimName or dimIndex\n * @return {Array.|string|number} can be null/undefined.\n */\n\n\nfunction retrieveRawValue(data, dataIndex, dim) {\n if (!data) {\n return;\n } // Consider data may be not persistent.\n\n\n var dataItem = data.getRawDataItem(dataIndex);\n\n if (dataItem == null) {\n return;\n }\n\n var sourceFormat = data.getProvider().getSource().sourceFormat;\n var dimName;\n var dimIndex;\n var dimInfo = data.getDimensionInfo(dim);\n\n if (dimInfo) {\n dimName = dimInfo.name;\n dimIndex = dimInfo.index;\n }\n\n return rawValueGetters[sourceFormat](dataItem, dataIndex, dimIndex, dimName);\n}\n/**\n * Compatible with some cases (in pie, map) like:\n * data: [{name: 'xx', value: 5, selected: true}, ...]\n * where only sourceFormat is 'original' and 'objectRows' supported.\n *\n * ??? TODO\n * Supported detail options in data item when using 'arrayRows'.\n *\n * @param {module:echarts/data/List} data\n * @param {number} dataIndex\n * @param {string} attr like 'selected'\n */\n\n\nfunction retrieveRawAttr(data, dataIndex, attr) {\n if (!data) {\n return;\n }\n\n var sourceFormat = data.getProvider().getSource().sourceFormat;\n\n if (sourceFormat !== SOURCE_FORMAT_ORIGINAL && sourceFormat !== SOURCE_FORMAT_OBJECT_ROWS) {\n return;\n }\n\n var dataItem = data.getRawDataItem(dataIndex);\n\n if (sourceFormat === SOURCE_FORMAT_ORIGINAL && !isObject(dataItem)) {\n dataItem = null;\n }\n\n if (dataItem) {\n return dataItem[attr];\n }\n}\n\nexports.DefaultDataProvider = DefaultDataProvider;\nexports.defaultDimValueGetters = defaultDimValueGetters;\nexports.retrieveRawValue = retrieveRawValue;\nexports.retrieveRawAttr = retrieveRawAttr;","var fixShadow = require(\"./helper/fixShadow\");\n\nvar _constant = require(\"./constant\");\n\nvar ContextCachedBy = _constant.ContextCachedBy;\nvar STYLE_COMMON_PROPS = [['shadowBlur', 0], ['shadowOffsetX', 0], ['shadowOffsetY', 0], ['shadowColor', '#000'], ['lineCap', 'butt'], ['lineJoin', 'miter'], ['miterLimit', 10]]; // var SHADOW_PROPS = STYLE_COMMON_PROPS.slice(0, 4);\n// var LINE_PROPS = STYLE_COMMON_PROPS.slice(4);\n\nvar Style = function (opts) {\n this.extendFrom(opts, false);\n};\n\nfunction createLinearGradient(ctx, obj, rect) {\n var x = obj.x == null ? 0 : obj.x;\n var x2 = obj.x2 == null ? 1 : obj.x2;\n var y = obj.y == null ? 0 : obj.y;\n var y2 = obj.y2 == null ? 0 : obj.y2;\n\n if (!obj.global) {\n x = x * rect.width + rect.x;\n x2 = x2 * rect.width + rect.x;\n y = y * rect.height + rect.y;\n y2 = y2 * rect.height + rect.y;\n } // Fix NaN when rect is Infinity\n\n\n x = isNaN(x) ? 0 : x;\n x2 = isNaN(x2) ? 1 : x2;\n y = isNaN(y) ? 0 : y;\n y2 = isNaN(y2) ? 0 : y2;\n var canvasGradient = ctx.createLinearGradient(x, y, x2, y2);\n return canvasGradient;\n}\n\nfunction createRadialGradient(ctx, obj, rect) {\n var width = rect.width;\n var height = rect.height;\n var min = Math.min(width, height);\n var x = obj.x == null ? 0.5 : obj.x;\n var y = obj.y == null ? 0.5 : obj.y;\n var r = obj.r == null ? 0.5 : obj.r;\n\n if (!obj.global) {\n x = x * width + rect.x;\n y = y * height + rect.y;\n r = r * min;\n }\n\n var canvasGradient = ctx.createRadialGradient(x, y, 0, x, y, r);\n return canvasGradient;\n}\n\nStyle.prototype = {\n constructor: Style,\n\n /**\n * @type {string}\n */\n fill: '#000',\n\n /**\n * @type {string}\n */\n stroke: null,\n\n /**\n * @type {number}\n */\n opacity: 1,\n\n /**\n * @type {number}\n */\n fillOpacity: null,\n\n /**\n * @type {number}\n */\n strokeOpacity: null,\n\n /**\n * `true` is not supported.\n * `false`/`null`/`undefined` are the same.\n * `false` is used to remove lineDash in some\n * case that `null`/`undefined` can not be set.\n * (e.g., emphasis.lineStyle in echarts)\n * @type {Array.|boolean}\n */\n lineDash: null,\n\n /**\n * @type {number}\n */\n lineDashOffset: 0,\n\n /**\n * @type {number}\n */\n shadowBlur: 0,\n\n /**\n * @type {number}\n */\n shadowOffsetX: 0,\n\n /**\n * @type {number}\n */\n shadowOffsetY: 0,\n\n /**\n * @type {number}\n */\n lineWidth: 1,\n\n /**\n * If stroke ignore scale\n * @type {Boolean}\n */\n strokeNoScale: false,\n // Bounding rect text configuration\n // Not affected by element transform\n\n /**\n * @type {string}\n */\n text: null,\n\n /**\n * If `fontSize` or `fontFamily` exists, `font` will be reset by\n * `fontSize`, `fontStyle`, `fontWeight`, `fontFamily`.\n * So do not visit it directly in upper application (like echarts),\n * but use `contain/text#makeFont` instead.\n * @type {string}\n */\n font: null,\n\n /**\n * The same as font. Use font please.\n * @deprecated\n * @type {string}\n */\n textFont: null,\n\n /**\n * It helps merging respectively, rather than parsing an entire font string.\n * @type {string}\n */\n fontStyle: null,\n\n /**\n * It helps merging respectively, rather than parsing an entire font string.\n * @type {string}\n */\n fontWeight: null,\n\n /**\n * It helps merging respectively, rather than parsing an entire font string.\n * Should be 12 but not '12px'.\n * @type {number}\n */\n fontSize: null,\n\n /**\n * It helps merging respectively, rather than parsing an entire font string.\n * @type {string}\n */\n fontFamily: null,\n\n /**\n * Reserved for special functinality, like 'hr'.\n * @type {string}\n */\n textTag: null,\n\n /**\n * @type {string}\n */\n textFill: '#000',\n\n /**\n * @type {string}\n */\n textStroke: null,\n\n /**\n * @type {number}\n */\n textWidth: null,\n\n /**\n * Only for textBackground.\n * @type {number}\n */\n textHeight: null,\n\n /**\n * textStroke may be set as some color as a default\n * value in upper applicaion, where the default value\n * of textStrokeWidth should be 0 to make sure that\n * user can choose to do not use text stroke.\n * @type {number}\n */\n textStrokeWidth: 0,\n\n /**\n * @type {number}\n */\n textLineHeight: null,\n\n /**\n * 'inside', 'left', 'right', 'top', 'bottom'\n * [x, y]\n * Based on x, y of rect.\n * @type {string|Array.}\n * @default 'inside'\n */\n textPosition: 'inside',\n\n /**\n * If not specified, use the boundingRect of a `displayable`.\n * @type {Object}\n */\n textRect: null,\n\n /**\n * [x, y]\n * @type {Array.}\n */\n textOffset: null,\n\n /**\n * @type {string}\n */\n textAlign: null,\n\n /**\n * @type {string}\n */\n textVerticalAlign: null,\n\n /**\n * @type {number}\n */\n textDistance: 5,\n\n /**\n * @type {string}\n */\n textShadowColor: 'transparent',\n\n /**\n * @type {number}\n */\n textShadowBlur: 0,\n\n /**\n * @type {number}\n */\n textShadowOffsetX: 0,\n\n /**\n * @type {number}\n */\n textShadowOffsetY: 0,\n\n /**\n * @type {string}\n */\n textBoxShadowColor: 'transparent',\n\n /**\n * @type {number}\n */\n textBoxShadowBlur: 0,\n\n /**\n * @type {number}\n */\n textBoxShadowOffsetX: 0,\n\n /**\n * @type {number}\n */\n textBoxShadowOffsetY: 0,\n\n /**\n * Whether transform text.\n * Only available in Path and Image element,\n * where the text is called as `RectText`.\n * @type {boolean}\n */\n transformText: false,\n\n /**\n * Text rotate around position of Path or Image.\n * The origin of the rotation can be specified by `textOrigin`.\n * Only available in Path and Image element,\n * where the text is called as `RectText`.\n */\n textRotation: 0,\n\n /**\n * Text origin of text rotation.\n * Useful in the case like label rotation of circular symbol.\n * Only available in Path and Image element, where the text is called\n * as `RectText` and the element is called as \"host element\".\n * The value can be:\n * + If specified as a coordinate like `[10, 40]`, it is the `[x, y]`\n * base on the left-top corner of the rect of its host element.\n * + If specified as a string `center`, it is the center of the rect of\n * its host element.\n * + By default, this origin is the `textPosition`.\n * @type {string|Array.}\n */\n textOrigin: null,\n\n /**\n * @type {string}\n */\n textBackgroundColor: null,\n\n /**\n * @type {string}\n */\n textBorderColor: null,\n\n /**\n * @type {number}\n */\n textBorderWidth: 0,\n\n /**\n * @type {number}\n */\n textBorderRadius: 0,\n\n /**\n * Can be `2` or `[2, 4]` or `[2, 3, 4, 5]`\n * @type {number|Array.}\n */\n textPadding: null,\n\n /**\n * Text styles for rich text.\n * @type {Object}\n */\n rich: null,\n\n /**\n * {outerWidth, outerHeight, ellipsis, placeholder}\n * @type {Object}\n */\n truncate: null,\n\n /**\n * https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/globalCompositeOperation\n * @type {string}\n */\n blend: null,\n\n /**\n * @param {CanvasRenderingContext2D} ctx\n */\n bind: function (ctx, el, prevEl) {\n var style = this;\n var prevStyle = prevEl && prevEl.style; // If no prevStyle, it means first draw.\n // Only apply cache if the last time cachced by this function.\n\n var notCheckCache = !prevStyle || ctx.__attrCachedBy !== ContextCachedBy.STYLE_BIND;\n ctx.__attrCachedBy = ContextCachedBy.STYLE_BIND;\n\n for (var i = 0; i < STYLE_COMMON_PROPS.length; i++) {\n var prop = STYLE_COMMON_PROPS[i];\n var styleName = prop[0];\n\n if (notCheckCache || style[styleName] !== prevStyle[styleName]) {\n // FIXME Invalid property value will cause style leak from previous element.\n ctx[styleName] = fixShadow(ctx, styleName, style[styleName] || prop[1]);\n }\n }\n\n if (notCheckCache || style.fill !== prevStyle.fill) {\n ctx.fillStyle = style.fill;\n }\n\n if (notCheckCache || style.stroke !== prevStyle.stroke) {\n ctx.strokeStyle = style.stroke;\n }\n\n if (notCheckCache || style.opacity !== prevStyle.opacity) {\n ctx.globalAlpha = style.opacity == null ? 1 : style.opacity;\n }\n\n if (notCheckCache || style.blend !== prevStyle.blend) {\n ctx.globalCompositeOperation = style.blend || 'source-over';\n }\n\n if (this.hasStroke()) {\n var lineWidth = style.lineWidth;\n ctx.lineWidth = lineWidth / (this.strokeNoScale && el && el.getLineScale ? el.getLineScale() : 1);\n }\n },\n hasFill: function () {\n var fill = this.fill;\n return fill != null && fill !== 'none';\n },\n hasStroke: function () {\n var stroke = this.stroke;\n return stroke != null && stroke !== 'none' && this.lineWidth > 0;\n },\n\n /**\n * Extend from other style\n * @param {zrender/graphic/Style} otherStyle\n * @param {boolean} overwrite true: overwrirte any way.\n * false: overwrite only when !target.hasOwnProperty\n * others: overwrite when property is not null/undefined.\n */\n extendFrom: function (otherStyle, overwrite) {\n if (otherStyle) {\n for (var name in otherStyle) {\n if (otherStyle.hasOwnProperty(name) && (overwrite === true || (overwrite === false ? !this.hasOwnProperty(name) : otherStyle[name] != null))) {\n this[name] = otherStyle[name];\n }\n }\n }\n },\n\n /**\n * Batch setting style with a given object\n * @param {Object|string} obj\n * @param {*} [obj]\n */\n set: function (obj, value) {\n if (typeof obj === 'string') {\n this[obj] = value;\n } else {\n this.extendFrom(obj, true);\n }\n },\n\n /**\n * Clone\n * @return {zrender/graphic/Style} [description]\n */\n clone: function () {\n var newStyle = new this.constructor();\n newStyle.extendFrom(this, true);\n return newStyle;\n },\n getGradient: function (ctx, obj, rect) {\n var method = obj.type === 'radial' ? createRadialGradient : createLinearGradient;\n var canvasGradient = method(ctx, obj, rect);\n var colorStops = obj.colorStops;\n\n for (var i = 0; i < colorStops.length; i++) {\n canvasGradient.addColorStop(colorStops[i].offset, colorStops[i].color);\n }\n\n return canvasGradient;\n }\n};\nvar styleProto = Style.prototype;\n\nfor (var i = 0; i < STYLE_COMMON_PROPS.length; i++) {\n var prop = STYLE_COMMON_PROPS[i];\n\n if (!(prop[0] in styleProto)) {\n styleProto[prop[0]] = prop[1];\n }\n} // Provide for others\n\n\nStyle.getGradient = styleProto.getGradient;\nvar _default = Style;\nmodule.exports = _default;","var dpr = 1; // If in browser environment\n\nif (typeof window !== 'undefined') {\n dpr = Math.max(window.devicePixelRatio || 1, 1);\n}\n/**\n * config默认配置项\n * @exports zrender/config\n * @author Kener (@Kener-林峰, kener.linfeng@gmail.com)\n */\n\n/**\n * Debug log mode:\n * 0: Do nothing, for release.\n * 1: console.error, for debug.\n */\n\n\nvar debugMode = 0; // retina 屏幕优化\n\nvar devicePixelRatio = dpr;\nexports.debugMode = debugMode;\nexports.devicePixelRatio = devicePixelRatio;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar each = _util.each;\nvar createHashMap = _util.createHashMap;\nvar assert = _util.assert;\n\nvar _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar OTHER_DIMENSIONS = createHashMap(['tooltip', 'label', 'itemName', 'itemId', 'seriesName']);\n\nfunction summarizeDimensions(data) {\n var summary = {};\n var encode = summary.encode = {};\n var notExtraCoordDimMap = createHashMap();\n var defaultedLabel = [];\n var defaultedTooltip = []; // See the comment of `List.js#userOutput`.\n\n var userOutput = summary.userOutput = {\n dimensionNames: data.dimensions.slice(),\n encode: {}\n };\n each(data.dimensions, function (dimName) {\n var dimItem = data.getDimensionInfo(dimName);\n var coordDim = dimItem.coordDim;\n\n if (coordDim) {\n var coordDimIndex = dimItem.coordDimIndex;\n getOrCreateEncodeArr(encode, coordDim)[coordDimIndex] = dimName;\n\n if (!dimItem.isExtraCoord) {\n notExtraCoordDimMap.set(coordDim, 1); // Use the last coord dim (and label friendly) as default label,\n // because when dataset is used, it is hard to guess which dimension\n // can be value dimension. If both show x, y on label is not look good,\n // and conventionally y axis is focused more.\n\n if (mayLabelDimType(dimItem.type)) {\n defaultedLabel[0] = dimName;\n } // User output encode do not contain generated coords.\n // And it only has index. User can use index to retrieve value from the raw item array.\n\n\n getOrCreateEncodeArr(userOutput.encode, coordDim)[coordDimIndex] = dimItem.index;\n }\n\n if (dimItem.defaultTooltip) {\n defaultedTooltip.push(dimName);\n }\n }\n\n OTHER_DIMENSIONS.each(function (v, otherDim) {\n var encodeArr = getOrCreateEncodeArr(encode, otherDim);\n var dimIndex = dimItem.otherDims[otherDim];\n\n if (dimIndex != null && dimIndex !== false) {\n encodeArr[dimIndex] = dimItem.name;\n }\n });\n });\n var dataDimsOnCoord = [];\n var encodeFirstDimNotExtra = {};\n notExtraCoordDimMap.each(function (v, coordDim) {\n var dimArr = encode[coordDim]; // ??? FIXME extra coord should not be set in dataDimsOnCoord.\n // But should fix the case that radar axes: simplify the logic\n // of `completeDimension`, remove `extraPrefix`.\n\n encodeFirstDimNotExtra[coordDim] = dimArr[0]; // Not necessary to remove duplicate, because a data\n // dim canot on more than one coordDim.\n\n dataDimsOnCoord = dataDimsOnCoord.concat(dimArr);\n });\n summary.dataDimsOnCoord = dataDimsOnCoord;\n summary.encodeFirstDimNotExtra = encodeFirstDimNotExtra;\n var encodeLabel = encode.label; // FIXME `encode.label` is not recommanded, because formatter can not be set\n // in this way. Use label.formatter instead. May be remove this approach someday.\n\n if (encodeLabel && encodeLabel.length) {\n defaultedLabel = encodeLabel.slice();\n }\n\n var encodeTooltip = encode.tooltip;\n\n if (encodeTooltip && encodeTooltip.length) {\n defaultedTooltip = encodeTooltip.slice();\n } else if (!defaultedTooltip.length) {\n defaultedTooltip = defaultedLabel.slice();\n }\n\n encode.defaultedLabel = defaultedLabel;\n encode.defaultedTooltip = defaultedTooltip;\n return summary;\n}\n\nfunction getOrCreateEncodeArr(encode, dim) {\n if (!encode.hasOwnProperty(dim)) {\n encode[dim] = [];\n }\n\n return encode[dim];\n}\n\nfunction getDimensionTypeByAxis(axisType) {\n return axisType === 'category' ? 'ordinal' : axisType === 'time' ? 'time' : 'float';\n}\n\nfunction mayLabelDimType(dimType) {\n // In most cases, ordinal and time do not suitable for label.\n // Ordinal info can be displayed on axis. Time is too long.\n return !(dimType === 'ordinal' || dimType === 'time');\n} // function findTheLastDimMayLabel(data) {\n// // Get last value dim\n// var dimensions = data.dimensions.slice();\n// var valueType;\n// var valueDim;\n// while (dimensions.length && (\n// valueDim = dimensions.pop(),\n// valueType = data.getDimensionInfo(valueDim).type,\n// valueType === 'ordinal' || valueType === 'time'\n// )) {} // jshint ignore:line\n// return valueDim;\n// }\n\n\nexports.OTHER_DIMENSIONS = OTHER_DIMENSIONS;\nexports.summarizeDimensions = summarizeDimensions;\nexports.getDimensionTypeByAxis = getDimensionTypeByAxis;","var Group = require(\"../container/Group\");\n\nvar ZImage = require(\"../graphic/Image\");\n\nvar Text = require(\"../graphic/Text\");\n\nvar Circle = require(\"../graphic/shape/Circle\");\n\nvar Rect = require(\"../graphic/shape/Rect\");\n\nvar Ellipse = require(\"../graphic/shape/Ellipse\");\n\nvar Line = require(\"../graphic/shape/Line\");\n\nvar Path = require(\"../graphic/Path\");\n\nvar Polygon = require(\"../graphic/shape/Polygon\");\n\nvar Polyline = require(\"../graphic/shape/Polyline\");\n\nvar LinearGradient = require(\"../graphic/LinearGradient\");\n\nvar Style = require(\"../graphic/Style\");\n\nvar matrix = require(\"../core/matrix\");\n\nvar _path = require(\"./path\");\n\nvar createFromString = _path.createFromString;\n\nvar _util = require(\"../core/util\");\n\nvar isString = _util.isString;\nvar extend = _util.extend;\nvar defaults = _util.defaults;\nvar trim = _util.trim;\nvar each = _util.each;\n// import RadialGradient from '../graphic/RadialGradient';\n// import Pattern from '../graphic/Pattern';\n// import * as vector from '../core/vector';\n// Most of the values can be separated by comma and/or white space.\nvar DILIMITER_REG = /[\\s,]+/;\n/**\n * For big svg string, this method might be time consuming.\n *\n * @param {string} svg xml string\n * @return {Object} xml root.\n */\n\nfunction parseXML(svg) {\n if (isString(svg)) {\n var parser = new DOMParser();\n svg = parser.parseFromString(svg, 'text/xml');\n } // Document node. If using $.get, doc node may be input.\n\n\n if (svg.nodeType === 9) {\n svg = svg.firstChild;\n } // nodeName of is also 'svg'.\n\n\n while (svg.nodeName.toLowerCase() !== 'svg' || svg.nodeType !== 1) {\n svg = svg.nextSibling;\n }\n\n return svg;\n}\n\nfunction SVGParser() {\n this._defs = {};\n this._root = null;\n this._isDefine = false;\n this._isText = false;\n}\n\nSVGParser.prototype.parse = function (xml, opt) {\n opt = opt || {};\n var svg = parseXML(xml);\n\n if (!svg) {\n throw new Error('Illegal svg');\n }\n\n var root = new Group();\n this._root = root; // parse view port\n\n var viewBox = svg.getAttribute('viewBox') || ''; // If width/height not specified, means \"100%\" of `opt.width/height`.\n // TODO: Other percent value not supported yet.\n\n var width = parseFloat(svg.getAttribute('width') || opt.width);\n var height = parseFloat(svg.getAttribute('height') || opt.height); // If width/height not specified, set as null for output.\n\n isNaN(width) && (width = null);\n isNaN(height) && (height = null); // Apply inline style on svg element.\n\n parseAttributes(svg, root, null, true);\n var child = svg.firstChild;\n\n while (child) {\n this._parseNode(child, root);\n\n child = child.nextSibling;\n }\n\n var viewBoxRect;\n var viewBoxTransform;\n\n if (viewBox) {\n var viewBoxArr = trim(viewBox).split(DILIMITER_REG); // Some invalid case like viewBox: 'none'.\n\n if (viewBoxArr.length >= 4) {\n viewBoxRect = {\n x: parseFloat(viewBoxArr[0] || 0),\n y: parseFloat(viewBoxArr[1] || 0),\n width: parseFloat(viewBoxArr[2]),\n height: parseFloat(viewBoxArr[3])\n };\n }\n }\n\n if (viewBoxRect && width != null && height != null) {\n viewBoxTransform = makeViewBoxTransform(viewBoxRect, width, height);\n\n if (!opt.ignoreViewBox) {\n // If set transform on the output group, it probably bring trouble when\n // some users only intend to show the clipped content inside the viewBox,\n // but not intend to transform the output group. So we keep the output\n // group no transform. If the user intend to use the viewBox as a\n // camera, just set `opt.ignoreViewBox` as `true` and set transfrom\n // manually according to the viewBox info in the output of this method.\n var elRoot = root;\n root = new Group();\n root.add(elRoot);\n elRoot.scale = viewBoxTransform.scale.slice();\n elRoot.position = viewBoxTransform.position.slice();\n }\n } // Some shapes might be overflow the viewport, which should be\n // clipped despite whether the viewBox is used, as the SVG does.\n\n\n if (!opt.ignoreRootClip && width != null && height != null) {\n root.setClipPath(new Rect({\n shape: {\n x: 0,\n y: 0,\n width: width,\n height: height\n }\n }));\n } // Set width/height on group just for output the viewport size.\n\n\n return {\n root: root,\n width: width,\n height: height,\n viewBoxRect: viewBoxRect,\n viewBoxTransform: viewBoxTransform\n };\n};\n\nSVGParser.prototype._parseNode = function (xmlNode, parentGroup) {\n var nodeName = xmlNode.nodeName.toLowerCase(); // TODO\n // support in svg, where nodeName is 'style',\n // CSS classes is defined globally wherever the style tags are declared.\n\n if (nodeName === 'defs') {\n // define flag\n this._isDefine = true;\n } else if (nodeName === 'text') {\n this._isText = true;\n }\n\n var el;\n\n if (this._isDefine) {\n var parser = defineParsers[nodeName];\n\n if (parser) {\n var def = parser.call(this, xmlNode);\n var id = xmlNode.getAttribute('id');\n\n if (id) {\n this._defs[id] = def;\n }\n }\n } else {\n var parser = nodeParsers[nodeName];\n\n if (parser) {\n el = parser.call(this, xmlNode, parentGroup);\n parentGroup.add(el);\n }\n }\n\n var child = xmlNode.firstChild;\n\n while (child) {\n if (child.nodeType === 1) {\n this._parseNode(child, el);\n } // Is text\n\n\n if (child.nodeType === 3 && this._isText) {\n this._parseText(child, el);\n }\n\n child = child.nextSibling;\n } // Quit define\n\n\n if (nodeName === 'defs') {\n this._isDefine = false;\n } else if (nodeName === 'text') {\n this._isText = false;\n }\n};\n\nSVGParser.prototype._parseText = function (xmlNode, parentGroup) {\n if (xmlNode.nodeType === 1) {\n var dx = xmlNode.getAttribute('dx') || 0;\n var dy = xmlNode.getAttribute('dy') || 0;\n this._textX += parseFloat(dx);\n this._textY += parseFloat(dy);\n }\n\n var text = new Text({\n style: {\n text: xmlNode.textContent,\n transformText: true\n },\n position: [this._textX || 0, this._textY || 0]\n });\n inheritStyle(parentGroup, text);\n parseAttributes(xmlNode, text, this._defs);\n var fontSize = text.style.fontSize;\n\n if (fontSize && fontSize < 9) {\n // PENDING\n text.style.fontSize = 9;\n text.scale = text.scale || [1, 1];\n text.scale[0] *= fontSize / 9;\n text.scale[1] *= fontSize / 9;\n }\n\n var rect = text.getBoundingRect();\n this._textX += rect.width;\n parentGroup.add(text);\n return text;\n};\n\nvar nodeParsers = {\n 'g': function (xmlNode, parentGroup) {\n var g = new Group();\n inheritStyle(parentGroup, g);\n parseAttributes(xmlNode, g, this._defs);\n return g;\n },\n 'rect': function (xmlNode, parentGroup) {\n var rect = new Rect();\n inheritStyle(parentGroup, rect);\n parseAttributes(xmlNode, rect, this._defs);\n rect.setShape({\n x: parseFloat(xmlNode.getAttribute('x') || 0),\n y: parseFloat(xmlNode.getAttribute('y') || 0),\n width: parseFloat(xmlNode.getAttribute('width') || 0),\n height: parseFloat(xmlNode.getAttribute('height') || 0)\n }); // console.log(xmlNode.getAttribute('transform'));\n // console.log(rect.transform);\n\n return rect;\n },\n 'circle': function (xmlNode, parentGroup) {\n var circle = new Circle();\n inheritStyle(parentGroup, circle);\n parseAttributes(xmlNode, circle, this._defs);\n circle.setShape({\n cx: parseFloat(xmlNode.getAttribute('cx') || 0),\n cy: parseFloat(xmlNode.getAttribute('cy') || 0),\n r: parseFloat(xmlNode.getAttribute('r') || 0)\n });\n return circle;\n },\n 'line': function (xmlNode, parentGroup) {\n var line = new Line();\n inheritStyle(parentGroup, line);\n parseAttributes(xmlNode, line, this._defs);\n line.setShape({\n x1: parseFloat(xmlNode.getAttribute('x1') || 0),\n y1: parseFloat(xmlNode.getAttribute('y1') || 0),\n x2: parseFloat(xmlNode.getAttribute('x2') || 0),\n y2: parseFloat(xmlNode.getAttribute('y2') || 0)\n });\n return line;\n },\n 'ellipse': function (xmlNode, parentGroup) {\n var ellipse = new Ellipse();\n inheritStyle(parentGroup, ellipse);\n parseAttributes(xmlNode, ellipse, this._defs);\n ellipse.setShape({\n cx: parseFloat(xmlNode.getAttribute('cx') || 0),\n cy: parseFloat(xmlNode.getAttribute('cy') || 0),\n rx: parseFloat(xmlNode.getAttribute('rx') || 0),\n ry: parseFloat(xmlNode.getAttribute('ry') || 0)\n });\n return ellipse;\n },\n 'polygon': function (xmlNode, parentGroup) {\n var points = xmlNode.getAttribute('points');\n\n if (points) {\n points = parsePoints(points);\n }\n\n var polygon = new Polygon({\n shape: {\n points: points || []\n }\n });\n inheritStyle(parentGroup, polygon);\n parseAttributes(xmlNode, polygon, this._defs);\n return polygon;\n },\n 'polyline': function (xmlNode, parentGroup) {\n var path = new Path();\n inheritStyle(parentGroup, path);\n parseAttributes(xmlNode, path, this._defs);\n var points = xmlNode.getAttribute('points');\n\n if (points) {\n points = parsePoints(points);\n }\n\n var polyline = new Polyline({\n shape: {\n points: points || []\n }\n });\n return polyline;\n },\n 'image': function (xmlNode, parentGroup) {\n var img = new ZImage();\n inheritStyle(parentGroup, img);\n parseAttributes(xmlNode, img, this._defs);\n img.setStyle({\n image: xmlNode.getAttribute('xlink:href'),\n x: xmlNode.getAttribute('x'),\n y: xmlNode.getAttribute('y'),\n width: xmlNode.getAttribute('width'),\n height: xmlNode.getAttribute('height')\n });\n return img;\n },\n 'text': function (xmlNode, parentGroup) {\n var x = xmlNode.getAttribute('x') || 0;\n var y = xmlNode.getAttribute('y') || 0;\n var dx = xmlNode.getAttribute('dx') || 0;\n var dy = xmlNode.getAttribute('dy') || 0;\n this._textX = parseFloat(x) + parseFloat(dx);\n this._textY = parseFloat(y) + parseFloat(dy);\n var g = new Group();\n inheritStyle(parentGroup, g);\n parseAttributes(xmlNode, g, this._defs);\n return g;\n },\n 'tspan': function (xmlNode, parentGroup) {\n var x = xmlNode.getAttribute('x');\n var y = xmlNode.getAttribute('y');\n\n if (x != null) {\n // new offset x\n this._textX = parseFloat(x);\n }\n\n if (y != null) {\n // new offset y\n this._textY = parseFloat(y);\n }\n\n var dx = xmlNode.getAttribute('dx') || 0;\n var dy = xmlNode.getAttribute('dy') || 0;\n var g = new Group();\n inheritStyle(parentGroup, g);\n parseAttributes(xmlNode, g, this._defs);\n this._textX += dx;\n this._textY += dy;\n return g;\n },\n 'path': function (xmlNode, parentGroup) {\n // TODO svg fill rule\n // https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/fill-rule\n // path.style.globalCompositeOperation = 'xor';\n var d = xmlNode.getAttribute('d') || ''; // Performance sensitive.\n\n var path = createFromString(d);\n inheritStyle(parentGroup, path);\n parseAttributes(xmlNode, path, this._defs);\n return path;\n }\n};\nvar defineParsers = {\n 'lineargradient': function (xmlNode) {\n var x1 = parseInt(xmlNode.getAttribute('x1') || 0, 10);\n var y1 = parseInt(xmlNode.getAttribute('y1') || 0, 10);\n var x2 = parseInt(xmlNode.getAttribute('x2') || 10, 10);\n var y2 = parseInt(xmlNode.getAttribute('y2') || 0, 10);\n var gradient = new LinearGradient(x1, y1, x2, y2);\n\n _parseGradientColorStops(xmlNode, gradient);\n\n return gradient;\n },\n 'radialgradient': function (xmlNode) {}\n};\n\nfunction _parseGradientColorStops(xmlNode, gradient) {\n var stop = xmlNode.firstChild;\n\n while (stop) {\n if (stop.nodeType === 1) {\n var offset = stop.getAttribute('offset');\n\n if (offset.indexOf('%') > 0) {\n // percentage\n offset = parseInt(offset, 10) / 100;\n } else if (offset) {\n // number from 0 to 1\n offset = parseFloat(offset);\n } else {\n offset = 0;\n }\n\n var stopColor = stop.getAttribute('stop-color') || '#000000';\n gradient.addColorStop(offset, stopColor);\n }\n\n stop = stop.nextSibling;\n }\n}\n\nfunction inheritStyle(parent, child) {\n if (parent && parent.__inheritedStyle) {\n if (!child.__inheritedStyle) {\n child.__inheritedStyle = {};\n }\n\n defaults(child.__inheritedStyle, parent.__inheritedStyle);\n }\n}\n\nfunction parsePoints(pointsString) {\n var list = trim(pointsString).split(DILIMITER_REG);\n var points = [];\n\n for (var i = 0; i < list.length; i += 2) {\n var x = parseFloat(list[i]);\n var y = parseFloat(list[i + 1]);\n points.push([x, y]);\n }\n\n return points;\n}\n\nvar attributesMap = {\n 'fill': 'fill',\n 'stroke': 'stroke',\n 'stroke-width': 'lineWidth',\n 'opacity': 'opacity',\n 'fill-opacity': 'fillOpacity',\n 'stroke-opacity': 'strokeOpacity',\n 'stroke-dasharray': 'lineDash',\n 'stroke-dashoffset': 'lineDashOffset',\n 'stroke-linecap': 'lineCap',\n 'stroke-linejoin': 'lineJoin',\n 'stroke-miterlimit': 'miterLimit',\n 'font-family': 'fontFamily',\n 'font-size': 'fontSize',\n 'font-style': 'fontStyle',\n 'font-weight': 'fontWeight',\n 'text-align': 'textAlign',\n 'alignment-baseline': 'textBaseline'\n};\n\nfunction parseAttributes(xmlNode, el, defs, onlyInlineStyle) {\n var zrStyle = el.__inheritedStyle || {};\n var isTextEl = el.type === 'text'; // TODO Shadow\n\n if (xmlNode.nodeType === 1) {\n parseTransformAttribute(xmlNode, el);\n extend(zrStyle, parseStyleAttribute(xmlNode));\n\n if (!onlyInlineStyle) {\n for (var svgAttrName in attributesMap) {\n if (attributesMap.hasOwnProperty(svgAttrName)) {\n var attrValue = xmlNode.getAttribute(svgAttrName);\n\n if (attrValue != null) {\n zrStyle[attributesMap[svgAttrName]] = attrValue;\n }\n }\n }\n }\n }\n\n var elFillProp = isTextEl ? 'textFill' : 'fill';\n var elStrokeProp = isTextEl ? 'textStroke' : 'stroke';\n el.style = el.style || new Style();\n var elStyle = el.style;\n zrStyle.fill != null && elStyle.set(elFillProp, getPaint(zrStyle.fill, defs));\n zrStyle.stroke != null && elStyle.set(elStrokeProp, getPaint(zrStyle.stroke, defs));\n each(['lineWidth', 'opacity', 'fillOpacity', 'strokeOpacity', 'miterLimit', 'fontSize'], function (propName) {\n var elPropName = propName === 'lineWidth' && isTextEl ? 'textStrokeWidth' : propName;\n zrStyle[propName] != null && elStyle.set(elPropName, parseFloat(zrStyle[propName]));\n });\n\n if (!zrStyle.textBaseline || zrStyle.textBaseline === 'auto') {\n zrStyle.textBaseline = 'alphabetic';\n }\n\n if (zrStyle.textBaseline === 'alphabetic') {\n zrStyle.textBaseline = 'bottom';\n }\n\n if (zrStyle.textAlign === 'start') {\n zrStyle.textAlign = 'left';\n }\n\n if (zrStyle.textAlign === 'end') {\n zrStyle.textAlign = 'right';\n }\n\n each(['lineDashOffset', 'lineCap', 'lineJoin', 'fontWeight', 'fontFamily', 'fontStyle', 'textAlign', 'textBaseline'], function (propName) {\n zrStyle[propName] != null && elStyle.set(propName, zrStyle[propName]);\n });\n\n if (zrStyle.lineDash) {\n el.style.lineDash = trim(zrStyle.lineDash).split(DILIMITER_REG);\n }\n\n if (elStyle[elStrokeProp] && elStyle[elStrokeProp] !== 'none') {\n // enable stroke\n el[elStrokeProp] = true;\n }\n\n el.__inheritedStyle = zrStyle;\n}\n\nvar urlRegex = /url\\(\\s*#(.*?)\\)/;\n\nfunction getPaint(str, defs) {\n // if (str === 'none') {\n // return;\n // }\n var urlMatch = defs && str && str.match(urlRegex);\n\n if (urlMatch) {\n var url = trim(urlMatch[1]);\n var def = defs[url];\n return def;\n }\n\n return str;\n}\n\nvar transformRegex = /(translate|scale|rotate|skewX|skewY|matrix)\\(([\\-\\s0-9\\.e,]*)\\)/g;\n\nfunction parseTransformAttribute(xmlNode, node) {\n var transform = xmlNode.getAttribute('transform');\n\n if (transform) {\n transform = transform.replace(/,/g, ' ');\n var m = null;\n var transformOps = [];\n transform.replace(transformRegex, function (str, type, value) {\n transformOps.push(type, value);\n });\n\n for (var i = transformOps.length - 1; i > 0; i -= 2) {\n var value = transformOps[i];\n var type = transformOps[i - 1];\n m = m || matrix.create();\n\n switch (type) {\n case 'translate':\n value = trim(value).split(DILIMITER_REG);\n matrix.translate(m, m, [parseFloat(value[0]), parseFloat(value[1] || 0)]);\n break;\n\n case 'scale':\n value = trim(value).split(DILIMITER_REG);\n matrix.scale(m, m, [parseFloat(value[0]), parseFloat(value[1] || value[0])]);\n break;\n\n case 'rotate':\n value = trim(value).split(DILIMITER_REG);\n matrix.rotate(m, m, parseFloat(value[0]));\n break;\n\n case 'skew':\n value = trim(value).split(DILIMITER_REG);\n console.warn('Skew transform is not supported yet');\n break;\n\n case 'matrix':\n var value = trim(value).split(DILIMITER_REG);\n m[0] = parseFloat(value[0]);\n m[1] = parseFloat(value[1]);\n m[2] = parseFloat(value[2]);\n m[3] = parseFloat(value[3]);\n m[4] = parseFloat(value[4]);\n m[5] = parseFloat(value[5]);\n break;\n }\n }\n\n node.setLocalTransform(m);\n }\n} // Value may contain space.\n\n\nvar styleRegex = /([^\\s:;]+)\\s*:\\s*([^:;]+)/g;\n\nfunction parseStyleAttribute(xmlNode) {\n var style = xmlNode.getAttribute('style');\n var result = {};\n\n if (!style) {\n return result;\n }\n\n var styleList = {};\n styleRegex.lastIndex = 0;\n var styleRegResult;\n\n while ((styleRegResult = styleRegex.exec(style)) != null) {\n styleList[styleRegResult[1]] = styleRegResult[2];\n }\n\n for (var svgAttrName in attributesMap) {\n if (attributesMap.hasOwnProperty(svgAttrName) && styleList[svgAttrName] != null) {\n result[attributesMap[svgAttrName]] = styleList[svgAttrName];\n }\n }\n\n return result;\n}\n/**\n * @param {Array.} viewBoxRect\n * @param {number} width\n * @param {number} height\n * @return {Object} {scale, position}\n */\n\n\nfunction makeViewBoxTransform(viewBoxRect, width, height) {\n var scaleX = width / viewBoxRect.width;\n var scaleY = height / viewBoxRect.height;\n var scale = Math.min(scaleX, scaleY); // preserveAspectRatio 'xMidYMid'\n\n var viewBoxScale = [scale, scale];\n var viewBoxPosition = [-(viewBoxRect.x + viewBoxRect.width / 2) * scale + width / 2, -(viewBoxRect.y + viewBoxRect.height / 2) * scale + height / 2];\n return {\n scale: viewBoxScale,\n position: viewBoxPosition\n };\n}\n/**\n * @param {string|XMLElement} xml\n * @param {Object} [opt]\n * @param {number} [opt.width] Default width if svg width not specified or is a percent value.\n * @param {number} [opt.height] Default height if svg height not specified or is a percent value.\n * @param {boolean} [opt.ignoreViewBox]\n * @param {boolean} [opt.ignoreRootClip]\n * @return {Object} result:\n * {\n * root: Group, The root of the the result tree of zrender shapes,\n * width: number, the viewport width of the SVG,\n * height: number, the viewport height of the SVG,\n * viewBoxRect: {x, y, width, height}, the declared viewBox rect of the SVG, if exists,\n * viewBoxTransform: the {scale, position} calculated by viewBox and viewport, is exists.\n * }\n */\n\n\nfunction parseSVG(xml, opt) {\n var parser = new SVGParser();\n return parser.parse(xml, opt);\n}\n\nexports.parseXML = parseXML;\nexports.makeViewBoxTransform = makeViewBoxTransform;\nexports.parseSVG = parseSVG;","var util = require(\"../core/util\");\n\nvar _event = require(\"../core/event\");\n\nvar Dispatcher = _event.Dispatcher;\n\nvar requestAnimationFrame = require(\"./requestAnimationFrame\");\n\nvar Animator = require(\"./Animator\");\n\n/**\n * Animation main class, dispatch and manage all animation controllers\n *\n * @module zrender/animation/Animation\n * @author pissang(https://github.com/pissang)\n */\n// TODO Additive animation\n// http://iosoteric.com/additive-animations-animatewithduration-in-ios-8/\n// https://developer.apple.com/videos/wwdc2014/#236\n\n/**\n * @typedef {Object} IZRenderStage\n * @property {Function} update\n */\n\n/**\n * @alias module:zrender/animation/Animation\n * @constructor\n * @param {Object} [options]\n * @param {Function} [options.onframe]\n * @param {IZRenderStage} [options.stage]\n * @example\n * var animation = new Animation();\n * var obj = {\n * x: 100,\n * y: 100\n * };\n * animation.animate(node.position)\n * .when(1000, {\n * x: 500,\n * y: 500\n * })\n * .when(2000, {\n * x: 100,\n * y: 100\n * })\n * .start('spline');\n */\nvar Animation = function (options) {\n options = options || {};\n this.stage = options.stage || {};\n\n this.onframe = options.onframe || function () {}; // private properties\n\n\n this._clips = [];\n this._running = false;\n this._time;\n this._pausedTime;\n this._pauseStart;\n this._paused = false;\n Dispatcher.call(this);\n};\n\nAnimation.prototype = {\n constructor: Animation,\n\n /**\n * Add clip\n * @param {module:zrender/animation/Clip} clip\n */\n addClip: function (clip) {\n this._clips.push(clip);\n },\n\n /**\n * Add animator\n * @param {module:zrender/animation/Animator} animator\n */\n addAnimator: function (animator) {\n animator.animation = this;\n var clips = animator.getClips();\n\n for (var i = 0; i < clips.length; i++) {\n this.addClip(clips[i]);\n }\n },\n\n /**\n * Delete animation clip\n * @param {module:zrender/animation/Clip} clip\n */\n removeClip: function (clip) {\n var idx = util.indexOf(this._clips, clip);\n\n if (idx >= 0) {\n this._clips.splice(idx, 1);\n }\n },\n\n /**\n * Delete animation clip\n * @param {module:zrender/animation/Animator} animator\n */\n removeAnimator: function (animator) {\n var clips = animator.getClips();\n\n for (var i = 0; i < clips.length; i++) {\n this.removeClip(clips[i]);\n }\n\n animator.animation = null;\n },\n _update: function () {\n var time = new Date().getTime() - this._pausedTime;\n\n var delta = time - this._time;\n var clips = this._clips;\n var len = clips.length;\n var deferredEvents = [];\n var deferredClips = [];\n\n for (var i = 0; i < len; i++) {\n var clip = clips[i];\n var e = clip.step(time, delta); // Throw out the events need to be called after\n // stage.update, like destroy\n\n if (e) {\n deferredEvents.push(e);\n deferredClips.push(clip);\n }\n } // Remove the finished clip\n\n\n for (var i = 0; i < len;) {\n if (clips[i]._needsRemove) {\n clips[i] = clips[len - 1];\n clips.pop();\n len--;\n } else {\n i++;\n }\n }\n\n len = deferredEvents.length;\n\n for (var i = 0; i < len; i++) {\n deferredClips[i].fire(deferredEvents[i]);\n }\n\n this._time = time;\n this.onframe(delta); // 'frame' should be triggered before stage, because upper application\n // depends on the sequence (e.g., echarts-stream and finish\n // event judge)\n\n this.trigger('frame', delta);\n\n if (this.stage.update) {\n this.stage.update();\n }\n },\n _startLoop: function () {\n var self = this;\n this._running = true;\n\n function step() {\n if (self._running) {\n requestAnimationFrame(step);\n !self._paused && self._update();\n }\n }\n\n requestAnimationFrame(step);\n },\n\n /**\n * Start animation.\n */\n start: function () {\n this._time = new Date().getTime();\n this._pausedTime = 0;\n\n this._startLoop();\n },\n\n /**\n * Stop animation.\n */\n stop: function () {\n this._running = false;\n },\n\n /**\n * Pause animation.\n */\n pause: function () {\n if (!this._paused) {\n this._pauseStart = new Date().getTime();\n this._paused = true;\n }\n },\n\n /**\n * Resume animation.\n */\n resume: function () {\n if (this._paused) {\n this._pausedTime += new Date().getTime() - this._pauseStart;\n this._paused = false;\n }\n },\n\n /**\n * Clear animation.\n */\n clear: function () {\n this._clips = [];\n },\n\n /**\n * Whether animation finished.\n */\n isFinished: function () {\n return !this._clips.length;\n },\n\n /**\n * Creat animator for a target, whose props can be animated.\n *\n * @param {Object} target\n * @param {Object} options\n * @param {boolean} [options.loop=false] Whether loop animation.\n * @param {Function} [options.getter=null] Get value from target.\n * @param {Function} [options.setter=null] Set value to target.\n * @return {module:zrender/animation/Animation~Animator}\n */\n // TODO Gap\n animate: function (target, options) {\n options = options || {};\n var animator = new Animator(target, options.loop, options.getter, options.setter);\n this.addAnimator(animator);\n return animator;\n }\n};\nutil.mixin(Animation, Dispatcher);\nvar _default = Animation;\nmodule.exports = _default;","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue, mergeData } from '../../vue';\nimport { NAME_LIST_GROUP } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_BOOLEAN_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { isString } from '../../utils/inspect';\nimport { makeProp, makePropsConfigurable } from '../../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n flush: makeProp(PROP_TYPE_BOOLEAN, false),\n horizontal: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n tag: makeProp(PROP_TYPE_STRING, 'div')\n}, NAME_LIST_GROUP); // --- Main component ---\n// @vue/component\n\nexport var BListGroup = /*#__PURE__*/Vue.extend({\n name: NAME_LIST_GROUP,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var horizontal = props.horizontal === '' ? true : props.horizontal;\n horizontal = props.flush ? false : horizontal;\n var componentData = {\n staticClass: 'list-group',\n class: _defineProperty({\n 'list-group-flush': props.flush,\n 'list-group-horizontal': horizontal === true\n }, \"list-group-horizontal-\".concat(horizontal), isString(horizontal))\n };\n return h(props.tag, mergeData(data, componentData), children);\n }\n});","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar List = require(\"../../data/List\");\n\nvar createDimensions = require(\"../../data/helper/createDimensions\");\n\nvar _sourceType = require(\"../../data/helper/sourceType\");\n\nvar SOURCE_FORMAT_ORIGINAL = _sourceType.SOURCE_FORMAT_ORIGINAL;\n\nvar _dimensionHelper = require(\"../../data/helper/dimensionHelper\");\n\nvar getDimensionTypeByAxis = _dimensionHelper.getDimensionTypeByAxis;\n\nvar _model = require(\"../../util/model\");\n\nvar getDataItemValue = _model.getDataItemValue;\n\nvar CoordinateSystem = require(\"../../CoordinateSystem\");\n\nvar _referHelper = require(\"../../model/referHelper\");\n\nvar getCoordSysInfoBySeries = _referHelper.getCoordSysInfoBySeries;\n\nvar Source = require(\"../../data/Source\");\n\nvar _dataStackHelper = require(\"../../data/helper/dataStackHelper\");\n\nvar enableDataStack = _dataStackHelper.enableDataStack;\n\nvar _sourceHelper = require(\"../../data/helper/sourceHelper\");\n\nvar makeSeriesEncodeForAxisCoordSys = _sourceHelper.makeSeriesEncodeForAxisCoordSys;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @param {module:echarts/data/Source|Array} source Or raw data.\n * @param {module:echarts/model/Series} seriesModel\n * @param {Object} [opt]\n * @param {string} [opt.generateCoord]\n * @param {boolean} [opt.useEncodeDefaulter]\n */\nfunction createListFromArray(source, seriesModel, opt) {\n opt = opt || {};\n\n if (!Source.isInstance(source)) {\n source = Source.seriesDataToSource(source);\n }\n\n var coordSysName = seriesModel.get('coordinateSystem');\n var registeredCoordSys = CoordinateSystem.get(coordSysName);\n var coordSysInfo = getCoordSysInfoBySeries(seriesModel);\n var coordSysDimDefs;\n\n if (coordSysInfo) {\n coordSysDimDefs = zrUtil.map(coordSysInfo.coordSysDims, function (dim) {\n var dimInfo = {\n name: dim\n };\n var axisModel = coordSysInfo.axisMap.get(dim);\n\n if (axisModel) {\n var axisType = axisModel.get('type');\n dimInfo.type = getDimensionTypeByAxis(axisType); // dimInfo.stackable = isStackable(axisType);\n }\n\n return dimInfo;\n });\n }\n\n if (!coordSysDimDefs) {\n // Get dimensions from registered coordinate system\n coordSysDimDefs = registeredCoordSys && (registeredCoordSys.getDimensionsInfo ? registeredCoordSys.getDimensionsInfo() : registeredCoordSys.dimensions.slice()) || ['x', 'y'];\n }\n\n var dimInfoList = createDimensions(source, {\n coordDimensions: coordSysDimDefs,\n generateCoord: opt.generateCoord,\n encodeDefaulter: opt.useEncodeDefaulter ? zrUtil.curry(makeSeriesEncodeForAxisCoordSys, coordSysDimDefs, seriesModel) : null\n });\n var firstCategoryDimIndex;\n var hasNameEncode;\n coordSysInfo && zrUtil.each(dimInfoList, function (dimInfo, dimIndex) {\n var coordDim = dimInfo.coordDim;\n var categoryAxisModel = coordSysInfo.categoryAxisMap.get(coordDim);\n\n if (categoryAxisModel) {\n if (firstCategoryDimIndex == null) {\n firstCategoryDimIndex = dimIndex;\n }\n\n dimInfo.ordinalMeta = categoryAxisModel.getOrdinalMeta();\n }\n\n if (dimInfo.otherDims.itemName != null) {\n hasNameEncode = true;\n }\n });\n\n if (!hasNameEncode && firstCategoryDimIndex != null) {\n dimInfoList[firstCategoryDimIndex].otherDims.itemName = 0;\n }\n\n var stackCalculationInfo = enableDataStack(seriesModel, dimInfoList);\n var list = new List(dimInfoList, seriesModel);\n list.setCalculationInfo(stackCalculationInfo);\n var dimValueGetter = firstCategoryDimIndex != null && isNeedCompleteOrdinalData(source) ? function (itemOpt, dimName, dataIndex, dimIndex) {\n // Use dataIndex as ordinal value in categoryAxis\n return dimIndex === firstCategoryDimIndex ? dataIndex : this.defaultDimValueGetter(itemOpt, dimName, dataIndex, dimIndex);\n } : null;\n list.hasItemOption = false;\n list.initData(source, null, dimValueGetter);\n return list;\n}\n\nfunction isNeedCompleteOrdinalData(source) {\n if (source.sourceFormat === SOURCE_FORMAT_ORIGINAL) {\n var sampleItem = firstDataNotNull(source.data || []);\n return sampleItem != null && !zrUtil.isArray(getDataItemValue(sampleItem));\n }\n}\n\nfunction firstDataNotNull(data) {\n var i = 0;\n\n while (i < data.length && data[i] == null) {\n i++;\n }\n\n return data[i];\n}\n\nvar _default = createListFromArray;\nmodule.exports = _default;","var Path = require(\"../graphic/Path\");\n\nvar PathProxy = require(\"../core/PathProxy\");\n\nvar transformPath = require(\"./transformPath\");\n\n// command chars\n// var cc = [\n// 'm', 'M', 'l', 'L', 'v', 'V', 'h', 'H', 'z', 'Z',\n// 'c', 'C', 'q', 'Q', 't', 'T', 's', 'S', 'a', 'A'\n// ];\nvar mathSqrt = Math.sqrt;\nvar mathSin = Math.sin;\nvar mathCos = Math.cos;\nvar PI = Math.PI;\n\nvar vMag = function (v) {\n return Math.sqrt(v[0] * v[0] + v[1] * v[1]);\n};\n\nvar vRatio = function (u, v) {\n return (u[0] * v[0] + u[1] * v[1]) / (vMag(u) * vMag(v));\n};\n\nvar vAngle = function (u, v) {\n return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) * Math.acos(vRatio(u, v));\n};\n\nfunction processArc(x1, y1, x2, y2, fa, fs, rx, ry, psiDeg, cmd, path) {\n var psi = psiDeg * (PI / 180.0);\n var xp = mathCos(psi) * (x1 - x2) / 2.0 + mathSin(psi) * (y1 - y2) / 2.0;\n var yp = -1 * mathSin(psi) * (x1 - x2) / 2.0 + mathCos(psi) * (y1 - y2) / 2.0;\n var lambda = xp * xp / (rx * rx) + yp * yp / (ry * ry);\n\n if (lambda > 1) {\n rx *= mathSqrt(lambda);\n ry *= mathSqrt(lambda);\n }\n\n var f = (fa === fs ? -1 : 1) * mathSqrt((rx * rx * (ry * ry) - rx * rx * (yp * yp) - ry * ry * (xp * xp)) / (rx * rx * (yp * yp) + ry * ry * (xp * xp))) || 0;\n var cxp = f * rx * yp / ry;\n var cyp = f * -ry * xp / rx;\n var cx = (x1 + x2) / 2.0 + mathCos(psi) * cxp - mathSin(psi) * cyp;\n var cy = (y1 + y2) / 2.0 + mathSin(psi) * cxp + mathCos(psi) * cyp;\n var theta = vAngle([1, 0], [(xp - cxp) / rx, (yp - cyp) / ry]);\n var u = [(xp - cxp) / rx, (yp - cyp) / ry];\n var v = [(-1 * xp - cxp) / rx, (-1 * yp - cyp) / ry];\n var dTheta = vAngle(u, v);\n\n if (vRatio(u, v) <= -1) {\n dTheta = PI;\n }\n\n if (vRatio(u, v) >= 1) {\n dTheta = 0;\n }\n\n if (fs === 0 && dTheta > 0) {\n dTheta = dTheta - 2 * PI;\n }\n\n if (fs === 1 && dTheta < 0) {\n dTheta = dTheta + 2 * PI;\n }\n\n path.addData(cmd, cx, cy, rx, ry, theta, dTheta, psi, fs);\n}\n\nvar commandReg = /([mlvhzcqtsa])([^mlvhzcqtsa]*)/ig; // Consider case:\n// (1) delimiter can be comma or space, where continuous commas\n// or spaces should be seen as one comma.\n// (2) value can be like:\n// '2e-4', 'l.5.9' (ignore 0), 'M-10-10', 'l-2.43e-1,34.9983',\n// 'l-.5E1,54', '121-23-44-11' (no delimiter)\n\nvar numberReg = /-?([0-9]*\\.)?[0-9]+([eE]-?[0-9]+)?/g; // var valueSplitReg = /[\\s,]+/;\n\nfunction createPathProxyFromString(data) {\n if (!data) {\n return new PathProxy();\n } // var data = data.replace(/-/g, ' -')\n // .replace(/ /g, ' ')\n // .replace(/ /g, ',')\n // .replace(/,,/g, ',');\n // var n;\n // create pipes so that we can split the data\n // for (n = 0; n < cc.length; n++) {\n // cs = cs.replace(new RegExp(cc[n], 'g'), '|' + cc[n]);\n // }\n // data = data.replace(/-/g, ',-');\n // create array\n // var arr = cs.split('|');\n // init context point\n\n\n var cpx = 0;\n var cpy = 0;\n var subpathX = cpx;\n var subpathY = cpy;\n var prevCmd;\n var path = new PathProxy();\n var CMD = PathProxy.CMD; // commandReg.lastIndex = 0;\n // var cmdResult;\n // while ((cmdResult = commandReg.exec(data)) != null) {\n // var cmdStr = cmdResult[1];\n // var cmdContent = cmdResult[2];\n\n var cmdList = data.match(commandReg);\n\n for (var l = 0; l < cmdList.length; l++) {\n var cmdText = cmdList[l];\n var cmdStr = cmdText.charAt(0);\n var cmd; // String#split is faster a little bit than String#replace or RegExp#exec.\n // var p = cmdContent.split(valueSplitReg);\n // var pLen = 0;\n // for (var i = 0; i < p.length; i++) {\n // // '' and other invalid str => NaN\n // var val = parseFloat(p[i]);\n // !isNaN(val) && (p[pLen++] = val);\n // }\n\n var p = cmdText.match(numberReg) || [];\n var pLen = p.length;\n\n for (var i = 0; i < pLen; i++) {\n p[i] = parseFloat(p[i]);\n }\n\n var off = 0;\n\n while (off < pLen) {\n var ctlPtx;\n var ctlPty;\n var rx;\n var ry;\n var psi;\n var fa;\n var fs;\n var x1 = cpx;\n var y1 = cpy; // convert l, H, h, V, and v to L\n\n switch (cmdStr) {\n case 'l':\n cpx += p[off++];\n cpy += p[off++];\n cmd = CMD.L;\n path.addData(cmd, cpx, cpy);\n break;\n\n case 'L':\n cpx = p[off++];\n cpy = p[off++];\n cmd = CMD.L;\n path.addData(cmd, cpx, cpy);\n break;\n\n case 'm':\n cpx += p[off++];\n cpy += p[off++];\n cmd = CMD.M;\n path.addData(cmd, cpx, cpy);\n subpathX = cpx;\n subpathY = cpy;\n cmdStr = 'l';\n break;\n\n case 'M':\n cpx = p[off++];\n cpy = p[off++];\n cmd = CMD.M;\n path.addData(cmd, cpx, cpy);\n subpathX = cpx;\n subpathY = cpy;\n cmdStr = 'L';\n break;\n\n case 'h':\n cpx += p[off++];\n cmd = CMD.L;\n path.addData(cmd, cpx, cpy);\n break;\n\n case 'H':\n cpx = p[off++];\n cmd = CMD.L;\n path.addData(cmd, cpx, cpy);\n break;\n\n case 'v':\n cpy += p[off++];\n cmd = CMD.L;\n path.addData(cmd, cpx, cpy);\n break;\n\n case 'V':\n cpy = p[off++];\n cmd = CMD.L;\n path.addData(cmd, cpx, cpy);\n break;\n\n case 'C':\n cmd = CMD.C;\n path.addData(cmd, p[off++], p[off++], p[off++], p[off++], p[off++], p[off++]);\n cpx = p[off - 2];\n cpy = p[off - 1];\n break;\n\n case 'c':\n cmd = CMD.C;\n path.addData(cmd, p[off++] + cpx, p[off++] + cpy, p[off++] + cpx, p[off++] + cpy, p[off++] + cpx, p[off++] + cpy);\n cpx += p[off - 2];\n cpy += p[off - 1];\n break;\n\n case 'S':\n ctlPtx = cpx;\n ctlPty = cpy;\n var len = path.len();\n var pathData = path.data;\n\n if (prevCmd === CMD.C) {\n ctlPtx += cpx - pathData[len - 4];\n ctlPty += cpy - pathData[len - 3];\n }\n\n cmd = CMD.C;\n x1 = p[off++];\n y1 = p[off++];\n cpx = p[off++];\n cpy = p[off++];\n path.addData(cmd, ctlPtx, ctlPty, x1, y1, cpx, cpy);\n break;\n\n case 's':\n ctlPtx = cpx;\n ctlPty = cpy;\n var len = path.len();\n var pathData = path.data;\n\n if (prevCmd === CMD.C) {\n ctlPtx += cpx - pathData[len - 4];\n ctlPty += cpy - pathData[len - 3];\n }\n\n cmd = CMD.C;\n x1 = cpx + p[off++];\n y1 = cpy + p[off++];\n cpx += p[off++];\n cpy += p[off++];\n path.addData(cmd, ctlPtx, ctlPty, x1, y1, cpx, cpy);\n break;\n\n case 'Q':\n x1 = p[off++];\n y1 = p[off++];\n cpx = p[off++];\n cpy = p[off++];\n cmd = CMD.Q;\n path.addData(cmd, x1, y1, cpx, cpy);\n break;\n\n case 'q':\n x1 = p[off++] + cpx;\n y1 = p[off++] + cpy;\n cpx += p[off++];\n cpy += p[off++];\n cmd = CMD.Q;\n path.addData(cmd, x1, y1, cpx, cpy);\n break;\n\n case 'T':\n ctlPtx = cpx;\n ctlPty = cpy;\n var len = path.len();\n var pathData = path.data;\n\n if (prevCmd === CMD.Q) {\n ctlPtx += cpx - pathData[len - 4];\n ctlPty += cpy - pathData[len - 3];\n }\n\n cpx = p[off++];\n cpy = p[off++];\n cmd = CMD.Q;\n path.addData(cmd, ctlPtx, ctlPty, cpx, cpy);\n break;\n\n case 't':\n ctlPtx = cpx;\n ctlPty = cpy;\n var len = path.len();\n var pathData = path.data;\n\n if (prevCmd === CMD.Q) {\n ctlPtx += cpx - pathData[len - 4];\n ctlPty += cpy - pathData[len - 3];\n }\n\n cpx += p[off++];\n cpy += p[off++];\n cmd = CMD.Q;\n path.addData(cmd, ctlPtx, ctlPty, cpx, cpy);\n break;\n\n case 'A':\n rx = p[off++];\n ry = p[off++];\n psi = p[off++];\n fa = p[off++];\n fs = p[off++];\n x1 = cpx, y1 = cpy;\n cpx = p[off++];\n cpy = p[off++];\n cmd = CMD.A;\n processArc(x1, y1, cpx, cpy, fa, fs, rx, ry, psi, cmd, path);\n break;\n\n case 'a':\n rx = p[off++];\n ry = p[off++];\n psi = p[off++];\n fa = p[off++];\n fs = p[off++];\n x1 = cpx, y1 = cpy;\n cpx += p[off++];\n cpy += p[off++];\n cmd = CMD.A;\n processArc(x1, y1, cpx, cpy, fa, fs, rx, ry, psi, cmd, path);\n break;\n }\n }\n\n if (cmdStr === 'z' || cmdStr === 'Z') {\n cmd = CMD.Z;\n path.addData(cmd); // z may be in the middle of the path.\n\n cpx = subpathX;\n cpy = subpathY;\n }\n\n prevCmd = cmd;\n }\n\n path.toStatic();\n return path;\n} // TODO Optimize double memory cost problem\n\n\nfunction createPathOptions(str, opts) {\n var pathProxy = createPathProxyFromString(str);\n opts = opts || {};\n\n opts.buildPath = function (path) {\n if (path.setData) {\n path.setData(pathProxy.data); // Svg and vml renderer don't have context\n\n var ctx = path.getContext();\n\n if (ctx) {\n path.rebuildPath(ctx);\n }\n } else {\n var ctx = path;\n pathProxy.rebuildPath(ctx);\n }\n };\n\n opts.applyTransform = function (m) {\n transformPath(pathProxy, m);\n this.dirty(true);\n };\n\n return opts;\n}\n/**\n * Create a Path object from path string data\n * http://www.w3.org/TR/SVG/paths.html#PathData\n * @param {Object} opts Other options\n */\n\n\nfunction createFromString(str, opts) {\n return new Path(createPathOptions(str, opts));\n}\n/**\n * Create a Path class from path string data\n * @param {string} str\n * @param {Object} opts Other options\n */\n\n\nfunction extendFromString(str, opts) {\n return Path.extend(createPathOptions(str, opts));\n}\n/**\n * Merge multiple paths\n */\n// TODO Apply transform\n// TODO stroke dash\n// TODO Optimize double memory cost problem\n\n\nfunction mergePath(pathEls, opts) {\n var pathList = [];\n var len = pathEls.length;\n\n for (var i = 0; i < len; i++) {\n var pathEl = pathEls[i];\n\n if (!pathEl.path) {\n pathEl.createPathProxy();\n }\n\n if (pathEl.__dirtyPath) {\n pathEl.buildPath(pathEl.path, pathEl.shape, true);\n }\n\n pathList.push(pathEl.path);\n }\n\n var pathBundle = new Path(opts); // Need path proxy.\n\n pathBundle.createPathProxy();\n\n pathBundle.buildPath = function (path) {\n path.appendPath(pathList); // Svg and vml renderer don't have context\n\n var ctx = path.getContext();\n\n if (ctx) {\n path.rebuildPath(ctx);\n }\n };\n\n return pathBundle;\n}\n\nexports.createFromString = createFromString;\nexports.extendFromString = extendFromString;\nexports.mergePath = mergePath;","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue, mergeData } from '../../vue';\nimport { NAME_INPUT_GROUP_PREPEND } from '../../constants/components';\nimport { omit } from '../../utils/object';\nimport { makePropsConfigurable } from '../../utils/props';\nimport { BInputGroupAddon, props as BInputGroupAddonProps } from './input-group-addon'; // --- Props ---\n\nexport var props = makePropsConfigurable(omit(BInputGroupAddonProps, ['append']), NAME_INPUT_GROUP_PREPEND); // --- Main component ---\n// @vue/component\n\nexport var BInputGroupPrepend = /*#__PURE__*/Vue.extend({\n name: NAME_INPUT_GROUP_PREPEND,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n // Pass all our data down to child, and set `append` to `true`\n return h(BInputGroupAddon, mergeData(data, {\n props: _objectSpread(_objectSpread({}, props), {}, {\n append: false\n })\n }), children);\n }\n});","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* A third-party license is embeded for some of the code in this file:\n* The method \"quantile\" was copied from \"d3.js\".\n* (See more details in the comment of the method below.)\n* The use of the source code of this file is also subject to the terms\n* and consitions of the license of \"d3.js\" (BSD-3Clause, see\n* ).\n*/\nvar RADIAN_EPSILON = 1e-4;\n\nfunction _trim(str) {\n return str.replace(/^\\s+|\\s+$/g, '');\n}\n/**\n * Linear mapping a value from domain to range\n * @memberOf module:echarts/util/number\n * @param {(number|Array.)} val\n * @param {Array.} domain Domain extent domain[0] can be bigger than domain[1]\n * @param {Array.} range Range extent range[0] can be bigger than range[1]\n * @param {boolean} clamp\n * @return {(number|Array.}\n */\n\n\nfunction linearMap(val, domain, range, clamp) {\n var subDomain = domain[1] - domain[0];\n var subRange = range[1] - range[0];\n\n if (subDomain === 0) {\n return subRange === 0 ? range[0] : (range[0] + range[1]) / 2;\n } // Avoid accuracy problem in edge, such as\n // 146.39 - 62.83 === 83.55999999999999.\n // See echarts/test/ut/spec/util/number.js#linearMap#accuracyError\n // It is a little verbose for efficiency considering this method\n // is a hotspot.\n\n\n if (clamp) {\n if (subDomain > 0) {\n if (val <= domain[0]) {\n return range[0];\n } else if (val >= domain[1]) {\n return range[1];\n }\n } else {\n if (val >= domain[0]) {\n return range[0];\n } else if (val <= domain[1]) {\n return range[1];\n }\n }\n } else {\n if (val === domain[0]) {\n return range[0];\n }\n\n if (val === domain[1]) {\n return range[1];\n }\n }\n\n return (val - domain[0]) / subDomain * subRange + range[0];\n}\n/**\n * Convert a percent string to absolute number.\n * Returns NaN if percent is not a valid string or number\n * @memberOf module:echarts/util/number\n * @param {string|number} percent\n * @param {number} all\n * @return {number}\n */\n\n\nfunction parsePercent(percent, all) {\n switch (percent) {\n case 'center':\n case 'middle':\n percent = '50%';\n break;\n\n case 'left':\n case 'top':\n percent = '0%';\n break;\n\n case 'right':\n case 'bottom':\n percent = '100%';\n break;\n }\n\n if (typeof percent === 'string') {\n if (_trim(percent).match(/%$/)) {\n return parseFloat(percent) / 100 * all;\n }\n\n return parseFloat(percent);\n }\n\n return percent == null ? NaN : +percent;\n}\n/**\n * (1) Fix rounding error of float numbers.\n * (2) Support return string to avoid scientific notation like '3.5e-7'.\n *\n * @param {number} x\n * @param {number} [precision]\n * @param {boolean} [returnStr]\n * @return {number|string}\n */\n\n\nfunction round(x, precision, returnStr) {\n if (precision == null) {\n precision = 10;\n } // Avoid range error\n\n\n precision = Math.min(Math.max(0, precision), 20);\n x = (+x).toFixed(precision);\n return returnStr ? x : +x;\n}\n/**\n * asc sort arr.\n * The input arr will be modified.\n *\n * @param {Array} arr\n * @return {Array} The input arr.\n */\n\n\nfunction asc(arr) {\n arr.sort(function (a, b) {\n return a - b;\n });\n return arr;\n}\n/**\n * Get precision\n * @param {number} val\n */\n\n\nfunction getPrecision(val) {\n val = +val;\n\n if (isNaN(val)) {\n return 0;\n } // It is much faster than methods converting number to string as follows\n // var tmp = val.toString();\n // return tmp.length - 1 - tmp.indexOf('.');\n // especially when precision is low\n\n\n var e = 1;\n var count = 0;\n\n while (Math.round(val * e) / e !== val) {\n e *= 10;\n count++;\n }\n\n return count;\n}\n/**\n * @param {string|number} val\n * @return {number}\n */\n\n\nfunction getPrecisionSafe(val) {\n var str = val.toString(); // Consider scientific notation: '3.4e-12' '3.4e+12'\n\n var eIndex = str.indexOf('e');\n\n if (eIndex > 0) {\n var precision = +str.slice(eIndex + 1);\n return precision < 0 ? -precision : 0;\n } else {\n var dotIndex = str.indexOf('.');\n return dotIndex < 0 ? 0 : str.length - 1 - dotIndex;\n }\n}\n/**\n * Minimal dicernible data precisioin according to a single pixel.\n *\n * @param {Array.} dataExtent\n * @param {Array.} pixelExtent\n * @return {number} precision\n */\n\n\nfunction getPixelPrecision(dataExtent, pixelExtent) {\n var log = Math.log;\n var LN10 = Math.LN10;\n var dataQuantity = Math.floor(log(dataExtent[1] - dataExtent[0]) / LN10);\n var sizeQuantity = Math.round(log(Math.abs(pixelExtent[1] - pixelExtent[0])) / LN10); // toFixed() digits argument must be between 0 and 20.\n\n var precision = Math.min(Math.max(-dataQuantity + sizeQuantity, 0), 20);\n return !isFinite(precision) ? 20 : precision;\n}\n/**\n * Get a data of given precision, assuring the sum of percentages\n * in valueList is 1.\n * The largest remainer method is used.\n * https://en.wikipedia.org/wiki/Largest_remainder_method\n *\n * @param {Array.} valueList a list of all data\n * @param {number} idx index of the data to be processed in valueList\n * @param {number} precision integer number showing digits of precision\n * @return {number} percent ranging from 0 to 100\n */\n\n\nfunction getPercentWithPrecision(valueList, idx, precision) {\n if (!valueList[idx]) {\n return 0;\n }\n\n var sum = zrUtil.reduce(valueList, function (acc, val) {\n return acc + (isNaN(val) ? 0 : val);\n }, 0);\n\n if (sum === 0) {\n return 0;\n }\n\n var digits = Math.pow(10, precision);\n var votesPerQuota = zrUtil.map(valueList, function (val) {\n return (isNaN(val) ? 0 : val) / sum * digits * 100;\n });\n var targetSeats = digits * 100;\n var seats = zrUtil.map(votesPerQuota, function (votes) {\n // Assign automatic seats.\n return Math.floor(votes);\n });\n var currentSum = zrUtil.reduce(seats, function (acc, val) {\n return acc + val;\n }, 0);\n var remainder = zrUtil.map(votesPerQuota, function (votes, idx) {\n return votes - seats[idx];\n }); // Has remainding votes.\n\n while (currentSum < targetSeats) {\n // Find next largest remainder.\n var max = Number.NEGATIVE_INFINITY;\n var maxId = null;\n\n for (var i = 0, len = remainder.length; i < len; ++i) {\n if (remainder[i] > max) {\n max = remainder[i];\n maxId = i;\n }\n } // Add a vote to max remainder.\n\n\n ++seats[maxId];\n remainder[maxId] = 0;\n ++currentSum;\n }\n\n return seats[idx] / digits;\n} // Number.MAX_SAFE_INTEGER, ie do not support.\n\n\nvar MAX_SAFE_INTEGER = 9007199254740991;\n/**\n * To 0 - 2 * PI, considering negative radian.\n * @param {number} radian\n * @return {number}\n */\n\nfunction remRadian(radian) {\n var pi2 = Math.PI * 2;\n return (radian % pi2 + pi2) % pi2;\n}\n/**\n * @param {type} radian\n * @return {boolean}\n */\n\n\nfunction isRadianAroundZero(val) {\n return val > -RADIAN_EPSILON && val < RADIAN_EPSILON;\n}\n/* eslint-disable */\n\n\nvar TIME_REG = /^(?:(\\d{4})(?:[-\\/](\\d{1,2})(?:[-\\/](\\d{1,2})(?:[T ](\\d{1,2})(?::(\\d\\d)(?::(\\d\\d)(?:[.,](\\d+))?)?)?(Z|[\\+\\-]\\d\\d:?\\d\\d)?)?)?)?)?$/; // jshint ignore:line\n\n/* eslint-enable */\n\n/**\n * @param {string|Date|number} value These values can be accepted:\n * + An instance of Date, represent a time in its own time zone.\n * + Or string in a subset of ISO 8601, only including:\n * + only year, month, date: '2012-03', '2012-03-01', '2012-03-01 05', '2012-03-01 05:06',\n * + separated with T or space: '2012-03-01T12:22:33.123', '2012-03-01 12:22:33.123',\n * + time zone: '2012-03-01T12:22:33Z', '2012-03-01T12:22:33+8000', '2012-03-01T12:22:33-05:00',\n * all of which will be treated as local time if time zone is not specified\n * (see ).\n * + Or other string format, including (all of which will be treated as loacal time):\n * '2012', '2012-3-1', '2012/3/1', '2012/03/01',\n * '2009/6/12 2:00', '2009/6/12 2:05:08', '2009/6/12 2:05:08.123'\n * + a timestamp, which represent a time in UTC.\n * @return {Date} date\n */\n\nfunction parseDate(value) {\n if (value instanceof Date) {\n return value;\n } else if (typeof value === 'string') {\n // Different browsers parse date in different way, so we parse it manually.\n // Some other issues:\n // new Date('1970-01-01') is UTC,\n // new Date('1970/01/01') and new Date('1970-1-01') is local.\n // See issue #3623\n var match = TIME_REG.exec(value);\n\n if (!match) {\n // return Invalid Date.\n return new Date(NaN);\n } // Use local time when no timezone offset specifed.\n\n\n if (!match[8]) {\n // match[n] can only be string or undefined.\n // But take care of '12' + 1 => '121'.\n return new Date(+match[1], +(match[2] || 1) - 1, +match[3] || 1, +match[4] || 0, +(match[5] || 0), +match[6] || 0, +match[7] || 0);\n } // Timezoneoffset of Javascript Date has considered DST (Daylight Saving Time,\n // https://tc39.github.io/ecma262/#sec-daylight-saving-time-adjustment).\n // For example, system timezone is set as \"Time Zone: America/Toronto\",\n // then these code will get different result:\n // `new Date(1478411999999).getTimezoneOffset(); // get 240`\n // `new Date(1478412000000).getTimezoneOffset(); // get 300`\n // So we should not use `new Date`, but use `Date.UTC`.\n else {\n var hour = +match[4] || 0;\n\n if (match[8].toUpperCase() !== 'Z') {\n hour -= match[8].slice(0, 3);\n }\n\n return new Date(Date.UTC(+match[1], +(match[2] || 1) - 1, +match[3] || 1, hour, +(match[5] || 0), +match[6] || 0, +match[7] || 0));\n }\n } else if (value == null) {\n return new Date(NaN);\n }\n\n return new Date(Math.round(value));\n}\n/**\n * Quantity of a number. e.g. 0.1, 1, 10, 100\n *\n * @param {number} val\n * @return {number}\n */\n\n\nfunction quantity(val) {\n return Math.pow(10, quantityExponent(val));\n}\n/**\n * Exponent of the quantity of a number\n * e.g., 1234 equals to 1.234*10^3, so quantityExponent(1234) is 3\n *\n * @param {number} val non-negative value\n * @return {number}\n */\n\n\nfunction quantityExponent(val) {\n if (val === 0) {\n return 0;\n }\n\n var exp = Math.floor(Math.log(val) / Math.LN10);\n /**\n * exp is expected to be the rounded-down result of the base-10 log of val.\n * But due to the precision loss with Math.log(val), we need to restore it\n * using 10^exp to make sure we can get val back from exp. #11249\n */\n\n if (val / Math.pow(10, exp) >= 10) {\n exp++;\n }\n\n return exp;\n}\n/**\n * find a “nice” number approximately equal to x. Round the number if round = true,\n * take ceiling if round = false. The primary observation is that the “nicest”\n * numbers in decimal are 1, 2, and 5, and all power-of-ten multiples of these numbers.\n *\n * See \"Nice Numbers for Graph Labels\" of Graphic Gems.\n *\n * @param {number} val Non-negative value.\n * @param {boolean} round\n * @return {number}\n */\n\n\nfunction nice(val, round) {\n var exponent = quantityExponent(val);\n var exp10 = Math.pow(10, exponent);\n var f = val / exp10; // 1 <= f < 10\n\n var nf;\n\n if (round) {\n if (f < 1.5) {\n nf = 1;\n } else if (f < 2.5) {\n nf = 2;\n } else if (f < 4) {\n nf = 3;\n } else if (f < 7) {\n nf = 5;\n } else {\n nf = 10;\n }\n } else {\n if (f < 1) {\n nf = 1;\n } else if (f < 2) {\n nf = 2;\n } else if (f < 3) {\n nf = 3;\n } else if (f < 5) {\n nf = 5;\n } else {\n nf = 10;\n }\n }\n\n val = nf * exp10; // Fix 3 * 0.1 === 0.30000000000000004 issue (see IEEE 754).\n // 20 is the uppper bound of toFixed.\n\n return exponent >= -20 ? +val.toFixed(exponent < 0 ? -exponent : 0) : val;\n}\n/**\n * This code was copied from \"d3.js\"\n * .\n * See the license statement at the head of this file.\n * @param {Array.} ascArr\n */\n\n\nfunction quantile(ascArr, p) {\n var H = (ascArr.length - 1) * p + 1;\n var h = Math.floor(H);\n var v = +ascArr[h - 1];\n var e = H - h;\n return e ? v + e * (ascArr[h] - v) : v;\n}\n/**\n * Order intervals asc, and split them when overlap.\n * expect(numberUtil.reformIntervals([\n * {interval: [18, 62], close: [1, 1]},\n * {interval: [-Infinity, -70], close: [0, 0]},\n * {interval: [-70, -26], close: [1, 1]},\n * {interval: [-26, 18], close: [1, 1]},\n * {interval: [62, 150], close: [1, 1]},\n * {interval: [106, 150], close: [1, 1]},\n * {interval: [150, Infinity], close: [0, 0]}\n * ])).toEqual([\n * {interval: [-Infinity, -70], close: [0, 0]},\n * {interval: [-70, -26], close: [1, 1]},\n * {interval: [-26, 18], close: [0, 1]},\n * {interval: [18, 62], close: [0, 1]},\n * {interval: [62, 150], close: [0, 1]},\n * {interval: [150, Infinity], close: [0, 0]}\n * ]);\n * @param {Array.} list, where `close` mean open or close\n * of the interval, and Infinity can be used.\n * @return {Array.} The origin list, which has been reformed.\n */\n\n\nfunction reformIntervals(list) {\n list.sort(function (a, b) {\n return littleThan(a, b, 0) ? -1 : 1;\n });\n var curr = -Infinity;\n var currClose = 1;\n\n for (var i = 0; i < list.length;) {\n var interval = list[i].interval;\n var close = list[i].close;\n\n for (var lg = 0; lg < 2; lg++) {\n if (interval[lg] <= curr) {\n interval[lg] = curr;\n close[lg] = !lg ? 1 - currClose : 1;\n }\n\n curr = interval[lg];\n currClose = close[lg];\n }\n\n if (interval[0] === interval[1] && close[0] * close[1] !== 1) {\n list.splice(i, 1);\n } else {\n i++;\n }\n }\n\n return list;\n\n function littleThan(a, b, lg) {\n return a.interval[lg] < b.interval[lg] || a.interval[lg] === b.interval[lg] && (a.close[lg] - b.close[lg] === (!lg ? 1 : -1) || !lg && littleThan(a, b, 1));\n }\n}\n/**\n * parseFloat NaNs numeric-cast false positives (null|true|false|\"\")\n * ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n * subtraction forces infinities to NaN\n *\n * @param {*} v\n * @return {boolean}\n */\n\n\nfunction isNumeric(v) {\n return v - parseFloat(v) >= 0;\n}\n\nexports.linearMap = linearMap;\nexports.parsePercent = parsePercent;\nexports.round = round;\nexports.asc = asc;\nexports.getPrecision = getPrecision;\nexports.getPrecisionSafe = getPrecisionSafe;\nexports.getPixelPrecision = getPixelPrecision;\nexports.getPercentWithPrecision = getPercentWithPrecision;\nexports.MAX_SAFE_INTEGER = MAX_SAFE_INTEGER;\nexports.remRadian = remRadian;\nexports.isRadianAroundZero = isRadianAroundZero;\nexports.parseDate = parseDate;\nexports.quantity = quantity;\nexports.quantityExponent = quantityExponent;\nexports.nice = nice;\nexports.quantile = quantile;\nexports.reformIntervals = reformIntervals;\nexports.isNumeric = isNumeric;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _dataProvider = require(\"../../data/helper/dataProvider\");\n\nvar retrieveRawValue = _dataProvider.retrieveRawValue;\n\nvar _format = require(\"../../util/format\");\n\nvar getTooltipMarker = _format.getTooltipMarker;\nvar formatTpl = _format.formatTpl;\n\nvar _model = require(\"../../util/model\");\n\nvar getTooltipRenderMode = _model.getTooltipRenderMode;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar DIMENSION_LABEL_REG = /\\{@(.+?)\\}/g; // PENDING A little ugly\n\nvar _default = {\n /**\n * Get params for formatter\n * @param {number} dataIndex\n * @param {string} [dataType]\n * @return {Object}\n */\n getDataParams: function (dataIndex, dataType) {\n var data = this.getData(dataType);\n var rawValue = this.getRawValue(dataIndex, dataType);\n var rawDataIndex = data.getRawIndex(dataIndex);\n var name = data.getName(dataIndex);\n var itemOpt = data.getRawDataItem(dataIndex);\n var color = data.getItemVisual(dataIndex, 'color');\n var borderColor = data.getItemVisual(dataIndex, 'borderColor');\n var tooltipModel = this.ecModel.getComponent('tooltip');\n var renderModeOption = tooltipModel && tooltipModel.get('renderMode');\n var renderMode = getTooltipRenderMode(renderModeOption);\n var mainType = this.mainType;\n var isSeries = mainType === 'series';\n var userOutput = data.userOutput;\n return {\n componentType: mainType,\n componentSubType: this.subType,\n componentIndex: this.componentIndex,\n seriesType: isSeries ? this.subType : null,\n seriesIndex: this.seriesIndex,\n seriesId: isSeries ? this.id : null,\n seriesName: isSeries ? this.name : null,\n name: name,\n dataIndex: rawDataIndex,\n data: itemOpt,\n dataType: dataType,\n value: rawValue,\n color: color,\n borderColor: borderColor,\n dimensionNames: userOutput ? userOutput.dimensionNames : null,\n encode: userOutput ? userOutput.encode : null,\n marker: getTooltipMarker({\n color: color,\n renderMode: renderMode\n }),\n // Param name list for mapping `a`, `b`, `c`, `d`, `e`\n $vars: ['seriesName', 'name', 'value']\n };\n },\n\n /**\n * Format label\n * @param {number} dataIndex\n * @param {string} [status='normal'] 'normal' or 'emphasis'\n * @param {string} [dataType]\n * @param {number} [dimIndex] Only used in some chart that\n * use formatter in different dimensions, like radar.\n * @param {string} [labelProp='label']\n * @return {string} If not formatter, return null/undefined\n */\n getFormattedLabel: function (dataIndex, status, dataType, dimIndex, labelProp) {\n status = status || 'normal';\n var data = this.getData(dataType);\n var itemModel = data.getItemModel(dataIndex);\n var params = this.getDataParams(dataIndex, dataType);\n\n if (dimIndex != null && params.value instanceof Array) {\n params.value = params.value[dimIndex];\n }\n\n var formatter = itemModel.get(status === 'normal' ? [labelProp || 'label', 'formatter'] : [status, labelProp || 'label', 'formatter']);\n\n if (typeof formatter === 'function') {\n params.status = status;\n params.dimensionIndex = dimIndex;\n return formatter(params);\n } else if (typeof formatter === 'string') {\n var str = formatTpl(formatter, params); // Support 'aaa{@[3]}bbb{@product}ccc'.\n // Do not support '}' in dim name util have to.\n\n return str.replace(DIMENSION_LABEL_REG, function (origin, dim) {\n var len = dim.length;\n\n if (dim.charAt(0) === '[' && dim.charAt(len - 1) === ']') {\n dim = +dim.slice(1, len - 1); // Also: '[]' => 0\n }\n\n return retrieveRawValue(data, dataIndex, dim);\n });\n }\n },\n\n /**\n * Get raw value in option\n * @param {number} idx\n * @param {string} [dataType]\n * @return {Array|number|string}\n */\n getRawValue: function (idx, dataType) {\n return retrieveRawValue(this.getData(dataType), idx);\n },\n\n /**\n * Should be implemented.\n * @param {number} dataIndex\n * @param {boolean} [multipleSeries=false]\n * @param {number} [dataType]\n * @return {string} tooltip string\n */\n formatTooltip: function () {// Empty function\n }\n};\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar makeStyleMapper = require(\"./makeStyleMapper\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar getLineStyle = makeStyleMapper([['lineWidth', 'width'], ['stroke', 'color'], ['opacity'], ['shadowBlur'], ['shadowOffsetX'], ['shadowOffsetY'], ['shadowColor']]);\nvar _default = {\n getLineStyle: function (excludes) {\n var style = getLineStyle(this, excludes); // Always set lineDash whether dashed, otherwise we can not\n // erase the previous style when assigning to el.style.\n\n style.lineDash = this.getLineDash(style.lineWidth);\n return style;\n },\n getLineDash: function (lineWidth) {\n if (lineWidth == null) {\n lineWidth = 1;\n }\n\n var lineType = this.get('type');\n var dotSize = Math.max(lineWidth, 2);\n var dashSize = lineWidth * 4;\n return lineType === 'solid' || lineType == null ? // Use `false` but not `null` for the solid line here, because `null` might be\n // ignored when assigning to `el.style`. e.g., when setting `lineStyle.type` as\n // `'dashed'` and `emphasis.lineStyle.type` as `'solid'` in graph series, the\n // `lineDash` gotten form the latter one is not able to erase that from the former\n // one if using `null` here according to the emhpsis strategy in `util/graphic.js`.\n false : lineType === 'dashed' ? [dashSize, dashSize] : [dotSize, dotSize];\n }\n};\nmodule.exports = _default;","var _util = require(\"../core/util\");\n\nvar inherits = _util.inherits;\n\nvar Displayble = require(\"./Displayable\");\n\nvar BoundingRect = require(\"../core/BoundingRect\");\n\n/**\n * Displayable for incremental rendering. It will be rendered in a separate layer\n * IncrementalDisplay have two main methods. `clearDisplayables` and `addDisplayables`\n * addDisplayables will render the added displayables incremetally.\n *\n * It use a not clearFlag to tell the painter don't clear the layer if it's the first element.\n */\n// TODO Style override ?\nfunction IncrementalDisplayble(opts) {\n Displayble.call(this, opts);\n this._displayables = [];\n this._temporaryDisplayables = [];\n this._cursor = 0;\n this.notClear = true;\n}\n\nIncrementalDisplayble.prototype.incremental = true;\n\nIncrementalDisplayble.prototype.clearDisplaybles = function () {\n this._displayables = [];\n this._temporaryDisplayables = [];\n this._cursor = 0;\n this.dirty();\n this.notClear = false;\n};\n\nIncrementalDisplayble.prototype.addDisplayable = function (displayable, notPersistent) {\n if (notPersistent) {\n this._temporaryDisplayables.push(displayable);\n } else {\n this._displayables.push(displayable);\n }\n\n this.dirty();\n};\n\nIncrementalDisplayble.prototype.addDisplayables = function (displayables, notPersistent) {\n notPersistent = notPersistent || false;\n\n for (var i = 0; i < displayables.length; i++) {\n this.addDisplayable(displayables[i], notPersistent);\n }\n};\n\nIncrementalDisplayble.prototype.eachPendingDisplayable = function (cb) {\n for (var i = this._cursor; i < this._displayables.length; i++) {\n cb && cb(this._displayables[i]);\n }\n\n for (var i = 0; i < this._temporaryDisplayables.length; i++) {\n cb && cb(this._temporaryDisplayables[i]);\n }\n};\n\nIncrementalDisplayble.prototype.update = function () {\n this.updateTransform();\n\n for (var i = this._cursor; i < this._displayables.length; i++) {\n var displayable = this._displayables[i]; // PENDING\n\n displayable.parent = this;\n displayable.update();\n displayable.parent = null;\n }\n\n for (var i = 0; i < this._temporaryDisplayables.length; i++) {\n var displayable = this._temporaryDisplayables[i]; // PENDING\n\n displayable.parent = this;\n displayable.update();\n displayable.parent = null;\n }\n};\n\nIncrementalDisplayble.prototype.brush = function (ctx, prevEl) {\n // Render persistant displayables.\n for (var i = this._cursor; i < this._displayables.length; i++) {\n var displayable = this._displayables[i];\n displayable.beforeBrush && displayable.beforeBrush(ctx);\n displayable.brush(ctx, i === this._cursor ? null : this._displayables[i - 1]);\n displayable.afterBrush && displayable.afterBrush(ctx);\n }\n\n this._cursor = i; // Render temporary displayables.\n\n for (var i = 0; i < this._temporaryDisplayables.length; i++) {\n var displayable = this._temporaryDisplayables[i];\n displayable.beforeBrush && displayable.beforeBrush(ctx);\n displayable.brush(ctx, i === 0 ? null : this._temporaryDisplayables[i - 1]);\n displayable.afterBrush && displayable.afterBrush(ctx);\n }\n\n this._temporaryDisplayables = [];\n this.notClear = true;\n};\n\nvar m = [];\n\nIncrementalDisplayble.prototype.getBoundingRect = function () {\n if (!this._rect) {\n var rect = new BoundingRect(Infinity, Infinity, -Infinity, -Infinity);\n\n for (var i = 0; i < this._displayables.length; i++) {\n var displayable = this._displayables[i];\n var childRect = displayable.getBoundingRect().clone();\n\n if (displayable.needLocalTransform()) {\n childRect.applyTransform(displayable.getLocalTransform(m));\n }\n\n rect.union(childRect);\n }\n\n this._rect = rect;\n }\n\n return this._rect;\n};\n\nIncrementalDisplayble.prototype.contain = function (x, y) {\n var localPos = this.transformCoordToLocal(x, y);\n var rect = this.getBoundingRect();\n\n if (rect.contain(localPos[0], localPos[1])) {\n for (var i = 0; i < this._displayables.length; i++) {\n var displayable = this._displayables[i];\n\n if (displayable.contain(x, y)) {\n return true;\n }\n }\n }\n\n return false;\n};\n\ninherits(IncrementalDisplayble, Displayble);\nvar _default = IncrementalDisplayble;\nmodule.exports = _default;","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"d-flex flex-column align-items-center\"},[_c('p',{staticStyle:{\"margin-bottom\":\"0px\",\"font-size\":\"14px\"}},[_vm._v(_vm._s(_vm.label))]),_c('div',{staticClass:\"tri-state-toggle\"},_vm._l((_vm.options),function(option,index){return _c('button',{key:'option-' + index,class:(\"tri-state-toggle-button w-100 \" + _vm.buttonClass + \" \" + (option.value == _vm.value ? 'active' : '')),on:{\"click\":function($event){return _vm.onOptionSelect(option)}}},[_vm._v(\" \"+_vm._s(option.label)+\" \")])}),0)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\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!./MultiStateSwitch.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!./MultiStateSwitch.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./MultiStateSwitch.vue?vue&type=template&id=78f924ea&scoped=true&\"\nimport script from \"./MultiStateSwitch.vue?vue&type=script&lang=js&\"\nexport * from \"./MultiStateSwitch.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MultiStateSwitch.vue?vue&type=style&index=0&id=78f924ea&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 \"78f924ea\",\n null\n \n)\n\nexport default component.exports","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!./Todo.vue?vue&type=style&index=1&lang=scss&\"","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = require(\"./config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar zrender = require(\"zrender/lib/zrender\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar colorTool = require(\"zrender/lib/tool/color\");\n\nvar env = require(\"zrender/lib/core/env\");\n\nvar timsort = require(\"zrender/lib/core/timsort\");\n\nvar Eventful = require(\"zrender/lib/mixin/Eventful\");\n\nvar GlobalModel = require(\"./model/Global\");\n\nvar ExtensionAPI = require(\"./ExtensionAPI\");\n\nvar CoordinateSystemManager = require(\"./CoordinateSystem\");\n\nvar OptionManager = require(\"./model/OptionManager\");\n\nvar backwardCompat = require(\"./preprocessor/backwardCompat\");\n\nvar dataStack = require(\"./processor/dataStack\");\n\nvar ComponentModel = require(\"./model/Component\");\n\nvar SeriesModel = require(\"./model/Series\");\n\nvar ComponentView = require(\"./view/Component\");\n\nvar ChartView = require(\"./view/Chart\");\n\nvar graphic = require(\"./util/graphic\");\n\nvar modelUtil = require(\"./util/model\");\n\nvar _throttle = require(\"./util/throttle\");\n\nvar throttle = _throttle.throttle;\n\nvar seriesColor = require(\"./visual/seriesColor\");\n\nvar aria = require(\"./visual/aria\");\n\nvar loadingDefault = require(\"./loading/default\");\n\nvar Scheduler = require(\"./stream/Scheduler\");\n\nvar lightTheme = require(\"./theme/light\");\n\nvar darkTheme = require(\"./theme/dark\");\n\nrequire(\"./component/dataset\");\n\nvar mapDataStorage = require(\"./coord/geo/mapDataStorage\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar assert = zrUtil.assert;\nvar each = zrUtil.each;\nvar isFunction = zrUtil.isFunction;\nvar isObject = zrUtil.isObject;\nvar parseClassType = ComponentModel.parseClassType;\nvar version = '4.8.0';\nvar dependencies = {\n zrender: '4.3.1'\n};\nvar TEST_FRAME_REMAIN_TIME = 1;\nvar PRIORITY_PROCESSOR_FILTER = 1000;\nvar PRIORITY_PROCESSOR_SERIES_FILTER = 800;\nvar PRIORITY_PROCESSOR_DATASTACK = 900;\nvar PRIORITY_PROCESSOR_STATISTIC = 5000;\nvar PRIORITY_VISUAL_LAYOUT = 1000;\nvar PRIORITY_VISUAL_PROGRESSIVE_LAYOUT = 1100;\nvar PRIORITY_VISUAL_GLOBAL = 2000;\nvar PRIORITY_VISUAL_CHART = 3000;\nvar PRIORITY_VISUAL_POST_CHART_LAYOUT = 3500;\nvar PRIORITY_VISUAL_COMPONENT = 4000; // FIXME\n// necessary?\n\nvar PRIORITY_VISUAL_BRUSH = 5000;\nvar PRIORITY = {\n PROCESSOR: {\n FILTER: PRIORITY_PROCESSOR_FILTER,\n SERIES_FILTER: PRIORITY_PROCESSOR_SERIES_FILTER,\n STATISTIC: PRIORITY_PROCESSOR_STATISTIC\n },\n VISUAL: {\n LAYOUT: PRIORITY_VISUAL_LAYOUT,\n PROGRESSIVE_LAYOUT: PRIORITY_VISUAL_PROGRESSIVE_LAYOUT,\n GLOBAL: PRIORITY_VISUAL_GLOBAL,\n CHART: PRIORITY_VISUAL_CHART,\n POST_CHART_LAYOUT: PRIORITY_VISUAL_POST_CHART_LAYOUT,\n COMPONENT: PRIORITY_VISUAL_COMPONENT,\n BRUSH: PRIORITY_VISUAL_BRUSH\n }\n}; // Main process have three entries: `setOption`, `dispatchAction` and `resize`,\n// where they must not be invoked nestedly, except the only case: invoke\n// dispatchAction with updateMethod \"none\" in main process.\n// This flag is used to carry out this rule.\n// All events will be triggered out side main process (i.e. when !this[IN_MAIN_PROCESS]).\n\nvar IN_MAIN_PROCESS = '__flagInMainProcess';\nvar OPTION_UPDATED = '__optionUpdated';\nvar ACTION_REG = /^[a-zA-Z0-9_]+$/;\n\nfunction createRegisterEventWithLowercaseName(method, ignoreDisposed) {\n return function (eventName, handler, context) {\n if (!ignoreDisposed && this._disposed) {\n disposedWarning(this.id);\n return;\n } // Event name is all lowercase\n\n\n eventName = eventName && eventName.toLowerCase();\n Eventful.prototype[method].call(this, eventName, handler, context);\n };\n}\n/**\n * @module echarts~MessageCenter\n */\n\n\nfunction MessageCenter() {\n Eventful.call(this);\n}\n\nMessageCenter.prototype.on = createRegisterEventWithLowercaseName('on', true);\nMessageCenter.prototype.off = createRegisterEventWithLowercaseName('off', true);\nMessageCenter.prototype.one = createRegisterEventWithLowercaseName('one', true);\nzrUtil.mixin(MessageCenter, Eventful);\n/**\n * @module echarts~ECharts\n */\n\nfunction ECharts(dom, theme, opts) {\n opts = opts || {}; // Get theme by name\n\n if (typeof theme === 'string') {\n theme = themeStorage[theme];\n }\n /**\n * @type {string}\n */\n\n\n this.id;\n /**\n * Group id\n * @type {string}\n */\n\n this.group;\n /**\n * @type {HTMLElement}\n * @private\n */\n\n this._dom = dom;\n var defaultRenderer = 'canvas';\n\n /**\n * @type {module:zrender/ZRender}\n * @private\n */\n var zr = this._zr = zrender.init(dom, {\n renderer: opts.renderer || defaultRenderer,\n devicePixelRatio: opts.devicePixelRatio,\n width: opts.width,\n height: opts.height\n });\n /**\n * Expect 60 fps.\n * @type {Function}\n * @private\n */\n\n this._throttledZrFlush = throttle(zrUtil.bind(zr.flush, zr), 17);\n var theme = zrUtil.clone(theme);\n theme && backwardCompat(theme, true);\n /**\n * @type {Object}\n * @private\n */\n\n this._theme = theme;\n /**\n * @type {Array.}\n * @private\n */\n\n this._chartsViews = [];\n /**\n * @type {Object.}\n * @private\n */\n\n this._chartsMap = {};\n /**\n * @type {Array.}\n * @private\n */\n\n this._componentsViews = [];\n /**\n * @type {Object.}\n * @private\n */\n\n this._componentsMap = {};\n /**\n * @type {module:echarts/CoordinateSystem}\n * @private\n */\n\n this._coordSysMgr = new CoordinateSystemManager();\n /**\n * @type {module:echarts/ExtensionAPI}\n * @private\n */\n\n var api = this._api = createExtensionAPI(this); // Sort on demand\n\n function prioritySortFunc(a, b) {\n return a.__prio - b.__prio;\n }\n\n timsort(visualFuncs, prioritySortFunc);\n timsort(dataProcessorFuncs, prioritySortFunc);\n /**\n * @type {module:echarts/stream/Scheduler}\n */\n\n this._scheduler = new Scheduler(this, api, dataProcessorFuncs, visualFuncs);\n Eventful.call(this, this._ecEventProcessor = new EventProcessor());\n /**\n * @type {module:echarts~MessageCenter}\n * @private\n */\n\n this._messageCenter = new MessageCenter(); // Init mouse events\n\n this._initEvents(); // In case some people write `window.onresize = chart.resize`\n\n\n this.resize = zrUtil.bind(this.resize, this); // Can't dispatch action during rendering procedure\n\n this._pendingActions = [];\n zr.animation.on('frame', this._onframe, this);\n bindRenderedEvent(zr, this); // ECharts instance can be used as value.\n\n zrUtil.setAsPrimitive(this);\n}\n\nvar echartsProto = ECharts.prototype;\n\nechartsProto._onframe = function () {\n if (this._disposed) {\n return;\n }\n\n var scheduler = this._scheduler; // Lazy update\n\n if (this[OPTION_UPDATED]) {\n var silent = this[OPTION_UPDATED].silent;\n this[IN_MAIN_PROCESS] = true;\n prepare(this);\n updateMethods.update.call(this);\n this[IN_MAIN_PROCESS] = false;\n this[OPTION_UPDATED] = false;\n flushPendingActions.call(this, silent);\n triggerUpdatedEvent.call(this, silent);\n } // Avoid do both lazy update and progress in one frame.\n else if (scheduler.unfinished) {\n // Stream progress.\n var remainTime = TEST_FRAME_REMAIN_TIME;\n var ecModel = this._model;\n var api = this._api;\n scheduler.unfinished = false;\n\n do {\n var startTime = +new Date();\n scheduler.performSeriesTasks(ecModel); // Currently dataProcessorFuncs do not check threshold.\n\n scheduler.performDataProcessorTasks(ecModel);\n updateStreamModes(this, ecModel); // Do not update coordinate system here. Because that coord system update in\n // each frame is not a good user experience. So we follow the rule that\n // the extent of the coordinate system is determin in the first frame (the\n // frame is executed immedietely after task reset.\n // this._coordSysMgr.update(ecModel, api);\n // console.log('--- ec frame visual ---', remainTime);\n\n scheduler.performVisualTasks(ecModel);\n renderSeries(this, this._model, api, 'remain');\n remainTime -= +new Date() - startTime;\n } while (remainTime > 0 && scheduler.unfinished); // Call flush explicitly for trigger finished event.\n\n\n if (!scheduler.unfinished) {\n this._zr.flush();\n } // Else, zr flushing be ensue within the same frame,\n // because zr flushing is after onframe event.\n\n }\n};\n/**\n * @return {HTMLElement}\n */\n\n\nechartsProto.getDom = function () {\n return this._dom;\n};\n/**\n * @return {module:zrender~ZRender}\n */\n\n\nechartsProto.getZr = function () {\n return this._zr;\n};\n/**\n * Usage:\n * chart.setOption(option, notMerge, lazyUpdate);\n * chart.setOption(option, {\n * notMerge: ...,\n * lazyUpdate: ...,\n * silent: ...\n * });\n *\n * @param {Object} option\n * @param {Object|boolean} [opts] opts or notMerge.\n * @param {boolean} [opts.notMerge=false]\n * @param {boolean} [opts.lazyUpdate=false] Useful when setOption frequently.\n */\n\n\nechartsProto.setOption = function (option, notMerge, lazyUpdate) {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n var silent;\n\n if (isObject(notMerge)) {\n lazyUpdate = notMerge.lazyUpdate;\n silent = notMerge.silent;\n notMerge = notMerge.notMerge;\n }\n\n this[IN_MAIN_PROCESS] = true;\n\n if (!this._model || notMerge) {\n var optionManager = new OptionManager(this._api);\n var theme = this._theme;\n var ecModel = this._model = new GlobalModel();\n ecModel.scheduler = this._scheduler;\n ecModel.init(null, null, theme, optionManager);\n }\n\n this._model.setOption(option, optionPreprocessorFuncs);\n\n if (lazyUpdate) {\n this[OPTION_UPDATED] = {\n silent: silent\n };\n this[IN_MAIN_PROCESS] = false;\n } else {\n prepare(this);\n updateMethods.update.call(this); // Ensure zr refresh sychronously, and then pixel in canvas can be\n // fetched after `setOption`.\n\n this._zr.flush();\n\n this[OPTION_UPDATED] = false;\n this[IN_MAIN_PROCESS] = false;\n flushPendingActions.call(this, silent);\n triggerUpdatedEvent.call(this, silent);\n }\n};\n/**\n * @DEPRECATED\n */\n\n\nechartsProto.setTheme = function () {\n console.error('ECharts#setTheme() is DEPRECATED in ECharts 3.0');\n};\n/**\n * @return {module:echarts/model/Global}\n */\n\n\nechartsProto.getModel = function () {\n return this._model;\n};\n/**\n * @return {Object}\n */\n\n\nechartsProto.getOption = function () {\n return this._model && this._model.getOption();\n};\n/**\n * @return {number}\n */\n\n\nechartsProto.getWidth = function () {\n return this._zr.getWidth();\n};\n/**\n * @return {number}\n */\n\n\nechartsProto.getHeight = function () {\n return this._zr.getHeight();\n};\n/**\n * @return {number}\n */\n\n\nechartsProto.getDevicePixelRatio = function () {\n return this._zr.painter.dpr || window.devicePixelRatio || 1;\n};\n/**\n * Get canvas which has all thing rendered\n * @param {Object} opts\n * @param {string} [opts.backgroundColor]\n * @return {string}\n */\n\n\nechartsProto.getRenderedCanvas = function (opts) {\n if (!env.canvasSupported) {\n return;\n }\n\n opts = opts || {};\n opts.pixelRatio = opts.pixelRatio || 1;\n opts.backgroundColor = opts.backgroundColor || this._model.get('backgroundColor');\n var zr = this._zr; // var list = zr.storage.getDisplayList();\n // Stop animations\n // Never works before in init animation, so remove it.\n // zrUtil.each(list, function (el) {\n // el.stopAnimation(true);\n // });\n\n return zr.painter.getRenderedCanvas(opts);\n};\n/**\n * Get svg data url\n * @return {string}\n */\n\n\nechartsProto.getSvgDataURL = function () {\n if (!env.svgSupported) {\n return;\n }\n\n var zr = this._zr;\n var list = zr.storage.getDisplayList(); // Stop animations\n\n zrUtil.each(list, function (el) {\n el.stopAnimation(true);\n });\n return zr.painter.toDataURL();\n};\n/**\n * @return {string}\n * @param {Object} opts\n * @param {string} [opts.type='png']\n * @param {string} [opts.pixelRatio=1]\n * @param {string} [opts.backgroundColor]\n * @param {string} [opts.excludeComponents]\n */\n\n\nechartsProto.getDataURL = function (opts) {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n opts = opts || {};\n var excludeComponents = opts.excludeComponents;\n var ecModel = this._model;\n var excludesComponentViews = [];\n var self = this;\n each(excludeComponents, function (componentType) {\n ecModel.eachComponent({\n mainType: componentType\n }, function (component) {\n var view = self._componentsMap[component.__viewId];\n\n if (!view.group.ignore) {\n excludesComponentViews.push(view);\n view.group.ignore = true;\n }\n });\n });\n var url = this._zr.painter.getType() === 'svg' ? this.getSvgDataURL() : this.getRenderedCanvas(opts).toDataURL('image/' + (opts && opts.type || 'png'));\n each(excludesComponentViews, function (view) {\n view.group.ignore = false;\n });\n return url;\n};\n/**\n * @return {string}\n * @param {Object} opts\n * @param {string} [opts.type='png']\n * @param {string} [opts.pixelRatio=1]\n * @param {string} [opts.backgroundColor]\n */\n\n\nechartsProto.getConnectedDataURL = function (opts) {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n if (!env.canvasSupported) {\n return;\n }\n\n var isSvg = opts.type === 'svg';\n var groupId = this.group;\n var mathMin = Math.min;\n var mathMax = Math.max;\n var MAX_NUMBER = Infinity;\n\n if (connectedGroups[groupId]) {\n var left = MAX_NUMBER;\n var top = MAX_NUMBER;\n var right = -MAX_NUMBER;\n var bottom = -MAX_NUMBER;\n var canvasList = [];\n var dpr = opts && opts.pixelRatio || 1;\n zrUtil.each(instances, function (chart, id) {\n if (chart.group === groupId) {\n var canvas = isSvg ? chart.getZr().painter.getSvgDom().innerHTML : chart.getRenderedCanvas(zrUtil.clone(opts));\n var boundingRect = chart.getDom().getBoundingClientRect();\n left = mathMin(boundingRect.left, left);\n top = mathMin(boundingRect.top, top);\n right = mathMax(boundingRect.right, right);\n bottom = mathMax(boundingRect.bottom, bottom);\n canvasList.push({\n dom: canvas,\n left: boundingRect.left,\n top: boundingRect.top\n });\n }\n });\n left *= dpr;\n top *= dpr;\n right *= dpr;\n bottom *= dpr;\n var width = right - left;\n var height = bottom - top;\n var targetCanvas = zrUtil.createCanvas();\n var zr = zrender.init(targetCanvas, {\n renderer: isSvg ? 'svg' : 'canvas'\n });\n zr.resize({\n width: width,\n height: height\n });\n\n if (isSvg) {\n var content = '';\n each(canvasList, function (item) {\n var x = item.left - left;\n var y = item.top - top;\n content += '' + item.dom + '';\n });\n zr.painter.getSvgRoot().innerHTML = content;\n\n if (opts.connectedBackgroundColor) {\n zr.painter.setBackgroundColor(opts.connectedBackgroundColor);\n }\n\n zr.refreshImmediately();\n return zr.painter.toDataURL();\n } else {\n // Background between the charts\n if (opts.connectedBackgroundColor) {\n zr.add(new graphic.Rect({\n shape: {\n x: 0,\n y: 0,\n width: width,\n height: height\n },\n style: {\n fill: opts.connectedBackgroundColor\n }\n }));\n }\n\n each(canvasList, function (item) {\n var img = new graphic.Image({\n style: {\n x: item.left * dpr - left,\n y: item.top * dpr - top,\n image: item.dom\n }\n });\n zr.add(img);\n });\n zr.refreshImmediately();\n return targetCanvas.toDataURL('image/' + (opts && opts.type || 'png'));\n }\n } else {\n return this.getDataURL(opts);\n }\n};\n/**\n * Convert from logical coordinate system to pixel coordinate system.\n * See CoordinateSystem#convertToPixel.\n * @param {string|Object} finder\n * If string, e.g., 'geo', means {geoIndex: 0}.\n * If Object, could contain some of these properties below:\n * {\n * seriesIndex / seriesId / seriesName,\n * geoIndex / geoId, geoName,\n * bmapIndex / bmapId / bmapName,\n * xAxisIndex / xAxisId / xAxisName,\n * yAxisIndex / yAxisId / yAxisName,\n * gridIndex / gridId / gridName,\n * ... (can be extended)\n * }\n * @param {Array|number} value\n * @return {Array|number} result\n */\n\n\nechartsProto.convertToPixel = zrUtil.curry(doConvertPixel, 'convertToPixel');\n/**\n * Convert from pixel coordinate system to logical coordinate system.\n * See CoordinateSystem#convertFromPixel.\n * @param {string|Object} finder\n * If string, e.g., 'geo', means {geoIndex: 0}.\n * If Object, could contain some of these properties below:\n * {\n * seriesIndex / seriesId / seriesName,\n * geoIndex / geoId / geoName,\n * bmapIndex / bmapId / bmapName,\n * xAxisIndex / xAxisId / xAxisName,\n * yAxisIndex / yAxisId / yAxisName\n * gridIndex / gridId / gridName,\n * ... (can be extended)\n * }\n * @param {Array|number} value\n * @return {Array|number} result\n */\n\nechartsProto.convertFromPixel = zrUtil.curry(doConvertPixel, 'convertFromPixel');\n\nfunction doConvertPixel(methodName, finder, value) {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n var ecModel = this._model;\n\n var coordSysList = this._coordSysMgr.getCoordinateSystems();\n\n var result;\n finder = modelUtil.parseFinder(ecModel, finder);\n\n for (var i = 0; i < coordSysList.length; i++) {\n var coordSys = coordSysList[i];\n\n if (coordSys[methodName] && (result = coordSys[methodName](ecModel, finder, value)) != null) {\n return result;\n }\n }\n}\n/**\n * Is the specified coordinate systems or components contain the given pixel point.\n * @param {string|Object} finder\n * If string, e.g., 'geo', means {geoIndex: 0}.\n * If Object, could contain some of these properties below:\n * {\n * seriesIndex / seriesId / seriesName,\n * geoIndex / geoId / geoName,\n * bmapIndex / bmapId / bmapName,\n * xAxisIndex / xAxisId / xAxisName,\n * yAxisIndex / yAxisId / yAxisName,\n * gridIndex / gridId / gridName,\n * ... (can be extended)\n * }\n * @param {Array|number} value\n * @return {boolean} result\n */\n\n\nechartsProto.containPixel = function (finder, value) {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n var ecModel = this._model;\n var result;\n finder = modelUtil.parseFinder(ecModel, finder);\n zrUtil.each(finder, function (models, key) {\n key.indexOf('Models') >= 0 && zrUtil.each(models, function (model) {\n var coordSys = model.coordinateSystem;\n\n if (coordSys && coordSys.containPoint) {\n result |= !!coordSys.containPoint(value);\n } else if (key === 'seriesModels') {\n var view = this._chartsMap[model.__viewId];\n\n if (view && view.containPoint) {\n result |= view.containPoint(value, model);\n } else {}\n } else {}\n }, this);\n }, this);\n return !!result;\n};\n/**\n * Get visual from series or data.\n * @param {string|Object} finder\n * If string, e.g., 'series', means {seriesIndex: 0}.\n * If Object, could contain some of these properties below:\n * {\n * seriesIndex / seriesId / seriesName,\n * dataIndex / dataIndexInside\n * }\n * If dataIndex is not specified, series visual will be fetched,\n * but not data item visual.\n * If all of seriesIndex, seriesId, seriesName are not specified,\n * visual will be fetched from first series.\n * @param {string} visualType 'color', 'symbol', 'symbolSize'\n */\n\n\nechartsProto.getVisual = function (finder, visualType) {\n var ecModel = this._model;\n finder = modelUtil.parseFinder(ecModel, finder, {\n defaultMainType: 'series'\n });\n var seriesModel = finder.seriesModel;\n var data = seriesModel.getData();\n var dataIndexInside = finder.hasOwnProperty('dataIndexInside') ? finder.dataIndexInside : finder.hasOwnProperty('dataIndex') ? data.indexOfRawIndex(finder.dataIndex) : null;\n return dataIndexInside != null ? data.getItemVisual(dataIndexInside, visualType) : data.getVisual(visualType);\n};\n/**\n * Get view of corresponding component model\n * @param {module:echarts/model/Component} componentModel\n * @return {module:echarts/view/Component}\n */\n\n\nechartsProto.getViewOfComponentModel = function (componentModel) {\n return this._componentsMap[componentModel.__viewId];\n};\n/**\n * Get view of corresponding series model\n * @param {module:echarts/model/Series} seriesModel\n * @return {module:echarts/view/Chart}\n */\n\n\nechartsProto.getViewOfSeriesModel = function (seriesModel) {\n return this._chartsMap[seriesModel.__viewId];\n};\n\nvar updateMethods = {\n prepareAndUpdate: function (payload) {\n prepare(this);\n updateMethods.update.call(this, payload);\n },\n\n /**\n * @param {Object} payload\n * @private\n */\n update: function (payload) {\n // console.profile && console.profile('update');\n var ecModel = this._model;\n var api = this._api;\n var zr = this._zr;\n var coordSysMgr = this._coordSysMgr;\n var scheduler = this._scheduler; // update before setOption\n\n if (!ecModel) {\n return;\n }\n\n scheduler.restoreData(ecModel, payload);\n scheduler.performSeriesTasks(ecModel); // TODO\n // Save total ecModel here for undo/redo (after restoring data and before processing data).\n // Undo (restoration of total ecModel) can be carried out in 'action' or outside API call.\n // Create new coordinate system each update\n // In LineView may save the old coordinate system and use it to get the orignal point\n\n coordSysMgr.create(ecModel, api);\n scheduler.performDataProcessorTasks(ecModel, payload); // Current stream render is not supported in data process. So we can update\n // stream modes after data processing, where the filtered data is used to\n // deteming whether use progressive rendering.\n\n updateStreamModes(this, ecModel); // We update stream modes before coordinate system updated, then the modes info\n // can be fetched when coord sys updating (consider the barGrid extent fix). But\n // the drawback is the full coord info can not be fetched. Fortunately this full\n // coord is not requied in stream mode updater currently.\n\n coordSysMgr.update(ecModel, api);\n clearColorPalette(ecModel);\n scheduler.performVisualTasks(ecModel, payload);\n render(this, ecModel, api, payload); // Set background\n\n var backgroundColor = ecModel.get('backgroundColor') || 'transparent'; // In IE8\n\n if (!env.canvasSupported) {\n var colorArr = colorTool.parse(backgroundColor);\n backgroundColor = colorTool.stringify(colorArr, 'rgb');\n\n if (colorArr[3] === 0) {\n backgroundColor = 'transparent';\n }\n } else {\n zr.setBackgroundColor(backgroundColor);\n }\n\n performPostUpdateFuncs(ecModel, api); // console.profile && console.profileEnd('update');\n },\n\n /**\n * @param {Object} payload\n * @private\n */\n updateTransform: function (payload) {\n var ecModel = this._model;\n var ecIns = this;\n var api = this._api; // update before setOption\n\n if (!ecModel) {\n return;\n } // ChartView.markUpdateMethod(payload, 'updateTransform');\n\n\n var componentDirtyList = [];\n ecModel.eachComponent(function (componentType, componentModel) {\n var componentView = ecIns.getViewOfComponentModel(componentModel);\n\n if (componentView && componentView.__alive) {\n if (componentView.updateTransform) {\n var result = componentView.updateTransform(componentModel, ecModel, api, payload);\n result && result.update && componentDirtyList.push(componentView);\n } else {\n componentDirtyList.push(componentView);\n }\n }\n });\n var seriesDirtyMap = zrUtil.createHashMap();\n ecModel.eachSeries(function (seriesModel) {\n var chartView = ecIns._chartsMap[seriesModel.__viewId];\n\n if (chartView.updateTransform) {\n var result = chartView.updateTransform(seriesModel, ecModel, api, payload);\n result && result.update && seriesDirtyMap.set(seriesModel.uid, 1);\n } else {\n seriesDirtyMap.set(seriesModel.uid, 1);\n }\n });\n clearColorPalette(ecModel); // Keep pipe to the exist pipeline because it depends on the render task of the full pipeline.\n // this._scheduler.performVisualTasks(ecModel, payload, 'layout', true);\n\n this._scheduler.performVisualTasks(ecModel, payload, {\n setDirty: true,\n dirtyMap: seriesDirtyMap\n }); // Currently, not call render of components. Geo render cost a lot.\n // renderComponents(ecIns, ecModel, api, payload, componentDirtyList);\n\n\n renderSeries(ecIns, ecModel, api, payload, seriesDirtyMap);\n performPostUpdateFuncs(ecModel, this._api);\n },\n\n /**\n * @param {Object} payload\n * @private\n */\n updateView: function (payload) {\n var ecModel = this._model; // update before setOption\n\n if (!ecModel) {\n return;\n }\n\n ChartView.markUpdateMethod(payload, 'updateView');\n clearColorPalette(ecModel); // Keep pipe to the exist pipeline because it depends on the render task of the full pipeline.\n\n this._scheduler.performVisualTasks(ecModel, payload, {\n setDirty: true\n });\n\n render(this, this._model, this._api, payload);\n performPostUpdateFuncs(ecModel, this._api);\n },\n\n /**\n * @param {Object} payload\n * @private\n */\n updateVisual: function (payload) {\n updateMethods.update.call(this, payload); // var ecModel = this._model;\n // // update before setOption\n // if (!ecModel) {\n // return;\n // }\n // ChartView.markUpdateMethod(payload, 'updateVisual');\n // clearColorPalette(ecModel);\n // // Keep pipe to the exist pipeline because it depends on the render task of the full pipeline.\n // this._scheduler.performVisualTasks(ecModel, payload, {visualType: 'visual', setDirty: true});\n // render(this, this._model, this._api, payload);\n // performPostUpdateFuncs(ecModel, this._api);\n },\n\n /**\n * @param {Object} payload\n * @private\n */\n updateLayout: function (payload) {\n updateMethods.update.call(this, payload); // var ecModel = this._model;\n // // update before setOption\n // if (!ecModel) {\n // return;\n // }\n // ChartView.markUpdateMethod(payload, 'updateLayout');\n // // Keep pipe to the exist pipeline because it depends on the render task of the full pipeline.\n // // this._scheduler.performVisualTasks(ecModel, payload, 'layout', true);\n // this._scheduler.performVisualTasks(ecModel, payload, {setDirty: true});\n // render(this, this._model, this._api, payload);\n // performPostUpdateFuncs(ecModel, this._api);\n }\n};\n\nfunction prepare(ecIns) {\n var ecModel = ecIns._model;\n var scheduler = ecIns._scheduler;\n scheduler.restorePipelines(ecModel);\n scheduler.prepareStageTasks();\n prepareView(ecIns, 'component', ecModel, scheduler);\n prepareView(ecIns, 'chart', ecModel, scheduler);\n scheduler.plan();\n}\n/**\n * @private\n */\n\n\nfunction updateDirectly(ecIns, method, payload, mainType, subType) {\n var ecModel = ecIns._model; // broadcast\n\n if (!mainType) {\n // FIXME\n // Chart will not be update directly here, except set dirty.\n // But there is no such scenario now.\n each(ecIns._componentsViews.concat(ecIns._chartsViews), callView);\n return;\n }\n\n var query = {};\n query[mainType + 'Id'] = payload[mainType + 'Id'];\n query[mainType + 'Index'] = payload[mainType + 'Index'];\n query[mainType + 'Name'] = payload[mainType + 'Name'];\n var condition = {\n mainType: mainType,\n query: query\n };\n subType && (condition.subType = subType); // subType may be '' by parseClassType;\n\n var excludeSeriesId = payload.excludeSeriesId;\n\n if (excludeSeriesId != null) {\n excludeSeriesId = zrUtil.createHashMap(modelUtil.normalizeToArray(excludeSeriesId));\n } // If dispatchAction before setOption, do nothing.\n\n\n ecModel && ecModel.eachComponent(condition, function (model) {\n if (!excludeSeriesId || excludeSeriesId.get(model.id) == null) {\n callView(ecIns[mainType === 'series' ? '_chartsMap' : '_componentsMap'][model.__viewId]);\n }\n }, ecIns);\n\n function callView(view) {\n view && view.__alive && view[method] && view[method](view.__model, ecModel, ecIns._api, payload);\n }\n}\n/**\n * Resize the chart\n * @param {Object} opts\n * @param {number} [opts.width] Can be 'auto' (the same as null/undefined)\n * @param {number} [opts.height] Can be 'auto' (the same as null/undefined)\n * @param {boolean} [opts.silent=false]\n */\n\n\nechartsProto.resize = function (opts) {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n this._zr.resize(opts);\n\n var ecModel = this._model; // Resize loading effect\n\n this._loadingFX && this._loadingFX.resize();\n\n if (!ecModel) {\n return;\n }\n\n var optionChanged = ecModel.resetOption('media');\n var silent = opts && opts.silent;\n this[IN_MAIN_PROCESS] = true;\n optionChanged && prepare(this);\n updateMethods.update.call(this);\n this[IN_MAIN_PROCESS] = false;\n flushPendingActions.call(this, silent);\n triggerUpdatedEvent.call(this, silent);\n};\n\nfunction updateStreamModes(ecIns, ecModel) {\n var chartsMap = ecIns._chartsMap;\n var scheduler = ecIns._scheduler;\n ecModel.eachSeries(function (seriesModel) {\n scheduler.updateStreamModes(seriesModel, chartsMap[seriesModel.__viewId]);\n });\n}\n/**\n * Show loading effect\n * @param {string} [name='default']\n * @param {Object} [cfg]\n */\n\n\nechartsProto.showLoading = function (name, cfg) {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n if (isObject(name)) {\n cfg = name;\n name = '';\n }\n\n name = name || 'default';\n this.hideLoading();\n\n if (!loadingEffects[name]) {\n return;\n }\n\n var el = loadingEffects[name](this._api, cfg);\n var zr = this._zr;\n this._loadingFX = el;\n zr.add(el);\n};\n/**\n * Hide loading effect\n */\n\n\nechartsProto.hideLoading = function () {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n this._loadingFX && this._zr.remove(this._loadingFX);\n this._loadingFX = null;\n};\n/**\n * @param {Object} eventObj\n * @return {Object}\n */\n\n\nechartsProto.makeActionFromEvent = function (eventObj) {\n var payload = zrUtil.extend({}, eventObj);\n payload.type = eventActionMap[eventObj.type];\n return payload;\n};\n/**\n * @pubilc\n * @param {Object} payload\n * @param {string} [payload.type] Action type\n * @param {Object|boolean} [opt] If pass boolean, means opt.silent\n * @param {boolean} [opt.silent=false] Whether trigger events.\n * @param {boolean} [opt.flush=undefined]\n * true: Flush immediately, and then pixel in canvas can be fetched\n * immediately. Caution: it might affect performance.\n * false: Not flush.\n * undefined: Auto decide whether perform flush.\n */\n\n\nechartsProto.dispatchAction = function (payload, opt) {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n if (!isObject(opt)) {\n opt = {\n silent: !!opt\n };\n }\n\n if (!actions[payload.type]) {\n return;\n } // Avoid dispatch action before setOption. Especially in `connect`.\n\n\n if (!this._model) {\n return;\n } // May dispatchAction in rendering procedure\n\n\n if (this[IN_MAIN_PROCESS]) {\n this._pendingActions.push(payload);\n\n return;\n }\n\n doDispatchAction.call(this, payload, opt.silent);\n\n if (opt.flush) {\n this._zr.flush(true);\n } else if (opt.flush !== false && env.browser.weChat) {\n // In WeChat embeded browser, `requestAnimationFrame` and `setInterval`\n // hang when sliding page (on touch event), which cause that zr does not\n // refresh util user interaction finished, which is not expected.\n // But `dispatchAction` may be called too frequently when pan on touch\n // screen, which impacts performance if do not throttle them.\n this._throttledZrFlush();\n }\n\n flushPendingActions.call(this, opt.silent);\n triggerUpdatedEvent.call(this, opt.silent);\n};\n\nfunction doDispatchAction(payload, silent) {\n var payloadType = payload.type;\n var escapeConnect = payload.escapeConnect;\n var actionWrap = actions[payloadType];\n var actionInfo = actionWrap.actionInfo;\n var cptType = (actionInfo.update || 'update').split(':');\n var updateMethod = cptType.pop();\n cptType = cptType[0] != null && parseClassType(cptType[0]);\n this[IN_MAIN_PROCESS] = true;\n var payloads = [payload];\n var batched = false; // Batch action\n\n if (payload.batch) {\n batched = true;\n payloads = zrUtil.map(payload.batch, function (item) {\n item = zrUtil.defaults(zrUtil.extend({}, item), payload);\n item.batch = null;\n return item;\n });\n }\n\n var eventObjBatch = [];\n var eventObj;\n var isHighDown = payloadType === 'highlight' || payloadType === 'downplay';\n each(payloads, function (batchItem) {\n // Action can specify the event by return it.\n eventObj = actionWrap.action(batchItem, this._model, this._api); // Emit event outside\n\n eventObj = eventObj || zrUtil.extend({}, batchItem); // Convert type to eventType\n\n eventObj.type = actionInfo.event || eventObj.type;\n eventObjBatch.push(eventObj); // light update does not perform data process, layout and visual.\n\n if (isHighDown) {\n // method, payload, mainType, subType\n updateDirectly(this, updateMethod, batchItem, 'series');\n } else if (cptType) {\n updateDirectly(this, updateMethod, batchItem, cptType.main, cptType.sub);\n }\n }, this);\n\n if (updateMethod !== 'none' && !isHighDown && !cptType) {\n // Still dirty\n if (this[OPTION_UPDATED]) {\n // FIXME Pass payload ?\n prepare(this);\n updateMethods.update.call(this, payload);\n this[OPTION_UPDATED] = false;\n } else {\n updateMethods[updateMethod].call(this, payload);\n }\n } // Follow the rule of action batch\n\n\n if (batched) {\n eventObj = {\n type: actionInfo.event || payloadType,\n escapeConnect: escapeConnect,\n batch: eventObjBatch\n };\n } else {\n eventObj = eventObjBatch[0];\n }\n\n this[IN_MAIN_PROCESS] = false;\n !silent && this._messageCenter.trigger(eventObj.type, eventObj);\n}\n\nfunction flushPendingActions(silent) {\n var pendingActions = this._pendingActions;\n\n while (pendingActions.length) {\n var payload = pendingActions.shift();\n doDispatchAction.call(this, payload, silent);\n }\n}\n\nfunction triggerUpdatedEvent(silent) {\n !silent && this.trigger('updated');\n}\n/**\n * Event `rendered` is triggered when zr\n * rendered. It is useful for realtime\n * snapshot (reflect animation).\n *\n * Event `finished` is triggered when:\n * (1) zrender rendering finished.\n * (2) initial animation finished.\n * (3) progressive rendering finished.\n * (4) no pending action.\n * (5) no delayed setOption needs to be processed.\n */\n\n\nfunction bindRenderedEvent(zr, ecIns) {\n zr.on('rendered', function () {\n ecIns.trigger('rendered'); // The `finished` event should not be triggered repeatly,\n // so it should only be triggered when rendering indeed happend\n // in zrender. (Consider the case that dipatchAction is keep\n // triggering when mouse move).\n\n if ( // Although zr is dirty if initial animation is not finished\n // and this checking is called on frame, we also check\n // animation finished for robustness.\n zr.animation.isFinished() && !ecIns[OPTION_UPDATED] && !ecIns._scheduler.unfinished && !ecIns._pendingActions.length) {\n ecIns.trigger('finished');\n }\n });\n}\n/**\n * @param {Object} params\n * @param {number} params.seriesIndex\n * @param {Array|TypedArray} params.data\n */\n\n\nechartsProto.appendData = function (params) {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n var seriesIndex = params.seriesIndex;\n var ecModel = this.getModel();\n var seriesModel = ecModel.getSeriesByIndex(seriesIndex);\n seriesModel.appendData(params); // Note: `appendData` does not support that update extent of coordinate\n // system, util some scenario require that. In the expected usage of\n // `appendData`, the initial extent of coordinate system should better\n // be fixed by axis `min`/`max` setting or initial data, otherwise if\n // the extent changed while `appendData`, the location of the painted\n // graphic elements have to be changed, which make the usage of\n // `appendData` meaningless.\n\n this._scheduler.unfinished = true;\n};\n/**\n * Register event\n * @method\n */\n\n\nechartsProto.on = createRegisterEventWithLowercaseName('on', false);\nechartsProto.off = createRegisterEventWithLowercaseName('off', false);\nechartsProto.one = createRegisterEventWithLowercaseName('one', false);\n/**\n * Prepare view instances of charts and components\n * @param {module:echarts/model/Global} ecModel\n * @private\n */\n\nfunction prepareView(ecIns, type, ecModel, scheduler) {\n var isComponent = type === 'component';\n var viewList = isComponent ? ecIns._componentsViews : ecIns._chartsViews;\n var viewMap = isComponent ? ecIns._componentsMap : ecIns._chartsMap;\n var zr = ecIns._zr;\n var api = ecIns._api;\n\n for (var i = 0; i < viewList.length; i++) {\n viewList[i].__alive = false;\n }\n\n isComponent ? ecModel.eachComponent(function (componentType, model) {\n componentType !== 'series' && doPrepare(model);\n }) : ecModel.eachSeries(doPrepare);\n\n function doPrepare(model) {\n // Consider: id same and type changed.\n var viewId = '_ec_' + model.id + '_' + model.type;\n var view = viewMap[viewId];\n\n if (!view) {\n var classType = parseClassType(model.type);\n var Clazz = isComponent ? ComponentView.getClass(classType.main, classType.sub) : ChartView.getClass(classType.sub);\n view = new Clazz();\n view.init(ecModel, api);\n viewMap[viewId] = view;\n viewList.push(view);\n zr.add(view.group);\n }\n\n model.__viewId = view.__id = viewId;\n view.__alive = true;\n view.__model = model;\n view.group.__ecComponentInfo = {\n mainType: model.mainType,\n index: model.componentIndex\n };\n !isComponent && scheduler.prepareView(view, model, ecModel, api);\n }\n\n for (var i = 0; i < viewList.length;) {\n var view = viewList[i];\n\n if (!view.__alive) {\n !isComponent && view.renderTask.dispose();\n zr.remove(view.group);\n view.dispose(ecModel, api);\n viewList.splice(i, 1);\n delete viewMap[view.__id];\n view.__id = view.group.__ecComponentInfo = null;\n } else {\n i++;\n }\n }\n} // /**\n// * Encode visual infomation from data after data processing\n// *\n// * @param {module:echarts/model/Global} ecModel\n// * @param {object} layout\n// * @param {boolean} [layoutFilter] `true`: only layout,\n// * `false`: only not layout,\n// * `null`/`undefined`: all.\n// * @param {string} taskBaseTag\n// * @private\n// */\n// function startVisualEncoding(ecIns, ecModel, api, payload, layoutFilter) {\n// each(visualFuncs, function (visual, index) {\n// var isLayout = visual.isLayout;\n// if (layoutFilter == null\n// || (layoutFilter === false && !isLayout)\n// || (layoutFilter === true && isLayout)\n// ) {\n// visual.func(ecModel, api, payload);\n// }\n// });\n// }\n\n\nfunction clearColorPalette(ecModel) {\n ecModel.clearColorPalette();\n ecModel.eachSeries(function (seriesModel) {\n seriesModel.clearColorPalette();\n });\n}\n\nfunction render(ecIns, ecModel, api, payload) {\n renderComponents(ecIns, ecModel, api, payload);\n each(ecIns._chartsViews, function (chart) {\n chart.__alive = false;\n });\n renderSeries(ecIns, ecModel, api, payload); // Remove groups of unrendered charts\n\n each(ecIns._chartsViews, function (chart) {\n if (!chart.__alive) {\n chart.remove(ecModel, api);\n }\n });\n}\n\nfunction renderComponents(ecIns, ecModel, api, payload, dirtyList) {\n each(dirtyList || ecIns._componentsViews, function (componentView) {\n var componentModel = componentView.__model;\n componentView.render(componentModel, ecModel, api, payload);\n updateZ(componentModel, componentView);\n });\n}\n/**\n * Render each chart and component\n * @private\n */\n\n\nfunction renderSeries(ecIns, ecModel, api, payload, dirtyMap) {\n // Render all charts\n var scheduler = ecIns._scheduler;\n var unfinished;\n ecModel.eachSeries(function (seriesModel) {\n var chartView = ecIns._chartsMap[seriesModel.__viewId];\n chartView.__alive = true;\n var renderTask = chartView.renderTask;\n scheduler.updatePayload(renderTask, payload);\n\n if (dirtyMap && dirtyMap.get(seriesModel.uid)) {\n renderTask.dirty();\n }\n\n unfinished |= renderTask.perform(scheduler.getPerformArgs(renderTask));\n chartView.group.silent = !!seriesModel.get('silent');\n updateZ(seriesModel, chartView);\n updateBlend(seriesModel, chartView);\n });\n scheduler.unfinished |= unfinished; // If use hover layer\n\n updateHoverLayerStatus(ecIns, ecModel); // Add aria\n\n aria(ecIns._zr.dom, ecModel);\n}\n\nfunction performPostUpdateFuncs(ecModel, api) {\n each(postUpdateFuncs, function (func) {\n func(ecModel, api);\n });\n}\n\nvar MOUSE_EVENT_NAMES = ['click', 'dblclick', 'mouseover', 'mouseout', 'mousemove', 'mousedown', 'mouseup', 'globalout', 'contextmenu'];\n/**\n * @private\n */\n\nechartsProto._initEvents = function () {\n each(MOUSE_EVENT_NAMES, function (eveName) {\n var handler = function (e) {\n var ecModel = this.getModel();\n var el = e.target;\n var params;\n var isGlobalOut = eveName === 'globalout'; // no e.target when 'globalout'.\n\n if (isGlobalOut) {\n params = {};\n } else if (el && el.dataIndex != null) {\n var dataModel = el.dataModel || ecModel.getSeriesByIndex(el.seriesIndex);\n params = dataModel && dataModel.getDataParams(el.dataIndex, el.dataType, el) || {};\n } // If element has custom eventData of components\n else if (el && el.eventData) {\n params = zrUtil.extend({}, el.eventData);\n } // Contract: if params prepared in mouse event,\n // these properties must be specified:\n // {\n // componentType: string (component main type)\n // componentIndex: number\n // }\n // Otherwise event query can not work.\n\n\n if (params) {\n var componentType = params.componentType;\n var componentIndex = params.componentIndex; // Special handling for historic reason: when trigger by\n // markLine/markPoint/markArea, the componentType is\n // 'markLine'/'markPoint'/'markArea', but we should better\n // enable them to be queried by seriesIndex, since their\n // option is set in each series.\n\n if (componentType === 'markLine' || componentType === 'markPoint' || componentType === 'markArea') {\n componentType = 'series';\n componentIndex = params.seriesIndex;\n }\n\n var model = componentType && componentIndex != null && ecModel.getComponent(componentType, componentIndex);\n var view = model && this[model.mainType === 'series' ? '_chartsMap' : '_componentsMap'][model.__viewId];\n params.event = e;\n params.type = eveName;\n this._ecEventProcessor.eventInfo = {\n targetEl: el,\n packedEvent: params,\n model: model,\n view: view\n };\n this.trigger(eveName, params);\n }\n }; // Consider that some component (like tooltip, brush, ...)\n // register zr event handler, but user event handler might\n // do anything, such as call `setOption` or `dispatchAction`,\n // which probably update any of the content and probably\n // cause problem if it is called previous other inner handlers.\n\n\n handler.zrEventfulCallAtLast = true;\n\n this._zr.on(eveName, handler, this);\n }, this);\n each(eventActionMap, function (actionType, eventType) {\n this._messageCenter.on(eventType, function (event) {\n this.trigger(eventType, event);\n }, this);\n }, this);\n};\n/**\n * @return {boolean}\n */\n\n\nechartsProto.isDisposed = function () {\n return this._disposed;\n};\n/**\n * Clear\n */\n\n\nechartsProto.clear = function () {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n this.setOption({\n series: []\n }, true);\n};\n/**\n * Dispose instance\n */\n\n\nechartsProto.dispose = function () {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n this._disposed = true;\n modelUtil.setAttribute(this.getDom(), DOM_ATTRIBUTE_KEY, '');\n var api = this._api;\n var ecModel = this._model;\n each(this._componentsViews, function (component) {\n component.dispose(ecModel, api);\n });\n each(this._chartsViews, function (chart) {\n chart.dispose(ecModel, api);\n }); // Dispose after all views disposed\n\n this._zr.dispose();\n\n delete instances[this.id];\n};\n\nzrUtil.mixin(ECharts, Eventful);\n\nfunction disposedWarning(id) {}\n\nfunction updateHoverLayerStatus(ecIns, ecModel) {\n var zr = ecIns._zr;\n var storage = zr.storage;\n var elCount = 0;\n storage.traverse(function (el) {\n elCount++;\n });\n\n if (elCount > ecModel.get('hoverLayerThreshold') && !env.node) {\n ecModel.eachSeries(function (seriesModel) {\n if (seriesModel.preventUsingHoverLayer) {\n return;\n }\n\n var chartView = ecIns._chartsMap[seriesModel.__viewId];\n\n if (chartView.__alive) {\n chartView.group.traverse(function (el) {\n // Don't switch back.\n el.useHoverLayer = true;\n });\n }\n });\n }\n}\n/**\n * Update chart progressive and blend.\n * @param {module:echarts/model/Series|module:echarts/model/Component} model\n * @param {module:echarts/view/Component|module:echarts/view/Chart} view\n */\n\n\nfunction updateBlend(seriesModel, chartView) {\n var blendMode = seriesModel.get('blendMode') || null;\n chartView.group.traverse(function (el) {\n // FIXME marker and other components\n if (!el.isGroup) {\n // Only set if blendMode is changed. In case element is incremental and don't wan't to rerender.\n if (el.style.blend !== blendMode) {\n el.setStyle('blend', blendMode);\n }\n }\n\n if (el.eachPendingDisplayable) {\n el.eachPendingDisplayable(function (displayable) {\n displayable.setStyle('blend', blendMode);\n });\n }\n });\n}\n/**\n * @param {module:echarts/model/Series|module:echarts/model/Component} model\n * @param {module:echarts/view/Component|module:echarts/view/Chart} view\n */\n\n\nfunction updateZ(model, view) {\n var z = model.get('z');\n var zlevel = model.get('zlevel'); // Set z and zlevel\n\n view.group.traverse(function (el) {\n if (el.type !== 'group') {\n z != null && (el.z = z);\n zlevel != null && (el.zlevel = zlevel);\n }\n });\n}\n\nfunction createExtensionAPI(ecInstance) {\n var coordSysMgr = ecInstance._coordSysMgr;\n return zrUtil.extend(new ExtensionAPI(ecInstance), {\n // Inject methods\n getCoordinateSystems: zrUtil.bind(coordSysMgr.getCoordinateSystems, coordSysMgr),\n getComponentByElement: function (el) {\n while (el) {\n var modelInfo = el.__ecComponentInfo;\n\n if (modelInfo != null) {\n return ecInstance._model.getComponent(modelInfo.mainType, modelInfo.index);\n }\n\n el = el.parent;\n }\n }\n });\n}\n/**\n * @class\n * Usage of query:\n * `chart.on('click', query, handler);`\n * The `query` can be:\n * + The component type query string, only `mainType` or `mainType.subType`,\n * like: 'xAxis', 'series', 'xAxis.category' or 'series.line'.\n * + The component query object, like:\n * `{seriesIndex: 2}`, `{seriesName: 'xx'}`, `{seriesId: 'some'}`,\n * `{xAxisIndex: 2}`, `{xAxisName: 'xx'}`, `{xAxisId: 'some'}`.\n * + The data query object, like:\n * `{dataIndex: 123}`, `{dataType: 'link'}`, `{name: 'some'}`.\n * + The other query object (cmponent customized query), like:\n * `{element: 'some'}` (only available in custom series).\n *\n * Caveat: If a prop in the `query` object is `null/undefined`, it is the\n * same as there is no such prop in the `query` object.\n */\n\n\nfunction EventProcessor() {\n // These info required: targetEl, packedEvent, model, view\n this.eventInfo;\n}\n\nEventProcessor.prototype = {\n constructor: EventProcessor,\n normalizeQuery: function (query) {\n var cptQuery = {};\n var dataQuery = {};\n var otherQuery = {}; // `query` is `mainType` or `mainType.subType` of component.\n\n if (zrUtil.isString(query)) {\n var condCptType = parseClassType(query); // `.main` and `.sub` may be ''.\n\n cptQuery.mainType = condCptType.main || null;\n cptQuery.subType = condCptType.sub || null;\n } // `query` is an object, convert to {mainType, index, name, id}.\n else {\n // `xxxIndex`, `xxxName`, `xxxId`, `name`, `dataIndex`, `dataType` is reserved,\n // can not be used in `compomentModel.filterForExposedEvent`.\n var suffixes = ['Index', 'Name', 'Id'];\n var dataKeys = {\n name: 1,\n dataIndex: 1,\n dataType: 1\n };\n zrUtil.each(query, function (val, key) {\n var reserved = false;\n\n for (var i = 0; i < suffixes.length; i++) {\n var propSuffix = suffixes[i];\n var suffixPos = key.lastIndexOf(propSuffix);\n\n if (suffixPos > 0 && suffixPos === key.length - propSuffix.length) {\n var mainType = key.slice(0, suffixPos); // Consider `dataIndex`.\n\n if (mainType !== 'data') {\n cptQuery.mainType = mainType;\n cptQuery[propSuffix.toLowerCase()] = val;\n reserved = true;\n }\n }\n }\n\n if (dataKeys.hasOwnProperty(key)) {\n dataQuery[key] = val;\n reserved = true;\n }\n\n if (!reserved) {\n otherQuery[key] = val;\n }\n });\n }\n\n return {\n cptQuery: cptQuery,\n dataQuery: dataQuery,\n otherQuery: otherQuery\n };\n },\n filter: function (eventType, query, args) {\n // They should be assigned before each trigger call.\n var eventInfo = this.eventInfo;\n\n if (!eventInfo) {\n return true;\n }\n\n var targetEl = eventInfo.targetEl;\n var packedEvent = eventInfo.packedEvent;\n var model = eventInfo.model;\n var view = eventInfo.view; // For event like 'globalout'.\n\n if (!model || !view) {\n return true;\n }\n\n var cptQuery = query.cptQuery;\n var dataQuery = query.dataQuery;\n return check(cptQuery, model, 'mainType') && check(cptQuery, model, 'subType') && check(cptQuery, model, 'index', 'componentIndex') && check(cptQuery, model, 'name') && check(cptQuery, model, 'id') && check(dataQuery, packedEvent, 'name') && check(dataQuery, packedEvent, 'dataIndex') && check(dataQuery, packedEvent, 'dataType') && (!view.filterForExposedEvent || view.filterForExposedEvent(eventType, query.otherQuery, targetEl, packedEvent));\n\n function check(query, host, prop, propOnHost) {\n return query[prop] == null || host[propOnHost || prop] === query[prop];\n }\n },\n afterTrigger: function () {\n // Make sure the eventInfo wont be used in next trigger.\n this.eventInfo = null;\n }\n};\n/**\n * @type {Object} key: actionType.\n * @inner\n */\n\nvar actions = {};\n/**\n * Map eventType to actionType\n * @type {Object}\n */\n\nvar eventActionMap = {};\n/**\n * Data processor functions of each stage\n * @type {Array.>}\n * @inner\n */\n\nvar dataProcessorFuncs = [];\n/**\n * @type {Array.}\n * @inner\n */\n\nvar optionPreprocessorFuncs = [];\n/**\n * @type {Array.}\n * @inner\n */\n\nvar postUpdateFuncs = [];\n/**\n * Visual encoding functions of each stage\n * @type {Array.>}\n */\n\nvar visualFuncs = [];\n/**\n * Theme storage\n * @type {Object.}\n */\n\nvar themeStorage = {};\n/**\n * Loading effects\n */\n\nvar loadingEffects = {};\nvar instances = {};\nvar connectedGroups = {};\nvar idBase = new Date() - 0;\nvar groupIdBase = new Date() - 0;\nvar DOM_ATTRIBUTE_KEY = '_echarts_instance_';\n\nfunction enableConnect(chart) {\n var STATUS_PENDING = 0;\n var STATUS_UPDATING = 1;\n var STATUS_UPDATED = 2;\n var STATUS_KEY = '__connectUpdateStatus';\n\n function updateConnectedChartsStatus(charts, status) {\n for (var i = 0; i < charts.length; i++) {\n var otherChart = charts[i];\n otherChart[STATUS_KEY] = status;\n }\n }\n\n each(eventActionMap, function (actionType, eventType) {\n chart._messageCenter.on(eventType, function (event) {\n if (connectedGroups[chart.group] && chart[STATUS_KEY] !== STATUS_PENDING) {\n if (event && event.escapeConnect) {\n return;\n }\n\n var action = chart.makeActionFromEvent(event);\n var otherCharts = [];\n each(instances, function (otherChart) {\n if (otherChart !== chart && otherChart.group === chart.group) {\n otherCharts.push(otherChart);\n }\n });\n updateConnectedChartsStatus(otherCharts, STATUS_PENDING);\n each(otherCharts, function (otherChart) {\n if (otherChart[STATUS_KEY] !== STATUS_UPDATING) {\n otherChart.dispatchAction(action);\n }\n });\n updateConnectedChartsStatus(otherCharts, STATUS_UPDATED);\n }\n });\n });\n}\n/**\n * @param {HTMLElement} dom\n * @param {Object} [theme]\n * @param {Object} opts\n * @param {number} [opts.devicePixelRatio] Use window.devicePixelRatio by default\n * @param {string} [opts.renderer] Can choose 'canvas' or 'svg' to render the chart.\n * @param {number} [opts.width] Use clientWidth of the input `dom` by default.\n * Can be 'auto' (the same as null/undefined)\n * @param {number} [opts.height] Use clientHeight of the input `dom` by default.\n * Can be 'auto' (the same as null/undefined)\n */\n\n\nfunction init(dom, theme, opts) {\n var existInstance = getInstanceByDom(dom);\n\n if (existInstance) {\n return existInstance;\n }\n\n var chart = new ECharts(dom, theme, opts);\n chart.id = 'ec_' + idBase++;\n instances[chart.id] = chart;\n modelUtil.setAttribute(dom, DOM_ATTRIBUTE_KEY, chart.id);\n enableConnect(chart);\n return chart;\n}\n/**\n * @return {string|Array.} groupId\n */\n\n\nfunction connect(groupId) {\n // Is array of charts\n if (zrUtil.isArray(groupId)) {\n var charts = groupId;\n groupId = null; // If any chart has group\n\n each(charts, function (chart) {\n if (chart.group != null) {\n groupId = chart.group;\n }\n });\n groupId = groupId || 'g_' + groupIdBase++;\n each(charts, function (chart) {\n chart.group = groupId;\n });\n }\n\n connectedGroups[groupId] = true;\n return groupId;\n}\n/**\n * @DEPRECATED\n * @return {string} groupId\n */\n\n\nfunction disConnect(groupId) {\n connectedGroups[groupId] = false;\n}\n/**\n * @return {string} groupId\n */\n\n\nvar disconnect = disConnect;\n/**\n * Dispose a chart instance\n * @param {module:echarts~ECharts|HTMLDomElement|string} chart\n */\n\nfunction dispose(chart) {\n if (typeof chart === 'string') {\n chart = instances[chart];\n } else if (!(chart instanceof ECharts)) {\n // Try to treat as dom\n chart = getInstanceByDom(chart);\n }\n\n if (chart instanceof ECharts && !chart.isDisposed()) {\n chart.dispose();\n }\n}\n/**\n * @param {HTMLElement} dom\n * @return {echarts~ECharts}\n */\n\n\nfunction getInstanceByDom(dom) {\n return instances[modelUtil.getAttribute(dom, DOM_ATTRIBUTE_KEY)];\n}\n/**\n * @param {string} key\n * @return {echarts~ECharts}\n */\n\n\nfunction getInstanceById(key) {\n return instances[key];\n}\n/**\n * Register theme\n */\n\n\nfunction registerTheme(name, theme) {\n themeStorage[name] = theme;\n}\n/**\n * Register option preprocessor\n * @param {Function} preprocessorFunc\n */\n\n\nfunction registerPreprocessor(preprocessorFunc) {\n optionPreprocessorFuncs.push(preprocessorFunc);\n}\n/**\n * @param {number} [priority=1000]\n * @param {Object|Function} processor\n */\n\n\nfunction registerProcessor(priority, processor) {\n normalizeRegister(dataProcessorFuncs, priority, processor, PRIORITY_PROCESSOR_FILTER);\n}\n/**\n * Register postUpdater\n * @param {Function} postUpdateFunc\n */\n\n\nfunction registerPostUpdate(postUpdateFunc) {\n postUpdateFuncs.push(postUpdateFunc);\n}\n/**\n * Usage:\n * registerAction('someAction', 'someEvent', function () { ... });\n * registerAction('someAction', function () { ... });\n * registerAction(\n * {type: 'someAction', event: 'someEvent', update: 'updateView'},\n * function () { ... }\n * );\n *\n * @param {(string|Object)} actionInfo\n * @param {string} actionInfo.type\n * @param {string} [actionInfo.event]\n * @param {string} [actionInfo.update]\n * @param {string} [eventName]\n * @param {Function} action\n */\n\n\nfunction registerAction(actionInfo, eventName, action) {\n if (typeof eventName === 'function') {\n action = eventName;\n eventName = '';\n }\n\n var actionType = isObject(actionInfo) ? actionInfo.type : [actionInfo, actionInfo = {\n event: eventName\n }][0]; // Event name is all lowercase\n\n actionInfo.event = (actionInfo.event || actionType).toLowerCase();\n eventName = actionInfo.event; // Validate action type and event name.\n\n assert(ACTION_REG.test(actionType) && ACTION_REG.test(eventName));\n\n if (!actions[actionType]) {\n actions[actionType] = {\n action: action,\n actionInfo: actionInfo\n };\n }\n\n eventActionMap[eventName] = actionType;\n}\n/**\n * @param {string} type\n * @param {*} CoordinateSystem\n */\n\n\nfunction registerCoordinateSystem(type, CoordinateSystem) {\n CoordinateSystemManager.register(type, CoordinateSystem);\n}\n/**\n * Get dimensions of specified coordinate system.\n * @param {string} type\n * @return {Array.}\n */\n\n\nfunction getCoordinateSystemDimensions(type) {\n var coordSysCreator = CoordinateSystemManager.get(type);\n\n if (coordSysCreator) {\n return coordSysCreator.getDimensionsInfo ? coordSysCreator.getDimensionsInfo() : coordSysCreator.dimensions.slice();\n }\n}\n/**\n * Layout is a special stage of visual encoding\n * Most visual encoding like color are common for different chart\n * But each chart has it's own layout algorithm\n *\n * @param {number} [priority=1000]\n * @param {Function} layoutTask\n */\n\n\nfunction registerLayout(priority, layoutTask) {\n normalizeRegister(visualFuncs, priority, layoutTask, PRIORITY_VISUAL_LAYOUT, 'layout');\n}\n/**\n * @param {number} [priority=3000]\n * @param {module:echarts/stream/Task} visualTask\n */\n\n\nfunction registerVisual(priority, visualTask) {\n normalizeRegister(visualFuncs, priority, visualTask, PRIORITY_VISUAL_CHART, 'visual');\n}\n/**\n * @param {Object|Function} fn: {seriesType, createOnAllSeries, performRawSeries, reset}\n */\n\n\nfunction normalizeRegister(targetList, priority, fn, defaultPriority, visualType) {\n if (isFunction(priority) || isObject(priority)) {\n fn = priority;\n priority = defaultPriority;\n }\n\n var stageHandler = Scheduler.wrapStageHandler(fn, visualType);\n stageHandler.__prio = priority;\n stageHandler.__raw = fn;\n targetList.push(stageHandler);\n return stageHandler;\n}\n/**\n * @param {string} name\n */\n\n\nfunction registerLoading(name, loadingFx) {\n loadingEffects[name] = loadingFx;\n}\n/**\n * @param {Object} opts\n * @param {string} [superClass]\n */\n\n\nfunction extendComponentModel(opts\n/*, superClass*/\n) {\n // var Clazz = ComponentModel;\n // if (superClass) {\n // var classType = parseClassType(superClass);\n // Clazz = ComponentModel.getClass(classType.main, classType.sub, true);\n // }\n return ComponentModel.extend(opts);\n}\n/**\n * @param {Object} opts\n * @param {string} [superClass]\n */\n\n\nfunction extendComponentView(opts\n/*, superClass*/\n) {\n // var Clazz = ComponentView;\n // if (superClass) {\n // var classType = parseClassType(superClass);\n // Clazz = ComponentView.getClass(classType.main, classType.sub, true);\n // }\n return ComponentView.extend(opts);\n}\n/**\n * @param {Object} opts\n * @param {string} [superClass]\n */\n\n\nfunction extendSeriesModel(opts\n/*, superClass*/\n) {\n // var Clazz = SeriesModel;\n // if (superClass) {\n // superClass = 'series.' + superClass.replace('series.', '');\n // var classType = parseClassType(superClass);\n // Clazz = ComponentModel.getClass(classType.main, classType.sub, true);\n // }\n return SeriesModel.extend(opts);\n}\n/**\n * @param {Object} opts\n * @param {string} [superClass]\n */\n\n\nfunction extendChartView(opts\n/*, superClass*/\n) {\n // var Clazz = ChartView;\n // if (superClass) {\n // superClass = superClass.replace('series.', '');\n // var classType = parseClassType(superClass);\n // Clazz = ChartView.getClass(classType.main, true);\n // }\n return ChartView.extend(opts);\n}\n/**\n * ZRender need a canvas context to do measureText.\n * But in node environment canvas may be created by node-canvas.\n * So we need to specify how to create a canvas instead of using document.createElement('canvas')\n *\n * Be careful of using it in the browser.\n *\n * @param {Function} creator\n * @example\n * var Canvas = require('canvas');\n * var echarts = require('echarts');\n * echarts.setCanvasCreator(function () {\n * // Small size is enough.\n * return new Canvas(32, 32);\n * });\n */\n\n\nfunction setCanvasCreator(creator) {\n zrUtil.$override('createCanvas', creator);\n}\n/**\n * @param {string} mapName\n * @param {Array.|Object|string} geoJson\n * @param {Object} [specialAreas]\n *\n * @example GeoJSON\n * $.get('USA.json', function (geoJson) {\n * echarts.registerMap('USA', geoJson);\n * // Or\n * echarts.registerMap('USA', {\n * geoJson: geoJson,\n * specialAreas: {}\n * })\n * });\n *\n * $.get('airport.svg', function (svg) {\n * echarts.registerMap('airport', {\n * svg: svg\n * }\n * });\n *\n * echarts.registerMap('eu', [\n * {svg: eu-topographic.svg},\n * {geoJSON: eu.json}\n * ])\n */\n\n\nfunction registerMap(mapName, geoJson, specialAreas) {\n mapDataStorage.registerMap(mapName, geoJson, specialAreas);\n}\n/**\n * @param {string} mapName\n * @return {Object}\n */\n\n\nfunction getMap(mapName) {\n // For backward compatibility, only return the first one.\n var records = mapDataStorage.retrieveMap(mapName);\n return records && records[0] && {\n geoJson: records[0].geoJSON,\n specialAreas: records[0].specialAreas\n };\n}\n\nregisterVisual(PRIORITY_VISUAL_GLOBAL, seriesColor);\nregisterPreprocessor(backwardCompat);\nregisterProcessor(PRIORITY_PROCESSOR_DATASTACK, dataStack);\nregisterLoading('default', loadingDefault); // Default actions\n\nregisterAction({\n type: 'highlight',\n event: 'highlight',\n update: 'highlight'\n}, zrUtil.noop);\nregisterAction({\n type: 'downplay',\n event: 'downplay',\n update: 'downplay'\n}, zrUtil.noop); // Default theme\n\nregisterTheme('light', lightTheme);\nregisterTheme('dark', darkTheme); // For backward compatibility, where the namespace `dataTool` will\n// be mounted on `echarts` is the extension `dataTool` is imported.\n\nvar dataTool = {};\nexports.version = version;\nexports.dependencies = dependencies;\nexports.PRIORITY = PRIORITY;\nexports.init = init;\nexports.connect = connect;\nexports.disConnect = disConnect;\nexports.disconnect = disconnect;\nexports.dispose = dispose;\nexports.getInstanceByDom = getInstanceByDom;\nexports.getInstanceById = getInstanceById;\nexports.registerTheme = registerTheme;\nexports.registerPreprocessor = registerPreprocessor;\nexports.registerProcessor = registerProcessor;\nexports.registerPostUpdate = registerPostUpdate;\nexports.registerAction = registerAction;\nexports.registerCoordinateSystem = registerCoordinateSystem;\nexports.getCoordinateSystemDimensions = getCoordinateSystemDimensions;\nexports.registerLayout = registerLayout;\nexports.registerVisual = registerVisual;\nexports.registerLoading = registerLoading;\nexports.extendComponentModel = extendComponentModel;\nexports.extendComponentView = extendComponentView;\nexports.extendSeriesModel = extendSeriesModel;\nexports.extendChartView = extendChartView;\nexports.setCanvasCreator = setCanvasCreator;\nexports.registerMap = registerMap;\nexports.getMap = getMap;\nexports.dataTool = dataTool;\nvar ___ec_export = require(\"./export\");\n(function () {\n for (var key in ___ec_export) {\n if (___ec_export.hasOwnProperty(key)) {\n exports[key] = ___ec_export[key];\n }\n }\n})();","/* global Float32Array */\nvar ArrayCtor = typeof Float32Array === 'undefined' ? Array : Float32Array;\n/**\n * 创建一个向量\n * @param {number} [x=0]\n * @param {number} [y=0]\n * @return {Vector2}\n */\n\nfunction create(x, y) {\n var out = new ArrayCtor(2);\n\n if (x == null) {\n x = 0;\n }\n\n if (y == null) {\n y = 0;\n }\n\n out[0] = x;\n out[1] = y;\n return out;\n}\n/**\n * 复制向量数据\n * @param {Vector2} out\n * @param {Vector2} v\n * @return {Vector2}\n */\n\n\nfunction copy(out, v) {\n out[0] = v[0];\n out[1] = v[1];\n return out;\n}\n/**\n * 克隆一个向量\n * @param {Vector2} v\n * @return {Vector2}\n */\n\n\nfunction clone(v) {\n var out = new ArrayCtor(2);\n out[0] = v[0];\n out[1] = v[1];\n return out;\n}\n/**\n * 设置向量的两个项\n * @param {Vector2} out\n * @param {number} a\n * @param {number} b\n * @return {Vector2} 结果\n */\n\n\nfunction set(out, a, b) {\n out[0] = a;\n out[1] = b;\n return out;\n}\n/**\n * 向量相加\n * @param {Vector2} out\n * @param {Vector2} v1\n * @param {Vector2} v2\n */\n\n\nfunction add(out, v1, v2) {\n out[0] = v1[0] + v2[0];\n out[1] = v1[1] + v2[1];\n return out;\n}\n/**\n * 向量缩放后相加\n * @param {Vector2} out\n * @param {Vector2} v1\n * @param {Vector2} v2\n * @param {number} a\n */\n\n\nfunction scaleAndAdd(out, v1, v2, a) {\n out[0] = v1[0] + v2[0] * a;\n out[1] = v1[1] + v2[1] * a;\n return out;\n}\n/**\n * 向量相减\n * @param {Vector2} out\n * @param {Vector2} v1\n * @param {Vector2} v2\n */\n\n\nfunction sub(out, v1, v2) {\n out[0] = v1[0] - v2[0];\n out[1] = v1[1] - v2[1];\n return out;\n}\n/**\n * 向量长度\n * @param {Vector2} v\n * @return {number}\n */\n\n\nfunction len(v) {\n return Math.sqrt(lenSquare(v));\n}\n\nvar length = len; // jshint ignore:line\n\n/**\n * 向量长度平方\n * @param {Vector2} v\n * @return {number}\n */\n\nfunction lenSquare(v) {\n return v[0] * v[0] + v[1] * v[1];\n}\n\nvar lengthSquare = lenSquare;\n/**\n * 向量乘法\n * @param {Vector2} out\n * @param {Vector2} v1\n * @param {Vector2} v2\n */\n\nfunction mul(out, v1, v2) {\n out[0] = v1[0] * v2[0];\n out[1] = v1[1] * v2[1];\n return out;\n}\n/**\n * 向量除法\n * @param {Vector2} out\n * @param {Vector2} v1\n * @param {Vector2} v2\n */\n\n\nfunction div(out, v1, v2) {\n out[0] = v1[0] / v2[0];\n out[1] = v1[1] / v2[1];\n return out;\n}\n/**\n * 向量点乘\n * @param {Vector2} v1\n * @param {Vector2} v2\n * @return {number}\n */\n\n\nfunction dot(v1, v2) {\n return v1[0] * v2[0] + v1[1] * v2[1];\n}\n/**\n * 向量缩放\n * @param {Vector2} out\n * @param {Vector2} v\n * @param {number} s\n */\n\n\nfunction scale(out, v, s) {\n out[0] = v[0] * s;\n out[1] = v[1] * s;\n return out;\n}\n/**\n * 向量归一化\n * @param {Vector2} out\n * @param {Vector2} v\n */\n\n\nfunction normalize(out, v) {\n var d = len(v);\n\n if (d === 0) {\n out[0] = 0;\n out[1] = 0;\n } else {\n out[0] = v[0] / d;\n out[1] = v[1] / d;\n }\n\n return out;\n}\n/**\n * 计算向量间距离\n * @param {Vector2} v1\n * @param {Vector2} v2\n * @return {number}\n */\n\n\nfunction distance(v1, v2) {\n return Math.sqrt((v1[0] - v2[0]) * (v1[0] - v2[0]) + (v1[1] - v2[1]) * (v1[1] - v2[1]));\n}\n\nvar dist = distance;\n/**\n * 向量距离平方\n * @param {Vector2} v1\n * @param {Vector2} v2\n * @return {number}\n */\n\nfunction distanceSquare(v1, v2) {\n return (v1[0] - v2[0]) * (v1[0] - v2[0]) + (v1[1] - v2[1]) * (v1[1] - v2[1]);\n}\n\nvar distSquare = distanceSquare;\n/**\n * 求负向量\n * @param {Vector2} out\n * @param {Vector2} v\n */\n\nfunction negate(out, v) {\n out[0] = -v[0];\n out[1] = -v[1];\n return out;\n}\n/**\n * 插值两个点\n * @param {Vector2} out\n * @param {Vector2} v1\n * @param {Vector2} v2\n * @param {number} t\n */\n\n\nfunction lerp(out, v1, v2, t) {\n out[0] = v1[0] + t * (v2[0] - v1[0]);\n out[1] = v1[1] + t * (v2[1] - v1[1]);\n return out;\n}\n/**\n * 矩阵左乘向量\n * @param {Vector2} out\n * @param {Vector2} v\n * @param {Vector2} m\n */\n\n\nfunction applyTransform(out, v, m) {\n var x = v[0];\n var y = v[1];\n out[0] = m[0] * x + m[2] * y + m[4];\n out[1] = m[1] * x + m[3] * y + m[5];\n return out;\n}\n/**\n * 求两个向量最小值\n * @param {Vector2} out\n * @param {Vector2} v1\n * @param {Vector2} v2\n */\n\n\nfunction min(out, v1, v2) {\n out[0] = Math.min(v1[0], v2[0]);\n out[1] = Math.min(v1[1], v2[1]);\n return out;\n}\n/**\n * 求两个向量最大值\n * @param {Vector2} out\n * @param {Vector2} v1\n * @param {Vector2} v2\n */\n\n\nfunction max(out, v1, v2) {\n out[0] = Math.max(v1[0], v2[0]);\n out[1] = Math.max(v1[1], v2[1]);\n return out;\n}\n\nexports.create = create;\nexports.copy = copy;\nexports.clone = clone;\nexports.set = set;\nexports.add = add;\nexports.scaleAndAdd = scaleAndAdd;\nexports.sub = sub;\nexports.len = len;\nexports.length = length;\nexports.lenSquare = lenSquare;\nexports.lengthSquare = lengthSquare;\nexports.mul = mul;\nexports.div = div;\nexports.dot = dot;\nexports.scale = scale;\nexports.normalize = normalize;\nexports.distance = distance;\nexports.dist = dist;\nexports.distanceSquare = distanceSquare;\nexports.distSquare = distSquare;\nexports.negate = negate;\nexports.lerp = lerp;\nexports.applyTransform = applyTransform;\nexports.min = min;\nexports.max = max;","var classof = require('../internals/classof-raw');\n\n// `thisNumberValue` abstract operation\n// https://tc39.github.io/ecma262/#sec-thisnumbervalue\nmodule.exports = function (value) {\n if (typeof value != 'number' && classof(value) != 'Number') {\n throw TypeError('Incorrect invocation');\n }\n return +value;\n};\n","var LRU = require(\"../core/LRU\");\n\nvar kCSSColorTable = {\n 'transparent': [0, 0, 0, 0],\n 'aliceblue': [240, 248, 255, 1],\n 'antiquewhite': [250, 235, 215, 1],\n 'aqua': [0, 255, 255, 1],\n 'aquamarine': [127, 255, 212, 1],\n 'azure': [240, 255, 255, 1],\n 'beige': [245, 245, 220, 1],\n 'bisque': [255, 228, 196, 1],\n 'black': [0, 0, 0, 1],\n 'blanchedalmond': [255, 235, 205, 1],\n 'blue': [0, 0, 255, 1],\n 'blueviolet': [138, 43, 226, 1],\n 'brown': [165, 42, 42, 1],\n 'burlywood': [222, 184, 135, 1],\n 'cadetblue': [95, 158, 160, 1],\n 'chartreuse': [127, 255, 0, 1],\n 'chocolate': [210, 105, 30, 1],\n 'coral': [255, 127, 80, 1],\n 'cornflowerblue': [100, 149, 237, 1],\n 'cornsilk': [255, 248, 220, 1],\n 'crimson': [220, 20, 60, 1],\n 'cyan': [0, 255, 255, 1],\n 'darkblue': [0, 0, 139, 1],\n 'darkcyan': [0, 139, 139, 1],\n 'darkgoldenrod': [184, 134, 11, 1],\n 'darkgray': [169, 169, 169, 1],\n 'darkgreen': [0, 100, 0, 1],\n 'darkgrey': [169, 169, 169, 1],\n 'darkkhaki': [189, 183, 107, 1],\n 'darkmagenta': [139, 0, 139, 1],\n 'darkolivegreen': [85, 107, 47, 1],\n 'darkorange': [255, 140, 0, 1],\n 'darkorchid': [153, 50, 204, 1],\n 'darkred': [139, 0, 0, 1],\n 'darksalmon': [233, 150, 122, 1],\n 'darkseagreen': [143, 188, 143, 1],\n 'darkslateblue': [72, 61, 139, 1],\n 'darkslategray': [47, 79, 79, 1],\n 'darkslategrey': [47, 79, 79, 1],\n 'darkturquoise': [0, 206, 209, 1],\n 'darkviolet': [148, 0, 211, 1],\n 'deeppink': [255, 20, 147, 1],\n 'deepskyblue': [0, 191, 255, 1],\n 'dimgray': [105, 105, 105, 1],\n 'dimgrey': [105, 105, 105, 1],\n 'dodgerblue': [30, 144, 255, 1],\n 'firebrick': [178, 34, 34, 1],\n 'floralwhite': [255, 250, 240, 1],\n 'forestgreen': [34, 139, 34, 1],\n 'fuchsia': [255, 0, 255, 1],\n 'gainsboro': [220, 220, 220, 1],\n 'ghostwhite': [248, 248, 255, 1],\n 'gold': [255, 215, 0, 1],\n 'goldenrod': [218, 165, 32, 1],\n 'gray': [128, 128, 128, 1],\n 'green': [0, 128, 0, 1],\n 'greenyellow': [173, 255, 47, 1],\n 'grey': [128, 128, 128, 1],\n 'honeydew': [240, 255, 240, 1],\n 'hotpink': [255, 105, 180, 1],\n 'indianred': [205, 92, 92, 1],\n 'indigo': [75, 0, 130, 1],\n 'ivory': [255, 255, 240, 1],\n 'khaki': [240, 230, 140, 1],\n 'lavender': [230, 230, 250, 1],\n 'lavenderblush': [255, 240, 245, 1],\n 'lawngreen': [124, 252, 0, 1],\n 'lemonchiffon': [255, 250, 205, 1],\n 'lightblue': [173, 216, 230, 1],\n 'lightcoral': [240, 128, 128, 1],\n 'lightcyan': [224, 255, 255, 1],\n 'lightgoldenrodyellow': [250, 250, 210, 1],\n 'lightgray': [211, 211, 211, 1],\n 'lightgreen': [144, 238, 144, 1],\n 'lightgrey': [211, 211, 211, 1],\n 'lightpink': [255, 182, 193, 1],\n 'lightsalmon': [255, 160, 122, 1],\n 'lightseagreen': [32, 178, 170, 1],\n 'lightskyblue': [135, 206, 250, 1],\n 'lightslategray': [119, 136, 153, 1],\n 'lightslategrey': [119, 136, 153, 1],\n 'lightsteelblue': [176, 196, 222, 1],\n 'lightyellow': [255, 255, 224, 1],\n 'lime': [0, 255, 0, 1],\n 'limegreen': [50, 205, 50, 1],\n 'linen': [250, 240, 230, 1],\n 'magenta': [255, 0, 255, 1],\n 'maroon': [128, 0, 0, 1],\n 'mediumaquamarine': [102, 205, 170, 1],\n 'mediumblue': [0, 0, 205, 1],\n 'mediumorchid': [186, 85, 211, 1],\n 'mediumpurple': [147, 112, 219, 1],\n 'mediumseagreen': [60, 179, 113, 1],\n 'mediumslateblue': [123, 104, 238, 1],\n 'mediumspringgreen': [0, 250, 154, 1],\n 'mediumturquoise': [72, 209, 204, 1],\n 'mediumvioletred': [199, 21, 133, 1],\n 'midnightblue': [25, 25, 112, 1],\n 'mintcream': [245, 255, 250, 1],\n 'mistyrose': [255, 228, 225, 1],\n 'moccasin': [255, 228, 181, 1],\n 'navajowhite': [255, 222, 173, 1],\n 'navy': [0, 0, 128, 1],\n 'oldlace': [253, 245, 230, 1],\n 'olive': [128, 128, 0, 1],\n 'olivedrab': [107, 142, 35, 1],\n 'orange': [255, 165, 0, 1],\n 'orangered': [255, 69, 0, 1],\n 'orchid': [218, 112, 214, 1],\n 'palegoldenrod': [238, 232, 170, 1],\n 'palegreen': [152, 251, 152, 1],\n 'paleturquoise': [175, 238, 238, 1],\n 'palevioletred': [219, 112, 147, 1],\n 'papayawhip': [255, 239, 213, 1],\n 'peachpuff': [255, 218, 185, 1],\n 'peru': [205, 133, 63, 1],\n 'pink': [255, 192, 203, 1],\n 'plum': [221, 160, 221, 1],\n 'powderblue': [176, 224, 230, 1],\n 'purple': [128, 0, 128, 1],\n 'red': [255, 0, 0, 1],\n 'rosybrown': [188, 143, 143, 1],\n 'royalblue': [65, 105, 225, 1],\n 'saddlebrown': [139, 69, 19, 1],\n 'salmon': [250, 128, 114, 1],\n 'sandybrown': [244, 164, 96, 1],\n 'seagreen': [46, 139, 87, 1],\n 'seashell': [255, 245, 238, 1],\n 'sienna': [160, 82, 45, 1],\n 'silver': [192, 192, 192, 1],\n 'skyblue': [135, 206, 235, 1],\n 'slateblue': [106, 90, 205, 1],\n 'slategray': [112, 128, 144, 1],\n 'slategrey': [112, 128, 144, 1],\n 'snow': [255, 250, 250, 1],\n 'springgreen': [0, 255, 127, 1],\n 'steelblue': [70, 130, 180, 1],\n 'tan': [210, 180, 140, 1],\n 'teal': [0, 128, 128, 1],\n 'thistle': [216, 191, 216, 1],\n 'tomato': [255, 99, 71, 1],\n 'turquoise': [64, 224, 208, 1],\n 'violet': [238, 130, 238, 1],\n 'wheat': [245, 222, 179, 1],\n 'white': [255, 255, 255, 1],\n 'whitesmoke': [245, 245, 245, 1],\n 'yellow': [255, 255, 0, 1],\n 'yellowgreen': [154, 205, 50, 1]\n};\n\nfunction clampCssByte(i) {\n // Clamp to integer 0 .. 255.\n i = Math.round(i); // Seems to be what Chrome does (vs truncation).\n\n return i < 0 ? 0 : i > 255 ? 255 : i;\n}\n\nfunction clampCssAngle(i) {\n // Clamp to integer 0 .. 360.\n i = Math.round(i); // Seems to be what Chrome does (vs truncation).\n\n return i < 0 ? 0 : i > 360 ? 360 : i;\n}\n\nfunction clampCssFloat(f) {\n // Clamp to float 0.0 .. 1.0.\n return f < 0 ? 0 : f > 1 ? 1 : f;\n}\n\nfunction parseCssInt(str) {\n // int or percentage.\n if (str.length && str.charAt(str.length - 1) === '%') {\n return clampCssByte(parseFloat(str) / 100 * 255);\n }\n\n return clampCssByte(parseInt(str, 10));\n}\n\nfunction parseCssFloat(str) {\n // float or percentage.\n if (str.length && str.charAt(str.length - 1) === '%') {\n return clampCssFloat(parseFloat(str) / 100);\n }\n\n return clampCssFloat(parseFloat(str));\n}\n\nfunction cssHueToRgb(m1, m2, h) {\n if (h < 0) {\n h += 1;\n } else if (h > 1) {\n h -= 1;\n }\n\n if (h * 6 < 1) {\n return m1 + (m2 - m1) * h * 6;\n }\n\n if (h * 2 < 1) {\n return m2;\n }\n\n if (h * 3 < 2) {\n return m1 + (m2 - m1) * (2 / 3 - h) * 6;\n }\n\n return m1;\n}\n\nfunction lerpNumber(a, b, p) {\n return a + (b - a) * p;\n}\n\nfunction setRgba(out, r, g, b, a) {\n out[0] = r;\n out[1] = g;\n out[2] = b;\n out[3] = a;\n return out;\n}\n\nfunction copyRgba(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\n\nvar colorCache = new LRU(20);\nvar lastRemovedArr = null;\n\nfunction putToCache(colorStr, rgbaArr) {\n // Reuse removed array\n if (lastRemovedArr) {\n copyRgba(lastRemovedArr, rgbaArr);\n }\n\n lastRemovedArr = colorCache.put(colorStr, lastRemovedArr || rgbaArr.slice());\n}\n/**\n * @param {string} colorStr\n * @param {Array.} out\n * @return {Array.}\n * @memberOf module:zrender/util/color\n */\n\n\nfunction parse(colorStr, rgbaArr) {\n if (!colorStr) {\n return;\n }\n\n rgbaArr = rgbaArr || [];\n var cached = colorCache.get(colorStr);\n\n if (cached) {\n return copyRgba(rgbaArr, cached);\n } // colorStr may be not string\n\n\n colorStr = colorStr + ''; // Remove all whitespace, not compliant, but should just be more accepting.\n\n var str = colorStr.replace(/ /g, '').toLowerCase(); // Color keywords (and transparent) lookup.\n\n if (str in kCSSColorTable) {\n copyRgba(rgbaArr, kCSSColorTable[str]);\n putToCache(colorStr, rgbaArr);\n return rgbaArr;\n } // #abc and #abc123 syntax.\n\n\n if (str.charAt(0) === '#') {\n if (str.length === 4) {\n var iv = parseInt(str.substr(1), 16); // TODO(deanm): Stricter parsing.\n\n if (!(iv >= 0 && iv <= 0xfff)) {\n setRgba(rgbaArr, 0, 0, 0, 1);\n return; // Covers NaN.\n }\n\n setRgba(rgbaArr, (iv & 0xf00) >> 4 | (iv & 0xf00) >> 8, iv & 0xf0 | (iv & 0xf0) >> 4, iv & 0xf | (iv & 0xf) << 4, 1);\n putToCache(colorStr, rgbaArr);\n return rgbaArr;\n } else if (str.length === 7) {\n var iv = parseInt(str.substr(1), 16); // TODO(deanm): Stricter parsing.\n\n if (!(iv >= 0 && iv <= 0xffffff)) {\n setRgba(rgbaArr, 0, 0, 0, 1);\n return; // Covers NaN.\n }\n\n setRgba(rgbaArr, (iv & 0xff0000) >> 16, (iv & 0xff00) >> 8, iv & 0xff, 1);\n putToCache(colorStr, rgbaArr);\n return rgbaArr;\n }\n\n return;\n }\n\n var op = str.indexOf('(');\n var ep = str.indexOf(')');\n\n if (op !== -1 && ep + 1 === str.length) {\n var fname = str.substr(0, op);\n var params = str.substr(op + 1, ep - (op + 1)).split(',');\n var alpha = 1; // To allow case fallthrough.\n\n switch (fname) {\n case 'rgba':\n if (params.length !== 4) {\n setRgba(rgbaArr, 0, 0, 0, 1);\n return;\n }\n\n alpha = parseCssFloat(params.pop());\n // jshint ignore:line\n // Fall through.\n\n case 'rgb':\n if (params.length !== 3) {\n setRgba(rgbaArr, 0, 0, 0, 1);\n return;\n }\n\n setRgba(rgbaArr, parseCssInt(params[0]), parseCssInt(params[1]), parseCssInt(params[2]), alpha);\n putToCache(colorStr, rgbaArr);\n return rgbaArr;\n\n case 'hsla':\n if (params.length !== 4) {\n setRgba(rgbaArr, 0, 0, 0, 1);\n return;\n }\n\n params[3] = parseCssFloat(params[3]);\n hsla2rgba(params, rgbaArr);\n putToCache(colorStr, rgbaArr);\n return rgbaArr;\n\n case 'hsl':\n if (params.length !== 3) {\n setRgba(rgbaArr, 0, 0, 0, 1);\n return;\n }\n\n hsla2rgba(params, rgbaArr);\n putToCache(colorStr, rgbaArr);\n return rgbaArr;\n\n default:\n return;\n }\n }\n\n setRgba(rgbaArr, 0, 0, 0, 1);\n return;\n}\n/**\n * @param {Array.} hsla\n * @param {Array.} rgba\n * @return {Array.} rgba\n */\n\n\nfunction hsla2rgba(hsla, rgba) {\n var h = (parseFloat(hsla[0]) % 360 + 360) % 360 / 360; // 0 .. 1\n // NOTE(deanm): According to the CSS spec s/l should only be\n // percentages, but we don't bother and let float or percentage.\n\n var s = parseCssFloat(hsla[1]);\n var l = parseCssFloat(hsla[2]);\n var m2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;\n var m1 = l * 2 - m2;\n rgba = rgba || [];\n setRgba(rgba, clampCssByte(cssHueToRgb(m1, m2, h + 1 / 3) * 255), clampCssByte(cssHueToRgb(m1, m2, h) * 255), clampCssByte(cssHueToRgb(m1, m2, h - 1 / 3) * 255), 1);\n\n if (hsla.length === 4) {\n rgba[3] = hsla[3];\n }\n\n return rgba;\n}\n/**\n * @param {Array.} rgba\n * @return {Array.} hsla\n */\n\n\nfunction rgba2hsla(rgba) {\n if (!rgba) {\n return;\n } // RGB from 0 to 255\n\n\n var R = rgba[0] / 255;\n var G = rgba[1] / 255;\n var B = rgba[2] / 255;\n var vMin = Math.min(R, G, B); // Min. value of RGB\n\n var vMax = Math.max(R, G, B); // Max. value of RGB\n\n var delta = vMax - vMin; // Delta RGB value\n\n var L = (vMax + vMin) / 2;\n var H;\n var S; // HSL results from 0 to 1\n\n if (delta === 0) {\n H = 0;\n S = 0;\n } else {\n if (L < 0.5) {\n S = delta / (vMax + vMin);\n } else {\n S = delta / (2 - vMax - vMin);\n }\n\n var deltaR = ((vMax - R) / 6 + delta / 2) / delta;\n var deltaG = ((vMax - G) / 6 + delta / 2) / delta;\n var deltaB = ((vMax - B) / 6 + delta / 2) / delta;\n\n if (R === vMax) {\n H = deltaB - deltaG;\n } else if (G === vMax) {\n H = 1 / 3 + deltaR - deltaB;\n } else if (B === vMax) {\n H = 2 / 3 + deltaG - deltaR;\n }\n\n if (H < 0) {\n H += 1;\n }\n\n if (H > 1) {\n H -= 1;\n }\n }\n\n var hsla = [H * 360, S, L];\n\n if (rgba[3] != null) {\n hsla.push(rgba[3]);\n }\n\n return hsla;\n}\n/**\n * @param {string} color\n * @param {number} level\n * @return {string}\n * @memberOf module:zrender/util/color\n */\n\n\nfunction lift(color, level) {\n var colorArr = parse(color);\n\n if (colorArr) {\n for (var i = 0; i < 3; i++) {\n if (level < 0) {\n colorArr[i] = colorArr[i] * (1 - level) | 0;\n } else {\n colorArr[i] = (255 - colorArr[i]) * level + colorArr[i] | 0;\n }\n\n if (colorArr[i] > 255) {\n colorArr[i] = 255;\n } else if (color[i] < 0) {\n colorArr[i] = 0;\n }\n }\n\n return stringify(colorArr, colorArr.length === 4 ? 'rgba' : 'rgb');\n }\n}\n/**\n * @param {string} color\n * @return {string}\n * @memberOf module:zrender/util/color\n */\n\n\nfunction toHex(color) {\n var colorArr = parse(color);\n\n if (colorArr) {\n return ((1 << 24) + (colorArr[0] << 16) + (colorArr[1] << 8) + +colorArr[2]).toString(16).slice(1);\n }\n}\n/**\n * Map value to color. Faster than lerp methods because color is represented by rgba array.\n * @param {number} normalizedValue A float between 0 and 1.\n * @param {Array.>} colors List of rgba color array\n * @param {Array.} [out] Mapped gba color array\n * @return {Array.} will be null/undefined if input illegal.\n */\n\n\nfunction fastLerp(normalizedValue, colors, out) {\n if (!(colors && colors.length) || !(normalizedValue >= 0 && normalizedValue <= 1)) {\n return;\n }\n\n out = out || [];\n var value = normalizedValue * (colors.length - 1);\n var leftIndex = Math.floor(value);\n var rightIndex = Math.ceil(value);\n var leftColor = colors[leftIndex];\n var rightColor = colors[rightIndex];\n var dv = value - leftIndex;\n out[0] = clampCssByte(lerpNumber(leftColor[0], rightColor[0], dv));\n out[1] = clampCssByte(lerpNumber(leftColor[1], rightColor[1], dv));\n out[2] = clampCssByte(lerpNumber(leftColor[2], rightColor[2], dv));\n out[3] = clampCssFloat(lerpNumber(leftColor[3], rightColor[3], dv));\n return out;\n}\n/**\n * @deprecated\n */\n\n\nvar fastMapToColor = fastLerp;\n/**\n * @param {number} normalizedValue A float between 0 and 1.\n * @param {Array.} colors Color list.\n * @param {boolean=} fullOutput Default false.\n * @return {(string|Object)} Result color. If fullOutput,\n * return {color: ..., leftIndex: ..., rightIndex: ..., value: ...},\n * @memberOf module:zrender/util/color\n */\n\nfunction lerp(normalizedValue, colors, fullOutput) {\n if (!(colors && colors.length) || !(normalizedValue >= 0 && normalizedValue <= 1)) {\n return;\n }\n\n var value = normalizedValue * (colors.length - 1);\n var leftIndex = Math.floor(value);\n var rightIndex = Math.ceil(value);\n var leftColor = parse(colors[leftIndex]);\n var rightColor = parse(colors[rightIndex]);\n var dv = value - leftIndex;\n var color = stringify([clampCssByte(lerpNumber(leftColor[0], rightColor[0], dv)), clampCssByte(lerpNumber(leftColor[1], rightColor[1], dv)), clampCssByte(lerpNumber(leftColor[2], rightColor[2], dv)), clampCssFloat(lerpNumber(leftColor[3], rightColor[3], dv))], 'rgba');\n return fullOutput ? {\n color: color,\n leftIndex: leftIndex,\n rightIndex: rightIndex,\n value: value\n } : color;\n}\n/**\n * @deprecated\n */\n\n\nvar mapToColor = lerp;\n/**\n * @param {string} color\n * @param {number=} h 0 ~ 360, ignore when null.\n * @param {number=} s 0 ~ 1, ignore when null.\n * @param {number=} l 0 ~ 1, ignore when null.\n * @return {string} Color string in rgba format.\n * @memberOf module:zrender/util/color\n */\n\nfunction modifyHSL(color, h, s, l) {\n color = parse(color);\n\n if (color) {\n color = rgba2hsla(color);\n h != null && (color[0] = clampCssAngle(h));\n s != null && (color[1] = parseCssFloat(s));\n l != null && (color[2] = parseCssFloat(l));\n return stringify(hsla2rgba(color), 'rgba');\n }\n}\n/**\n * @param {string} color\n * @param {number=} alpha 0 ~ 1\n * @return {string} Color string in rgba format.\n * @memberOf module:zrender/util/color\n */\n\n\nfunction modifyAlpha(color, alpha) {\n color = parse(color);\n\n if (color && alpha != null) {\n color[3] = clampCssFloat(alpha);\n return stringify(color, 'rgba');\n }\n}\n/**\n * @param {Array.} arrColor like [12,33,44,0.4]\n * @param {string} type 'rgba', 'hsva', ...\n * @return {string} Result color. (If input illegal, return undefined).\n */\n\n\nfunction stringify(arrColor, type) {\n if (!arrColor || !arrColor.length) {\n return;\n }\n\n var colorStr = arrColor[0] + ',' + arrColor[1] + ',' + arrColor[2];\n\n if (type === 'rgba' || type === 'hsva' || type === 'hsla') {\n colorStr += ',' + arrColor[3];\n }\n\n return type + '(' + colorStr + ')';\n}\n\nexports.parse = parse;\nexports.lift = lift;\nexports.toHex = toHex;\nexports.fastLerp = fastLerp;\nexports.fastMapToColor = fastMapToColor;\nexports.lerp = lerp;\nexports.mapToColor = mapToColor;\nexports.modifyHSL = modifyHSL;\nexports.modifyAlpha = modifyAlpha;\nexports.stringify = stringify;","/**\n * @param {Array.} colorStops\n */\nvar Gradient = function (colorStops) {\n this.colorStops = colorStops || [];\n};\n\nGradient.prototype = {\n constructor: Gradient,\n addColorStop: function (offset, color) {\n this.colorStops.push({\n offset: offset,\n color: color\n });\n }\n};\nvar _default = Gradient;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar env = require(\"zrender/lib/core/env\");\n\nvar _model = require(\"../util/model\");\n\nvar makeInner = _model.makeInner;\n\nvar _clazz = require(\"../util/clazz\");\n\nvar enableClassExtend = _clazz.enableClassExtend;\nvar enableClassCheck = _clazz.enableClassCheck;\n\nvar lineStyleMixin = require(\"./mixin/lineStyle\");\n\nvar areaStyleMixin = require(\"./mixin/areaStyle\");\n\nvar textStyleMixin = require(\"./mixin/textStyle\");\n\nvar itemStyleMixin = require(\"./mixin/itemStyle\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @module echarts/model/Model\n */\nvar mixin = zrUtil.mixin;\nvar inner = makeInner();\n/**\n * @alias module:echarts/model/Model\n * @constructor\n * @param {Object} [option]\n * @param {module:echarts/model/Model} [parentModel]\n * @param {module:echarts/model/Global} [ecModel]\n */\n\nfunction Model(option, parentModel, ecModel) {\n /**\n * @type {module:echarts/model/Model}\n * @readOnly\n */\n this.parentModel = parentModel;\n /**\n * @type {module:echarts/model/Global}\n * @readOnly\n */\n\n this.ecModel = ecModel;\n /**\n * @type {Object}\n * @protected\n */\n\n this.option = option; // Simple optimization\n // if (this.init) {\n // if (arguments.length <= 4) {\n // this.init(option, parentModel, ecModel, extraOpt);\n // }\n // else {\n // this.init.apply(this, arguments);\n // }\n // }\n}\n\nModel.prototype = {\n constructor: Model,\n\n /**\n * Model 的初始化函数\n * @param {Object} option\n */\n init: null,\n\n /**\n * 从新的 Option merge\n */\n mergeOption: function (option) {\n zrUtil.merge(this.option, option, true);\n },\n\n /**\n * @param {string|Array.} path\n * @param {boolean} [ignoreParent=false]\n * @return {*}\n */\n get: function (path, ignoreParent) {\n if (path == null) {\n return this.option;\n }\n\n return doGet(this.option, this.parsePath(path), !ignoreParent && getParent(this, path));\n },\n\n /**\n * @param {string} key\n * @param {boolean} [ignoreParent=false]\n * @return {*}\n */\n getShallow: function (key, ignoreParent) {\n var option = this.option;\n var val = option == null ? option : option[key];\n var parentModel = !ignoreParent && getParent(this, key);\n\n if (val == null && parentModel) {\n val = parentModel.getShallow(key);\n }\n\n return val;\n },\n\n /**\n * @param {string|Array.} [path]\n * @param {module:echarts/model/Model} [parentModel]\n * @return {module:echarts/model/Model}\n */\n getModel: function (path, parentModel) {\n var obj = path == null ? this.option : doGet(this.option, path = this.parsePath(path));\n var thisParentModel;\n parentModel = parentModel || (thisParentModel = getParent(this, path)) && thisParentModel.getModel(path);\n return new Model(obj, parentModel, this.ecModel);\n },\n\n /**\n * If model has option\n */\n isEmpty: function () {\n return this.option == null;\n },\n restoreData: function () {},\n // Pending\n clone: function () {\n var Ctor = this.constructor;\n return new Ctor(zrUtil.clone(this.option));\n },\n setReadOnly: function (properties) {// clazzUtil.setReadOnly(this, properties);\n },\n // If path is null/undefined, return null/undefined.\n parsePath: function (path) {\n if (typeof path === 'string') {\n path = path.split('.');\n }\n\n return path;\n },\n\n /**\n * @param {Function} getParentMethod\n * param {Array.|string} path\n * return {module:echarts/model/Model}\n */\n customizeGetParent: function (getParentMethod) {\n inner(this).getParent = getParentMethod;\n },\n isAnimationEnabled: function () {\n if (!env.node) {\n if (this.option.animation != null) {\n return !!this.option.animation;\n } else if (this.parentModel) {\n return this.parentModel.isAnimationEnabled();\n }\n }\n }\n};\n\nfunction doGet(obj, pathArr, parentModel) {\n for (var i = 0; i < pathArr.length; i++) {\n // Ignore empty\n if (!pathArr[i]) {\n continue;\n } // obj could be number/string/... (like 0)\n\n\n obj = obj && typeof obj === 'object' ? obj[pathArr[i]] : null;\n\n if (obj == null) {\n break;\n }\n }\n\n if (obj == null && parentModel) {\n obj = parentModel.get(pathArr);\n }\n\n return obj;\n} // `path` can be null/undefined\n\n\nfunction getParent(model, path) {\n var getParentMethod = inner(model).getParent;\n return getParentMethod ? getParentMethod.call(model, path) : model.parentModel;\n} // Enable Model.extend.\n\n\nenableClassExtend(Model);\nenableClassCheck(Model);\nmixin(Model, lineStyleMixin);\nmixin(Model, areaStyleMixin);\nmixin(Model, textStyleMixin);\nmixin(Model, itemStyleMixin);\nvar _default = Model;\nmodule.exports = _default;","var easingFuncs = require(\"./easing\");\n\n/**\n * 动画主控制器\n * @config target 动画对象,可以是数组,如果是数组的话会批量分发onframe等事件\n * @config life(1000) 动画时长\n * @config delay(0) 动画延迟时间\n * @config loop(true)\n * @config gap(0) 循环的间隔时间\n * @config onframe\n * @config easing(optional)\n * @config ondestroy(optional)\n * @config onrestart(optional)\n *\n * TODO pause\n */\nfunction Clip(options) {\n this._target = options.target; // 生命周期\n\n this._life = options.life || 1000; // 延时\n\n this._delay = options.delay || 0; // 开始时间\n // this._startTime = new Date().getTime() + this._delay;// 单位毫秒\n\n this._initialized = false; // 是否循环\n\n this.loop = options.loop == null ? false : options.loop;\n this.gap = options.gap || 0;\n this.easing = options.easing || 'Linear';\n this.onframe = options.onframe;\n this.ondestroy = options.ondestroy;\n this.onrestart = options.onrestart;\n this._pausedTime = 0;\n this._paused = false;\n}\n\nClip.prototype = {\n constructor: Clip,\n step: function (globalTime, deltaTime) {\n // Set startTime on first step, or _startTime may has milleseconds different between clips\n // PENDING\n if (!this._initialized) {\n this._startTime = globalTime + this._delay;\n this._initialized = true;\n }\n\n if (this._paused) {\n this._pausedTime += deltaTime;\n return;\n }\n\n var percent = (globalTime - this._startTime - this._pausedTime) / this._life; // 还没开始\n\n if (percent < 0) {\n return;\n }\n\n percent = Math.min(percent, 1);\n var easing = this.easing;\n var easingFunc = typeof easing === 'string' ? easingFuncs[easing] : easing;\n var schedule = typeof easingFunc === 'function' ? easingFunc(percent) : percent;\n this.fire('frame', schedule); // 结束\n\n if (percent === 1) {\n if (this.loop) {\n this.restart(globalTime); // 重新开始周期\n // 抛出而不是直接调用事件直到 stage.update 后再统一调用这些事件\n\n return 'restart';\n } // 动画完成将这个控制器标识为待删除\n // 在Animation.update中进行批量删除\n\n\n this._needsRemove = true;\n return 'destroy';\n }\n\n return null;\n },\n restart: function (globalTime) {\n var remainder = (globalTime - this._startTime - this._pausedTime) % this._life;\n this._startTime = globalTime - remainder + this.gap;\n this._pausedTime = 0;\n this._needsRemove = false;\n },\n fire: function (eventType, arg) {\n eventType = 'on' + eventType;\n\n if (this[eventType]) {\n this[eventType](this._target, arg);\n }\n },\n pause: function () {\n this._paused = true;\n },\n resume: function () {\n this._paused = false;\n }\n};\nvar _default = Clip;\nmodule.exports = _default;","var Path = require(\"../Path\");\n\n/**\n * 圆环\n * @module zrender/graphic/shape/Ring\n */\nvar _default = Path.extend({\n type: 'ring',\n shape: {\n cx: 0,\n cy: 0,\n r: 0,\n r0: 0\n },\n buildPath: function (ctx, shape) {\n var x = shape.cx;\n var y = shape.cy;\n var PI2 = Math.PI * 2;\n ctx.moveTo(x + shape.r, y);\n ctx.arc(x, y, shape.r, 0, PI2, false);\n ctx.moveTo(x + shape.r0, y);\n ctx.arc(x, y, shape.r0, 0, PI2, true);\n }\n});\n\nmodule.exports = _default;","import { Vue, mergeData } from '../../vue';\nimport { NAME_INPUT_GROUP_ADDON } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { BInputGroupText } from './input-group-text'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n append: makeProp(PROP_TYPE_BOOLEAN, false),\n id: makeProp(PROP_TYPE_STRING),\n isText: makeProp(PROP_TYPE_BOOLEAN, false),\n tag: makeProp(PROP_TYPE_STRING, 'div')\n}, NAME_INPUT_GROUP_ADDON); // --- Main component ---\n// @vue/component\n\nexport var BInputGroupAddon = /*#__PURE__*/Vue.extend({\n name: NAME_INPUT_GROUP_ADDON,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var append = props.append;\n return h(props.tag, mergeData(data, {\n class: {\n 'input-group-append': append,\n 'input-group-prepend': !append\n },\n attrs: {\n id: props.id\n }\n }), props.isText ? [h(BInputGroupText, children)] : children);\n }\n});","var zrUtil = require(\"../core/util\");\n\nvar Gradient = require(\"./Gradient\");\n\n/**\n * x, y, x2, y2 are all percent from 0 to 1\n * @param {number} [x=0]\n * @param {number} [y=0]\n * @param {number} [x2=1]\n * @param {number} [y2=0]\n * @param {Array.} colorStops\n * @param {boolean} [globalCoord=false]\n */\nvar LinearGradient = function (x, y, x2, y2, colorStops, globalCoord) {\n // Should do nothing more in this constructor. Because gradient can be\n // declard by `color: {type: 'linear', colorStops: ...}`, where\n // this constructor will not be called.\n this.x = x == null ? 0 : x;\n this.y = y == null ? 0 : y;\n this.x2 = x2 == null ? 1 : x2;\n this.y2 = y2 == null ? 0 : y2; // Can be cloned\n\n this.type = 'linear'; // If use global coord\n\n this.global = globalCoord || false;\n Gradient.call(this, colorStops);\n};\n\nLinearGradient.prototype = {\n constructor: LinearGradient\n};\nzrUtil.inherits(LinearGradient, Gradient);\nvar _default = LinearGradient;\nmodule.exports = _default;","var _config = require(\"../config\");\n\nvar debugMode = _config.debugMode;\n\nvar logError = function () {};\n\nif (debugMode === 1) {\n logError = console.error;\n}\n\nvar _default = logError;\nmodule.exports = _default;","var _vector = require(\"./vector\");\n\nvar v2Create = _vector.create;\nvar v2DistSquare = _vector.distSquare;\n\n/**\n * 曲线辅助模块\n * @module zrender/core/curve\n * @author pissang(https://www.github.com/pissang)\n */\nvar mathPow = Math.pow;\nvar mathSqrt = Math.sqrt;\nvar EPSILON = 1e-8;\nvar EPSILON_NUMERIC = 1e-4;\nvar THREE_SQRT = mathSqrt(3);\nvar ONE_THIRD = 1 / 3; // 临时变量\n\nvar _v0 = v2Create();\n\nvar _v1 = v2Create();\n\nvar _v2 = v2Create();\n\nfunction isAroundZero(val) {\n return val > -EPSILON && val < EPSILON;\n}\n\nfunction isNotAroundZero(val) {\n return val > EPSILON || val < -EPSILON;\n}\n/**\n * 计算三次贝塞尔值\n * @memberOf module:zrender/core/curve\n * @param {number} p0\n * @param {number} p1\n * @param {number} p2\n * @param {number} p3\n * @param {number} t\n * @return {number}\n */\n\n\nfunction cubicAt(p0, p1, p2, p3, t) {\n var onet = 1 - t;\n return onet * onet * (onet * p0 + 3 * t * p1) + t * t * (t * p3 + 3 * onet * p2);\n}\n/**\n * 计算三次贝塞尔导数值\n * @memberOf module:zrender/core/curve\n * @param {number} p0\n * @param {number} p1\n * @param {number} p2\n * @param {number} p3\n * @param {number} t\n * @return {number}\n */\n\n\nfunction cubicDerivativeAt(p0, p1, p2, p3, t) {\n var onet = 1 - t;\n return 3 * (((p1 - p0) * onet + 2 * (p2 - p1) * t) * onet + (p3 - p2) * t * t);\n}\n/**\n * 计算三次贝塞尔方程根,使用盛金公式\n * @memberOf module:zrender/core/curve\n * @param {number} p0\n * @param {number} p1\n * @param {number} p2\n * @param {number} p3\n * @param {number} val\n * @param {Array.} roots\n * @return {number} 有效根数目\n */\n\n\nfunction cubicRootAt(p0, p1, p2, p3, val, roots) {\n // Evaluate roots of cubic functions\n var a = p3 + 3 * (p1 - p2) - p0;\n var b = 3 * (p2 - p1 * 2 + p0);\n var c = 3 * (p1 - p0);\n var d = p0 - val;\n var A = b * b - 3 * a * c;\n var B = b * c - 9 * a * d;\n var C = c * c - 3 * b * d;\n var n = 0;\n\n if (isAroundZero(A) && isAroundZero(B)) {\n if (isAroundZero(b)) {\n roots[0] = 0;\n } else {\n var t1 = -c / b; //t1, t2, t3, b is not zero\n\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\n }\n }\n } else {\n var disc = B * B - 4 * A * C;\n\n if (isAroundZero(disc)) {\n var K = B / A;\n var t1 = -b / a + K; // t1, a is not zero\n\n var t2 = -K / 2; // t2, t3\n\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\n }\n\n if (t2 >= 0 && t2 <= 1) {\n roots[n++] = t2;\n }\n } else if (disc > 0) {\n var discSqrt = mathSqrt(disc);\n var Y1 = A * b + 1.5 * a * (-B + discSqrt);\n var Y2 = A * b + 1.5 * a * (-B - discSqrt);\n\n if (Y1 < 0) {\n Y1 = -mathPow(-Y1, ONE_THIRD);\n } else {\n Y1 = mathPow(Y1, ONE_THIRD);\n }\n\n if (Y2 < 0) {\n Y2 = -mathPow(-Y2, ONE_THIRD);\n } else {\n Y2 = mathPow(Y2, ONE_THIRD);\n }\n\n var t1 = (-b - (Y1 + Y2)) / (3 * a);\n\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\n }\n } else {\n var T = (2 * A * b - 3 * a * B) / (2 * mathSqrt(A * A * A));\n var theta = Math.acos(T) / 3;\n var ASqrt = mathSqrt(A);\n var tmp = Math.cos(theta);\n var t1 = (-b - 2 * ASqrt * tmp) / (3 * a);\n var t2 = (-b + ASqrt * (tmp + THREE_SQRT * Math.sin(theta))) / (3 * a);\n var t3 = (-b + ASqrt * (tmp - THREE_SQRT * Math.sin(theta))) / (3 * a);\n\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\n }\n\n if (t2 >= 0 && t2 <= 1) {\n roots[n++] = t2;\n }\n\n if (t3 >= 0 && t3 <= 1) {\n roots[n++] = t3;\n }\n }\n }\n\n return n;\n}\n/**\n * 计算三次贝塞尔方程极限值的位置\n * @memberOf module:zrender/core/curve\n * @param {number} p0\n * @param {number} p1\n * @param {number} p2\n * @param {number} p3\n * @param {Array.} extrema\n * @return {number} 有效数目\n */\n\n\nfunction cubicExtrema(p0, p1, p2, p3, extrema) {\n var b = 6 * p2 - 12 * p1 + 6 * p0;\n var a = 9 * p1 + 3 * p3 - 3 * p0 - 9 * p2;\n var c = 3 * p1 - 3 * p0;\n var n = 0;\n\n if (isAroundZero(a)) {\n if (isNotAroundZero(b)) {\n var t1 = -c / b;\n\n if (t1 >= 0 && t1 <= 1) {\n extrema[n++] = t1;\n }\n }\n } else {\n var disc = b * b - 4 * a * c;\n\n if (isAroundZero(disc)) {\n extrema[0] = -b / (2 * a);\n } else if (disc > 0) {\n var discSqrt = mathSqrt(disc);\n var t1 = (-b + discSqrt) / (2 * a);\n var t2 = (-b - discSqrt) / (2 * a);\n\n if (t1 >= 0 && t1 <= 1) {\n extrema[n++] = t1;\n }\n\n if (t2 >= 0 && t2 <= 1) {\n extrema[n++] = t2;\n }\n }\n }\n\n return n;\n}\n/**\n * 细分三次贝塞尔曲线\n * @memberOf module:zrender/core/curve\n * @param {number} p0\n * @param {number} p1\n * @param {number} p2\n * @param {number} p3\n * @param {number} t\n * @param {Array.} out\n */\n\n\nfunction cubicSubdivide(p0, p1, p2, p3, t, out) {\n var p01 = (p1 - p0) * t + p0;\n var p12 = (p2 - p1) * t + p1;\n var p23 = (p3 - p2) * t + p2;\n var p012 = (p12 - p01) * t + p01;\n var p123 = (p23 - p12) * t + p12;\n var p0123 = (p123 - p012) * t + p012; // Seg0\n\n out[0] = p0;\n out[1] = p01;\n out[2] = p012;\n out[3] = p0123; // Seg1\n\n out[4] = p0123;\n out[5] = p123;\n out[6] = p23;\n out[7] = p3;\n}\n/**\n * 投射点到三次贝塞尔曲线上,返回投射距离。\n * 投射点有可能会有一个或者多个,这里只返回其中距离最短的一个。\n * @param {number} x0\n * @param {number} y0\n * @param {number} x1\n * @param {number} y1\n * @param {number} x2\n * @param {number} y2\n * @param {number} x3\n * @param {number} y3\n * @param {number} x\n * @param {number} y\n * @param {Array.} [out] 投射点\n * @return {number}\n */\n\n\nfunction cubicProjectPoint(x0, y0, x1, y1, x2, y2, x3, y3, x, y, out) {\n // http://pomax.github.io/bezierinfo/#projections\n var t;\n var interval = 0.005;\n var d = Infinity;\n var prev;\n var next;\n var d1;\n var d2;\n _v0[0] = x;\n _v0[1] = y; // 先粗略估计一下可能的最小距离的 t 值\n // PENDING\n\n for (var _t = 0; _t < 1; _t += 0.05) {\n _v1[0] = cubicAt(x0, x1, x2, x3, _t);\n _v1[1] = cubicAt(y0, y1, y2, y3, _t);\n d1 = v2DistSquare(_v0, _v1);\n\n if (d1 < d) {\n t = _t;\n d = d1;\n }\n }\n\n d = Infinity; // At most 32 iteration\n\n for (var i = 0; i < 32; i++) {\n if (interval < EPSILON_NUMERIC) {\n break;\n }\n\n prev = t - interval;\n next = t + interval; // t - interval\n\n _v1[0] = cubicAt(x0, x1, x2, x3, prev);\n _v1[1] = cubicAt(y0, y1, y2, y3, prev);\n d1 = v2DistSquare(_v1, _v0);\n\n if (prev >= 0 && d1 < d) {\n t = prev;\n d = d1;\n } else {\n // t + interval\n _v2[0] = cubicAt(x0, x1, x2, x3, next);\n _v2[1] = cubicAt(y0, y1, y2, y3, next);\n d2 = v2DistSquare(_v2, _v0);\n\n if (next <= 1 && d2 < d) {\n t = next;\n d = d2;\n } else {\n interval *= 0.5;\n }\n }\n } // t\n\n\n if (out) {\n out[0] = cubicAt(x0, x1, x2, x3, t);\n out[1] = cubicAt(y0, y1, y2, y3, t);\n } // console.log(interval, i);\n\n\n return mathSqrt(d);\n}\n/**\n * 计算二次方贝塞尔值\n * @param {number} p0\n * @param {number} p1\n * @param {number} p2\n * @param {number} t\n * @return {number}\n */\n\n\nfunction quadraticAt(p0, p1, p2, t) {\n var onet = 1 - t;\n return onet * (onet * p0 + 2 * t * p1) + t * t * p2;\n}\n/**\n * 计算二次方贝塞尔导数值\n * @param {number} p0\n * @param {number} p1\n * @param {number} p2\n * @param {number} t\n * @return {number}\n */\n\n\nfunction quadraticDerivativeAt(p0, p1, p2, t) {\n return 2 * ((1 - t) * (p1 - p0) + t * (p2 - p1));\n}\n/**\n * 计算二次方贝塞尔方程根\n * @param {number} p0\n * @param {number} p1\n * @param {number} p2\n * @param {number} t\n * @param {Array.} roots\n * @return {number} 有效根数目\n */\n\n\nfunction quadraticRootAt(p0, p1, p2, val, roots) {\n var a = p0 - 2 * p1 + p2;\n var b = 2 * (p1 - p0);\n var c = p0 - val;\n var n = 0;\n\n if (isAroundZero(a)) {\n if (isNotAroundZero(b)) {\n var t1 = -c / b;\n\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\n }\n }\n } else {\n var disc = b * b - 4 * a * c;\n\n if (isAroundZero(disc)) {\n var t1 = -b / (2 * a);\n\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\n }\n } else if (disc > 0) {\n var discSqrt = mathSqrt(disc);\n var t1 = (-b + discSqrt) / (2 * a);\n var t2 = (-b - discSqrt) / (2 * a);\n\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\n }\n\n if (t2 >= 0 && t2 <= 1) {\n roots[n++] = t2;\n }\n }\n }\n\n return n;\n}\n/**\n * 计算二次贝塞尔方程极限值\n * @memberOf module:zrender/core/curve\n * @param {number} p0\n * @param {number} p1\n * @param {number} p2\n * @return {number}\n */\n\n\nfunction quadraticExtremum(p0, p1, p2) {\n var divider = p0 + p2 - 2 * p1;\n\n if (divider === 0) {\n // p1 is center of p0 and p2\n return 0.5;\n } else {\n return (p0 - p1) / divider;\n }\n}\n/**\n * 细分二次贝塞尔曲线\n * @memberOf module:zrender/core/curve\n * @param {number} p0\n * @param {number} p1\n * @param {number} p2\n * @param {number} t\n * @param {Array.} out\n */\n\n\nfunction quadraticSubdivide(p0, p1, p2, t, out) {\n var p01 = (p1 - p0) * t + p0;\n var p12 = (p2 - p1) * t + p1;\n var p012 = (p12 - p01) * t + p01; // Seg0\n\n out[0] = p0;\n out[1] = p01;\n out[2] = p012; // Seg1\n\n out[3] = p012;\n out[4] = p12;\n out[5] = p2;\n}\n/**\n * 投射点到二次贝塞尔曲线上,返回投射距离。\n * 投射点有可能会有一个或者多个,这里只返回其中距离最短的一个。\n * @param {number} x0\n * @param {number} y0\n * @param {number} x1\n * @param {number} y1\n * @param {number} x2\n * @param {number} y2\n * @param {number} x\n * @param {number} y\n * @param {Array.} out 投射点\n * @return {number}\n */\n\n\nfunction quadraticProjectPoint(x0, y0, x1, y1, x2, y2, x, y, out) {\n // http://pomax.github.io/bezierinfo/#projections\n var t;\n var interval = 0.005;\n var d = Infinity;\n _v0[0] = x;\n _v0[1] = y; // 先粗略估计一下可能的最小距离的 t 值\n // PENDING\n\n for (var _t = 0; _t < 1; _t += 0.05) {\n _v1[0] = quadraticAt(x0, x1, x2, _t);\n _v1[1] = quadraticAt(y0, y1, y2, _t);\n var d1 = v2DistSquare(_v0, _v1);\n\n if (d1 < d) {\n t = _t;\n d = d1;\n }\n }\n\n d = Infinity; // At most 32 iteration\n\n for (var i = 0; i < 32; i++) {\n if (interval < EPSILON_NUMERIC) {\n break;\n }\n\n var prev = t - interval;\n var next = t + interval; // t - interval\n\n _v1[0] = quadraticAt(x0, x1, x2, prev);\n _v1[1] = quadraticAt(y0, y1, y2, prev);\n var d1 = v2DistSquare(_v1, _v0);\n\n if (prev >= 0 && d1 < d) {\n t = prev;\n d = d1;\n } else {\n // t + interval\n _v2[0] = quadraticAt(x0, x1, x2, next);\n _v2[1] = quadraticAt(y0, y1, y2, next);\n var d2 = v2DistSquare(_v2, _v0);\n\n if (next <= 1 && d2 < d) {\n t = next;\n d = d2;\n } else {\n interval *= 0.5;\n }\n }\n } // t\n\n\n if (out) {\n out[0] = quadraticAt(x0, x1, x2, t);\n out[1] = quadraticAt(y0, y1, y2, t);\n } // console.log(interval, i);\n\n\n return mathSqrt(d);\n}\n\nexports.cubicAt = cubicAt;\nexports.cubicDerivativeAt = cubicDerivativeAt;\nexports.cubicRootAt = cubicRootAt;\nexports.cubicExtrema = cubicExtrema;\nexports.cubicSubdivide = cubicSubdivide;\nexports.cubicProjectPoint = cubicProjectPoint;\nexports.quadraticAt = quadraticAt;\nexports.quadraticDerivativeAt = quadraticDerivativeAt;\nexports.quadraticRootAt = quadraticRootAt;\nexports.quadraticExtremum = quadraticExtremum;\nexports.quadraticSubdivide = quadraticSubdivide;\nexports.quadraticProjectPoint = quadraticProjectPoint;","!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define([],e):\"object\"==typeof exports?exports.VueSelect=e():t.VueSelect=e()}(\"undefined\"!=typeof self?self:this,(function(){return function(t){var e={};function n(o){if(e[o])return e[o].exports;var i=e[o]={i:o,l:!1,exports:{}};return t[o].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=t,n.c=e,n.d=function(t,e,o){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:o})},n.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var i in t)n.d(o,i,function(e){return t[e]}.bind(null,i));return o},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,\"a\",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p=\"/\",n(n.s=8)}([function(t,e,n){var o=n(4),i=n(5),s=n(6);t.exports=function(t){return o(t)||i(t)||s()}},function(t,e){function n(e){return\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?t.exports=n=function(t){return typeof t}:t.exports=n=function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t},n(e)}t.exports=n},function(t,e,n){},function(t,e){t.exports=function(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}},function(t,e){t.exports=function(t){if(Array.isArray(t)){for(var e=0,n=new Array(t.length);en.bottom)return this.$refs.dropdownMenu.scrollTop=e.offsetTop-(n.height-r)}},getDropdownViewport:function(){return this.$refs.dropdownMenu?this.$refs.dropdownMenu.getBoundingClientRect():{height:0,top:0,bottom:0}}}},u={data:function(){return{typeAheadPointer:-1}},watch:{filteredOptions:function(){for(var t=0;t=0;t--)if(this.selectable(this.filteredOptions[t])){this.typeAheadPointer=t;break}},typeAheadDown:function(){for(var t=this.typeAheadPointer+1;t0&&void 0!==arguments[0]?arguments[0]:null;return this.mutableLoading=null==t?!this.mutableLoading:t}}};function h(t,e,n,o,i,s,r,a){var l,c=\"function\"==typeof t?t.options:t;if(e&&(c.render=e,c.staticRenderFns=n,c._compiled=!0),o&&(c.functional=!0),s&&(c._scopeId=\"data-v-\"+s),r?(l=function(t){(t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||\"undefined\"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),i&&i.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(r)},c._ssrRegister=l):i&&(l=a?function(){i.call(this,this.$root.$options.shadowRoot)}:i),l)if(c.functional){c._injectStyles=l;var u=c.render;c.render=function(t,e){return l.call(e),u(t,e)}}else{var p=c.beforeCreate;c.beforeCreate=p?[].concat(p,l):[l]}return{exports:t,options:c}}var d={Deselect:h({},(function(){var t=this.$createElement,e=this._self._c||t;return e(\"svg\",{attrs:{xmlns:\"http://www.w3.org/2000/svg\",width:\"10\",height:\"10\"}},[e(\"path\",{attrs:{d:\"M6.895455 5l2.842897-2.842898c.348864-.348863.348864-.914488 0-1.263636L9.106534.261648c-.348864-.348864-.914489-.348864-1.263636 0L5 3.104545 2.157102.261648c-.348863-.348864-.914488-.348864-1.263636 0L.261648.893466c-.348864.348864-.348864.914489 0 1.263636L3.104545 5 .261648 7.842898c-.348864.348863-.348864.914488 0 1.263636l.631818.631818c.348864.348864.914773.348864 1.263636 0L5 6.895455l2.842898 2.842897c.348863.348864.914772.348864 1.263636 0l.631818-.631818c.348864-.348864.348864-.914489 0-1.263636L6.895455 5z\"}})])}),[],!1,null,null,null).exports,OpenIndicator:h({},(function(){var t=this.$createElement,e=this._self._c||t;return e(\"svg\",{attrs:{xmlns:\"http://www.w3.org/2000/svg\",width:\"14\",height:\"10\"}},[e(\"path\",{attrs:{d:\"M9.211364 7.59931l4.48338-4.867229c.407008-.441854.407008-1.158247 0-1.60046l-.73712-.80023c-.407008-.441854-1.066904-.441854-1.474243 0L7 5.198617 2.51662.33139c-.407008-.441853-1.066904-.441853-1.474243 0l-.737121.80023c-.407008.441854-.407008 1.158248 0 1.600461l4.48338 4.867228L7 10l2.211364-2.40069z\"}})])}),[],!1,null,null,null).exports},f={inserted:function(t,e,n){var o=n.context;if(o.appendToBody){var i=o.$refs.toggle.getBoundingClientRect(),s=i.height,r=i.top,a=i.left,l=i.width,c=window.scrollX||window.pageXOffset,u=window.scrollY||window.pageYOffset;t.unbindPosition=o.calculatePosition(t,o,{width:l+\"px\",left:c+a+\"px\",top:u+r+s+\"px\"}),document.body.appendChild(t)}},unbind:function(t,e,n){n.context.appendToBody&&(t.unbindPosition&&\"function\"==typeof t.unbindPosition&&t.unbindPosition(),t.parentNode&&t.parentNode.removeChild(t))}};var y=function(t){var e={};return Object.keys(t).sort().forEach((function(n){e[n]=t[n]})),JSON.stringify(e)},b=0;var g=function(){return++b};function v(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);e&&(o=o.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,o)}return n}function m(t){for(var e=1;e-1}},filter:{type:Function,default:function(t,e){var n=this;return t.filter((function(t){var o=n.getOptionLabel(t);return\"number\"==typeof o&&(o=o.toString()),n.filterBy(t,o,e)}))}},createOption:{type:Function,default:function(t){return\"object\"===r()(this.optionList[0])?l()({},this.label,t):t}},resetOnOptionsChange:{default:!1,validator:function(t){return[\"function\",\"boolean\"].includes(r()(t))}},clearSearchOnBlur:{type:Function,default:function(t){var e=t.clearSearchOnSelect,n=t.multiple;return e&&!n}},noDrop:{type:Boolean,default:!1},inputId:{type:String},dir:{type:String,default:\"auto\"},selectOnTab:{type:Boolean,default:!1},selectOnKeyCodes:{type:Array,default:function(){return[13]}},searchInputQuerySelector:{type:String,default:\"[type=search]\"},mapKeydown:{type:Function,default:function(t,e){return t}},appendToBody:{type:Boolean,default:!1},calculatePosition:{type:Function,default:function(t,e,n){var o=n.width,i=n.top,s=n.left;t.style.top=i,t.style.left=s,t.style.width=o}}},data:function(){return{uid:g(),search:\"\",open:!1,isComposing:!1,pushedTags:[],_value:[]}},watch:{options:function(t,e){var n=this;!this.taggable&&(\"function\"==typeof n.resetOnOptionsChange?n.resetOnOptionsChange(t,e,n.selectedValue):n.resetOnOptionsChange)&&this.clearSelection(),this.value&&this.isTrackingValues&&this.setInternalValueFromOptions(this.value)},value:function(t){this.isTrackingValues&&this.setInternalValueFromOptions(t)},multiple:function(){this.clearSelection()},open:function(t){this.$emit(t?\"open\":\"close\")}},created:function(){this.mutableLoading=this.loading,void 0!==this.value&&this.isTrackingValues&&this.setInternalValueFromOptions(this.value),this.$on(\"option:created\",this.pushTag)},methods:{setInternalValueFromOptions:function(t){var e=this;Array.isArray(t)?this.$data._value=t.map((function(t){return e.findOptionFromReducedValue(t)})):this.$data._value=this.findOptionFromReducedValue(t)},select:function(t){this.$emit(\"option:selecting\",t),this.isOptionSelected(t)||(this.taggable&&!this.optionExists(t)&&this.$emit(\"option:created\",t),this.multiple&&(t=this.selectedValue.concat(t)),this.updateValue(t),this.$emit(\"option:selected\",t)),this.onAfterSelect(t)},deselect:function(t){var e=this;this.$emit(\"option:deselecting\",t),this.updateValue(this.selectedValue.filter((function(n){return!e.optionComparator(n,t)}))),this.$emit(\"option:deselected\",t)},clearSelection:function(){this.updateValue(this.multiple?[]:null)},onAfterSelect:function(t){this.closeOnSelect&&(this.open=!this.open,this.searchEl.blur()),this.clearSearchOnSelect&&(this.search=\"\")},updateValue:function(t){var e=this;void 0===this.value&&(this.$data._value=t),null!==t&&(t=Array.isArray(t)?t.map((function(t){return e.reduce(t)})):this.reduce(t)),this.$emit(\"input\",t)},toggleDropdown:function(t){var e=t.target!==this.searchEl;e&&t.preventDefault();var n=[].concat(i()(this.$refs.deselectButtons||[]),i()([this.$refs.clearButton]||!1));void 0===this.searchEl||n.filter(Boolean).some((function(e){return e.contains(t.target)||e===t.target}))?t.preventDefault():this.open&&e?this.searchEl.blur():this.disabled||(this.open=!0,this.searchEl.focus())},isOptionSelected:function(t){var e=this;return this.selectedValue.some((function(n){return e.optionComparator(n,t)}))},optionComparator:function(t,e){return this.getOptionKey(t)===this.getOptionKey(e)},findOptionFromReducedValue:function(t){var e=this,n=[].concat(i()(this.options),i()(this.pushedTags)).filter((function(n){return JSON.stringify(e.reduce(n))===JSON.stringify(t)}));return 1===n.length?n[0]:n.find((function(t){return e.optionComparator(t,e.$data._value)}))||t},closeSearchOptions:function(){this.open=!1,this.$emit(\"search:blur\")},maybeDeleteValue:function(){if(!this.searchEl.value.length&&this.selectedValue&&this.selectedValue.length&&this.clearable){var t=null;this.multiple&&(t=i()(this.selectedValue.slice(0,this.selectedValue.length-1))),this.updateValue(t)}},optionExists:function(t){var e=this;return this.optionList.some((function(n){return e.optionComparator(n,t)}))},normalizeOptionForSlot:function(t){return\"object\"===r()(t)?t:l()({},this.label,t)},pushTag:function(t){this.pushedTags.push(t)},onEscape:function(){this.search.length?this.search=\"\":this.searchEl.blur()},onSearchBlur:function(){if(!this.mousedown||this.searching){var t=this.clearSearchOnSelect,e=this.multiple;return this.clearSearchOnBlur({clearSearchOnSelect:t,multiple:e})&&(this.search=\"\"),void this.closeSearchOptions()}this.mousedown=!1,0!==this.search.length||0!==this.options.length||this.closeSearchOptions()},onSearchFocus:function(){this.open=!0,this.$emit(\"search:focus\")},onMousedown:function(){this.mousedown=!0},onMouseUp:function(){this.mousedown=!1},onSearchKeyDown:function(t){var e=this,n=function(t){return t.preventDefault(),!e.isComposing&&e.typeAheadSelect()},o={8:function(t){return e.maybeDeleteValue()},9:function(t){return e.onTab()},27:function(t){return e.onEscape()},38:function(t){return t.preventDefault(),e.typeAheadUp()},40:function(t){return t.preventDefault(),e.typeAheadDown()}};this.selectOnKeyCodes.forEach((function(t){return o[t]=n}));var i=this.mapKeydown(o,this);if(\"function\"==typeof i[t.keyCode])return i[t.keyCode](t)}},computed:{isTrackingValues:function(){return void 0===this.value||this.$options.propsData.hasOwnProperty(\"reduce\")},selectedValue:function(){var t=this.value;return this.isTrackingValues&&(t=this.$data._value),t?[].concat(t):[]},optionList:function(){return this.options.concat(this.pushTags?this.pushedTags:[])},searchEl:function(){return this.$scopedSlots.search?this.$refs.selectedOptions.querySelector(this.searchInputQuerySelector):this.$refs.search},scope:function(){var t=this,e={search:this.search,loading:this.loading,searching:this.searching,filteredOptions:this.filteredOptions};return{search:{attributes:m({disabled:this.disabled,placeholder:this.searchPlaceholder,tabindex:this.tabindex,readonly:!this.searchable,id:this.inputId,\"aria-autocomplete\":\"list\",\"aria-labelledby\":\"vs\".concat(this.uid,\"__combobox\"),\"aria-controls\":\"vs\".concat(this.uid,\"__listbox\"),ref:\"search\",type:\"search\",autocomplete:this.autocomplete,value:this.search},this.dropdownOpen&&this.filteredOptions[this.typeAheadPointer]?{\"aria-activedescendant\":\"vs\".concat(this.uid,\"__option-\").concat(this.typeAheadPointer)}:{}),events:{compositionstart:function(){return t.isComposing=!0},compositionend:function(){return t.isComposing=!1},keydown:this.onSearchKeyDown,blur:this.onSearchBlur,focus:this.onSearchFocus,input:function(e){return t.search=e.target.value}}},spinner:{loading:this.mutableLoading},noOptions:{search:this.search,loading:this.loading,searching:this.searching},openIndicator:{attributes:{ref:\"openIndicator\",role:\"presentation\",class:\"vs__open-indicator\"}},listHeader:e,listFooter:e,header:m({},e,{deselect:this.deselect}),footer:m({},e,{deselect:this.deselect})}},childComponents:function(){return m({},d,{},this.components)},stateClasses:function(){return{\"vs--open\":this.dropdownOpen,\"vs--single\":!this.multiple,\"vs--searching\":this.searching&&!this.noDrop,\"vs--searchable\":this.searchable&&!this.noDrop,\"vs--unsearchable\":!this.searchable,\"vs--loading\":this.mutableLoading,\"vs--disabled\":this.disabled}},searching:function(){return!!this.search},dropdownOpen:function(){return!this.noDrop&&(this.open&&!this.mutableLoading)},searchPlaceholder:function(){if(this.isValueEmpty&&this.placeholder)return this.placeholder},filteredOptions:function(){var t=[].concat(this.optionList);if(!this.filterable&&!this.taggable)return t;var e=this.search.length?this.filter(t,this.search,this):t;if(this.taggable&&this.search.length){var n=this.createOption(this.search);this.optionExists(n)||e.unshift(n)}return e},isValueEmpty:function(){return 0===this.selectedValue.length},showClearButton:function(){return!this.multiple&&this.clearable&&!this.open&&!this.isValueEmpty}}},O=(n(7),h(_,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"div\",{staticClass:\"v-select\",class:t.stateClasses,attrs:{dir:t.dir}},[t._t(\"header\",null,null,t.scope.header),t._v(\" \"),n(\"div\",{ref:\"toggle\",staticClass:\"vs__dropdown-toggle\",attrs:{id:\"vs\"+t.uid+\"__combobox\",role:\"combobox\",\"aria-expanded\":t.dropdownOpen.toString(),\"aria-owns\":\"vs\"+t.uid+\"__listbox\",\"aria-label\":\"Search for option\"},on:{mousedown:function(e){return t.toggleDropdown(e)}}},[n(\"div\",{ref:\"selectedOptions\",staticClass:\"vs__selected-options\"},[t._l(t.selectedValue,(function(e){return t._t(\"selected-option-container\",[n(\"span\",{key:t.getOptionKey(e),staticClass:\"vs__selected\"},[t._t(\"selected-option\",[t._v(\"\\n \"+t._s(t.getOptionLabel(e))+\"\\n \")],null,t.normalizeOptionForSlot(e)),t._v(\" \"),t.multiple?n(\"button\",{ref:\"deselectButtons\",refInFor:!0,staticClass:\"vs__deselect\",attrs:{disabled:t.disabled,type:\"button\",title:\"Deselect \"+t.getOptionLabel(e),\"aria-label\":\"Deselect \"+t.getOptionLabel(e)},on:{click:function(n){return t.deselect(e)}}},[n(t.childComponents.Deselect,{tag:\"component\"})],1):t._e()],2)],{option:t.normalizeOptionForSlot(e),deselect:t.deselect,multiple:t.multiple,disabled:t.disabled})})),t._v(\" \"),t._t(\"search\",[n(\"input\",t._g(t._b({staticClass:\"vs__search\"},\"input\",t.scope.search.attributes,!1),t.scope.search.events))],null,t.scope.search)],2),t._v(\" \"),n(\"div\",{ref:\"actions\",staticClass:\"vs__actions\"},[n(\"button\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.showClearButton,expression:\"showClearButton\"}],ref:\"clearButton\",staticClass:\"vs__clear\",attrs:{disabled:t.disabled,type:\"button\",title:\"Clear Selected\",\"aria-label\":\"Clear Selected\"},on:{click:t.clearSelection}},[n(t.childComponents.Deselect,{tag:\"component\"})],1),t._v(\" \"),t._t(\"open-indicator\",[t.noDrop?t._e():n(t.childComponents.OpenIndicator,t._b({tag:\"component\"},\"component\",t.scope.openIndicator.attributes,!1))],null,t.scope.openIndicator),t._v(\" \"),t._t(\"spinner\",[n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.mutableLoading,expression:\"mutableLoading\"}],staticClass:\"vs__spinner\"},[t._v(\"Loading...\")])],null,t.scope.spinner)],2)]),t._v(\" \"),n(\"transition\",{attrs:{name:t.transition}},[t.dropdownOpen?n(\"ul\",{directives:[{name:\"append-to-body\",rawName:\"v-append-to-body\"}],key:\"vs\"+t.uid+\"__listbox\",ref:\"dropdownMenu\",staticClass:\"vs__dropdown-menu\",attrs:{id:\"vs\"+t.uid+\"__listbox\",role:\"listbox\",tabindex:\"-1\"},on:{mousedown:function(e){return e.preventDefault(),t.onMousedown(e)},mouseup:t.onMouseUp}},[t._t(\"list-header\",null,null,t.scope.listHeader),t._v(\" \"),t._l(t.filteredOptions,(function(e,o){return n(\"li\",{key:t.getOptionKey(e),staticClass:\"vs__dropdown-option\",class:{\"vs__dropdown-option--selected\":t.isOptionSelected(e),\"vs__dropdown-option--highlight\":o===t.typeAheadPointer,\"vs__dropdown-option--disabled\":!t.selectable(e)},attrs:{role:\"option\",id:\"vs\"+t.uid+\"__option-\"+o,\"aria-selected\":o===t.typeAheadPointer||null},on:{mouseover:function(n){t.selectable(e)&&(t.typeAheadPointer=o)},mousedown:function(n){n.preventDefault(),n.stopPropagation(),t.selectable(e)&&t.select(e)}}},[t._t(\"option\",[t._v(\"\\n \"+t._s(t.getOptionLabel(e))+\"\\n \")],null,t.normalizeOptionForSlot(e))],2)})),t._v(\" \"),0===t.filteredOptions.length?n(\"li\",{staticClass:\"vs__no-options\"},[t._t(\"no-options\",[t._v(\"Sorry, no matching options.\")],null,t.scope.noOptions)],2):t._e(),t._v(\" \"),t._t(\"list-footer\",null,null,t.scope.listFooter)],2):n(\"ul\",{staticStyle:{display:\"none\",visibility:\"hidden\"},attrs:{id:\"vs\"+t.uid+\"__listbox\",role:\"listbox\"}})]),t._v(\" \"),t._t(\"footer\",null,null,t.scope.footer)],2)}),[],!1,null,null,null).exports),w={ajax:p,pointer:u,pointerScroll:c};n.d(e,\"VueSelect\",(function(){return O})),n.d(e,\"mixins\",(function(){return w}));e.default=O}])}));\n//# sourceMappingURL=vue-select.js.map","var Path = require(\"../Path\");\n\nvar fixClipWithShadow = require(\"../helper/fixClipWithShadow\");\n\n/**\n * 扇形\n * @module zrender/graphic/shape/Sector\n */\nvar _default = Path.extend({\n type: 'sector',\n shape: {\n cx: 0,\n cy: 0,\n r0: 0,\n r: 0,\n startAngle: 0,\n endAngle: Math.PI * 2,\n clockwise: true\n },\n brush: fixClipWithShadow(Path.prototype.brush),\n buildPath: function (ctx, shape) {\n var x = shape.cx;\n var y = shape.cy;\n var r0 = Math.max(shape.r0 || 0, 0);\n var r = Math.max(shape.r, 0);\n var startAngle = shape.startAngle;\n var endAngle = shape.endAngle;\n var clockwise = shape.clockwise;\n var unitX = Math.cos(startAngle);\n var unitY = Math.sin(startAngle);\n ctx.moveTo(unitX * r0 + x, unitY * r0 + y);\n ctx.lineTo(unitX * r + x, unitY * r + y);\n ctx.arc(x, y, r, startAngle, endAngle, !clockwise);\n ctx.lineTo(Math.cos(endAngle) * r0 + x, Math.sin(endAngle) * r0 + y);\n\n if (r0 !== 0) {\n ctx.arc(x, y, r0, endAngle, startAngle, clockwise);\n }\n\n ctx.closePath();\n }\n});\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// (1) The code `if (__DEV__) ...` can be removed by build tool.\n// (2) If intend to use `__DEV__`, this module should be imported. Use a global\n// variable `__DEV__` may cause that miss the declaration (see #6535), or the\n// declaration is behind of the using position (for example in `Model.extent`,\n// And tools like rollup can not analysis the dependency if not import).\nvar dev; // In browser\n\nif (typeof window !== 'undefined') {\n dev = window.__DEV__;\n} // In node\nelse if (typeof global !== 'undefined') {\n dev = global.__DEV__;\n }\n\nif (typeof dev === 'undefined') {\n dev = true;\n}\n\nvar __DEV__ = dev;\nexports.__DEV__ = __DEV__;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = require(\"../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar env = require(\"zrender/lib/core/env\");\n\nvar _format = require(\"../util/format\");\n\nvar formatTime = _format.formatTime;\nvar encodeHTML = _format.encodeHTML;\nvar addCommas = _format.addCommas;\nvar getTooltipMarker = _format.getTooltipMarker;\n\nvar modelUtil = require(\"../util/model\");\n\nvar ComponentModel = require(\"./Component\");\n\nvar colorPaletteMixin = require(\"./mixin/colorPalette\");\n\nvar dataFormatMixin = require(\"../model/mixin/dataFormat\");\n\nvar _layout = require(\"../util/layout\");\n\nvar getLayoutParams = _layout.getLayoutParams;\nvar mergeLayoutParam = _layout.mergeLayoutParam;\n\nvar _task = require(\"../stream/task\");\n\nvar createTask = _task.createTask;\n\nvar _sourceHelper = require(\"../data/helper/sourceHelper\");\n\nvar prepareSource = _sourceHelper.prepareSource;\nvar getSource = _sourceHelper.getSource;\n\nvar _dataProvider = require(\"../data/helper/dataProvider\");\n\nvar retrieveRawValue = _dataProvider.retrieveRawValue;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar inner = modelUtil.makeInner();\nvar SeriesModel = ComponentModel.extend({\n type: 'series.__base__',\n\n /**\n * @readOnly\n */\n seriesIndex: 0,\n // coodinateSystem will be injected in the echarts/CoordinateSystem\n coordinateSystem: null,\n\n /**\n * @type {Object}\n * @protected\n */\n defaultOption: null,\n\n /**\n * legend visual provider to the legend component\n * @type {Object}\n */\n // PENDING\n legendVisualProvider: null,\n\n /**\n * Access path of color for visual\n */\n visualColorAccessPath: 'itemStyle.color',\n\n /**\n * Access path of borderColor for visual\n */\n visualBorderColorAccessPath: 'itemStyle.borderColor',\n\n /**\n * Support merge layout params.\n * Only support 'box' now (left/right/top/bottom/width/height).\n * @type {string|Object} Object can be {ignoreSize: true}\n * @readOnly\n */\n layoutMode: null,\n init: function (option, parentModel, ecModel, extraOpt) {\n /**\n * @type {number}\n * @readOnly\n */\n this.seriesIndex = this.componentIndex;\n this.dataTask = createTask({\n count: dataTaskCount,\n reset: dataTaskReset\n });\n this.dataTask.context = {\n model: this\n };\n this.mergeDefaultAndTheme(option, ecModel);\n prepareSource(this);\n var data = this.getInitialData(option, ecModel);\n wrapData(data, this);\n this.dataTask.context.data = data;\n\n /**\n * @type {module:echarts/data/List|module:echarts/data/Tree|module:echarts/data/Graph}\n * @private\n */\n inner(this).dataBeforeProcessed = data; // If we reverse the order (make data firstly, and then make\n // dataBeforeProcessed by cloneShallow), cloneShallow will\n // cause data.graph.data !== data when using\n // module:echarts/data/Graph or module:echarts/data/Tree.\n // See module:echarts/data/helper/linkList\n // Theoretically, it is unreasonable to call `seriesModel.getData()` in the model\n // init or merge stage, because the data can be restored. So we do not `restoreData`\n // and `setData` here, which forbids calling `seriesModel.getData()` in this stage.\n // Call `seriesModel.getRawData()` instead.\n // this.restoreData();\n\n autoSeriesName(this);\n },\n\n /**\n * Util for merge default and theme to option\n * @param {Object} option\n * @param {module:echarts/model/Global} ecModel\n */\n mergeDefaultAndTheme: function (option, ecModel) {\n var layoutMode = this.layoutMode;\n var inputPositionParams = layoutMode ? getLayoutParams(option) : {}; // Backward compat: using subType on theme.\n // But if name duplicate between series subType\n // (for example: parallel) add component mainType,\n // add suffix 'Series'.\n\n var themeSubType = this.subType;\n\n if (ComponentModel.hasClass(themeSubType)) {\n themeSubType += 'Series';\n }\n\n zrUtil.merge(option, ecModel.getTheme().get(this.subType));\n zrUtil.merge(option, this.getDefaultOption()); // Default label emphasis `show`\n\n modelUtil.defaultEmphasis(option, 'label', ['show']);\n this.fillDataTextStyle(option.data);\n\n if (layoutMode) {\n mergeLayoutParam(option, inputPositionParams, layoutMode);\n }\n },\n mergeOption: function (newSeriesOption, ecModel) {\n // this.settingTask.dirty();\n newSeriesOption = zrUtil.merge(this.option, newSeriesOption, true);\n this.fillDataTextStyle(newSeriesOption.data);\n var layoutMode = this.layoutMode;\n\n if (layoutMode) {\n mergeLayoutParam(this.option, newSeriesOption, layoutMode);\n }\n\n prepareSource(this);\n var data = this.getInitialData(newSeriesOption, ecModel);\n wrapData(data, this);\n this.dataTask.dirty();\n this.dataTask.context.data = data;\n inner(this).dataBeforeProcessed = data;\n autoSeriesName(this);\n },\n fillDataTextStyle: function (data) {\n // Default data label emphasis `show`\n // FIXME Tree structure data ?\n // FIXME Performance ?\n if (data && !zrUtil.isTypedArray(data)) {\n var props = ['show'];\n\n for (var i = 0; i < data.length; i++) {\n if (data[i] && data[i].label) {\n modelUtil.defaultEmphasis(data[i], 'label', props);\n }\n }\n }\n },\n\n /**\n * Init a data structure from data related option in series\n * Must be overwritten\n */\n getInitialData: function () {},\n\n /**\n * Append data to list\n * @param {Object} params\n * @param {Array|TypedArray} params.data\n */\n appendData: function (params) {\n // FIXME ???\n // (1) If data from dataset, forbidden append.\n // (2) support append data of dataset.\n var data = this.getRawData();\n data.appendData(params.data);\n },\n\n /**\n * Consider some method like `filter`, `map` need make new data,\n * We should make sure that `seriesModel.getData()` get correct\n * data in the stream procedure. So we fetch data from upstream\n * each time `task.perform` called.\n * @param {string} [dataType]\n * @return {module:echarts/data/List}\n */\n getData: function (dataType) {\n var task = getCurrentTask(this);\n\n if (task) {\n var data = task.context.data;\n return dataType == null ? data : data.getLinkedData(dataType);\n } else {\n // When series is not alive (that may happen when click toolbox\n // restore or setOption with not merge mode), series data may\n // be still need to judge animation or something when graphic\n // elements want to know whether fade out.\n return inner(this).data;\n }\n },\n\n /**\n * @param {module:echarts/data/List} data\n */\n setData: function (data) {\n var task = getCurrentTask(this);\n\n if (task) {\n var context = task.context; // Consider case: filter, data sample.\n\n if (context.data !== data && task.modifyOutputEnd) {\n task.setOutputEnd(data.count());\n }\n\n context.outputData = data; // Caution: setData should update context.data,\n // Because getData may be called multiply in a\n // single stage and expect to get the data just\n // set. (For example, AxisProxy, x y both call\n // getData and setDate sequentially).\n // So the context.data should be fetched from\n // upstream each time when a stage starts to be\n // performed.\n\n if (task !== this.dataTask) {\n context.data = data;\n }\n }\n\n inner(this).data = data;\n },\n\n /**\n * @see {module:echarts/data/helper/sourceHelper#getSource}\n * @return {module:echarts/data/Source} source\n */\n getSource: function () {\n return getSource(this);\n },\n\n /**\n * Get data before processed\n * @return {module:echarts/data/List}\n */\n getRawData: function () {\n return inner(this).dataBeforeProcessed;\n },\n\n /**\n * Get base axis if has coordinate system and has axis.\n * By default use coordSys.getBaseAxis();\n * Can be overrided for some chart.\n * @return {type} description\n */\n getBaseAxis: function () {\n var coordSys = this.coordinateSystem;\n return coordSys && coordSys.getBaseAxis && coordSys.getBaseAxis();\n },\n // FIXME\n\n /**\n * Default tooltip formatter\n *\n * @param {number} dataIndex\n * @param {boolean} [multipleSeries=false]\n * @param {number} [dataType]\n * @param {string} [renderMode='html'] valid values: 'html' and 'richText'.\n * 'html' is used for rendering tooltip in extra DOM form, and the result\n * string is used as DOM HTML content.\n * 'richText' is used for rendering tooltip in rich text form, for those where\n * DOM operation is not supported.\n * @return {Object} formatted tooltip with `html` and `markers`\n */\n formatTooltip: function (dataIndex, multipleSeries, dataType, renderMode) {\n var series = this;\n renderMode = renderMode || 'html';\n var newLine = renderMode === 'html' ? '
' : '\\n';\n var isRichText = renderMode === 'richText';\n var markers = {};\n var markerId = 0;\n\n function formatArrayValue(value) {\n // ??? TODO refactor these logic.\n // check: category-no-encode-has-axis-data in dataset.html\n var vertially = zrUtil.reduce(value, function (vertially, val, idx) {\n var dimItem = data.getDimensionInfo(idx);\n return vertially |= dimItem && dimItem.tooltip !== false && dimItem.displayName != null;\n }, 0);\n var result = [];\n tooltipDims.length ? zrUtil.each(tooltipDims, function (dim) {\n setEachItem(retrieveRawValue(data, dataIndex, dim), dim);\n }) // By default, all dims is used on tooltip.\n : zrUtil.each(value, setEachItem);\n\n function setEachItem(val, dim) {\n var dimInfo = data.getDimensionInfo(dim); // If `dimInfo.tooltip` is not set, show tooltip.\n\n if (!dimInfo || dimInfo.otherDims.tooltip === false) {\n return;\n }\n\n var dimType = dimInfo.type;\n var markName = 'sub' + series.seriesIndex + 'at' + markerId;\n var dimHead = getTooltipMarker({\n color: color,\n type: 'subItem',\n renderMode: renderMode,\n markerId: markName\n });\n var dimHeadStr = typeof dimHead === 'string' ? dimHead : dimHead.content;\n var valStr = (vertially ? dimHeadStr + encodeHTML(dimInfo.displayName || '-') + ': ' : '') + // FIXME should not format time for raw data?\n encodeHTML(dimType === 'ordinal' ? val + '' : dimType === 'time' ? multipleSeries ? '' : formatTime('yyyy/MM/dd hh:mm:ss', val) : addCommas(val));\n valStr && result.push(valStr);\n\n if (isRichText) {\n markers[markName] = color;\n ++markerId;\n }\n }\n\n var newLine = vertially ? isRichText ? '\\n' : '
' : '';\n var content = newLine + result.join(newLine || ', ');\n return {\n renderMode: renderMode,\n content: content,\n style: markers\n };\n }\n\n function formatSingleValue(val) {\n // return encodeHTML(addCommas(val));\n return {\n renderMode: renderMode,\n content: encodeHTML(addCommas(val)),\n style: markers\n };\n }\n\n var data = this.getData();\n var tooltipDims = data.mapDimension('defaultedTooltip', true);\n var tooltipDimLen = tooltipDims.length;\n var value = this.getRawValue(dataIndex);\n var isValueArr = zrUtil.isArray(value);\n var color = data.getItemVisual(dataIndex, 'color');\n\n if (zrUtil.isObject(color) && color.colorStops) {\n color = (color.colorStops[0] || {}).color;\n }\n\n color = color || 'transparent'; // Complicated rule for pretty tooltip.\n\n var formattedValue = tooltipDimLen > 1 || isValueArr && !tooltipDimLen ? formatArrayValue(value) : tooltipDimLen ? formatSingleValue(retrieveRawValue(data, dataIndex, tooltipDims[0])) : formatSingleValue(isValueArr ? value[0] : value);\n var content = formattedValue.content;\n var markName = series.seriesIndex + 'at' + markerId;\n var colorEl = getTooltipMarker({\n color: color,\n type: 'item',\n renderMode: renderMode,\n markerId: markName\n });\n markers[markName] = color;\n ++markerId;\n var name = data.getName(dataIndex);\n var seriesName = this.name;\n\n if (!modelUtil.isNameSpecified(this)) {\n seriesName = '';\n }\n\n seriesName = seriesName ? encodeHTML(seriesName) + (!multipleSeries ? newLine : ': ') : '';\n var colorStr = typeof colorEl === 'string' ? colorEl : colorEl.content;\n var html = !multipleSeries ? seriesName + colorStr + (name ? encodeHTML(name) + ': ' + content : content) : colorStr + seriesName + content;\n return {\n html: html,\n markers: markers\n };\n },\n\n /**\n * @return {boolean}\n */\n isAnimationEnabled: function () {\n if (env.node) {\n return false;\n }\n\n var animationEnabled = this.getShallow('animation');\n\n if (animationEnabled) {\n if (this.getData().count() > this.getShallow('animationThreshold')) {\n animationEnabled = false;\n }\n }\n\n return animationEnabled;\n },\n restoreData: function () {\n this.dataTask.dirty();\n },\n getColorFromPalette: function (name, scope, requestColorNum) {\n var ecModel = this.ecModel; // PENDING\n\n var color = colorPaletteMixin.getColorFromPalette.call(this, name, scope, requestColorNum);\n\n if (!color) {\n color = ecModel.getColorFromPalette(name, scope, requestColorNum);\n }\n\n return color;\n },\n\n /**\n * Use `data.mapDimension(coordDim, true)` instead.\n * @deprecated\n */\n coordDimToDataDim: function (coordDim) {\n return this.getRawData().mapDimension(coordDim, true);\n },\n\n /**\n * Get progressive rendering count each step\n * @return {number}\n */\n getProgressive: function () {\n return this.get('progressive');\n },\n\n /**\n * Get progressive rendering count each step\n * @return {number}\n */\n getProgressiveThreshold: function () {\n return this.get('progressiveThreshold');\n },\n\n /**\n * Get data indices for show tooltip content. See tooltip.\n * @abstract\n * @param {Array.|string} dim\n * @param {Array.} value\n * @param {module:echarts/coord/single/SingleAxis} baseAxis\n * @return {Object} {dataIndices, nestestValue}.\n */\n getAxisTooltipData: null,\n\n /**\n * See tooltip.\n * @abstract\n * @param {number} dataIndex\n * @return {Array.} Point of tooltip. null/undefined can be returned.\n */\n getTooltipPosition: null,\n\n /**\n * @see {module:echarts/stream/Scheduler}\n */\n pipeTask: null,\n\n /**\n * Convinient for override in extended class.\n * @protected\n * @type {Function}\n */\n preventIncremental: null,\n\n /**\n * @public\n * @readOnly\n * @type {Object}\n */\n pipelineContext: null\n});\nzrUtil.mixin(SeriesModel, dataFormatMixin);\nzrUtil.mixin(SeriesModel, colorPaletteMixin);\n/**\n * MUST be called after `prepareSource` called\n * Here we need to make auto series, especially for auto legend. But we\n * do not modify series.name in option to avoid side effects.\n */\n\nfunction autoSeriesName(seriesModel) {\n // User specified name has higher priority, otherwise it may cause\n // series can not be queried unexpectedly.\n var name = seriesModel.name;\n\n if (!modelUtil.isNameSpecified(seriesModel)) {\n seriesModel.name = getSeriesAutoName(seriesModel) || name;\n }\n}\n\nfunction getSeriesAutoName(seriesModel) {\n var data = seriesModel.getRawData();\n var dataDims = data.mapDimension('seriesName', true);\n var nameArr = [];\n zrUtil.each(dataDims, function (dataDim) {\n var dimInfo = data.getDimensionInfo(dataDim);\n dimInfo.displayName && nameArr.push(dimInfo.displayName);\n });\n return nameArr.join(' ');\n}\n\nfunction dataTaskCount(context) {\n return context.model.getRawData().count();\n}\n\nfunction dataTaskReset(context) {\n var seriesModel = context.model;\n seriesModel.setData(seriesModel.getRawData().cloneShallow());\n return dataTaskProgress;\n}\n\nfunction dataTaskProgress(param, context) {\n // Avoid repead cloneShallow when data just created in reset.\n if (context.outputData && param.end > context.outputData.count()) {\n context.model.getRawData().cloneShallow(context.outputData);\n }\n} // TODO refactor\n\n\nfunction wrapData(data, seriesModel) {\n zrUtil.each(data.CHANGABLE_METHODS, function (methodName) {\n data.wrapMethod(methodName, zrUtil.curry(onDataSelfChange, seriesModel));\n });\n}\n\nfunction onDataSelfChange(seriesModel) {\n var task = getCurrentTask(seriesModel);\n\n if (task) {\n // Consider case: filter, selectRange\n task.setOutputEnd(this.count());\n }\n}\n\nfunction getCurrentTask(seriesModel) {\n var scheduler = (seriesModel.ecModel || {}).scheduler;\n var pipeline = scheduler && scheduler.getPipeline(seriesModel.uid);\n\n if (pipeline) {\n // When pipline finished, the currrentTask keep the last\n // task (renderTask).\n var task = pipeline.currentTask;\n\n if (task) {\n var agentStubMap = task.agentStubMap;\n\n if (agentStubMap) {\n task = agentStubMap.get(seriesModel.uid);\n }\n }\n\n return task;\n }\n}\n\nvar _default = SeriesModel;\nmodule.exports = _default;","var smoothSpline = require(\"./smoothSpline\");\n\nvar smoothBezier = require(\"./smoothBezier\");\n\nfunction buildPath(ctx, shape, closePath) {\n var points = shape.points;\n var smooth = shape.smooth;\n\n if (points && points.length >= 2) {\n if (smooth && smooth !== 'spline') {\n var controlPoints = smoothBezier(points, smooth, closePath, shape.smoothConstraint);\n ctx.moveTo(points[0][0], points[0][1]);\n var len = points.length;\n\n for (var i = 0; i < (closePath ? len : len - 1); i++) {\n var cp1 = controlPoints[i * 2];\n var cp2 = controlPoints[i * 2 + 1];\n var p = points[(i + 1) % len];\n ctx.bezierCurveTo(cp1[0], cp1[1], cp2[0], cp2[1], p[0], p[1]);\n }\n } else {\n if (smooth === 'spline') {\n points = smoothSpline(points, closePath);\n }\n\n ctx.moveTo(points[0][0], points[0][1]);\n\n for (var i = 1, l = points.length; i < l; i++) {\n ctx.lineTo(points[i][0], points[i][1]);\n }\n }\n\n closePath && ctx.closePath();\n }\n}\n\nexports.buildPath = buildPath;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar makeStyleMapper = require(\"./makeStyleMapper\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar getItemStyle = makeStyleMapper([['fill', 'color'], ['stroke', 'borderColor'], ['lineWidth', 'borderWidth'], ['opacity'], ['shadowBlur'], ['shadowOffsetX'], ['shadowOffsetY'], ['shadowColor'], ['textPosition'], ['textAlign']]);\nvar _default = {\n getItemStyle: function (excludes, includes) {\n var style = getItemStyle(this, excludes, includes);\n var lineDash = this.getBorderLineDash();\n lineDash && (style.lineDash = lineDash);\n return style;\n },\n getBorderLineDash: function () {\n var lineType = this.get('borderType');\n return lineType === 'solid' || lineType == null ? null : lineType === 'dashed' ? [5, 5] : [1, 1];\n }\n};\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @class\n * @param {Object|DataDimensionInfo} [opt] All of the fields will be shallow copied.\n */\nfunction DataDimensionInfo(opt) {\n if (opt != null) {\n zrUtil.extend(this, opt);\n }\n /**\n * Dimension name.\n * Mandatory.\n * @type {string}\n */\n // this.name;\n\n /**\n * The origin name in dimsDef, see source helper.\n * If displayName given, the tooltip will displayed vertically.\n * Optional.\n * @type {string}\n */\n // this.displayName;\n\n /**\n * Which coordSys dimension this dimension mapped to.\n * A `coordDim` can be a \"coordSysDim\" that the coordSys required\n * (for example, an item in `coordSysDims` of `model/referHelper#CoordSysInfo`),\n * or an generated \"extra coord name\" if does not mapped to any \"coordSysDim\"\n * (That is determined by whether `isExtraCoord` is `true`).\n * Mandatory.\n * @type {string}\n */\n // this.coordDim;\n\n /**\n * The index of this dimension in `series.encode[coordDim]`.\n * Mandatory.\n * @type {number}\n */\n // this.coordDimIndex;\n\n /**\n * Dimension type. The enumerable values are the key of\n * `dataCtors` of `data/List`.\n * Optional.\n * @type {string}\n */\n // this.type;\n\n /**\n * This index of this dimension info in `data/List#_dimensionInfos`.\n * Mandatory after added to `data/List`.\n * @type {number}\n */\n // this.index;\n\n /**\n * The format of `otherDims` is:\n * ```js\n * {\n * tooltip: number optional,\n * label: number optional,\n * itemName: number optional,\n * seriesName: number optional,\n * }\n * ```\n *\n * A `series.encode` can specified these fields:\n * ```js\n * encode: {\n * // \"3, 1, 5\" is the index of data dimension.\n * tooltip: [3, 1, 5],\n * label: [0, 3],\n * ...\n * }\n * ```\n * `otherDims` is the parse result of the `series.encode` above, like:\n * ```js\n * // Suppose the index of this data dimension is `3`.\n * this.otherDims = {\n * // `3` is at the index `0` of the `encode.tooltip`\n * tooltip: 0,\n * // `3` is at the index `1` of the `encode.tooltip`\n * label: 1\n * };\n * ```\n *\n * This prop should never be `null`/`undefined` after initialized.\n * @type {Object}\n */\n\n\n this.otherDims = {};\n /**\n * Be `true` if this dimension is not mapped to any \"coordSysDim\" that the\n * \"coordSys\" required.\n * Mandatory.\n * @type {boolean}\n */\n // this.isExtraCoord;\n\n /**\n * @type {module:data/OrdinalMeta}\n */\n // this.ordinalMeta;\n\n /**\n * Whether to create inverted indices.\n * @type {boolean}\n */\n // this.createInvertedIndices;\n}\n\n;\nvar _default = DataDimensionInfo;\nmodule.exports = _default;","/**\n * @param {Object} ctx\n * @param {Object} shape\n * @param {number} shape.x\n * @param {number} shape.y\n * @param {number} shape.width\n * @param {number} shape.height\n * @param {number} shape.r\n */\nfunction buildPath(ctx, shape) {\n var x = shape.x;\n var y = shape.y;\n var width = shape.width;\n var height = shape.height;\n var r = shape.r;\n var r1;\n var r2;\n var r3;\n var r4; // Convert width and height to positive for better borderRadius\n\n if (width < 0) {\n x = x + width;\n width = -width;\n }\n\n if (height < 0) {\n y = y + height;\n height = -height;\n }\n\n if (typeof r === 'number') {\n r1 = r2 = r3 = r4 = r;\n } else if (r instanceof Array) {\n if (r.length === 1) {\n r1 = r2 = r3 = r4 = r[0];\n } else if (r.length === 2) {\n r1 = r3 = r[0];\n r2 = r4 = r[1];\n } else if (r.length === 3) {\n r1 = r[0];\n r2 = r4 = r[1];\n r3 = r[2];\n } else {\n r1 = r[0];\n r2 = r[1];\n r3 = r[2];\n r4 = r[3];\n }\n } else {\n r1 = r2 = r3 = r4 = 0;\n }\n\n var total;\n\n if (r1 + r2 > width) {\n total = r1 + r2;\n r1 *= width / total;\n r2 *= width / total;\n }\n\n if (r3 + r4 > width) {\n total = r3 + r4;\n r3 *= width / total;\n r4 *= width / total;\n }\n\n if (r2 + r3 > height) {\n total = r2 + r3;\n r2 *= height / total;\n r3 *= height / total;\n }\n\n if (r1 + r4 > height) {\n total = r1 + r4;\n r1 *= height / total;\n r4 *= height / total;\n }\n\n ctx.moveTo(x + r1, y);\n ctx.lineTo(x + width - r2, y);\n r2 !== 0 && ctx.arc(x + width - r2, y + r2, r2, -Math.PI / 2, 0);\n ctx.lineTo(x + width, y + height - r3);\n r3 !== 0 && ctx.arc(x + width - r3, y + height - r3, r3, 0, Math.PI / 2);\n ctx.lineTo(x + r4, y + height);\n r4 !== 0 && ctx.arc(x + r4, y + height - r4, r4, Math.PI / 2, Math.PI);\n ctx.lineTo(x, y + r1);\n r1 !== 0 && ctx.arc(x + r1, y + r1, r1, Math.PI, Math.PI * 1.5);\n}\n\nexports.buildPath = buildPath;","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue, mergeData } from '../../vue';\nimport { NAME_INPUT_GROUP } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_APPEND, SLOT_NAME_DEFAULT, SLOT_NAME_PREPEND } from '../../constants/slots';\nimport { htmlOrText } from '../../utils/html';\nimport { hasNormalizedSlot, normalizeSlot } from '../../utils/normalize-slot';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { BInputGroupAppend } from './input-group-append';\nimport { BInputGroupPrepend } from './input-group-prepend';\nimport { BInputGroupText } from './input-group-text'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n append: makeProp(PROP_TYPE_STRING),\n appendHtml: makeProp(PROP_TYPE_STRING),\n id: makeProp(PROP_TYPE_STRING),\n prepend: makeProp(PROP_TYPE_STRING),\n prependHtml: makeProp(PROP_TYPE_STRING),\n size: makeProp(PROP_TYPE_STRING),\n tag: makeProp(PROP_TYPE_STRING, 'div')\n}, NAME_INPUT_GROUP); // --- Main component ---\n// @vue/component\n\nexport var BInputGroup = /*#__PURE__*/Vue.extend({\n name: NAME_INPUT_GROUP,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n slots = _ref.slots,\n scopedSlots = _ref.scopedSlots;\n var prepend = props.prepend,\n prependHtml = props.prependHtml,\n append = props.append,\n appendHtml = props.appendHtml,\n size = props.size;\n var $scopedSlots = scopedSlots || {};\n var $slots = slots();\n var slotScope = {};\n var $prepend = h();\n var hasPrependSlot = hasNormalizedSlot(SLOT_NAME_PREPEND, $scopedSlots, $slots);\n\n if (hasPrependSlot || prepend || prependHtml) {\n $prepend = h(BInputGroupPrepend, [hasPrependSlot ? normalizeSlot(SLOT_NAME_PREPEND, slotScope, $scopedSlots, $slots) : h(BInputGroupText, {\n domProps: htmlOrText(prependHtml, prepend)\n })]);\n }\n\n var $append = h();\n var hasAppendSlot = hasNormalizedSlot(SLOT_NAME_APPEND, $scopedSlots, $slots);\n\n if (hasAppendSlot || append || appendHtml) {\n $append = h(BInputGroupAppend, [hasAppendSlot ? normalizeSlot(SLOT_NAME_APPEND, slotScope, $scopedSlots, $slots) : h(BInputGroupText, {\n domProps: htmlOrText(appendHtml, append)\n })]);\n }\n\n return h(props.tag, mergeData(data, {\n staticClass: 'input-group',\n class: _defineProperty({}, \"input-group-\".concat(size), size),\n attrs: {\n id: props.id || null,\n role: 'group'\n }\n }), [$prepend, normalizeSlot(SLOT_NAME_DEFAULT, slotScope, $scopedSlots, $slots), $append]);\n }\n});","var util = require(\"./core/util\");\n\nvar _config = require(\"./config\");\n\nvar devicePixelRatio = _config.devicePixelRatio;\n\nvar Style = require(\"./graphic/Style\");\n\nvar Pattern = require(\"./graphic/Pattern\");\n\n/**\n * @module zrender/Layer\n * @author pissang(https://www.github.com/pissang)\n */\nfunction returnFalse() {\n return false;\n}\n/**\n * 创建dom\n *\n * @inner\n * @param {string} id dom id 待用\n * @param {Painter} painter painter instance\n * @param {number} number\n */\n\n\nfunction createDom(id, painter, dpr) {\n var newDom = util.createCanvas();\n var width = painter.getWidth();\n var height = painter.getHeight();\n var newDomStyle = newDom.style;\n\n if (newDomStyle) {\n // In node or some other non-browser environment\n newDomStyle.position = 'absolute';\n newDomStyle.left = 0;\n newDomStyle.top = 0;\n newDomStyle.width = width + 'px';\n newDomStyle.height = height + 'px';\n newDom.setAttribute('data-zr-dom-id', id);\n }\n\n newDom.width = width * dpr;\n newDom.height = height * dpr;\n return newDom;\n}\n/**\n * @alias module:zrender/Layer\n * @constructor\n * @extends module:zrender/mixin/Transformable\n * @param {string} id\n * @param {module:zrender/Painter} painter\n * @param {number} [dpr]\n */\n\n\nvar Layer = function (id, painter, dpr) {\n var dom;\n dpr = dpr || devicePixelRatio;\n\n if (typeof id === 'string') {\n dom = createDom(id, painter, dpr);\n } // Not using isDom because in node it will return false\n else if (util.isObject(id)) {\n dom = id;\n id = dom.id;\n }\n\n this.id = id;\n this.dom = dom;\n var domStyle = dom.style;\n\n if (domStyle) {\n // Not in node\n dom.onselectstart = returnFalse; // 避免页面选中的尴尬\n\n domStyle['-webkit-user-select'] = 'none';\n domStyle['user-select'] = 'none';\n domStyle['-webkit-touch-callout'] = 'none';\n domStyle['-webkit-tap-highlight-color'] = 'rgba(0,0,0,0)';\n domStyle['padding'] = 0; // eslint-disable-line dot-notation\n\n domStyle['margin'] = 0; // eslint-disable-line dot-notation\n\n domStyle['border-width'] = 0;\n }\n\n this.domBack = null;\n this.ctxBack = null;\n this.painter = painter;\n this.config = null; // Configs\n\n /**\n * 每次清空画布的颜色\n * @type {string}\n * @default 0\n */\n\n this.clearColor = 0;\n /**\n * 是否开启动态模糊\n * @type {boolean}\n * @default false\n */\n\n this.motionBlur = false;\n /**\n * 在开启动态模糊的时候使用,与上一帧混合的alpha值,值越大尾迹越明显\n * @type {number}\n * @default 0.7\n */\n\n this.lastFrameAlpha = 0.7;\n /**\n * Layer dpr\n * @type {number}\n */\n\n this.dpr = dpr;\n};\n\nLayer.prototype = {\n constructor: Layer,\n __dirty: true,\n __used: false,\n __drawIndex: 0,\n __startIndex: 0,\n __endIndex: 0,\n incremental: false,\n getElementCount: function () {\n return this.__endIndex - this.__startIndex;\n },\n initContext: function () {\n this.ctx = this.dom.getContext('2d');\n this.ctx.dpr = this.dpr;\n },\n createBackBuffer: function () {\n var dpr = this.dpr;\n this.domBack = createDom('back-' + this.id, this.painter, dpr);\n this.ctxBack = this.domBack.getContext('2d');\n\n if (dpr !== 1) {\n this.ctxBack.scale(dpr, dpr);\n }\n },\n\n /**\n * @param {number} width\n * @param {number} height\n */\n resize: function (width, height) {\n var dpr = this.dpr;\n var dom = this.dom;\n var domStyle = dom.style;\n var domBack = this.domBack;\n\n if (domStyle) {\n domStyle.width = width + 'px';\n domStyle.height = height + 'px';\n }\n\n dom.width = width * dpr;\n dom.height = height * dpr;\n\n if (domBack) {\n domBack.width = width * dpr;\n domBack.height = height * dpr;\n\n if (dpr !== 1) {\n this.ctxBack.scale(dpr, dpr);\n }\n }\n },\n\n /**\n * 清空该层画布\n * @param {boolean} [clearAll]=false Clear all with out motion blur\n * @param {Color} [clearColor]\n */\n clear: function (clearAll, clearColor) {\n var dom = this.dom;\n var ctx = this.ctx;\n var width = dom.width;\n var height = dom.height;\n var clearColor = clearColor || this.clearColor;\n var haveMotionBLur = this.motionBlur && !clearAll;\n var lastFrameAlpha = this.lastFrameAlpha;\n var dpr = this.dpr;\n\n if (haveMotionBLur) {\n if (!this.domBack) {\n this.createBackBuffer();\n }\n\n this.ctxBack.globalCompositeOperation = 'copy';\n this.ctxBack.drawImage(dom, 0, 0, width / dpr, height / dpr);\n }\n\n ctx.clearRect(0, 0, width, height);\n\n if (clearColor && clearColor !== 'transparent') {\n var clearColorGradientOrPattern; // Gradient\n\n if (clearColor.colorStops) {\n // Cache canvas gradient\n clearColorGradientOrPattern = clearColor.__canvasGradient || Style.getGradient(ctx, clearColor, {\n x: 0,\n y: 0,\n width: width,\n height: height\n });\n clearColor.__canvasGradient = clearColorGradientOrPattern;\n } // Pattern\n else if (clearColor.image) {\n clearColorGradientOrPattern = Pattern.prototype.getCanvasPattern.call(clearColor, ctx);\n }\n\n ctx.save();\n ctx.fillStyle = clearColorGradientOrPattern || clearColor;\n ctx.fillRect(0, 0, width, height);\n ctx.restore();\n }\n\n if (haveMotionBLur) {\n var domBack = this.domBack;\n ctx.save();\n ctx.globalAlpha = lastFrameAlpha;\n ctx.drawImage(domBack, 0, 0, width, height);\n ctx.restore();\n }\n }\n};\nvar _default = Layer;\nmodule.exports = _default;","var LRU = require(\"../../core/LRU\");\n\nvar globalImageCache = new LRU(50);\n/**\n * @param {string|HTMLImageElement|HTMLCanvasElement|Canvas} newImageOrSrc\n * @return {HTMLImageElement|HTMLCanvasElement|Canvas} image\n */\n\nfunction findExistImage(newImageOrSrc) {\n if (typeof newImageOrSrc === 'string') {\n var cachedImgObj = globalImageCache.get(newImageOrSrc);\n return cachedImgObj && cachedImgObj.image;\n } else {\n return newImageOrSrc;\n }\n}\n/**\n * Caution: User should cache loaded images, but not just count on LRU.\n * Consider if required images more than LRU size, will dead loop occur?\n *\n * @param {string|HTMLImageElement|HTMLCanvasElement|Canvas} newImageOrSrc\n * @param {HTMLImageElement|HTMLCanvasElement|Canvas} image Existent image.\n * @param {module:zrender/Element} [hostEl] For calling `dirty`.\n * @param {Function} [cb] params: (image, cbPayload)\n * @param {Object} [cbPayload] Payload on cb calling.\n * @return {HTMLImageElement|HTMLCanvasElement|Canvas} image\n */\n\n\nfunction createOrUpdateImage(newImageOrSrc, image, hostEl, cb, cbPayload) {\n if (!newImageOrSrc) {\n return image;\n } else if (typeof newImageOrSrc === 'string') {\n // Image should not be loaded repeatly.\n if (image && image.__zrImageSrc === newImageOrSrc || !hostEl) {\n return image;\n } // Only when there is no existent image or existent image src\n // is different, this method is responsible for load.\n\n\n var cachedImgObj = globalImageCache.get(newImageOrSrc);\n var pendingWrap = {\n hostEl: hostEl,\n cb: cb,\n cbPayload: cbPayload\n };\n\n if (cachedImgObj) {\n image = cachedImgObj.image;\n !isImageReady(image) && cachedImgObj.pending.push(pendingWrap);\n } else {\n image = new Image();\n image.onload = image.onerror = imageOnLoad;\n globalImageCache.put(newImageOrSrc, image.__cachedImgObj = {\n image: image,\n pending: [pendingWrap]\n });\n image.src = image.__zrImageSrc = newImageOrSrc;\n }\n\n return image;\n } // newImageOrSrc is an HTMLImageElement or HTMLCanvasElement or Canvas\n else {\n return newImageOrSrc;\n }\n}\n\nfunction imageOnLoad() {\n var cachedImgObj = this.__cachedImgObj;\n this.onload = this.onerror = this.__cachedImgObj = null;\n\n for (var i = 0; i < cachedImgObj.pending.length; i++) {\n var pendingWrap = cachedImgObj.pending[i];\n var cb = pendingWrap.cb;\n cb && cb(this, pendingWrap.cbPayload);\n pendingWrap.hostEl.dirty();\n }\n\n cachedImgObj.pending.length = 0;\n}\n\nfunction isImageReady(image) {\n return image && image.width && image.height;\n}\n\nexports.findExistImage = findExistImage;\nexports.createOrUpdateImage = createOrUpdateImage;\nexports.isImageReady = isImageReady;","export var HOOKS = [\n \"onChange\",\n \"onClose\",\n \"onDayCreate\",\n \"onDestroy\",\n \"onKeyDown\",\n \"onMonthChange\",\n \"onOpen\",\n \"onParseConfig\",\n \"onReady\",\n \"onValueUpdate\",\n \"onYearChange\",\n \"onPreCalendarPosition\",\n];\nexport var defaults = {\n _disable: [],\n allowInput: false,\n allowInvalidPreload: false,\n altFormat: \"F j, Y\",\n altInput: false,\n altInputClass: \"form-control input\",\n animate: typeof window === \"object\" &&\n window.navigator.userAgent.indexOf(\"MSIE\") === -1,\n ariaDateFormat: \"F j, Y\",\n autoFillDefaultTime: true,\n clickOpens: true,\n closeOnSelect: true,\n conjunction: \", \",\n dateFormat: \"Y-m-d\",\n defaultHour: 12,\n defaultMinute: 0,\n defaultSeconds: 0,\n disable: [],\n disableMobile: false,\n enableSeconds: false,\n enableTime: false,\n errorHandler: function (err) {\n return typeof console !== \"undefined\" && console.warn(err);\n },\n getWeek: function (givenDate) {\n var date = new Date(givenDate.getTime());\n date.setHours(0, 0, 0, 0);\n date.setDate(date.getDate() + 3 - ((date.getDay() + 6) % 7));\n var week1 = new Date(date.getFullYear(), 0, 4);\n return (1 +\n Math.round(((date.getTime() - week1.getTime()) / 86400000 -\n 3 +\n ((week1.getDay() + 6) % 7)) /\n 7));\n },\n hourIncrement: 1,\n ignoredFocusElements: [],\n inline: false,\n locale: \"default\",\n minuteIncrement: 5,\n mode: \"single\",\n monthSelectorType: \"dropdown\",\n nextArrow: \"\",\n noCalendar: false,\n now: new Date(),\n onChange: [],\n onClose: [],\n onDayCreate: [],\n onDestroy: [],\n onKeyDown: [],\n onMonthChange: [],\n onOpen: [],\n onParseConfig: [],\n onReady: [],\n onValueUpdate: [],\n onYearChange: [],\n onPreCalendarPosition: [],\n plugins: [],\n position: \"auto\",\n positionElement: undefined,\n prevArrow: \"\",\n shorthandCurrentMonth: false,\n showMonths: 1,\n static: false,\n time_24hr: false,\n weekNumbers: false,\n wrap: false,\n};\n","export var english = {\n weekdays: {\n shorthand: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n longhand: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ],\n },\n months: {\n shorthand: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n longhand: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ],\n },\n daysInMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],\n firstDayOfWeek: 0,\n ordinal: function (nth) {\n var s = nth % 100;\n if (s > 3 && s < 21)\n return \"th\";\n switch (s % 10) {\n case 1:\n return \"st\";\n case 2:\n return \"nd\";\n case 3:\n return \"rd\";\n default:\n return \"th\";\n }\n },\n rangeSeparator: \" to \",\n weekAbbreviation: \"Wk\",\n scrollTitle: \"Scroll to increment\",\n toggleTitle: \"Click to toggle\",\n amPM: [\"AM\", \"PM\"],\n yearAriaLabel: \"Year\",\n monthAriaLabel: \"Month\",\n hourAriaLabel: \"Hour\",\n minuteAriaLabel: \"Minute\",\n time_24hr: false,\n};\nexport default english;\n","export var pad = function (number, length) {\n if (length === void 0) { length = 2; }\n return (\"000\" + number).slice(length * -1);\n};\nexport var int = function (bool) { return (bool === true ? 1 : 0); };\nexport function debounce(fn, wait) {\n var t;\n return function () {\n var _this = this;\n var args = arguments;\n clearTimeout(t);\n t = setTimeout(function () { return fn.apply(_this, args); }, wait);\n };\n}\nexport var arrayify = function (obj) {\n return obj instanceof Array ? obj : [obj];\n};\n","export function toggleClass(elem, className, bool) {\n if (bool === true)\n return elem.classList.add(className);\n elem.classList.remove(className);\n}\nexport function createElement(tag, className, content) {\n var e = window.document.createElement(tag);\n className = className || \"\";\n content = content || \"\";\n e.className = className;\n if (content !== undefined)\n e.textContent = content;\n return e;\n}\nexport function clearNode(node) {\n while (node.firstChild)\n node.removeChild(node.firstChild);\n}\nexport function findParent(node, condition) {\n if (condition(node))\n return node;\n else if (node.parentNode)\n return findParent(node.parentNode, condition);\n return undefined;\n}\nexport function createNumberInput(inputClassName, opts) {\n var wrapper = createElement(\"div\", \"numInputWrapper\"), numInput = createElement(\"input\", \"numInput \" + inputClassName), arrowUp = createElement(\"span\", \"arrowUp\"), arrowDown = createElement(\"span\", \"arrowDown\");\n if (navigator.userAgent.indexOf(\"MSIE 9.0\") === -1) {\n numInput.type = \"number\";\n }\n else {\n numInput.type = \"text\";\n numInput.pattern = \"\\\\d*\";\n }\n if (opts !== undefined)\n for (var key in opts)\n numInput.setAttribute(key, opts[key]);\n wrapper.appendChild(numInput);\n wrapper.appendChild(arrowUp);\n wrapper.appendChild(arrowDown);\n return wrapper;\n}\nexport function getEventTarget(event) {\n try {\n if (typeof event.composedPath === \"function\") {\n var path = event.composedPath();\n return path[0];\n }\n return event.target;\n }\n catch (error) {\n return event.target;\n }\n}\n","import { int, pad } from \"../utils\";\nvar doNothing = function () { return undefined; };\nexport var monthToStr = function (monthNumber, shorthand, locale) { return locale.months[shorthand ? \"shorthand\" : \"longhand\"][monthNumber]; };\nexport var revFormat = {\n D: doNothing,\n F: function (dateObj, monthName, locale) {\n dateObj.setMonth(locale.months.longhand.indexOf(monthName));\n },\n G: function (dateObj, hour) {\n dateObj.setHours((dateObj.getHours() >= 12 ? 12 : 0) + parseFloat(hour));\n },\n H: function (dateObj, hour) {\n dateObj.setHours(parseFloat(hour));\n },\n J: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n K: function (dateObj, amPM, locale) {\n dateObj.setHours((dateObj.getHours() % 12) +\n 12 * int(new RegExp(locale.amPM[1], \"i\").test(amPM)));\n },\n M: function (dateObj, shortMonth, locale) {\n dateObj.setMonth(locale.months.shorthand.indexOf(shortMonth));\n },\n S: function (dateObj, seconds) {\n dateObj.setSeconds(parseFloat(seconds));\n },\n U: function (_, unixSeconds) { return new Date(parseFloat(unixSeconds) * 1000); },\n W: function (dateObj, weekNum, locale) {\n var weekNumber = parseInt(weekNum);\n var date = new Date(dateObj.getFullYear(), 0, 2 + (weekNumber - 1) * 7, 0, 0, 0, 0);\n date.setDate(date.getDate() - date.getDay() + locale.firstDayOfWeek);\n return date;\n },\n Y: function (dateObj, year) {\n dateObj.setFullYear(parseFloat(year));\n },\n Z: function (_, ISODate) { return new Date(ISODate); },\n d: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n h: function (dateObj, hour) {\n dateObj.setHours((dateObj.getHours() >= 12 ? 12 : 0) + parseFloat(hour));\n },\n i: function (dateObj, minutes) {\n dateObj.setMinutes(parseFloat(minutes));\n },\n j: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n l: doNothing,\n m: function (dateObj, month) {\n dateObj.setMonth(parseFloat(month) - 1);\n },\n n: function (dateObj, month) {\n dateObj.setMonth(parseFloat(month) - 1);\n },\n s: function (dateObj, seconds) {\n dateObj.setSeconds(parseFloat(seconds));\n },\n u: function (_, unixMillSeconds) {\n return new Date(parseFloat(unixMillSeconds));\n },\n w: doNothing,\n y: function (dateObj, year) {\n dateObj.setFullYear(2000 + parseFloat(year));\n },\n};\nexport var tokenRegex = {\n D: \"\",\n F: \"\",\n G: \"(\\\\d\\\\d|\\\\d)\",\n H: \"(\\\\d\\\\d|\\\\d)\",\n J: \"(\\\\d\\\\d|\\\\d)\\\\w+\",\n K: \"\",\n M: \"\",\n S: \"(\\\\d\\\\d|\\\\d)\",\n U: \"(.+)\",\n W: \"(\\\\d\\\\d|\\\\d)\",\n Y: \"(\\\\d{4})\",\n Z: \"(.+)\",\n d: \"(\\\\d\\\\d|\\\\d)\",\n h: \"(\\\\d\\\\d|\\\\d)\",\n i: \"(\\\\d\\\\d|\\\\d)\",\n j: \"(\\\\d\\\\d|\\\\d)\",\n l: \"\",\n m: \"(\\\\d\\\\d|\\\\d)\",\n n: \"(\\\\d\\\\d|\\\\d)\",\n s: \"(\\\\d\\\\d|\\\\d)\",\n u: \"(.+)\",\n w: \"(\\\\d\\\\d|\\\\d)\",\n y: \"(\\\\d{2})\",\n};\nexport var formats = {\n Z: function (date) { return date.toISOString(); },\n D: function (date, locale, options) {\n return locale.weekdays.shorthand[formats.w(date, locale, options)];\n },\n F: function (date, locale, options) {\n return monthToStr(formats.n(date, locale, options) - 1, false, locale);\n },\n G: function (date, locale, options) {\n return pad(formats.h(date, locale, options));\n },\n H: function (date) { return pad(date.getHours()); },\n J: function (date, locale) {\n return locale.ordinal !== undefined\n ? date.getDate() + locale.ordinal(date.getDate())\n : date.getDate();\n },\n K: function (date, locale) { return locale.amPM[int(date.getHours() > 11)]; },\n M: function (date, locale) {\n return monthToStr(date.getMonth(), true, locale);\n },\n S: function (date) { return pad(date.getSeconds()); },\n U: function (date) { return date.getTime() / 1000; },\n W: function (date, _, options) {\n return options.getWeek(date);\n },\n Y: function (date) { return pad(date.getFullYear(), 4); },\n d: function (date) { return pad(date.getDate()); },\n h: function (date) { return (date.getHours() % 12 ? date.getHours() % 12 : 12); },\n i: function (date) { return pad(date.getMinutes()); },\n j: function (date) { return date.getDate(); },\n l: function (date, locale) {\n return locale.weekdays.longhand[date.getDay()];\n },\n m: function (date) { return pad(date.getMonth() + 1); },\n n: function (date) { return date.getMonth() + 1; },\n s: function (date) { return date.getSeconds(); },\n u: function (date) { return date.getTime(); },\n w: function (date) { return date.getDay(); },\n y: function (date) { return String(date.getFullYear()).substring(2); },\n};\n","import { tokenRegex, revFormat, formats, } from \"./formatting\";\nimport { defaults } from \"../types/options\";\nimport { english } from \"../l10n/default\";\nexport var createDateFormatter = function (_a) {\n var _b = _a.config, config = _b === void 0 ? defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? english : _c, _d = _a.isMobile, isMobile = _d === void 0 ? false : _d;\n return function (dateObj, frmt, overrideLocale) {\n var locale = overrideLocale || l10n;\n if (config.formatDate !== undefined && !isMobile) {\n return config.formatDate(dateObj, frmt, locale);\n }\n return frmt\n .split(\"\")\n .map(function (c, i, arr) {\n return formats[c] && arr[i - 1] !== \"\\\\\"\n ? formats[c](dateObj, locale, config)\n : c !== \"\\\\\"\n ? c\n : \"\";\n })\n .join(\"\");\n };\n};\nexport var createDateParser = function (_a) {\n var _b = _a.config, config = _b === void 0 ? defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? english : _c;\n return function (date, givenFormat, timeless, customLocale) {\n if (date !== 0 && !date)\n return undefined;\n var locale = customLocale || l10n;\n var parsedDate;\n var dateOrig = date;\n if (date instanceof Date)\n parsedDate = new Date(date.getTime());\n else if (typeof date !== \"string\" &&\n date.toFixed !== undefined)\n parsedDate = new Date(date);\n else if (typeof date === \"string\") {\n var format = givenFormat || (config || defaults).dateFormat;\n var datestr = String(date).trim();\n if (datestr === \"today\") {\n parsedDate = new Date();\n timeless = true;\n }\n else if (config && config.parseDate) {\n parsedDate = config.parseDate(date, format);\n }\n else if (/Z$/.test(datestr) ||\n /GMT$/.test(datestr)) {\n parsedDate = new Date(date);\n }\n else {\n var matched = void 0, ops = [];\n for (var i = 0, matchIndex = 0, regexStr = \"\"; i < format.length; i++) {\n var token = format[i];\n var isBackSlash = token === \"\\\\\";\n var escaped = format[i - 1] === \"\\\\\" || isBackSlash;\n if (tokenRegex[token] && !escaped) {\n regexStr += tokenRegex[token];\n var match = new RegExp(regexStr).exec(date);\n if (match && (matched = true)) {\n ops[token !== \"Y\" ? \"push\" : \"unshift\"]({\n fn: revFormat[token],\n val: match[++matchIndex],\n });\n }\n }\n else if (!isBackSlash)\n regexStr += \".\";\n }\n parsedDate =\n !config || !config.noCalendar\n ? new Date(new Date().getFullYear(), 0, 1, 0, 0, 0, 0)\n : new Date(new Date().setHours(0, 0, 0, 0));\n ops.forEach(function (_a) {\n var fn = _a.fn, val = _a.val;\n return (parsedDate = fn(parsedDate, val, locale) || parsedDate);\n });\n parsedDate = matched ? parsedDate : undefined;\n }\n }\n if (!(parsedDate instanceof Date && !isNaN(parsedDate.getTime()))) {\n config.errorHandler(new Error(\"Invalid date provided: \" + dateOrig));\n return undefined;\n }\n if (timeless === true)\n parsedDate.setHours(0, 0, 0, 0);\n return parsedDate;\n };\n};\nexport function compareDates(date1, date2, timeless) {\n if (timeless === void 0) { timeless = true; }\n if (timeless !== false) {\n return (new Date(date1.getTime()).setHours(0, 0, 0, 0) -\n new Date(date2.getTime()).setHours(0, 0, 0, 0));\n }\n return date1.getTime() - date2.getTime();\n}\nexport function compareTimes(date1, date2) {\n return (3600 * (date1.getHours() - date2.getHours()) +\n 60 * (date1.getMinutes() - date2.getMinutes()) +\n date1.getSeconds() -\n date2.getSeconds());\n}\nexport var isBetween = function (ts, ts1, ts2) {\n return ts > Math.min(ts1, ts2) && ts < Math.max(ts1, ts2);\n};\nexport var calculateSecondsSinceMidnight = function (hours, minutes, seconds) {\n return hours * 3600 + minutes * 60 + seconds;\n};\nexport var parseSeconds = function (secondsSinceMidnight) {\n var hours = Math.floor(secondsSinceMidnight / 3600), minutes = (secondsSinceMidnight - hours * 3600) / 60;\n return [hours, minutes, secondsSinceMidnight - hours * 3600 - minutes * 60];\n};\nexport var duration = {\n DAY: 86400000,\n};\nexport function getDefaultHours(config) {\n var hours = config.defaultHour;\n var minutes = config.defaultMinute;\n var seconds = config.defaultSeconds;\n if (config.minDate !== undefined) {\n var minHour = config.minDate.getHours();\n var minMinutes = config.minDate.getMinutes();\n var minSeconds = config.minDate.getSeconds();\n if (hours < minHour) {\n hours = minHour;\n }\n if (hours === minHour && minutes < minMinutes) {\n minutes = minMinutes;\n }\n if (hours === minHour && minutes === minMinutes && seconds < minSeconds)\n seconds = config.minDate.getSeconds();\n }\n if (config.maxDate !== undefined) {\n var maxHr = config.maxDate.getHours();\n var maxMinutes = config.maxDate.getMinutes();\n hours = Math.min(hours, maxHr);\n if (hours === maxHr)\n minutes = Math.min(maxMinutes, minutes);\n if (hours === maxHr && minutes === maxMinutes)\n seconds = config.maxDate.getSeconds();\n }\n return { hours: hours, minutes: minutes, seconds: seconds };\n}\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\nimport { defaults as defaultOptions, HOOKS, } from \"./types/options\";\nimport English from \"./l10n/default\";\nimport { arrayify, debounce, int, pad } from \"./utils\";\nimport { clearNode, createElement, createNumberInput, findParent, toggleClass, getEventTarget, } from \"./utils/dom\";\nimport { compareDates, createDateParser, createDateFormatter, duration, isBetween, getDefaultHours, calculateSecondsSinceMidnight, parseSeconds, } from \"./utils/dates\";\nimport { tokenRegex, monthToStr } from \"./utils/formatting\";\nimport \"./utils/polyfills\";\nvar DEBOUNCED_CHANGE_MS = 300;\nfunction FlatpickrInstance(element, instanceConfig) {\n var self = {\n config: __assign(__assign({}, defaultOptions), flatpickr.defaultConfig),\n l10n: English,\n };\n self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n self._handlers = [];\n self.pluginElements = [];\n self.loadedPlugins = [];\n self._bind = bind;\n self._setHoursFromDate = setHoursFromDate;\n self._positionCalendar = positionCalendar;\n self.changeMonth = changeMonth;\n self.changeYear = changeYear;\n self.clear = clear;\n self.close = close;\n self.onMouseOver = onMouseOver;\n self._createElement = createElement;\n self.createDay = createDay;\n self.destroy = destroy;\n self.isEnabled = isEnabled;\n self.jumpToDate = jumpToDate;\n self.updateValue = updateValue;\n self.open = open;\n self.redraw = redraw;\n self.set = set;\n self.setDate = setDate;\n self.toggle = toggle;\n function setupHelperFunctions() {\n self.utils = {\n getDaysInMonth: function (month, yr) {\n if (month === void 0) { month = self.currentMonth; }\n if (yr === void 0) { yr = self.currentYear; }\n if (month === 1 && ((yr % 4 === 0 && yr % 100 !== 0) || yr % 400 === 0))\n return 29;\n return self.l10n.daysInMonth[month];\n },\n };\n }\n function init() {\n self.element = self.input = element;\n self.isOpen = false;\n parseConfig();\n setupLocale();\n setupInputs();\n setupDates();\n setupHelperFunctions();\n if (!self.isMobile)\n build();\n bindEvents();\n if (self.selectedDates.length || self.config.noCalendar) {\n if (self.config.enableTime) {\n setHoursFromDate(self.config.noCalendar ? self.latestSelectedDateObj : undefined);\n }\n updateValue(false);\n }\n setCalendarWidth();\n var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n if (!self.isMobile && isSafari) {\n positionCalendar();\n }\n triggerEvent(\"onReady\");\n }\n function getClosestActiveElement() {\n var _a;\n return (((_a = self.calendarContainer) === null || _a === void 0 ? void 0 : _a.getRootNode())\n .activeElement || document.activeElement);\n }\n function bindToInstance(fn) {\n return fn.bind(self);\n }\n function setCalendarWidth() {\n var config = self.config;\n if (config.weekNumbers === false && config.showMonths === 1) {\n return;\n }\n else if (config.noCalendar !== true) {\n window.requestAnimationFrame(function () {\n if (self.calendarContainer !== undefined) {\n self.calendarContainer.style.visibility = \"hidden\";\n self.calendarContainer.style.display = \"block\";\n }\n if (self.daysContainer !== undefined) {\n var daysWidth = (self.days.offsetWidth + 1) * config.showMonths;\n self.daysContainer.style.width = daysWidth + \"px\";\n self.calendarContainer.style.width =\n daysWidth +\n (self.weekWrapper !== undefined\n ? self.weekWrapper.offsetWidth\n : 0) +\n \"px\";\n self.calendarContainer.style.removeProperty(\"visibility\");\n self.calendarContainer.style.removeProperty(\"display\");\n }\n });\n }\n }\n function updateTime(e) {\n if (self.selectedDates.length === 0) {\n var defaultDate = self.config.minDate === undefined ||\n compareDates(new Date(), self.config.minDate) >= 0\n ? new Date()\n : new Date(self.config.minDate.getTime());\n var defaults = getDefaultHours(self.config);\n defaultDate.setHours(defaults.hours, defaults.minutes, defaults.seconds, defaultDate.getMilliseconds());\n self.selectedDates = [defaultDate];\n self.latestSelectedDateObj = defaultDate;\n }\n if (e !== undefined && e.type !== \"blur\") {\n timeWrapper(e);\n }\n var prevValue = self._input.value;\n setHoursFromInputs();\n updateValue();\n if (self._input.value !== prevValue) {\n self._debouncedChange();\n }\n }\n function ampm2military(hour, amPM) {\n return (hour % 12) + 12 * int(amPM === self.l10n.amPM[1]);\n }\n function military2ampm(hour) {\n switch (hour % 24) {\n case 0:\n case 12:\n return 12;\n default:\n return hour % 12;\n }\n }\n function setHoursFromInputs() {\n if (self.hourElement === undefined || self.minuteElement === undefined)\n return;\n var hours = (parseInt(self.hourElement.value.slice(-2), 10) || 0) % 24, minutes = (parseInt(self.minuteElement.value, 10) || 0) % 60, seconds = self.secondElement !== undefined\n ? (parseInt(self.secondElement.value, 10) || 0) % 60\n : 0;\n if (self.amPM !== undefined) {\n hours = ampm2military(hours, self.amPM.textContent);\n }\n var limitMinHours = self.config.minTime !== undefined ||\n (self.config.minDate &&\n self.minDateHasTime &&\n self.latestSelectedDateObj &&\n compareDates(self.latestSelectedDateObj, self.config.minDate, true) ===\n 0);\n var limitMaxHours = self.config.maxTime !== undefined ||\n (self.config.maxDate &&\n self.maxDateHasTime &&\n self.latestSelectedDateObj &&\n compareDates(self.latestSelectedDateObj, self.config.maxDate, true) ===\n 0);\n if (self.config.maxTime !== undefined &&\n self.config.minTime !== undefined &&\n self.config.minTime > self.config.maxTime) {\n var minBound = calculateSecondsSinceMidnight(self.config.minTime.getHours(), self.config.minTime.getMinutes(), self.config.minTime.getSeconds());\n var maxBound = calculateSecondsSinceMidnight(self.config.maxTime.getHours(), self.config.maxTime.getMinutes(), self.config.maxTime.getSeconds());\n var currentTime = calculateSecondsSinceMidnight(hours, minutes, seconds);\n if (currentTime > maxBound && currentTime < minBound) {\n var result = parseSeconds(minBound);\n hours = result[0];\n minutes = result[1];\n seconds = result[2];\n }\n }\n else {\n if (limitMaxHours) {\n var maxTime = self.config.maxTime !== undefined\n ? self.config.maxTime\n : self.config.maxDate;\n hours = Math.min(hours, maxTime.getHours());\n if (hours === maxTime.getHours())\n minutes = Math.min(minutes, maxTime.getMinutes());\n if (minutes === maxTime.getMinutes())\n seconds = Math.min(seconds, maxTime.getSeconds());\n }\n if (limitMinHours) {\n var minTime = self.config.minTime !== undefined\n ? self.config.minTime\n : self.config.minDate;\n hours = Math.max(hours, minTime.getHours());\n if (hours === minTime.getHours() && minutes < minTime.getMinutes())\n minutes = minTime.getMinutes();\n if (minutes === minTime.getMinutes())\n seconds = Math.max(seconds, minTime.getSeconds());\n }\n }\n setHours(hours, minutes, seconds);\n }\n function setHoursFromDate(dateObj) {\n var date = dateObj || self.latestSelectedDateObj;\n if (date && date instanceof Date) {\n setHours(date.getHours(), date.getMinutes(), date.getSeconds());\n }\n }\n function setHours(hours, minutes, seconds) {\n if (self.latestSelectedDateObj !== undefined) {\n self.latestSelectedDateObj.setHours(hours % 24, minutes, seconds || 0, 0);\n }\n if (!self.hourElement || !self.minuteElement || self.isMobile)\n return;\n self.hourElement.value = pad(!self.config.time_24hr\n ? ((12 + hours) % 12) + 12 * int(hours % 12 === 0)\n : hours);\n self.minuteElement.value = pad(minutes);\n if (self.amPM !== undefined)\n self.amPM.textContent = self.l10n.amPM[int(hours >= 12)];\n if (self.secondElement !== undefined)\n self.secondElement.value = pad(seconds);\n }\n function onYearInput(event) {\n var eventTarget = getEventTarget(event);\n var year = parseInt(eventTarget.value) + (event.delta || 0);\n if (year / 1000 > 1 ||\n (event.key === \"Enter\" && !/[^\\d]/.test(year.toString()))) {\n changeYear(year);\n }\n }\n function bind(element, event, handler, options) {\n if (event instanceof Array)\n return event.forEach(function (ev) { return bind(element, ev, handler, options); });\n if (element instanceof Array)\n return element.forEach(function (el) { return bind(el, event, handler, options); });\n element.addEventListener(event, handler, options);\n self._handlers.push({\n remove: function () { return element.removeEventListener(event, handler, options); },\n });\n }\n function triggerChange() {\n triggerEvent(\"onChange\");\n }\n function bindEvents() {\n if (self.config.wrap) {\n [\"open\", \"close\", \"toggle\", \"clear\"].forEach(function (evt) {\n Array.prototype.forEach.call(self.element.querySelectorAll(\"[data-\" + evt + \"]\"), function (el) {\n return bind(el, \"click\", self[evt]);\n });\n });\n }\n if (self.isMobile) {\n setupMobile();\n return;\n }\n var debouncedResize = debounce(onResize, 50);\n self._debouncedChange = debounce(triggerChange, DEBOUNCED_CHANGE_MS);\n if (self.daysContainer && !/iPhone|iPad|iPod/i.test(navigator.userAgent))\n bind(self.daysContainer, \"mouseover\", function (e) {\n if (self.config.mode === \"range\")\n onMouseOver(getEventTarget(e));\n });\n bind(self._input, \"keydown\", onKeyDown);\n if (self.calendarContainer !== undefined) {\n bind(self.calendarContainer, \"keydown\", onKeyDown);\n }\n if (!self.config.inline && !self.config.static)\n bind(window, \"resize\", debouncedResize);\n if (window.ontouchstart !== undefined)\n bind(window.document, \"touchstart\", documentClick);\n else\n bind(window.document, \"mousedown\", documentClick);\n bind(window.document, \"focus\", documentClick, { capture: true });\n if (self.config.clickOpens === true) {\n bind(self._input, \"focus\", self.open);\n bind(self._input, \"click\", self.open);\n }\n if (self.daysContainer !== undefined) {\n bind(self.monthNav, \"click\", onMonthNavClick);\n bind(self.monthNav, [\"keyup\", \"increment\"], onYearInput);\n bind(self.daysContainer, \"click\", selectDate);\n }\n if (self.timeContainer !== undefined &&\n self.minuteElement !== undefined &&\n self.hourElement !== undefined) {\n var selText = function (e) {\n return getEventTarget(e).select();\n };\n bind(self.timeContainer, [\"increment\"], updateTime);\n bind(self.timeContainer, \"blur\", updateTime, { capture: true });\n bind(self.timeContainer, \"click\", timeIncrement);\n bind([self.hourElement, self.minuteElement], [\"focus\", \"click\"], selText);\n if (self.secondElement !== undefined)\n bind(self.secondElement, \"focus\", function () { return self.secondElement && self.secondElement.select(); });\n if (self.amPM !== undefined) {\n bind(self.amPM, \"click\", function (e) {\n updateTime(e);\n });\n }\n }\n if (self.config.allowInput) {\n bind(self._input, \"blur\", onBlur);\n }\n }\n function jumpToDate(jumpDate, triggerChange) {\n var jumpTo = jumpDate !== undefined\n ? self.parseDate(jumpDate)\n : self.latestSelectedDateObj ||\n (self.config.minDate && self.config.minDate > self.now\n ? self.config.minDate\n : self.config.maxDate && self.config.maxDate < self.now\n ? self.config.maxDate\n : self.now);\n var oldYear = self.currentYear;\n var oldMonth = self.currentMonth;\n try {\n if (jumpTo !== undefined) {\n self.currentYear = jumpTo.getFullYear();\n self.currentMonth = jumpTo.getMonth();\n }\n }\n catch (e) {\n e.message = \"Invalid date supplied: \" + jumpTo;\n self.config.errorHandler(e);\n }\n if (triggerChange && self.currentYear !== oldYear) {\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n if (triggerChange &&\n (self.currentYear !== oldYear || self.currentMonth !== oldMonth)) {\n triggerEvent(\"onMonthChange\");\n }\n self.redraw();\n }\n function timeIncrement(e) {\n var eventTarget = getEventTarget(e);\n if (~eventTarget.className.indexOf(\"arrow\"))\n incrementNumInput(e, eventTarget.classList.contains(\"arrowUp\") ? 1 : -1);\n }\n function incrementNumInput(e, delta, inputElem) {\n var target = e && getEventTarget(e);\n var input = inputElem ||\n (target && target.parentNode && target.parentNode.firstChild);\n var event = createEvent(\"increment\");\n event.delta = delta;\n input && input.dispatchEvent(event);\n }\n function build() {\n var fragment = window.document.createDocumentFragment();\n self.calendarContainer = createElement(\"div\", \"flatpickr-calendar\");\n self.calendarContainer.tabIndex = -1;\n if (!self.config.noCalendar) {\n fragment.appendChild(buildMonthNav());\n self.innerContainer = createElement(\"div\", \"flatpickr-innerContainer\");\n if (self.config.weekNumbers) {\n var _a = buildWeeks(), weekWrapper = _a.weekWrapper, weekNumbers = _a.weekNumbers;\n self.innerContainer.appendChild(weekWrapper);\n self.weekNumbers = weekNumbers;\n self.weekWrapper = weekWrapper;\n }\n self.rContainer = createElement(\"div\", \"flatpickr-rContainer\");\n self.rContainer.appendChild(buildWeekdays());\n if (!self.daysContainer) {\n self.daysContainer = createElement(\"div\", \"flatpickr-days\");\n self.daysContainer.tabIndex = -1;\n }\n buildDays();\n self.rContainer.appendChild(self.daysContainer);\n self.innerContainer.appendChild(self.rContainer);\n fragment.appendChild(self.innerContainer);\n }\n if (self.config.enableTime) {\n fragment.appendChild(buildTime());\n }\n toggleClass(self.calendarContainer, \"rangeMode\", self.config.mode === \"range\");\n toggleClass(self.calendarContainer, \"animate\", self.config.animate === true);\n toggleClass(self.calendarContainer, \"multiMonth\", self.config.showMonths > 1);\n self.calendarContainer.appendChild(fragment);\n var customAppend = self.config.appendTo !== undefined &&\n self.config.appendTo.nodeType !== undefined;\n if (self.config.inline || self.config.static) {\n self.calendarContainer.classList.add(self.config.inline ? \"inline\" : \"static\");\n if (self.config.inline) {\n if (!customAppend && self.element.parentNode)\n self.element.parentNode.insertBefore(self.calendarContainer, self._input.nextSibling);\n else if (self.config.appendTo !== undefined)\n self.config.appendTo.appendChild(self.calendarContainer);\n }\n if (self.config.static) {\n var wrapper = createElement(\"div\", \"flatpickr-wrapper\");\n if (self.element.parentNode)\n self.element.parentNode.insertBefore(wrapper, self.element);\n wrapper.appendChild(self.element);\n if (self.altInput)\n wrapper.appendChild(self.altInput);\n wrapper.appendChild(self.calendarContainer);\n }\n }\n if (!self.config.static && !self.config.inline)\n (self.config.appendTo !== undefined\n ? self.config.appendTo\n : window.document.body).appendChild(self.calendarContainer);\n }\n function createDay(className, date, _dayNumber, i) {\n var dateIsEnabled = isEnabled(date, true), dayElement = createElement(\"span\", className, date.getDate().toString());\n dayElement.dateObj = date;\n dayElement.$i = i;\n dayElement.setAttribute(\"aria-label\", self.formatDate(date, self.config.ariaDateFormat));\n if (className.indexOf(\"hidden\") === -1 &&\n compareDates(date, self.now) === 0) {\n self.todayDateElem = dayElement;\n dayElement.classList.add(\"today\");\n dayElement.setAttribute(\"aria-current\", \"date\");\n }\n if (dateIsEnabled) {\n dayElement.tabIndex = -1;\n if (isDateSelected(date)) {\n dayElement.classList.add(\"selected\");\n self.selectedDateElem = dayElement;\n if (self.config.mode === \"range\") {\n toggleClass(dayElement, \"startRange\", self.selectedDates[0] &&\n compareDates(date, self.selectedDates[0], true) === 0);\n toggleClass(dayElement, \"endRange\", self.selectedDates[1] &&\n compareDates(date, self.selectedDates[1], true) === 0);\n if (className === \"nextMonthDay\")\n dayElement.classList.add(\"inRange\");\n }\n }\n }\n else {\n dayElement.classList.add(\"flatpickr-disabled\");\n }\n if (self.config.mode === \"range\") {\n if (isDateInRange(date) && !isDateSelected(date))\n dayElement.classList.add(\"inRange\");\n }\n if (self.weekNumbers &&\n self.config.showMonths === 1 &&\n className !== \"prevMonthDay\" &&\n i % 7 === 6) {\n self.weekNumbers.insertAdjacentHTML(\"beforeend\", \"\" + self.config.getWeek(date) + \"\");\n }\n triggerEvent(\"onDayCreate\", dayElement);\n return dayElement;\n }\n function focusOnDayElem(targetNode) {\n targetNode.focus();\n if (self.config.mode === \"range\")\n onMouseOver(targetNode);\n }\n function getFirstAvailableDay(delta) {\n var startMonth = delta > 0 ? 0 : self.config.showMonths - 1;\n var endMonth = delta > 0 ? self.config.showMonths : -1;\n for (var m = startMonth; m != endMonth; m += delta) {\n var month = self.daysContainer.children[m];\n var startIndex = delta > 0 ? 0 : month.children.length - 1;\n var endIndex = delta > 0 ? month.children.length : -1;\n for (var i = startIndex; i != endIndex; i += delta) {\n var c = month.children[i];\n if (c.className.indexOf(\"hidden\") === -1 && isEnabled(c.dateObj))\n return c;\n }\n }\n return undefined;\n }\n function getNextAvailableDay(current, delta) {\n var givenMonth = current.className.indexOf(\"Month\") === -1\n ? current.dateObj.getMonth()\n : self.currentMonth;\n var endMonth = delta > 0 ? self.config.showMonths : -1;\n var loopDelta = delta > 0 ? 1 : -1;\n for (var m = givenMonth - self.currentMonth; m != endMonth; m += loopDelta) {\n var month = self.daysContainer.children[m];\n var startIndex = givenMonth - self.currentMonth === m\n ? current.$i + delta\n : delta < 0\n ? month.children.length - 1\n : 0;\n var numMonthDays = month.children.length;\n for (var i = startIndex; i >= 0 && i < numMonthDays && i != (delta > 0 ? numMonthDays : -1); i += loopDelta) {\n var c = month.children[i];\n if (c.className.indexOf(\"hidden\") === -1 &&\n isEnabled(c.dateObj) &&\n Math.abs(current.$i - i) >= Math.abs(delta))\n return focusOnDayElem(c);\n }\n }\n self.changeMonth(loopDelta);\n focusOnDay(getFirstAvailableDay(loopDelta), 0);\n return undefined;\n }\n function focusOnDay(current, offset) {\n var activeElement = getClosestActiveElement();\n var dayFocused = isInView(activeElement || document.body);\n var startElem = current !== undefined\n ? current\n : dayFocused\n ? activeElement\n : self.selectedDateElem !== undefined && isInView(self.selectedDateElem)\n ? self.selectedDateElem\n : self.todayDateElem !== undefined && isInView(self.todayDateElem)\n ? self.todayDateElem\n : getFirstAvailableDay(offset > 0 ? 1 : -1);\n if (startElem === undefined) {\n self._input.focus();\n }\n else if (!dayFocused) {\n focusOnDayElem(startElem);\n }\n else {\n getNextAvailableDay(startElem, offset);\n }\n }\n function buildMonthDays(year, month) {\n var firstOfMonth = (new Date(year, month, 1).getDay() - self.l10n.firstDayOfWeek + 7) % 7;\n var prevMonthDays = self.utils.getDaysInMonth((month - 1 + 12) % 12, year);\n var daysInMonth = self.utils.getDaysInMonth(month, year), days = window.document.createDocumentFragment(), isMultiMonth = self.config.showMonths > 1, prevMonthDayClass = isMultiMonth ? \"prevMonthDay hidden\" : \"prevMonthDay\", nextMonthDayClass = isMultiMonth ? \"nextMonthDay hidden\" : \"nextMonthDay\";\n var dayNumber = prevMonthDays + 1 - firstOfMonth, dayIndex = 0;\n for (; dayNumber <= prevMonthDays; dayNumber++, dayIndex++) {\n days.appendChild(createDay(\"flatpickr-day \" + prevMonthDayClass, new Date(year, month - 1, dayNumber), dayNumber, dayIndex));\n }\n for (dayNumber = 1; dayNumber <= daysInMonth; dayNumber++, dayIndex++) {\n days.appendChild(createDay(\"flatpickr-day\", new Date(year, month, dayNumber), dayNumber, dayIndex));\n }\n for (var dayNum = daysInMonth + 1; dayNum <= 42 - firstOfMonth &&\n (self.config.showMonths === 1 || dayIndex % 7 !== 0); dayNum++, dayIndex++) {\n days.appendChild(createDay(\"flatpickr-day \" + nextMonthDayClass, new Date(year, month + 1, dayNum % daysInMonth), dayNum, dayIndex));\n }\n var dayContainer = createElement(\"div\", \"dayContainer\");\n dayContainer.appendChild(days);\n return dayContainer;\n }\n function buildDays() {\n if (self.daysContainer === undefined) {\n return;\n }\n clearNode(self.daysContainer);\n if (self.weekNumbers)\n clearNode(self.weekNumbers);\n var frag = document.createDocumentFragment();\n for (var i = 0; i < self.config.showMonths; i++) {\n var d = new Date(self.currentYear, self.currentMonth, 1);\n d.setMonth(self.currentMonth + i);\n frag.appendChild(buildMonthDays(d.getFullYear(), d.getMonth()));\n }\n self.daysContainer.appendChild(frag);\n self.days = self.daysContainer.firstChild;\n if (self.config.mode === \"range\" && self.selectedDates.length === 1) {\n onMouseOver();\n }\n }\n function buildMonthSwitch() {\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType !== \"dropdown\")\n return;\n var shouldBuildMonth = function (month) {\n if (self.config.minDate !== undefined &&\n self.currentYear === self.config.minDate.getFullYear() &&\n month < self.config.minDate.getMonth()) {\n return false;\n }\n return !(self.config.maxDate !== undefined &&\n self.currentYear === self.config.maxDate.getFullYear() &&\n month > self.config.maxDate.getMonth());\n };\n self.monthsDropdownContainer.tabIndex = -1;\n self.monthsDropdownContainer.innerHTML = \"\";\n for (var i = 0; i < 12; i++) {\n if (!shouldBuildMonth(i))\n continue;\n var month = createElement(\"option\", \"flatpickr-monthDropdown-month\");\n month.value = new Date(self.currentYear, i).getMonth().toString();\n month.textContent = monthToStr(i, self.config.shorthandCurrentMonth, self.l10n);\n month.tabIndex = -1;\n if (self.currentMonth === i) {\n month.selected = true;\n }\n self.monthsDropdownContainer.appendChild(month);\n }\n }\n function buildMonth() {\n var container = createElement(\"div\", \"flatpickr-month\");\n var monthNavFragment = window.document.createDocumentFragment();\n var monthElement;\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType === \"static\") {\n monthElement = createElement(\"span\", \"cur-month\");\n }\n else {\n self.monthsDropdownContainer = createElement(\"select\", \"flatpickr-monthDropdown-months\");\n self.monthsDropdownContainer.setAttribute(\"aria-label\", self.l10n.monthAriaLabel);\n bind(self.monthsDropdownContainer, \"change\", function (e) {\n var target = getEventTarget(e);\n var selectedMonth = parseInt(target.value, 10);\n self.changeMonth(selectedMonth - self.currentMonth);\n triggerEvent(\"onMonthChange\");\n });\n buildMonthSwitch();\n monthElement = self.monthsDropdownContainer;\n }\n var yearInput = createNumberInput(\"cur-year\", { tabindex: \"-1\" });\n var yearElement = yearInput.getElementsByTagName(\"input\")[0];\n yearElement.setAttribute(\"aria-label\", self.l10n.yearAriaLabel);\n if (self.config.minDate) {\n yearElement.setAttribute(\"min\", self.config.minDate.getFullYear().toString());\n }\n if (self.config.maxDate) {\n yearElement.setAttribute(\"max\", self.config.maxDate.getFullYear().toString());\n yearElement.disabled =\n !!self.config.minDate &&\n self.config.minDate.getFullYear() === self.config.maxDate.getFullYear();\n }\n var currentMonth = createElement(\"div\", \"flatpickr-current-month\");\n currentMonth.appendChild(monthElement);\n currentMonth.appendChild(yearInput);\n monthNavFragment.appendChild(currentMonth);\n container.appendChild(monthNavFragment);\n return {\n container: container,\n yearElement: yearElement,\n monthElement: monthElement,\n };\n }\n function buildMonths() {\n clearNode(self.monthNav);\n self.monthNav.appendChild(self.prevMonthNav);\n if (self.config.showMonths) {\n self.yearElements = [];\n self.monthElements = [];\n }\n for (var m = self.config.showMonths; m--;) {\n var month = buildMonth();\n self.yearElements.push(month.yearElement);\n self.monthElements.push(month.monthElement);\n self.monthNav.appendChild(month.container);\n }\n self.monthNav.appendChild(self.nextMonthNav);\n }\n function buildMonthNav() {\n self.monthNav = createElement(\"div\", \"flatpickr-months\");\n self.yearElements = [];\n self.monthElements = [];\n self.prevMonthNav = createElement(\"span\", \"flatpickr-prev-month\");\n self.prevMonthNav.innerHTML = self.config.prevArrow;\n self.nextMonthNav = createElement(\"span\", \"flatpickr-next-month\");\n self.nextMonthNav.innerHTML = self.config.nextArrow;\n buildMonths();\n Object.defineProperty(self, \"_hidePrevMonthArrow\", {\n get: function () { return self.__hidePrevMonthArrow; },\n set: function (bool) {\n if (self.__hidePrevMonthArrow !== bool) {\n toggleClass(self.prevMonthNav, \"flatpickr-disabled\", bool);\n self.__hidePrevMonthArrow = bool;\n }\n },\n });\n Object.defineProperty(self, \"_hideNextMonthArrow\", {\n get: function () { return self.__hideNextMonthArrow; },\n set: function (bool) {\n if (self.__hideNextMonthArrow !== bool) {\n toggleClass(self.nextMonthNav, \"flatpickr-disabled\", bool);\n self.__hideNextMonthArrow = bool;\n }\n },\n });\n self.currentYearElement = self.yearElements[0];\n updateNavigationCurrentMonth();\n return self.monthNav;\n }\n function buildTime() {\n self.calendarContainer.classList.add(\"hasTime\");\n if (self.config.noCalendar)\n self.calendarContainer.classList.add(\"noCalendar\");\n var defaults = getDefaultHours(self.config);\n self.timeContainer = createElement(\"div\", \"flatpickr-time\");\n self.timeContainer.tabIndex = -1;\n var separator = createElement(\"span\", \"flatpickr-time-separator\", \":\");\n var hourInput = createNumberInput(\"flatpickr-hour\", {\n \"aria-label\": self.l10n.hourAriaLabel,\n });\n self.hourElement = hourInput.getElementsByTagName(\"input\")[0];\n var minuteInput = createNumberInput(\"flatpickr-minute\", {\n \"aria-label\": self.l10n.minuteAriaLabel,\n });\n self.minuteElement = minuteInput.getElementsByTagName(\"input\")[0];\n self.hourElement.tabIndex = self.minuteElement.tabIndex = -1;\n self.hourElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getHours()\n : self.config.time_24hr\n ? defaults.hours\n : military2ampm(defaults.hours));\n self.minuteElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getMinutes()\n : defaults.minutes);\n self.hourElement.setAttribute(\"step\", self.config.hourIncrement.toString());\n self.minuteElement.setAttribute(\"step\", self.config.minuteIncrement.toString());\n self.hourElement.setAttribute(\"min\", self.config.time_24hr ? \"0\" : \"1\");\n self.hourElement.setAttribute(\"max\", self.config.time_24hr ? \"23\" : \"12\");\n self.hourElement.setAttribute(\"maxlength\", \"2\");\n self.minuteElement.setAttribute(\"min\", \"0\");\n self.minuteElement.setAttribute(\"max\", \"59\");\n self.minuteElement.setAttribute(\"maxlength\", \"2\");\n self.timeContainer.appendChild(hourInput);\n self.timeContainer.appendChild(separator);\n self.timeContainer.appendChild(minuteInput);\n if (self.config.time_24hr)\n self.timeContainer.classList.add(\"time24hr\");\n if (self.config.enableSeconds) {\n self.timeContainer.classList.add(\"hasSeconds\");\n var secondInput = createNumberInput(\"flatpickr-second\");\n self.secondElement = secondInput.getElementsByTagName(\"input\")[0];\n self.secondElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getSeconds()\n : defaults.seconds);\n self.secondElement.setAttribute(\"step\", self.minuteElement.getAttribute(\"step\"));\n self.secondElement.setAttribute(\"min\", \"0\");\n self.secondElement.setAttribute(\"max\", \"59\");\n self.secondElement.setAttribute(\"maxlength\", \"2\");\n self.timeContainer.appendChild(createElement(\"span\", \"flatpickr-time-separator\", \":\"));\n self.timeContainer.appendChild(secondInput);\n }\n if (!self.config.time_24hr) {\n self.amPM = createElement(\"span\", \"flatpickr-am-pm\", self.l10n.amPM[int((self.latestSelectedDateObj\n ? self.hourElement.value\n : self.config.defaultHour) > 11)]);\n self.amPM.title = self.l10n.toggleTitle;\n self.amPM.tabIndex = -1;\n self.timeContainer.appendChild(self.amPM);\n }\n return self.timeContainer;\n }\n function buildWeekdays() {\n if (!self.weekdayContainer)\n self.weekdayContainer = createElement(\"div\", \"flatpickr-weekdays\");\n else\n clearNode(self.weekdayContainer);\n for (var i = self.config.showMonths; i--;) {\n var container = createElement(\"div\", \"flatpickr-weekdaycontainer\");\n self.weekdayContainer.appendChild(container);\n }\n updateWeekdays();\n return self.weekdayContainer;\n }\n function updateWeekdays() {\n if (!self.weekdayContainer) {\n return;\n }\n var firstDayOfWeek = self.l10n.firstDayOfWeek;\n var weekdays = __spreadArrays(self.l10n.weekdays.shorthand);\n if (firstDayOfWeek > 0 && firstDayOfWeek < weekdays.length) {\n weekdays = __spreadArrays(weekdays.splice(firstDayOfWeek, weekdays.length), weekdays.splice(0, firstDayOfWeek));\n }\n for (var i = self.config.showMonths; i--;) {\n self.weekdayContainer.children[i].innerHTML = \"\\n \\n \" + weekdays.join(\"\") + \"\\n \\n \";\n }\n }\n function buildWeeks() {\n self.calendarContainer.classList.add(\"hasWeeks\");\n var weekWrapper = createElement(\"div\", \"flatpickr-weekwrapper\");\n weekWrapper.appendChild(createElement(\"span\", \"flatpickr-weekday\", self.l10n.weekAbbreviation));\n var weekNumbers = createElement(\"div\", \"flatpickr-weeks\");\n weekWrapper.appendChild(weekNumbers);\n return {\n weekWrapper: weekWrapper,\n weekNumbers: weekNumbers,\n };\n }\n function changeMonth(value, isOffset) {\n if (isOffset === void 0) { isOffset = true; }\n var delta = isOffset ? value : value - self.currentMonth;\n if ((delta < 0 && self._hidePrevMonthArrow === true) ||\n (delta > 0 && self._hideNextMonthArrow === true))\n return;\n self.currentMonth += delta;\n if (self.currentMonth < 0 || self.currentMonth > 11) {\n self.currentYear += self.currentMonth > 11 ? 1 : -1;\n self.currentMonth = (self.currentMonth + 12) % 12;\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n buildDays();\n triggerEvent(\"onMonthChange\");\n updateNavigationCurrentMonth();\n }\n function clear(triggerChangeEvent, toInitial) {\n if (triggerChangeEvent === void 0) { triggerChangeEvent = true; }\n if (toInitial === void 0) { toInitial = true; }\n self.input.value = \"\";\n if (self.altInput !== undefined)\n self.altInput.value = \"\";\n if (self.mobileInput !== undefined)\n self.mobileInput.value = \"\";\n self.selectedDates = [];\n self.latestSelectedDateObj = undefined;\n if (toInitial === true) {\n self.currentYear = self._initialDate.getFullYear();\n self.currentMonth = self._initialDate.getMonth();\n }\n if (self.config.enableTime === true) {\n var _a = getDefaultHours(self.config), hours = _a.hours, minutes = _a.minutes, seconds = _a.seconds;\n setHours(hours, minutes, seconds);\n }\n self.redraw();\n if (triggerChangeEvent)\n triggerEvent(\"onChange\");\n }\n function close() {\n self.isOpen = false;\n if (!self.isMobile) {\n if (self.calendarContainer !== undefined) {\n self.calendarContainer.classList.remove(\"open\");\n }\n if (self._input !== undefined) {\n self._input.classList.remove(\"active\");\n }\n }\n triggerEvent(\"onClose\");\n }\n function destroy() {\n if (self.config !== undefined)\n triggerEvent(\"onDestroy\");\n for (var i = self._handlers.length; i--;) {\n self._handlers[i].remove();\n }\n self._handlers = [];\n if (self.mobileInput) {\n if (self.mobileInput.parentNode)\n self.mobileInput.parentNode.removeChild(self.mobileInput);\n self.mobileInput = undefined;\n }\n else if (self.calendarContainer && self.calendarContainer.parentNode) {\n if (self.config.static && self.calendarContainer.parentNode) {\n var wrapper = self.calendarContainer.parentNode;\n wrapper.lastChild && wrapper.removeChild(wrapper.lastChild);\n if (wrapper.parentNode) {\n while (wrapper.firstChild)\n wrapper.parentNode.insertBefore(wrapper.firstChild, wrapper);\n wrapper.parentNode.removeChild(wrapper);\n }\n }\n else\n self.calendarContainer.parentNode.removeChild(self.calendarContainer);\n }\n if (self.altInput) {\n self.input.type = \"text\";\n if (self.altInput.parentNode)\n self.altInput.parentNode.removeChild(self.altInput);\n delete self.altInput;\n }\n if (self.input) {\n self.input.type = self.input._type;\n self.input.classList.remove(\"flatpickr-input\");\n self.input.removeAttribute(\"readonly\");\n }\n [\n \"_showTimeInput\",\n \"latestSelectedDateObj\",\n \"_hideNextMonthArrow\",\n \"_hidePrevMonthArrow\",\n \"__hideNextMonthArrow\",\n \"__hidePrevMonthArrow\",\n \"isMobile\",\n \"isOpen\",\n \"selectedDateElem\",\n \"minDateHasTime\",\n \"maxDateHasTime\",\n \"days\",\n \"daysContainer\",\n \"_input\",\n \"_positionElement\",\n \"innerContainer\",\n \"rContainer\",\n \"monthNav\",\n \"todayDateElem\",\n \"calendarContainer\",\n \"weekdayContainer\",\n \"prevMonthNav\",\n \"nextMonthNav\",\n \"monthsDropdownContainer\",\n \"currentMonthElement\",\n \"currentYearElement\",\n \"navigationCurrentMonth\",\n \"selectedDateElem\",\n \"config\",\n ].forEach(function (k) {\n try {\n delete self[k];\n }\n catch (_) { }\n });\n }\n function isCalendarElem(elem) {\n return self.calendarContainer.contains(elem);\n }\n function documentClick(e) {\n if (self.isOpen && !self.config.inline) {\n var eventTarget_1 = getEventTarget(e);\n var isCalendarElement = isCalendarElem(eventTarget_1);\n var isInput = eventTarget_1 === self.input ||\n eventTarget_1 === self.altInput ||\n self.element.contains(eventTarget_1) ||\n (e.path &&\n e.path.indexOf &&\n (~e.path.indexOf(self.input) ||\n ~e.path.indexOf(self.altInput)));\n var lostFocus = !isInput &&\n !isCalendarElement &&\n !isCalendarElem(e.relatedTarget);\n var isIgnored = !self.config.ignoredFocusElements.some(function (elem) {\n return elem.contains(eventTarget_1);\n });\n if (lostFocus && isIgnored) {\n if (self.config.allowInput) {\n self.setDate(self._input.value, false, self.config.altInput\n ? self.config.altFormat\n : self.config.dateFormat);\n }\n if (self.timeContainer !== undefined &&\n self.minuteElement !== undefined &&\n self.hourElement !== undefined &&\n self.input.value !== \"\" &&\n self.input.value !== undefined) {\n updateTime();\n }\n self.close();\n if (self.config &&\n self.config.mode === \"range\" &&\n self.selectedDates.length === 1)\n self.clear(false);\n }\n }\n }\n function changeYear(newYear) {\n if (!newYear ||\n (self.config.minDate && newYear < self.config.minDate.getFullYear()) ||\n (self.config.maxDate && newYear > self.config.maxDate.getFullYear()))\n return;\n var newYearNum = newYear, isNewYear = self.currentYear !== newYearNum;\n self.currentYear = newYearNum || self.currentYear;\n if (self.config.maxDate &&\n self.currentYear === self.config.maxDate.getFullYear()) {\n self.currentMonth = Math.min(self.config.maxDate.getMonth(), self.currentMonth);\n }\n else if (self.config.minDate &&\n self.currentYear === self.config.minDate.getFullYear()) {\n self.currentMonth = Math.max(self.config.minDate.getMonth(), self.currentMonth);\n }\n if (isNewYear) {\n self.redraw();\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n }\n function isEnabled(date, timeless) {\n var _a;\n if (timeless === void 0) { timeless = true; }\n var dateToCheck = self.parseDate(date, undefined, timeless);\n if ((self.config.minDate &&\n dateToCheck &&\n compareDates(dateToCheck, self.config.minDate, timeless !== undefined ? timeless : !self.minDateHasTime) < 0) ||\n (self.config.maxDate &&\n dateToCheck &&\n compareDates(dateToCheck, self.config.maxDate, timeless !== undefined ? timeless : !self.maxDateHasTime) > 0))\n return false;\n if (!self.config.enable && self.config.disable.length === 0)\n return true;\n if (dateToCheck === undefined)\n return false;\n var bool = !!self.config.enable, array = (_a = self.config.enable) !== null && _a !== void 0 ? _a : self.config.disable;\n for (var i = 0, d = void 0; i < array.length; i++) {\n d = array[i];\n if (typeof d === \"function\" &&\n d(dateToCheck))\n return bool;\n else if (d instanceof Date &&\n dateToCheck !== undefined &&\n d.getTime() === dateToCheck.getTime())\n return bool;\n else if (typeof d === \"string\") {\n var parsed = self.parseDate(d, undefined, true);\n return parsed && parsed.getTime() === dateToCheck.getTime()\n ? bool\n : !bool;\n }\n else if (typeof d === \"object\" &&\n dateToCheck !== undefined &&\n d.from &&\n d.to &&\n dateToCheck.getTime() >= d.from.getTime() &&\n dateToCheck.getTime() <= d.to.getTime())\n return bool;\n }\n return !bool;\n }\n function isInView(elem) {\n if (self.daysContainer !== undefined)\n return (elem.className.indexOf(\"hidden\") === -1 &&\n elem.className.indexOf(\"flatpickr-disabled\") === -1 &&\n self.daysContainer.contains(elem));\n return false;\n }\n function onBlur(e) {\n var isInput = e.target === self._input;\n var valueChanged = self._input.value.trimEnd() !== getDateStr();\n if (isInput &&\n valueChanged &&\n !(e.relatedTarget && isCalendarElem(e.relatedTarget))) {\n self.setDate(self._input.value, true, e.target === self.altInput\n ? self.config.altFormat\n : self.config.dateFormat);\n }\n }\n function onKeyDown(e) {\n var eventTarget = getEventTarget(e);\n var isInput = self.config.wrap\n ? element.contains(eventTarget)\n : eventTarget === self._input;\n var allowInput = self.config.allowInput;\n var allowKeydown = self.isOpen && (!allowInput || !isInput);\n var allowInlineKeydown = self.config.inline && isInput && !allowInput;\n if (e.keyCode === 13 && isInput) {\n if (allowInput) {\n self.setDate(self._input.value, true, eventTarget === self.altInput\n ? self.config.altFormat\n : self.config.dateFormat);\n self.close();\n return eventTarget.blur();\n }\n else {\n self.open();\n }\n }\n else if (isCalendarElem(eventTarget) ||\n allowKeydown ||\n allowInlineKeydown) {\n var isTimeObj = !!self.timeContainer &&\n self.timeContainer.contains(eventTarget);\n switch (e.keyCode) {\n case 13:\n if (isTimeObj) {\n e.preventDefault();\n updateTime();\n focusAndClose();\n }\n else\n selectDate(e);\n break;\n case 27:\n e.preventDefault();\n focusAndClose();\n break;\n case 8:\n case 46:\n if (isInput && !self.config.allowInput) {\n e.preventDefault();\n self.clear();\n }\n break;\n case 37:\n case 39:\n if (!isTimeObj && !isInput) {\n e.preventDefault();\n var activeElement = getClosestActiveElement();\n if (self.daysContainer !== undefined &&\n (allowInput === false ||\n (activeElement && isInView(activeElement)))) {\n var delta_1 = e.keyCode === 39 ? 1 : -1;\n if (!e.ctrlKey)\n focusOnDay(undefined, delta_1);\n else {\n e.stopPropagation();\n changeMonth(delta_1);\n focusOnDay(getFirstAvailableDay(1), 0);\n }\n }\n }\n else if (self.hourElement)\n self.hourElement.focus();\n break;\n case 38:\n case 40:\n e.preventDefault();\n var delta = e.keyCode === 40 ? 1 : -1;\n if ((self.daysContainer &&\n eventTarget.$i !== undefined) ||\n eventTarget === self.input ||\n eventTarget === self.altInput) {\n if (e.ctrlKey) {\n e.stopPropagation();\n changeYear(self.currentYear - delta);\n focusOnDay(getFirstAvailableDay(1), 0);\n }\n else if (!isTimeObj)\n focusOnDay(undefined, delta * 7);\n }\n else if (eventTarget === self.currentYearElement) {\n changeYear(self.currentYear - delta);\n }\n else if (self.config.enableTime) {\n if (!isTimeObj && self.hourElement)\n self.hourElement.focus();\n updateTime(e);\n self._debouncedChange();\n }\n break;\n case 9:\n if (isTimeObj) {\n var elems = [\n self.hourElement,\n self.minuteElement,\n self.secondElement,\n self.amPM,\n ]\n .concat(self.pluginElements)\n .filter(function (x) { return x; });\n var i = elems.indexOf(eventTarget);\n if (i !== -1) {\n var target = elems[i + (e.shiftKey ? -1 : 1)];\n e.preventDefault();\n (target || self._input).focus();\n }\n }\n else if (!self.config.noCalendar &&\n self.daysContainer &&\n self.daysContainer.contains(eventTarget) &&\n e.shiftKey) {\n e.preventDefault();\n self._input.focus();\n }\n break;\n default:\n break;\n }\n }\n if (self.amPM !== undefined && eventTarget === self.amPM) {\n switch (e.key) {\n case self.l10n.amPM[0].charAt(0):\n case self.l10n.amPM[0].charAt(0).toLowerCase():\n self.amPM.textContent = self.l10n.amPM[0];\n setHoursFromInputs();\n updateValue();\n break;\n case self.l10n.amPM[1].charAt(0):\n case self.l10n.amPM[1].charAt(0).toLowerCase():\n self.amPM.textContent = self.l10n.amPM[1];\n setHoursFromInputs();\n updateValue();\n break;\n }\n }\n if (isInput || isCalendarElem(eventTarget)) {\n triggerEvent(\"onKeyDown\", e);\n }\n }\n function onMouseOver(elem, cellClass) {\n if (cellClass === void 0) { cellClass = \"flatpickr-day\"; }\n if (self.selectedDates.length !== 1 ||\n (elem &&\n (!elem.classList.contains(cellClass) ||\n elem.classList.contains(\"flatpickr-disabled\"))))\n return;\n var hoverDate = elem\n ? elem.dateObj.getTime()\n : self.days.firstElementChild.dateObj.getTime(), initialDate = self.parseDate(self.selectedDates[0], undefined, true).getTime(), rangeStartDate = Math.min(hoverDate, self.selectedDates[0].getTime()), rangeEndDate = Math.max(hoverDate, self.selectedDates[0].getTime());\n var containsDisabled = false;\n var minRange = 0, maxRange = 0;\n for (var t = rangeStartDate; t < rangeEndDate; t += duration.DAY) {\n if (!isEnabled(new Date(t), true)) {\n containsDisabled =\n containsDisabled || (t > rangeStartDate && t < rangeEndDate);\n if (t < initialDate && (!minRange || t > minRange))\n minRange = t;\n else if (t > initialDate && (!maxRange || t < maxRange))\n maxRange = t;\n }\n }\n var hoverableCells = Array.from(self.rContainer.querySelectorAll(\"*:nth-child(-n+\" + self.config.showMonths + \") > .\" + cellClass));\n hoverableCells.forEach(function (dayElem) {\n var date = dayElem.dateObj;\n var timestamp = date.getTime();\n var outOfRange = (minRange > 0 && timestamp < minRange) ||\n (maxRange > 0 && timestamp > maxRange);\n if (outOfRange) {\n dayElem.classList.add(\"notAllowed\");\n [\"inRange\", \"startRange\", \"endRange\"].forEach(function (c) {\n dayElem.classList.remove(c);\n });\n return;\n }\n else if (containsDisabled && !outOfRange)\n return;\n [\"startRange\", \"inRange\", \"endRange\", \"notAllowed\"].forEach(function (c) {\n dayElem.classList.remove(c);\n });\n if (elem !== undefined) {\n elem.classList.add(hoverDate <= self.selectedDates[0].getTime()\n ? \"startRange\"\n : \"endRange\");\n if (initialDate < hoverDate && timestamp === initialDate)\n dayElem.classList.add(\"startRange\");\n else if (initialDate > hoverDate && timestamp === initialDate)\n dayElem.classList.add(\"endRange\");\n if (timestamp >= minRange &&\n (maxRange === 0 || timestamp <= maxRange) &&\n isBetween(timestamp, initialDate, hoverDate))\n dayElem.classList.add(\"inRange\");\n }\n });\n }\n function onResize() {\n if (self.isOpen && !self.config.static && !self.config.inline)\n positionCalendar();\n }\n function open(e, positionElement) {\n if (positionElement === void 0) { positionElement = self._positionElement; }\n if (self.isMobile === true) {\n if (e) {\n e.preventDefault();\n var eventTarget = getEventTarget(e);\n if (eventTarget) {\n eventTarget.blur();\n }\n }\n if (self.mobileInput !== undefined) {\n self.mobileInput.focus();\n self.mobileInput.click();\n }\n triggerEvent(\"onOpen\");\n return;\n }\n else if (self._input.disabled || self.config.inline) {\n return;\n }\n var wasOpen = self.isOpen;\n self.isOpen = true;\n if (!wasOpen) {\n self.calendarContainer.classList.add(\"open\");\n self._input.classList.add(\"active\");\n triggerEvent(\"onOpen\");\n positionCalendar(positionElement);\n }\n if (self.config.enableTime === true && self.config.noCalendar === true) {\n if (self.config.allowInput === false &&\n (e === undefined ||\n !self.timeContainer.contains(e.relatedTarget))) {\n setTimeout(function () { return self.hourElement.select(); }, 50);\n }\n }\n }\n function minMaxDateSetter(type) {\n return function (date) {\n var dateObj = (self.config[\"_\" + type + \"Date\"] = self.parseDate(date, self.config.dateFormat));\n var inverseDateObj = self.config[\"_\" + (type === \"min\" ? \"max\" : \"min\") + \"Date\"];\n if (dateObj !== undefined) {\n self[type === \"min\" ? \"minDateHasTime\" : \"maxDateHasTime\"] =\n dateObj.getHours() > 0 ||\n dateObj.getMinutes() > 0 ||\n dateObj.getSeconds() > 0;\n }\n if (self.selectedDates) {\n self.selectedDates = self.selectedDates.filter(function (d) { return isEnabled(d); });\n if (!self.selectedDates.length && type === \"min\")\n setHoursFromDate(dateObj);\n updateValue();\n }\n if (self.daysContainer) {\n redraw();\n if (dateObj !== undefined)\n self.currentYearElement[type] = dateObj.getFullYear().toString();\n else\n self.currentYearElement.removeAttribute(type);\n self.currentYearElement.disabled =\n !!inverseDateObj &&\n dateObj !== undefined &&\n inverseDateObj.getFullYear() === dateObj.getFullYear();\n }\n };\n }\n function parseConfig() {\n var boolOpts = [\n \"wrap\",\n \"weekNumbers\",\n \"allowInput\",\n \"allowInvalidPreload\",\n \"clickOpens\",\n \"time_24hr\",\n \"enableTime\",\n \"noCalendar\",\n \"altInput\",\n \"shorthandCurrentMonth\",\n \"inline\",\n \"static\",\n \"enableSeconds\",\n \"disableMobile\",\n ];\n var userConfig = __assign(__assign({}, JSON.parse(JSON.stringify(element.dataset || {}))), instanceConfig);\n var formats = {};\n self.config.parseDate = userConfig.parseDate;\n self.config.formatDate = userConfig.formatDate;\n Object.defineProperty(self.config, \"enable\", {\n get: function () { return self.config._enable; },\n set: function (dates) {\n self.config._enable = parseDateRules(dates);\n },\n });\n Object.defineProperty(self.config, \"disable\", {\n get: function () { return self.config._disable; },\n set: function (dates) {\n self.config._disable = parseDateRules(dates);\n },\n });\n var timeMode = userConfig.mode === \"time\";\n if (!userConfig.dateFormat && (userConfig.enableTime || timeMode)) {\n var defaultDateFormat = flatpickr.defaultConfig.dateFormat || defaultOptions.dateFormat;\n formats.dateFormat =\n userConfig.noCalendar || timeMode\n ? \"H:i\" + (userConfig.enableSeconds ? \":S\" : \"\")\n : defaultDateFormat + \" H:i\" + (userConfig.enableSeconds ? \":S\" : \"\");\n }\n if (userConfig.altInput &&\n (userConfig.enableTime || timeMode) &&\n !userConfig.altFormat) {\n var defaultAltFormat = flatpickr.defaultConfig.altFormat || defaultOptions.altFormat;\n formats.altFormat =\n userConfig.noCalendar || timeMode\n ? \"h:i\" + (userConfig.enableSeconds ? \":S K\" : \" K\")\n : defaultAltFormat + (\" h:i\" + (userConfig.enableSeconds ? \":S\" : \"\") + \" K\");\n }\n Object.defineProperty(self.config, \"minDate\", {\n get: function () { return self.config._minDate; },\n set: minMaxDateSetter(\"min\"),\n });\n Object.defineProperty(self.config, \"maxDate\", {\n get: function () { return self.config._maxDate; },\n set: minMaxDateSetter(\"max\"),\n });\n var minMaxTimeSetter = function (type) { return function (val) {\n self.config[type === \"min\" ? \"_minTime\" : \"_maxTime\"] = self.parseDate(val, \"H:i:S\");\n }; };\n Object.defineProperty(self.config, \"minTime\", {\n get: function () { return self.config._minTime; },\n set: minMaxTimeSetter(\"min\"),\n });\n Object.defineProperty(self.config, \"maxTime\", {\n get: function () { return self.config._maxTime; },\n set: minMaxTimeSetter(\"max\"),\n });\n if (userConfig.mode === \"time\") {\n self.config.noCalendar = true;\n self.config.enableTime = true;\n }\n Object.assign(self.config, formats, userConfig);\n for (var i = 0; i < boolOpts.length; i++)\n self.config[boolOpts[i]] =\n self.config[boolOpts[i]] === true ||\n self.config[boolOpts[i]] === \"true\";\n HOOKS.filter(function (hook) { return self.config[hook] !== undefined; }).forEach(function (hook) {\n self.config[hook] = arrayify(self.config[hook] || []).map(bindToInstance);\n });\n self.isMobile =\n !self.config.disableMobile &&\n !self.config.inline &&\n self.config.mode === \"single\" &&\n !self.config.disable.length &&\n !self.config.enable &&\n !self.config.weekNumbers &&\n /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n for (var i = 0; i < self.config.plugins.length; i++) {\n var pluginConf = self.config.plugins[i](self) || {};\n for (var key in pluginConf) {\n if (HOOKS.indexOf(key) > -1) {\n self.config[key] = arrayify(pluginConf[key])\n .map(bindToInstance)\n .concat(self.config[key]);\n }\n else if (typeof userConfig[key] === \"undefined\")\n self.config[key] = pluginConf[key];\n }\n }\n if (!userConfig.altInputClass) {\n self.config.altInputClass =\n getInputElem().className + \" \" + self.config.altInputClass;\n }\n triggerEvent(\"onParseConfig\");\n }\n function getInputElem() {\n return self.config.wrap\n ? element.querySelector(\"[data-input]\")\n : element;\n }\n function setupLocale() {\n if (typeof self.config.locale !== \"object\" &&\n typeof flatpickr.l10ns[self.config.locale] === \"undefined\")\n self.config.errorHandler(new Error(\"flatpickr: invalid locale \" + self.config.locale));\n self.l10n = __assign(__assign({}, flatpickr.l10ns.default), (typeof self.config.locale === \"object\"\n ? self.config.locale\n : self.config.locale !== \"default\"\n ? flatpickr.l10ns[self.config.locale]\n : undefined));\n tokenRegex.D = \"(\" + self.l10n.weekdays.shorthand.join(\"|\") + \")\";\n tokenRegex.l = \"(\" + self.l10n.weekdays.longhand.join(\"|\") + \")\";\n tokenRegex.M = \"(\" + self.l10n.months.shorthand.join(\"|\") + \")\";\n tokenRegex.F = \"(\" + self.l10n.months.longhand.join(\"|\") + \")\";\n tokenRegex.K = \"(\" + self.l10n.amPM[0] + \"|\" + self.l10n.amPM[1] + \"|\" + self.l10n.amPM[0].toLowerCase() + \"|\" + self.l10n.amPM[1].toLowerCase() + \")\";\n var userConfig = __assign(__assign({}, instanceConfig), JSON.parse(JSON.stringify(element.dataset || {})));\n if (userConfig.time_24hr === undefined &&\n flatpickr.defaultConfig.time_24hr === undefined) {\n self.config.time_24hr = self.l10n.time_24hr;\n }\n self.formatDate = createDateFormatter(self);\n self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n }\n function positionCalendar(customPositionElement) {\n if (typeof self.config.position === \"function\") {\n return void self.config.position(self, customPositionElement);\n }\n if (self.calendarContainer === undefined)\n return;\n triggerEvent(\"onPreCalendarPosition\");\n var positionElement = customPositionElement || self._positionElement;\n var calendarHeight = Array.prototype.reduce.call(self.calendarContainer.children, (function (acc, child) { return acc + child.offsetHeight; }), 0), calendarWidth = self.calendarContainer.offsetWidth, configPos = self.config.position.split(\" \"), configPosVertical = configPos[0], configPosHorizontal = configPos.length > 1 ? configPos[1] : null, inputBounds = positionElement.getBoundingClientRect(), distanceFromBottom = window.innerHeight - inputBounds.bottom, showOnTop = configPosVertical === \"above\" ||\n (configPosVertical !== \"below\" &&\n distanceFromBottom < calendarHeight &&\n inputBounds.top > calendarHeight);\n var top = window.pageYOffset +\n inputBounds.top +\n (!showOnTop ? positionElement.offsetHeight + 2 : -calendarHeight - 2);\n toggleClass(self.calendarContainer, \"arrowTop\", !showOnTop);\n toggleClass(self.calendarContainer, \"arrowBottom\", showOnTop);\n if (self.config.inline)\n return;\n var left = window.pageXOffset + inputBounds.left;\n var isCenter = false;\n var isRight = false;\n if (configPosHorizontal === \"center\") {\n left -= (calendarWidth - inputBounds.width) / 2;\n isCenter = true;\n }\n else if (configPosHorizontal === \"right\") {\n left -= calendarWidth - inputBounds.width;\n isRight = true;\n }\n toggleClass(self.calendarContainer, \"arrowLeft\", !isCenter && !isRight);\n toggleClass(self.calendarContainer, \"arrowCenter\", isCenter);\n toggleClass(self.calendarContainer, \"arrowRight\", isRight);\n var right = window.document.body.offsetWidth -\n (window.pageXOffset + inputBounds.right);\n var rightMost = left + calendarWidth > window.document.body.offsetWidth;\n var centerMost = right + calendarWidth > window.document.body.offsetWidth;\n toggleClass(self.calendarContainer, \"rightMost\", rightMost);\n if (self.config.static)\n return;\n self.calendarContainer.style.top = top + \"px\";\n if (!rightMost) {\n self.calendarContainer.style.left = left + \"px\";\n self.calendarContainer.style.right = \"auto\";\n }\n else if (!centerMost) {\n self.calendarContainer.style.left = \"auto\";\n self.calendarContainer.style.right = right + \"px\";\n }\n else {\n var doc = getDocumentStyleSheet();\n if (doc === undefined)\n return;\n var bodyWidth = window.document.body.offsetWidth;\n var centerLeft = Math.max(0, bodyWidth / 2 - calendarWidth / 2);\n var centerBefore = \".flatpickr-calendar.centerMost:before\";\n var centerAfter = \".flatpickr-calendar.centerMost:after\";\n var centerIndex = doc.cssRules.length;\n var centerStyle = \"{left:\" + inputBounds.left + \"px;right:auto;}\";\n toggleClass(self.calendarContainer, \"rightMost\", false);\n toggleClass(self.calendarContainer, \"centerMost\", true);\n doc.insertRule(centerBefore + \",\" + centerAfter + centerStyle, centerIndex);\n self.calendarContainer.style.left = centerLeft + \"px\";\n self.calendarContainer.style.right = \"auto\";\n }\n }\n function getDocumentStyleSheet() {\n var editableSheet = null;\n for (var i = 0; i < document.styleSheets.length; i++) {\n var sheet = document.styleSheets[i];\n if (!sheet.cssRules)\n continue;\n try {\n sheet.cssRules;\n }\n catch (err) {\n continue;\n }\n editableSheet = sheet;\n break;\n }\n return editableSheet != null ? editableSheet : createStyleSheet();\n }\n function createStyleSheet() {\n var style = document.createElement(\"style\");\n document.head.appendChild(style);\n return style.sheet;\n }\n function redraw() {\n if (self.config.noCalendar || self.isMobile)\n return;\n buildMonthSwitch();\n updateNavigationCurrentMonth();\n buildDays();\n }\n function focusAndClose() {\n self._input.focus();\n if (window.navigator.userAgent.indexOf(\"MSIE\") !== -1 ||\n navigator.msMaxTouchPoints !== undefined) {\n setTimeout(self.close, 0);\n }\n else {\n self.close();\n }\n }\n function selectDate(e) {\n e.preventDefault();\n e.stopPropagation();\n var isSelectable = function (day) {\n return day.classList &&\n day.classList.contains(\"flatpickr-day\") &&\n !day.classList.contains(\"flatpickr-disabled\") &&\n !day.classList.contains(\"notAllowed\");\n };\n var t = findParent(getEventTarget(e), isSelectable);\n if (t === undefined)\n return;\n var target = t;\n var selectedDate = (self.latestSelectedDateObj = new Date(target.dateObj.getTime()));\n var shouldChangeMonth = (selectedDate.getMonth() < self.currentMonth ||\n selectedDate.getMonth() >\n self.currentMonth + self.config.showMonths - 1) &&\n self.config.mode !== \"range\";\n self.selectedDateElem = target;\n if (self.config.mode === \"single\")\n self.selectedDates = [selectedDate];\n else if (self.config.mode === \"multiple\") {\n var selectedIndex = isDateSelected(selectedDate);\n if (selectedIndex)\n self.selectedDates.splice(parseInt(selectedIndex), 1);\n else\n self.selectedDates.push(selectedDate);\n }\n else if (self.config.mode === \"range\") {\n if (self.selectedDates.length === 2) {\n self.clear(false, false);\n }\n self.latestSelectedDateObj = selectedDate;\n self.selectedDates.push(selectedDate);\n if (compareDates(selectedDate, self.selectedDates[0], true) !== 0)\n self.selectedDates.sort(function (a, b) { return a.getTime() - b.getTime(); });\n }\n setHoursFromInputs();\n if (shouldChangeMonth) {\n var isNewYear = self.currentYear !== selectedDate.getFullYear();\n self.currentYear = selectedDate.getFullYear();\n self.currentMonth = selectedDate.getMonth();\n if (isNewYear) {\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n triggerEvent(\"onMonthChange\");\n }\n updateNavigationCurrentMonth();\n buildDays();\n updateValue();\n if (!shouldChangeMonth &&\n self.config.mode !== \"range\" &&\n self.config.showMonths === 1)\n focusOnDayElem(target);\n else if (self.selectedDateElem !== undefined &&\n self.hourElement === undefined) {\n self.selectedDateElem && self.selectedDateElem.focus();\n }\n if (self.hourElement !== undefined)\n self.hourElement !== undefined && self.hourElement.focus();\n if (self.config.closeOnSelect) {\n var single = self.config.mode === \"single\" && !self.config.enableTime;\n var range = self.config.mode === \"range\" &&\n self.selectedDates.length === 2 &&\n !self.config.enableTime;\n if (single || range) {\n focusAndClose();\n }\n }\n triggerChange();\n }\n var CALLBACKS = {\n locale: [setupLocale, updateWeekdays],\n showMonths: [buildMonths, setCalendarWidth, buildWeekdays],\n minDate: [jumpToDate],\n maxDate: [jumpToDate],\n positionElement: [updatePositionElement],\n clickOpens: [\n function () {\n if (self.config.clickOpens === true) {\n bind(self._input, \"focus\", self.open);\n bind(self._input, \"click\", self.open);\n }\n else {\n self._input.removeEventListener(\"focus\", self.open);\n self._input.removeEventListener(\"click\", self.open);\n }\n },\n ],\n };\n function set(option, value) {\n if (option !== null && typeof option === \"object\") {\n Object.assign(self.config, option);\n for (var key in option) {\n if (CALLBACKS[key] !== undefined)\n CALLBACKS[key].forEach(function (x) { return x(); });\n }\n }\n else {\n self.config[option] = value;\n if (CALLBACKS[option] !== undefined)\n CALLBACKS[option].forEach(function (x) { return x(); });\n else if (HOOKS.indexOf(option) > -1)\n self.config[option] = arrayify(value);\n }\n self.redraw();\n updateValue(true);\n }\n function setSelectedDate(inputDate, format) {\n var dates = [];\n if (inputDate instanceof Array)\n dates = inputDate.map(function (d) { return self.parseDate(d, format); });\n else if (inputDate instanceof Date || typeof inputDate === \"number\")\n dates = [self.parseDate(inputDate, format)];\n else if (typeof inputDate === \"string\") {\n switch (self.config.mode) {\n case \"single\":\n case \"time\":\n dates = [self.parseDate(inputDate, format)];\n break;\n case \"multiple\":\n dates = inputDate\n .split(self.config.conjunction)\n .map(function (date) { return self.parseDate(date, format); });\n break;\n case \"range\":\n dates = inputDate\n .split(self.l10n.rangeSeparator)\n .map(function (date) { return self.parseDate(date, format); });\n break;\n default:\n break;\n }\n }\n else\n self.config.errorHandler(new Error(\"Invalid date supplied: \" + JSON.stringify(inputDate)));\n self.selectedDates = (self.config.allowInvalidPreload\n ? dates\n : dates.filter(function (d) { return d instanceof Date && isEnabled(d, false); }));\n if (self.config.mode === \"range\")\n self.selectedDates.sort(function (a, b) { return a.getTime() - b.getTime(); });\n }\n function setDate(date, triggerChange, format) {\n if (triggerChange === void 0) { triggerChange = false; }\n if (format === void 0) { format = self.config.dateFormat; }\n if ((date !== 0 && !date) || (date instanceof Array && date.length === 0))\n return self.clear(triggerChange);\n setSelectedDate(date, format);\n self.latestSelectedDateObj =\n self.selectedDates[self.selectedDates.length - 1];\n self.redraw();\n jumpToDate(undefined, triggerChange);\n setHoursFromDate();\n if (self.selectedDates.length === 0) {\n self.clear(false);\n }\n updateValue(triggerChange);\n if (triggerChange)\n triggerEvent(\"onChange\");\n }\n function parseDateRules(arr) {\n return arr\n .slice()\n .map(function (rule) {\n if (typeof rule === \"string\" ||\n typeof rule === \"number\" ||\n rule instanceof Date) {\n return self.parseDate(rule, undefined, true);\n }\n else if (rule &&\n typeof rule === \"object\" &&\n rule.from &&\n rule.to)\n return {\n from: self.parseDate(rule.from, undefined),\n to: self.parseDate(rule.to, undefined),\n };\n return rule;\n })\n .filter(function (x) { return x; });\n }\n function setupDates() {\n self.selectedDates = [];\n self.now = self.parseDate(self.config.now) || new Date();\n var preloadedDate = self.config.defaultDate ||\n ((self.input.nodeName === \"INPUT\" ||\n self.input.nodeName === \"TEXTAREA\") &&\n self.input.placeholder &&\n self.input.value === self.input.placeholder\n ? null\n : self.input.value);\n if (preloadedDate)\n setSelectedDate(preloadedDate, self.config.dateFormat);\n self._initialDate =\n self.selectedDates.length > 0\n ? self.selectedDates[0]\n : self.config.minDate &&\n self.config.minDate.getTime() > self.now.getTime()\n ? self.config.minDate\n : self.config.maxDate &&\n self.config.maxDate.getTime() < self.now.getTime()\n ? self.config.maxDate\n : self.now;\n self.currentYear = self._initialDate.getFullYear();\n self.currentMonth = self._initialDate.getMonth();\n if (self.selectedDates.length > 0)\n self.latestSelectedDateObj = self.selectedDates[0];\n if (self.config.minTime !== undefined)\n self.config.minTime = self.parseDate(self.config.minTime, \"H:i\");\n if (self.config.maxTime !== undefined)\n self.config.maxTime = self.parseDate(self.config.maxTime, \"H:i\");\n self.minDateHasTime =\n !!self.config.minDate &&\n (self.config.minDate.getHours() > 0 ||\n self.config.minDate.getMinutes() > 0 ||\n self.config.minDate.getSeconds() > 0);\n self.maxDateHasTime =\n !!self.config.maxDate &&\n (self.config.maxDate.getHours() > 0 ||\n self.config.maxDate.getMinutes() > 0 ||\n self.config.maxDate.getSeconds() > 0);\n }\n function setupInputs() {\n self.input = getInputElem();\n if (!self.input) {\n self.config.errorHandler(new Error(\"Invalid input element specified\"));\n return;\n }\n self.input._type = self.input.type;\n self.input.type = \"text\";\n self.input.classList.add(\"flatpickr-input\");\n self._input = self.input;\n if (self.config.altInput) {\n self.altInput = createElement(self.input.nodeName, self.config.altInputClass);\n self._input = self.altInput;\n self.altInput.placeholder = self.input.placeholder;\n self.altInput.disabled = self.input.disabled;\n self.altInput.required = self.input.required;\n self.altInput.tabIndex = self.input.tabIndex;\n self.altInput.type = \"text\";\n self.input.setAttribute(\"type\", \"hidden\");\n if (!self.config.static && self.input.parentNode)\n self.input.parentNode.insertBefore(self.altInput, self.input.nextSibling);\n }\n if (!self.config.allowInput)\n self._input.setAttribute(\"readonly\", \"readonly\");\n updatePositionElement();\n }\n function updatePositionElement() {\n self._positionElement = self.config.positionElement || self._input;\n }\n function setupMobile() {\n var inputType = self.config.enableTime\n ? self.config.noCalendar\n ? \"time\"\n : \"datetime-local\"\n : \"date\";\n self.mobileInput = createElement(\"input\", self.input.className + \" flatpickr-mobile\");\n self.mobileInput.tabIndex = 1;\n self.mobileInput.type = inputType;\n self.mobileInput.disabled = self.input.disabled;\n self.mobileInput.required = self.input.required;\n self.mobileInput.placeholder = self.input.placeholder;\n self.mobileFormatStr =\n inputType === \"datetime-local\"\n ? \"Y-m-d\\\\TH:i:S\"\n : inputType === \"date\"\n ? \"Y-m-d\"\n : \"H:i:S\";\n if (self.selectedDates.length > 0) {\n self.mobileInput.defaultValue = self.mobileInput.value = self.formatDate(self.selectedDates[0], self.mobileFormatStr);\n }\n if (self.config.minDate)\n self.mobileInput.min = self.formatDate(self.config.minDate, \"Y-m-d\");\n if (self.config.maxDate)\n self.mobileInput.max = self.formatDate(self.config.maxDate, \"Y-m-d\");\n if (self.input.getAttribute(\"step\"))\n self.mobileInput.step = String(self.input.getAttribute(\"step\"));\n self.input.type = \"hidden\";\n if (self.altInput !== undefined)\n self.altInput.type = \"hidden\";\n try {\n if (self.input.parentNode)\n self.input.parentNode.insertBefore(self.mobileInput, self.input.nextSibling);\n }\n catch (_a) { }\n bind(self.mobileInput, \"change\", function (e) {\n self.setDate(getEventTarget(e).value, false, self.mobileFormatStr);\n triggerEvent(\"onChange\");\n triggerEvent(\"onClose\");\n });\n }\n function toggle(e) {\n if (self.isOpen === true)\n return self.close();\n self.open(e);\n }\n function triggerEvent(event, data) {\n if (self.config === undefined)\n return;\n var hooks = self.config[event];\n if (hooks !== undefined && hooks.length > 0) {\n for (var i = 0; hooks[i] && i < hooks.length; i++)\n hooks[i](self.selectedDates, self.input.value, self, data);\n }\n if (event === \"onChange\") {\n self.input.dispatchEvent(createEvent(\"change\"));\n self.input.dispatchEvent(createEvent(\"input\"));\n }\n }\n function createEvent(name) {\n var e = document.createEvent(\"Event\");\n e.initEvent(name, true, true);\n return e;\n }\n function isDateSelected(date) {\n for (var i = 0; i < self.selectedDates.length; i++) {\n var selectedDate = self.selectedDates[i];\n if (selectedDate instanceof Date &&\n compareDates(selectedDate, date) === 0)\n return \"\" + i;\n }\n return false;\n }\n function isDateInRange(date) {\n if (self.config.mode !== \"range\" || self.selectedDates.length < 2)\n return false;\n return (compareDates(date, self.selectedDates[0]) >= 0 &&\n compareDates(date, self.selectedDates[1]) <= 0);\n }\n function updateNavigationCurrentMonth() {\n if (self.config.noCalendar || self.isMobile || !self.monthNav)\n return;\n self.yearElements.forEach(function (yearElement, i) {\n var d = new Date(self.currentYear, self.currentMonth, 1);\n d.setMonth(self.currentMonth + i);\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType === \"static\") {\n self.monthElements[i].textContent =\n monthToStr(d.getMonth(), self.config.shorthandCurrentMonth, self.l10n) + \" \";\n }\n else {\n self.monthsDropdownContainer.value = d.getMonth().toString();\n }\n yearElement.value = d.getFullYear().toString();\n });\n self._hidePrevMonthArrow =\n self.config.minDate !== undefined &&\n (self.currentYear === self.config.minDate.getFullYear()\n ? self.currentMonth <= self.config.minDate.getMonth()\n : self.currentYear < self.config.minDate.getFullYear());\n self._hideNextMonthArrow =\n self.config.maxDate !== undefined &&\n (self.currentYear === self.config.maxDate.getFullYear()\n ? self.currentMonth + 1 > self.config.maxDate.getMonth()\n : self.currentYear > self.config.maxDate.getFullYear());\n }\n function getDateStr(specificFormat) {\n var format = specificFormat ||\n (self.config.altInput ? self.config.altFormat : self.config.dateFormat);\n return self.selectedDates\n .map(function (dObj) { return self.formatDate(dObj, format); })\n .filter(function (d, i, arr) {\n return self.config.mode !== \"range\" ||\n self.config.enableTime ||\n arr.indexOf(d) === i;\n })\n .join(self.config.mode !== \"range\"\n ? self.config.conjunction\n : self.l10n.rangeSeparator);\n }\n function updateValue(triggerChange) {\n if (triggerChange === void 0) { triggerChange = true; }\n if (self.mobileInput !== undefined && self.mobileFormatStr) {\n self.mobileInput.value =\n self.latestSelectedDateObj !== undefined\n ? self.formatDate(self.latestSelectedDateObj, self.mobileFormatStr)\n : \"\";\n }\n self.input.value = getDateStr(self.config.dateFormat);\n if (self.altInput !== undefined) {\n self.altInput.value = getDateStr(self.config.altFormat);\n }\n if (triggerChange !== false)\n triggerEvent(\"onValueUpdate\");\n }\n function onMonthNavClick(e) {\n var eventTarget = getEventTarget(e);\n var isPrevMonth = self.prevMonthNav.contains(eventTarget);\n var isNextMonth = self.nextMonthNav.contains(eventTarget);\n if (isPrevMonth || isNextMonth) {\n changeMonth(isPrevMonth ? -1 : 1);\n }\n else if (self.yearElements.indexOf(eventTarget) >= 0) {\n eventTarget.select();\n }\n else if (eventTarget.classList.contains(\"arrowUp\")) {\n self.changeYear(self.currentYear + 1);\n }\n else if (eventTarget.classList.contains(\"arrowDown\")) {\n self.changeYear(self.currentYear - 1);\n }\n }\n function timeWrapper(e) {\n e.preventDefault();\n var isKeyDown = e.type === \"keydown\", eventTarget = getEventTarget(e), input = eventTarget;\n if (self.amPM !== undefined && eventTarget === self.amPM) {\n self.amPM.textContent =\n self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n }\n var min = parseFloat(input.getAttribute(\"min\")), max = parseFloat(input.getAttribute(\"max\")), step = parseFloat(input.getAttribute(\"step\")), curValue = parseInt(input.value, 10), delta = e.delta ||\n (isKeyDown ? (e.which === 38 ? 1 : -1) : 0);\n var newValue = curValue + step * delta;\n if (typeof input.value !== \"undefined\" && input.value.length === 2) {\n var isHourElem = input === self.hourElement, isMinuteElem = input === self.minuteElement;\n if (newValue < min) {\n newValue =\n max +\n newValue +\n int(!isHourElem) +\n (int(isHourElem) && int(!self.amPM));\n if (isMinuteElem)\n incrementNumInput(undefined, -1, self.hourElement);\n }\n else if (newValue > max) {\n newValue =\n input === self.hourElement ? newValue - max - int(!self.amPM) : min;\n if (isMinuteElem)\n incrementNumInput(undefined, 1, self.hourElement);\n }\n if (self.amPM &&\n isHourElem &&\n (step === 1\n ? newValue + curValue === 23\n : Math.abs(newValue - curValue) > step)) {\n self.amPM.textContent =\n self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n }\n input.value = pad(newValue);\n }\n }\n init();\n return self;\n}\nfunction _flatpickr(nodeList, config) {\n var nodes = Array.prototype.slice\n .call(nodeList)\n .filter(function (x) { return x instanceof HTMLElement; });\n var instances = [];\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n try {\n if (node.getAttribute(\"data-fp-omit\") !== null)\n continue;\n if (node._flatpickr !== undefined) {\n node._flatpickr.destroy();\n node._flatpickr = undefined;\n }\n node._flatpickr = FlatpickrInstance(node, config || {});\n instances.push(node._flatpickr);\n }\n catch (e) {\n console.error(e);\n }\n }\n return instances.length === 1 ? instances[0] : instances;\n}\nif (typeof HTMLElement !== \"undefined\" &&\n typeof HTMLCollection !== \"undefined\" &&\n typeof NodeList !== \"undefined\") {\n HTMLCollection.prototype.flatpickr = NodeList.prototype.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n HTMLElement.prototype.flatpickr = function (config) {\n return _flatpickr([this], config);\n };\n}\nvar flatpickr = function (selector, config) {\n if (typeof selector === \"string\") {\n return _flatpickr(window.document.querySelectorAll(selector), config);\n }\n else if (selector instanceof Node) {\n return _flatpickr([selector], config);\n }\n else {\n return _flatpickr(selector, config);\n }\n};\nflatpickr.defaultConfig = {};\nflatpickr.l10ns = {\n en: __assign({}, English),\n default: __assign({}, English),\n};\nflatpickr.localize = function (l10n) {\n flatpickr.l10ns.default = __assign(__assign({}, flatpickr.l10ns.default), l10n);\n};\nflatpickr.setDefaults = function (config) {\n flatpickr.defaultConfig = __assign(__assign({}, flatpickr.defaultConfig), config);\n};\nflatpickr.parseDate = createDateParser({});\nflatpickr.formatDate = createDateFormatter({});\nflatpickr.compareDates = compareDates;\nif (typeof jQuery !== \"undefined\" && typeof jQuery.fn !== \"undefined\") {\n jQuery.fn.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n}\nDate.prototype.fp_incr = function (days) {\n return new Date(this.getFullYear(), this.getMonth(), this.getDate() + (typeof days === \"string\" ? parseInt(days, 10) : days));\n};\nif (typeof window !== \"undefined\") {\n window.flatpickr = flatpickr;\n}\nexport default flatpickr;\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticStyle:{\"height\":\"inherit\"}},[_c('b-modal',{ref:\"taskChatModal\",attrs:{\"hide-footer\":\"\"},on:{\"hidden\":_vm.onTaskModalClose}},[_c('div',{staticClass:\"AliifChat-chatbox\"},[_c('div',{staticClass:\"chat-header\",staticStyle:{\"background-color\":\"#5367ff\"}},[_c('h5',{staticClass:\"m-0\",staticStyle:{\"color\":\"#fff\"}},[_vm._v(\"Away Education\")])]),_c('div',{staticClass:\"chat-messages\"},_vm._l((_vm.taskChat),function(c,index){return _c('b-row',{key:'tc_' + index},[_c('div',{staticClass:\"message ml-2 mb-2\"},[_c('div',{staticClass:\"user-info\"},[_c('span',{staticClass:\"user-name\"},[_vm._v(\" \"+_vm._s(((c.user_firstname) + \" \" + (c.user_lastname)))+\" \")]),_c('span',{staticClass:\"user-type\"},[_vm._v(\" \"+_vm._s(c.user_type_tag || c.user_type_name)+\" \")])]),_c('div',{staticClass:\"message-text\"},[_c('span',{staticClass:\"message-content\"},[_vm._v(_vm._s(c.message))]),_c('sub',{staticClass:\"message-timestamp\"},[_vm._v(_vm._s(_vm.moment(c.created_at).format(\"DD-MM-YYYY - hh:mm A\")))])])])])}),1),(_vm.currentTask && _vm.currentTask.tk_status !== 'complete')?_c('div',{staticClass:\"chat-input\"},[_c('b-row',{staticClass:\"mb-3 mx-0\"},[_c('b-col',{attrs:{\"cols\":\"9\"}},[_c('b-form-textarea',{staticClass:\"border-0\",attrs:{\"type\":\"textarea\",\"placeholder\":\"Enter Message\",\"cols\":\"5\",\"maxlength\":\"5000\"},on:{\"keypress\":function (e) {\n if (e.key === 'Enter') {\n _vm.sendTaskMessage();\n e.preventDefault();\n }\n }},model:{value:(_vm.chatMessage),callback:function ($$v) {_vm.chatMessage=$$v},expression:\"chatMessage\"}})],1),_c('b-col',{attrs:{\"cols\":\"3\"}},[_c('button',{staticClass:\"btn btn-primary\",on:{\"click\":_vm.sendTaskMessage}},[_vm._v(\" SEND \")])])],1)],1):_vm._e()])]),_c('div',{staticStyle:{\"height\":\"inherit\"}},[_c('div',{staticClass:\"body-content-overlay\",class:{ show: _vm.mqShallShowLeftSidebar },on:{\"click\":function($event){_vm.mqShallShowLeftSidebar = false}}}),_c('div',{staticClass:\"todo-app-list\",staticStyle:{\"top\":\"-80px\"}},[_c('div',{staticClass:\"app-fixed-search d-flex align-items-center\"},[_c('div',{staticClass:\"sidebar-toggle d-block d-lg-none ml-1\"},[_c('feather-icon',{staticClass:\"cursor-pointer\",attrs:{\"icon\":\"MenuIcon\",\"size\":\"21\"},on:{\"click\":function($event){_vm.mqShallShowLeftSidebar = true}}})],1),_c('div',{staticClass:\"d-flex align-content-center justify-content-between w-100 mr-1\"},[_c('b-input-group',{staticClass:\"input-group-merge\"},[_c('b-input-group-prepend',{attrs:{\"is-text\":\"\"}},[_c('feather-icon',{staticClass:\"text-muted\",attrs:{\"icon\":\"SearchIcon\"}})],1),_c('b-form-input',{attrs:{\"placeholder\":\"Search task\"},model:{value:(_vm.searchQuery),callback:function ($$v) {_vm.searchQuery=$$v},expression:\"searchQuery\"}})],1)],1),_c('div',[_c('b-form-checkbox',{staticClass:\"pt-1 mr-1\",staticStyle:{\"width\":\"150px\"},attrs:{\"name\":\"check-button\",\"switch\":\"\"},on:{\"input\":function($event){return _vm.fetchTasks()}},model:{value:(_vm.taskFilters.showOverdue),callback:function ($$v) {_vm.$set(_vm.taskFilters, \"showOverdue\", $$v)},expression:\"taskFilters.showOverdue\"}},[_vm._v(\" Show Overdue \")])],1)]),_c('div',{staticClass:\"bg-white px-2 py-1\"},[_c('b-row',{staticClass:\"mb-1 d-flex justify-content-center\"},[_c('b-col',{attrs:{\"cols\":\"4\"}},[_c('v-select',{attrs:{\"placeholder\":\"User\",\"options\":_vm.userOptions,\"reduce\":function (assignor) { return assignor.user_id; },\"label\":\"fullName\"},model:{value:(_vm.taskFilters.tk_user_id),callback:function ($$v) {_vm.$set(_vm.taskFilters, \"tk_user_id\", $$v)},expression:\"taskFilters.tk_user_id\"}})],1),_c('b-col',{attrs:{\"cols\":\"3\"}},[_c('flat-pickr',{staticClass:\"form-control\",attrs:{\"placeholder\":\"Start Date\"},model:{value:(_vm.taskFilters.start_date),callback:function ($$v) {_vm.$set(_vm.taskFilters, \"start_date\", $$v)},expression:\"taskFilters.start_date\"}})],1),_c('b-col',{attrs:{\"cols\":\"3\"}},[_c('flat-pickr',{staticClass:\"form-control\",attrs:{\"placeholder\":\"Deadline Date\"},model:{value:(_vm.taskFilters.deadline_date),callback:function ($$v) {_vm.$set(_vm.taskFilters, \"deadline_date\", $$v)},expression:\"taskFilters.deadline_date\"}})],1)],1),_c('b-row',{staticClass:\"d-flex justify-content-center\"},[(_vm.currentPage !== 'tasks-completed')?_c('b-col',{attrs:{\"cols\":\"2\"}},[_c('v-select',{attrs:{\"placeholder\":\"Status\",\"reduce\":function (status) { return status.value; },\"options\":[\n { label: 'Pending', value: 'pending' },\n { label: 'In Progress', value: 'in_progress' } ]},model:{value:(_vm.taskFilters.tk_status),callback:function ($$v) {_vm.$set(_vm.taskFilters, \"tk_status\", $$v)},expression:\"taskFilters.tk_status\"}})],1):_vm._e(),_c('b-col',{attrs:{\"cols\":(\"\" + (_vm.currentPage !== 'tasks-completed' ? '3' : '5'))}},[_c('v-select',{attrs:{\"placeholder\":\"Student\",\"options\":_vm.studentOptions,\"reduce\":function (student) { return student.user_id; },\"label\":\"user_name\"},model:{value:(_vm.taskFilters.student_id),callback:function ($$v) {_vm.$set(_vm.taskFilters, \"student_id\", $$v)},expression:\"taskFilters.student_id\"}})],1),_c('b-col',{attrs:{\"cols\":\"3\"}},[_c('v-select',{attrs:{\"placeholder\":\"Sort By\",\"options\":_vm.sortByOptions,\"reduce\":function (sortByOption) { return sortByOption.value; },\"label\":\"label\"},model:{value:(_vm.taskFilters.sortBy),callback:function ($$v) {_vm.$set(_vm.taskFilters, \"sortBy\", $$v)},expression:\"taskFilters.sortBy\"}})],1),_c('b-col',{attrs:{\"cols\":\"2\"}},[_c('div',{staticClass:\"d-flex\"},[_c('button',{staticClass:\"btn btn-primary w-56 mr-1\",on:{\"click\":function($event){return _vm.fetchTasks()}}},[_vm._v(\" Find \")]),_c('button',{staticClass:\"btn btn-primary w-56\",on:{\"click\":function($event){return _vm.resetFilters()}}},[_vm._v(\" Reset \")])])])],1)],1),_c('div'),_c('div',{staticClass:\"table-card\"},[_c('b-table',{staticClass:\"table-card\",attrs:{\"items\":_vm.tasks,\"fields\":_vm.taskFields,\"responsive\":\"\"},on:{\"row-clicked\":_vm.handleRowClick},scopedSlots:_vm._u([{key:\"cell(tk_id)\",fn:function(data){return [_c('div',{staticClass:\"d-flex\",staticStyle:{\"width\":\"max-content\"}},[_vm._v(\" \"+_vm._s(data.index + 1)+\" \"),(_vm.isOverdue(data.item.tk_status, data.item.deadline_date))?_c('b-badge',{staticClass:\"text-capitalize ml-1\",attrs:{\"pill\":\"\",\"variant\":\"light-danger\"}},[_vm._v(\" overdue \")]):_vm._e()],1)]}},{key:\"cell(tk_status)\",fn:function(data){return [_c('div',{staticStyle:{\"width\":\"175px\"}},[(\n _vm.currentPage === 'tasks' || _vm.currentPage === 'tasks-important'\n )?_c('v-select',{attrs:{\"placeholder\":\"Status\",\"clearable\":false,\"reduce\":function (status) { return status.value; },\"options\":[\n { label: 'Pending', value: 'pending' },\n { label: 'In Progress', value: 'in_progress' },\n { label: 'Complete', value: 'complete' } ]},on:{\"input\":function (value) { return _vm.addTask(Object.assign({}, data.item,\n {tk_status: value ? value : 'pending'})); }},scopedSlots:_vm._u([{key:\"selected-option\",fn:function(ref){\n var value = ref.value;\nreturn [_c('b-badge',{attrs:{\"variant\":(\"light-\" + (value === 'in_progress'\n ? 'primary'\n : value === 'complete'\n ? 'success'\n : 'danger'))}},[_vm._v(_vm._s(_vm.statusMapper[data.item.tk_status]))])]}}],null,true),model:{value:(data.item.tk_status),callback:function ($$v) {_vm.$set(data.item, \"tk_status\", $$v)},expression:\"data.item.tk_status\"}}):_c('b-badge',{attrs:{\"variant\":(\"light-\" + (data.item.tk_status === 'in_progress'\n ? 'primary'\n : data.item.tk_status === 'complete'\n ? 'success'\n : 'danger'))}},[_vm._v(_vm._s(_vm.statusMapper[data.item.tk_status]))])],1)]}},{key:\"cell(start_date)\",fn:function(data){return [_c('div',{staticStyle:{\"width\":\"max-content\"}},[_c('p',[_vm._v(\" \"+_vm._s(_vm.moment(data.item.start_date).format(\"DD MMM YYYY\"))+\" \")])])]}},{key:\"cell(tk_assignee)\",fn:function(data){return [_c('div',{staticStyle:{\"width\":\"max-content\"}},[_c('p',[_vm._v(\" \"+_vm._s(data.item.assignee_user_name)+\" \")])])]}},{key:\"cell(tk_assignor)\",fn:function(data){return [_c('div',{staticStyle:{\"width\":\"max-content\"}},[_c('p',[_vm._v(\" \"+_vm._s(data.item.assignor_user_name)+\" \")])])]}},{key:\"cell(tk_student)\",fn:function(data){return [_c('div',{staticStyle:{\"width\":\"max-content\"}},[_c('p',[_vm._v(\" \"+_vm._s(data.item.student_user_name)+\" \")])])]}},{key:\"cell(tk_application)\",fn:function(data){return [_c('div',{staticStyle:{\"width\":\"max-content\"}},[_c('h5',[_vm._v(_vm._s(data.item.university_name))]),_c('p',[_vm._v(\" \"+_vm._s(data.item.course_name)+\" \")])])]}},{key:\"cell(chat)\",fn:function(data){return [_c('div',{staticStyle:{\"width\":\"max-content\"}},[_c('feather-icon',{staticStyle:{\"cursor\":\"pointer\"},attrs:{\"icon\":\"MessageSquareIcon\",\"size\":\"20\"},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.showTaskChatModal(data.item)}}})],1)]}},{key:\"cell(deadline_date)\",fn:function(data){return [_c('div',{staticStyle:{\"width\":\"max-content\"}},[_c('p',[_vm._v(\" \"+_vm._s(_vm.moment(data.item.deadline_date).format(\"DD MMM YYYY\"))+\" \")])])]}},{key:\"cell(assignee_comments)\",fn:function(data){return [_c('div',{staticStyle:{\"width\":\"max-content\"}},[(\n _vm.currentPage === 'tasks' || _vm.currentPage === 'tasks-important'\n )?_c('b-form-textarea',{attrs:{\"id\":\"textarea\",\"placeholder\":\"Your Remarks\",\"rows\":\"3\",\"max-rows\":\"6\"},on:{\"input\":function($event){return _vm.saveAssigneeComments(data.item)}},model:{value:(data.item.assignee_comments),callback:function ($$v) {_vm.$set(data.item, \"assignee_comments\", $$v)},expression:\"data.item.assignee_comments\"}}):_c('p',[_vm._v(_vm._s(data.item.assignee_comments || \"-\"))])],1)]}},{key:\"cell(tk_priority)\",fn:function(data){return [_c('div',{staticStyle:{\"width\":\"max-content\"}},[_c('b-badge',{staticClass:\"text-capitalize\",attrs:{\"pill\":\"\",\"variant\":(\"light-\" + (_vm.resolveTagVariant(data.item.tk_priority)))}},[_vm._v(\" \"+_vm._s(data.item.tk_priority)+\" \")])],1)]}}])})],1)]),_c('todo-task-handler-sidebar',{attrs:{\"allow-edit\":_vm.allowEdit,\"task\":_vm.task,\"clear-task-data\":_vm.clearTaskData,\"fetch-tasks\":_vm.fetchTasks,\"add-task\":_vm.addTask},model:{value:(_vm.isTaskHandlerSidebarActive),callback:function ($$v) {_vm.isTaskHandlerSidebarActive=$$v},expression:\"isTaskHandlerSidebarActive\"}}),_c('portal',{attrs:{\"to\":\"content-renderer-sidebar-left\"}},[_c('todo-left-sidebar',{class:{ show: _vm.mqShallShowLeftSidebar },attrs:{\"task-tags\":_vm.taskTags,\"allow-edit\":_vm.allowEdit,\"is-task-handler-sidebar-active\":_vm.isTaskHandlerSidebarActive,\"currentPage\":_vm.currentPage,\"currentPriority\":_vm.currentPriority},on:{\"update:isTaskHandlerSidebarActive\":function($event){_vm.isTaskHandlerSidebarActive=$event},\"update:is-task-handler-sidebar-active\":function($event){_vm.isTaskHandlerSidebarActive=$event},\"close-left-sidebar\":function($event){_vm.mqShallShowLeftSidebar = false},\"change-allow-edit\":function($event){_vm.allowEdit = true},\"change-current-priority\":function (priority) {\n _vm.currentPriority = priority;\n _vm.fetchTasks();\n },\"change-current-page\":function (name) {\n _vm.currentPage = name;\n _vm.fetchTasks();\n }}})],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var _watch;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../vue';\nimport { NAME_COLLAPSE, NAME_SIDEBAR } from '../../constants/components';\nimport { IS_BROWSER } from '../../constants/env';\nimport { EVENT_NAME_CHANGE, EVENT_NAME_HIDDEN, EVENT_NAME_SHOWN } from '../../constants/events';\nimport { CODE_ESC } from '../../constants/key-codes';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_BOOLEAN_STRING, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_DEFAULT, SLOT_NAME_FOOTER, SLOT_NAME_HEADER, SLOT_NAME_HEADER_CLOSE, SLOT_NAME_TITLE } from '../../constants/slots';\nimport { attemptFocus, contains, getActiveElement, getTabables } from '../../utils/dom';\nimport { getRootActionEventName, getRootEventName } from '../../utils/events';\nimport { makeModelMixin } from '../../utils/model';\nimport { sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { listenOnRootMixin } from '../../mixins/listen-on-root';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { BIconX } from '../../icons/icons';\nimport { BButtonClose } from '../button/button-close';\nimport { BVTransition } from '../transition/bv-transition'; // --- Constants ---\n\nvar CLASS_NAME = 'b-sidebar';\nvar ROOT_ACTION_EVENT_NAME_REQUEST_STATE = getRootActionEventName(NAME_COLLAPSE, 'request-state');\nvar ROOT_ACTION_EVENT_NAME_TOGGLE = getRootActionEventName(NAME_COLLAPSE, 'toggle');\nvar ROOT_EVENT_NAME_STATE = getRootEventName(NAME_COLLAPSE, 'state');\nvar ROOT_EVENT_NAME_SYNC_STATE = getRootEventName(NAME_COLLAPSE, 'sync-state');\n\nvar _makeModelMixin = makeModelMixin('visible', {\n type: PROP_TYPE_BOOLEAN,\n defaultValue: false,\n event: EVENT_NAME_CHANGE\n}),\n modelMixin = _makeModelMixin.mixin,\n modelProps = _makeModelMixin.props,\n MODEL_PROP_NAME = _makeModelMixin.prop,\n MODEL_EVENT_NAME = _makeModelMixin.event; // --- Props ---\n\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread({}, idProps), modelProps), {}, {\n ariaLabel: makeProp(PROP_TYPE_STRING),\n ariaLabelledby: makeProp(PROP_TYPE_STRING),\n // If `true`, shows a basic backdrop\n backdrop: makeProp(PROP_TYPE_BOOLEAN, false),\n backdropVariant: makeProp(PROP_TYPE_STRING, 'dark'),\n bgVariant: makeProp(PROP_TYPE_STRING, 'light'),\n bodyClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n // `aria-label` for close button\n closeLabel: makeProp(PROP_TYPE_STRING),\n footerClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n headerClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n lazy: makeProp(PROP_TYPE_BOOLEAN, false),\n noCloseOnBackdrop: makeProp(PROP_TYPE_BOOLEAN, false),\n noCloseOnEsc: makeProp(PROP_TYPE_BOOLEAN, false),\n noCloseOnRouteChange: makeProp(PROP_TYPE_BOOLEAN, false),\n noEnforceFocus: makeProp(PROP_TYPE_BOOLEAN, false),\n noHeader: makeProp(PROP_TYPE_BOOLEAN, false),\n noHeaderClose: makeProp(PROP_TYPE_BOOLEAN, false),\n noSlide: makeProp(PROP_TYPE_BOOLEAN, false),\n right: makeProp(PROP_TYPE_BOOLEAN, false),\n shadow: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n sidebarClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n tag: makeProp(PROP_TYPE_STRING, 'div'),\n textVariant: makeProp(PROP_TYPE_STRING, 'dark'),\n title: makeProp(PROP_TYPE_STRING),\n width: makeProp(PROP_TYPE_STRING),\n zIndex: makeProp(PROP_TYPE_NUMBER_STRING)\n})), NAME_SIDEBAR); // --- Render methods ---\n\nvar renderHeaderTitle = function renderHeaderTitle(h, ctx) {\n // Render a empty `` when to title was provided\n var title = ctx.normalizeSlot(SLOT_NAME_TITLE, ctx.slotScope) || ctx.title;\n\n if (!title) {\n return h('span');\n }\n\n return h('strong', {\n attrs: {\n id: ctx.safeId('__title__')\n }\n }, [title]);\n};\n\nvar renderHeaderClose = function renderHeaderClose(h, ctx) {\n if (ctx.noHeaderClose) {\n return h();\n }\n\n var closeLabel = ctx.closeLabel,\n textVariant = ctx.textVariant,\n hide = ctx.hide;\n return h(BButtonClose, {\n props: {\n ariaLabel: closeLabel,\n textVariant: textVariant\n },\n on: {\n click: hide\n },\n ref: 'close-button'\n }, [ctx.normalizeSlot(SLOT_NAME_HEADER_CLOSE) || h(BIconX)]);\n};\n\nvar renderHeader = function renderHeader(h, ctx) {\n if (ctx.noHeader) {\n return h();\n }\n\n var $content = ctx.normalizeSlot(SLOT_NAME_HEADER, ctx.slotScope);\n\n if (!$content) {\n var $title = renderHeaderTitle(h, ctx);\n var $close = renderHeaderClose(h, ctx);\n $content = ctx.right ? [$close, $title] : [$title, $close];\n }\n\n return h('header', {\n staticClass: \"\".concat(CLASS_NAME, \"-header\"),\n class: ctx.headerClass,\n key: 'header'\n }, $content);\n};\n\nvar renderBody = function renderBody(h, ctx) {\n return h('div', {\n staticClass: \"\".concat(CLASS_NAME, \"-body\"),\n class: ctx.bodyClass,\n key: 'body'\n }, [ctx.normalizeSlot(SLOT_NAME_DEFAULT, ctx.slotScope)]);\n};\n\nvar renderFooter = function renderFooter(h, ctx) {\n var $footer = ctx.normalizeSlot(SLOT_NAME_FOOTER, ctx.slotScope);\n\n if (!$footer) {\n return h();\n }\n\n return h('footer', {\n staticClass: \"\".concat(CLASS_NAME, \"-footer\"),\n class: ctx.footerClass,\n key: 'footer'\n }, [$footer]);\n};\n\nvar renderContent = function renderContent(h, ctx) {\n // We render the header even if `lazy` is enabled as it\n // acts as the accessible label for the sidebar\n var $header = renderHeader(h, ctx);\n\n if (ctx.lazy && !ctx.isOpen) {\n return $header;\n }\n\n return [$header, renderBody(h, ctx), renderFooter(h, ctx)];\n};\n\nvar renderBackdrop = function renderBackdrop(h, ctx) {\n if (!ctx.backdrop) {\n return h();\n }\n\n var backdropVariant = ctx.backdropVariant;\n return h('div', {\n directives: [{\n name: 'show',\n value: ctx.localShow\n }],\n staticClass: 'b-sidebar-backdrop',\n class: _defineProperty({}, \"bg-\".concat(backdropVariant), backdropVariant),\n on: {\n click: ctx.onBackdropClick\n }\n });\n}; // --- Main component ---\n// @vue/component\n\n\nexport var BSidebar = /*#__PURE__*/Vue.extend({\n name: NAME_SIDEBAR,\n mixins: [attrsMixin, idMixin, modelMixin, listenOnRootMixin, normalizeSlotMixin],\n inheritAttrs: false,\n props: props,\n data: function data() {\n var visible = !!this[MODEL_PROP_NAME];\n return {\n // Internal `v-model` state\n localShow: visible,\n // For lazy render triggering\n isOpen: visible\n };\n },\n computed: {\n transitionProps: function transitionProps() {\n return this.noSlide ?\n /* istanbul ignore next */\n {\n css: true\n } : {\n css: true,\n enterClass: '',\n enterActiveClass: 'slide',\n enterToClass: 'show',\n leaveClass: 'show',\n leaveActiveClass: 'slide',\n leaveToClass: ''\n };\n },\n slotScope: function slotScope() {\n var hide = this.hide,\n right = this.right,\n visible = this.localShow;\n return {\n hide: hide,\n right: right,\n visible: visible\n };\n },\n hasTitle: function hasTitle() {\n var $scopedSlots = this.$scopedSlots,\n $slots = this.$slots;\n return !this.noHeader && !this.hasNormalizedSlot(SLOT_NAME_HEADER) && !!(this.normalizeSlot(SLOT_NAME_TITLE, this.slotScope, $scopedSlots, $slots) || this.title);\n },\n titleId: function titleId() {\n return this.hasTitle ? this.safeId('__title__') : null;\n },\n computedAttrs: function computedAttrs() {\n return _objectSpread(_objectSpread({}, this.bvAttrs), {}, {\n id: this.safeId(),\n tabindex: '-1',\n role: 'dialog',\n 'aria-modal': this.backdrop ? 'true' : 'false',\n 'aria-hidden': this.localShow ? null : 'true',\n 'aria-label': this.ariaLabel || null,\n 'aria-labelledby': this.ariaLabelledby || this.titleId || null\n });\n }\n },\n watch: (_watch = {}, _defineProperty(_watch, MODEL_PROP_NAME, function (newValue, oldValue) {\n if (newValue !== oldValue) {\n this.localShow = newValue;\n }\n }), _defineProperty(_watch, \"localShow\", function localShow(newValue, oldValue) {\n if (newValue !== oldValue) {\n this.emitState(newValue);\n this.$emit(MODEL_EVENT_NAME, newValue);\n }\n }), _defineProperty(_watch, \"$route\", function $route() {\n var newValue = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var oldValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (!this.noCloseOnRouteChange && newValue.fullPath !== oldValue.fullPath) {\n this.hide();\n }\n }), _watch),\n created: function created() {\n // Define non-reactive properties\n this.$_returnFocusEl = null;\n },\n mounted: function mounted() {\n var _this = this;\n\n // Add `$root` listeners\n this.listenOnRoot(ROOT_ACTION_EVENT_NAME_TOGGLE, this.handleToggle);\n this.listenOnRoot(ROOT_ACTION_EVENT_NAME_REQUEST_STATE, this.handleSync); // Send out a gratuitous state event to ensure toggle button is synced\n\n this.$nextTick(function () {\n _this.emitState(_this.localShow);\n });\n },\n\n /* istanbul ignore next */\n activated: function activated() {\n this.emitSync();\n },\n beforeDestroy: function beforeDestroy() {\n this.localShow = false;\n this.$_returnFocusEl = null;\n },\n methods: {\n hide: function hide() {\n this.localShow = false;\n },\n emitState: function emitState() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.localShow;\n this.emitOnRoot(ROOT_EVENT_NAME_STATE, this.safeId(), state);\n },\n emitSync: function emitSync() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.localShow;\n this.emitOnRoot(ROOT_EVENT_NAME_SYNC_STATE, this.safeId(), state);\n },\n handleToggle: function handleToggle(id) {\n // Note `safeId()` can be null until after mount\n if (id && id === this.safeId()) {\n this.localShow = !this.localShow;\n }\n },\n handleSync: function handleSync(id) {\n var _this2 = this;\n\n // Note `safeId()` can be null until after mount\n if (id && id === this.safeId()) {\n this.$nextTick(function () {\n _this2.emitSync(_this2.localShow);\n });\n }\n },\n onKeydown: function onKeydown(event) {\n var keyCode = event.keyCode;\n\n if (!this.noCloseOnEsc && keyCode === CODE_ESC && this.localShow) {\n this.hide();\n }\n },\n onBackdropClick: function onBackdropClick() {\n if (this.localShow && !this.noCloseOnBackdrop) {\n this.hide();\n }\n },\n\n /* istanbul ignore next */\n onTopTrapFocus: function onTopTrapFocus() {\n var tabables = getTabables(this.$refs.content);\n this.enforceFocus(tabables.reverse()[0]);\n },\n\n /* istanbul ignore next */\n onBottomTrapFocus: function onBottomTrapFocus() {\n var tabables = getTabables(this.$refs.content);\n this.enforceFocus(tabables[0]);\n },\n onBeforeEnter: function onBeforeEnter() {\n // Returning focus to `document.body` may cause unwanted scrolls,\n // so we exclude setting focus on body\n this.$_returnFocusEl = getActiveElement(IS_BROWSER ? [document.body] : []); // Trigger lazy render\n\n this.isOpen = true;\n },\n onAfterEnter: function onAfterEnter(el) {\n if (!contains(el, getActiveElement())) {\n this.enforceFocus(el);\n }\n\n this.$emit(EVENT_NAME_SHOWN);\n },\n onAfterLeave: function onAfterLeave() {\n this.enforceFocus(this.$_returnFocusEl);\n this.$_returnFocusEl = null; // Trigger lazy render\n\n this.isOpen = false;\n this.$emit(EVENT_NAME_HIDDEN);\n },\n enforceFocus: function enforceFocus(el) {\n if (!this.noEnforceFocus) {\n attemptFocus(el);\n }\n }\n },\n render: function render(h) {\n var _ref;\n\n var bgVariant = this.bgVariant,\n width = this.width,\n textVariant = this.textVariant,\n localShow = this.localShow;\n var shadow = this.shadow === '' ? true : this.shadow;\n var $sidebar = h(this.tag, {\n staticClass: CLASS_NAME,\n class: [(_ref = {\n shadow: shadow === true\n }, _defineProperty(_ref, \"shadow-\".concat(shadow), shadow && shadow !== true), _defineProperty(_ref, \"\".concat(CLASS_NAME, \"-right\"), this.right), _defineProperty(_ref, \"bg-\".concat(bgVariant), bgVariant), _defineProperty(_ref, \"text-\".concat(textVariant), textVariant), _ref), this.sidebarClass],\n style: {\n width: width\n },\n attrs: this.computedAttrs,\n directives: [{\n name: 'show',\n value: localShow\n }],\n ref: 'content'\n }, [renderContent(h, this)]);\n $sidebar = h('transition', {\n props: this.transitionProps,\n on: {\n beforeEnter: this.onBeforeEnter,\n afterEnter: this.onAfterEnter,\n afterLeave: this.onAfterLeave\n }\n }, [$sidebar]);\n var $backdrop = h(BVTransition, {\n props: {\n noFade: this.noSlide\n }\n }, [renderBackdrop(h, this)]);\n var $tabTrapTop = h();\n var $tabTrapBottom = h();\n\n if (this.backdrop && localShow) {\n $tabTrapTop = h('div', {\n attrs: {\n tabindex: '0'\n },\n on: {\n focus: this.onTopTrapFocus\n }\n });\n $tabTrapBottom = h('div', {\n attrs: {\n tabindex: '0'\n },\n on: {\n focus: this.onBottomTrapFocus\n }\n });\n }\n\n return h('div', {\n staticClass: 'b-sidebar-outer',\n style: {\n zIndex: this.zIndex\n },\n attrs: {\n tabindex: '-1'\n },\n on: {\n keydown: this.onKeydown\n }\n }, [$tabTrapTop, $sidebar, $tabTrapBottom, $backdrop]);\n }\n});","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"sidebar-left\"},[_c('div',{staticClass:\"sidebar\"},[_c('div',{staticClass:\"sidebar-content todo-sidebar\"},[_c('div',{staticClass:\"todo-app-menu\"},[_c('div',{staticClass:\"add-task\"},[_c('b-button',{directives:[{name:\"ripple\",rawName:\"v-ripple.400\",value:('rgba(255, 255, 255, 0.15)'),expression:\"'rgba(255, 255, 255, 0.15)'\",modifiers:{\"400\":true}}],attrs:{\"variant\":\"primary\",\"block\":\"\"},on:{\"click\":function($event){{\n // $router.push('/tasks-assigned');\n _vm.currentPage = 'tasks-assigned';\n _vm.$emit('change-current-page', 'tasks-assigned');\n _vm.$emit('change-allow-edit');\n _vm.$emit('update:is-task-handler-sidebar-active', true);\n _vm.$emit('close-left-sidebar');\n }}}},[_vm._v(\" Add Task \")])],1),_c('vue-perfect-scrollbar',{staticClass:\"sidebar-menu-list scroll-area\",attrs:{\"settings\":_vm.perfectScrollbarSettings}},[_c('b-list-group',{staticClass:\"list-group-filters\"},_vm._l((_vm.taskFilters),function(filter){return _c('b-list-group-item',{key:filter.title + filter.page,attrs:{\"active\":filter.page == _vm.currentPage},on:{\"click\":function($event){{\n _vm.$emit('close-left-sidebar');\n _vm.currentPage = filter.page;\n _vm.$emit('change-current-page', filter.page);\n }}}},[_c('feather-icon',{staticClass:\"mr-75\",attrs:{\"icon\":filter.icon,\"size\":\"18\"}}),_c('span',{staticClass:\"align-text-bottom line-height-1\"},[_vm._v(_vm._s(filter.title))])],1)}),1),_c('div',{staticClass:\"mt-3 px-2 d-flex justify-content-between\"},[_c('h6',{staticClass:\"section-label mb-1\"},[_vm._v(\"Priority\")])]),_c('b-list-group',{staticClass:\"list-group-labels\"},_vm._l((_vm.taskTags),function(tag){return _c('b-list-group-item',{key:tag.value,attrs:{\"active\":tag.value === _vm.currentPriority},on:{\"click\":function($event){{\n _vm.$emit('close-left-sidebar');\n _vm.currentPriority = tag.value;\n _vm.$emit('change-current-priority', tag.value);\n }}}},[_c('span',{staticClass:\"bullet bullet-sm mr-1\",class:(\"bullet-\" + (tag.color))}),_c('span',[_vm._v(_vm._s(tag.title))])])}),1)],1)],1)])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\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!./TodoLeftSidebar.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!./TodoLeftSidebar.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TodoLeftSidebar.vue?vue&type=template&id=724d91aa&\"\nimport script from \"./TodoLeftSidebar.vue?vue&type=script&lang=js&\"\nexport * from \"./TodoLeftSidebar.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 _c('div',[_c('b-sidebar',{attrs:{\"id\":\"sidebar-task-handler\",\"sidebar-class\":\"sidebar-lg\",\"visible\":_vm.isTaskHandlerSidebarActive,\"bg-variant\":\"white\",\"shadow\":\"\",\"backdrop\":\"\",\"no-header\":\"\",\"right\":\"\"},on:{\"change\":function (val) { return _vm.$emit('update:is-task-handler-sidebar-active', val); },\"hidden\":function () {\n _vm.clearForm();\n _vm.tk_application_id = null;\n }},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\n var hide = ref.hide;\nreturn [_c('div',{staticClass:\"\\n d-flex\\n justify-content-between\\n align-items-center\\n content-sidebar-header\\n px-2\\n py-1\\n \"},[_c('h5',{staticClass:\"mb-0\"},[_vm._v(\" \"+_vm._s(_vm.taskLocal.tk_id && _vm.allowEdit ? \"Update Task\" : \"\")+\" \"+_vm._s(!_vm.taskLocal.tk_id && _vm.allowEdit ? \"Add Task\" : \"\")+\" \"+_vm._s(!_vm.allowEdit ? \"Task Details\" : \"\")+\" \")]),_c('div',[(_vm.allowEdit)?_c('feather-icon',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.taskLocal.tk_id),expression:\"taskLocal.tk_id\"}],staticClass:\"cursor-pointer\",attrs:{\"icon\":\"TrashIcon\"},on:{\"click\":function () {\n _vm.addTask(Object.assign({}, _vm.taskLocal, {is_active: 'N'}));\n }}}):_vm._e(),(_vm.taskLocal.is_important === 'Y' ? false : true)?_c('svg',{staticClass:\"bi bi-star ml-1\",attrs:{\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":\"14\",\"height\":\"14\",\"fill\":\"#00d09b\",\"stroke\":\"2\",\"viewBox\":\"0 0 16 16\"},on:{\"click\":function($event){if (_vm.allowEdit) {\n _vm.taskLocal.is_important =\n _vm.taskLocal.is_important === 'Y' ? 'N' : 'Y';\n _vm.addTask(_vm.taskLocal);\n }}}},[_c('path',{attrs:{\"d\":\"M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z\"}})]):_c('svg',{staticClass:\"bi bi-star-fill ml-1\",attrs:{\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":\"14\",\"height\":\"14\",\"fill\":\"#00d09b\",\"viewBox\":\"0 0 16 16\"},on:{\"click\":function($event){if (_vm.allowEdit) {\n _vm.taskLocal.is_important =\n _vm.taskLocal.is_important === 'Y' ? 'N' : 'Y';\n _vm.addTask(_vm.taskLocal);\n }}}},[_c('path',{attrs:{\"d\":\"M3.612 15.443c-.386.198-.824-.149-.746-.592l.83-4.73L.173 6.765c-.329-.314-.158-.888.283-.95l4.898-.696L7.538.792c.197-.39.73-.39.927 0l2.184 4.327 4.898.696c.441.062.612.636.282.95l-3.522 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256z\"}})]),_c('feather-icon',{staticClass:\"ml-1 cursor-pointer\",attrs:{\"icon\":\"XIcon\",\"size\":\"16\"},on:{\"click\":hide}})],1)]),_c('validation-observer',{ref:\"refFormObserver\",scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\n var handleSubmit = ref.handleSubmit;\nreturn [_c('b-form',{staticClass:\"p-2\",on:{\"submit\":function($event){$event.preventDefault();handleSubmit(_vm.addTask(_vm.taskLocal))},\"reset\":function($event){$event.preventDefault();return _vm.resetForm.apply(null, arguments)}}},[(_vm.allowEdit)?_c('validation-provider',{attrs:{\"name\":\"Subject\",\"rules\":\"required\"},scopedSlots:_vm._u([{key:\"default\",fn:function(validationContext){return [_c('b-form-group',{attrs:{\"label\":\"Subject\",\"label-for\":\"task-title\"}},[_c('b-form-input',{attrs:{\"id\":\"task-title\",\"autofocus\":\"\",\"state\":_vm.getValidationState(validationContext),\"trim\":\"\",\"placeholder\":\"Subject\"},model:{value:(_vm.taskLocal.tk_title),callback:function ($$v) {_vm.$set(_vm.taskLocal, \"tk_title\", $$v)},expression:\"taskLocal.tk_title\"}}),_c('b-form-invalid-feedback',[_vm._v(\" \"+_vm._s(validationContext.errors[0])+\" \")])],1)]}}],null,true)}):_c('div',{staticClass:\"my-2\"},[_c('p',[_vm._v(\"Title\")]),_c('h4',[_vm._v(_vm._s(_vm.taskLocal.tk_title))])]),(_vm.allowEdit)?_c('b-form-group',{attrs:{\"label\":\"Assignee\",\"label-for\":\"assignee\"}},[_c('v-select',{staticClass:\"assignee-selector\",attrs:{\"dir\":_vm.$store.state.appConfig.isRTL ? 'rtl' : 'ltr',\"options\":_vm.assigneeOptions,\"reduce\":function (assignee) { return assignee.user_id; },\"label\":\"fullName\",\"input-id\":\"assignee\",\"rules\":\"required\",\"close-on-select\":true},on:{\"input\":function($event){return _vm.getAllStudents()}},scopedSlots:_vm._u([{key:\"option\",fn:function(ref){\n var user_profile_image = ref.user_profile_image;\n var fullName = ref.fullName;\nreturn [_c('b-avatar',{attrs:{\"size\":\"sm\",\"src\":_vm.FILESURL + user_profile_image}}),_c('span',{staticClass:\"ml-50\"},[_vm._v(\" \"+_vm._s(fullName))])]}},{key:\"selected-option\",fn:function(ref){\n var user_profile_image = ref.user_profile_image;\n var fullName = ref.fullName;\nreturn [_c('b-avatar',{staticClass:\"border border-white\",attrs:{\"size\":\"sm\",\"src\":_vm.FILESURL + user_profile_image}}),_c('span',{staticClass:\"ml-50\"},[_vm._v(\" \"+_vm._s(fullName))])]}}],null,true),model:{value:(_vm.taskLocal.tk_assignee_id),callback:function ($$v) {_vm.$set(_vm.taskLocal, \"tk_assignee_id\", $$v)},expression:\"taskLocal.tk_assignee_id\"}})],1):_c('div',{staticClass:\"my-2\"},[_c('p',[_vm._v(\"Assignee\")]),_c('h4',[_vm._v(_vm._s(_vm.taskLocal.assignee_user_name))])]),(_vm.allowEdit)?_c('b-form-group',{attrs:{\"label\":\"Student\",\"label-for\":\"student\"}},[_c('v-select',{attrs:{\"options\":_vm.studentOptions,\"reduce\":function (student) { return student.user_id; },\"label\":\"user_name\",\"close-on-select\":true,\"input-id\":\"student\",\"disabled\":_vm.taskLocal.tk_assignee_id ? false : true},on:{\"input\":function($event){return _vm.getAllStudentApplications()}},scopedSlots:_vm._u([{key:\"option\",fn:function(ref){\n var user_profile_image = ref.user_profile_image;\n var user_name = ref.user_name;\nreturn [_c('b-avatar',{attrs:{\"size\":\"sm\",\"src\":_vm.FILESURL + user_profile_image}}),_c('span',{staticClass:\"ml-50\"},[_vm._v(\" \"+_vm._s(user_name))])]}},{key:\"selected-option\",fn:function(ref){\n var user_profile_image = ref.user_profile_image;\n var user_name = ref.user_name;\nreturn [_c('b-avatar',{staticClass:\"border border-white\",attrs:{\"size\":\"sm\",\"src\":_vm.FILESURL + user_profile_image}}),_c('span',{staticClass:\"ml-50\"},[_vm._v(\" \"+_vm._s(user_name))])]}}],null,true),model:{value:(_vm.taskLocal.tk_student_id),callback:function ($$v) {_vm.$set(_vm.taskLocal, \"tk_student_id\", $$v)},expression:\"taskLocal.tk_student_id\"}})],1):_c('div',{staticClass:\"my-2\"},[_c('p',[_vm._v(\"Assigned Student\")]),_c('h4',[_vm._v(_vm._s(_vm.taskLocal.student_user_name))])]),(_vm.allowEdit)?_c('b-form-group',{attrs:{\"label\":\"Student Application\"}},[_c('v-select',{staticClass:\"assignee-selector\",attrs:{\"options\":_vm.studentApplicationOptions.applications,\"reduce\":function (application) { return application.sa_mapper_id; },\"label\":\"course_name\",\"id\":\"student_application\",\"close-on-select\":true,\"disabled\":_vm.taskLocal.tk_student_id ? false : true},on:{\"input\":function (e) {\n _vm.taskLocal.tk_application_id = e;\n }},scopedSlots:_vm._u([{key:\"option\",fn:function(data){return [_c('h6',{staticClass:\"ml-50 h5\"},[_vm._v(_vm._s(data.university_name))]),_c('p',{staticClass:\"ml-50\"},[_vm._v(_vm._s(data.course_name))])]}},{key:\"selected-option\",fn:function(data){return [_c('div',{staticClass:\"d-flex flex-column\"},[_c('h6',{staticClass:\"h5\"},[_vm._v(_vm._s(data.university_name))]),_c('p',{},[_vm._v(_vm._s(data.course_name))])])]}}],null,true),model:{value:(_vm.tk_application_id),callback:function ($$v) {_vm.tk_application_id=$$v},expression:\"tk_application_id\"}})],1):_c('div',{staticClass:\"my-2\"},[_c('p',[_vm._v(\"Student Application\")]),_c('h4',[_vm._v(_vm._s(_vm.taskLocal.university_name))]),_c('h5',[_vm._v(_vm._s(_vm.taskLocal.course_name))])]),(_vm.allowEdit)?_c('validation-provider',{attrs:{\"name\":\"Start Date\"},scopedSlots:_vm._u([{key:\"default\",fn:function(validationContext){return [_c('b-form-group',{attrs:{\"label\":\"Start Date\",\"label-for\":\"start-date\"}},[_c('flat-pickr',{staticClass:\"form-control\",model:{value:(_vm.taskLocal.start_date),callback:function ($$v) {_vm.$set(_vm.taskLocal, \"start_date\", $$v)},expression:\"taskLocal.start_date\"}}),_c('b-form-invalid-feedback',{attrs:{\"state\":_vm.getValidationState(validationContext)}},[_vm._v(\" \"+_vm._s(validationContext.errors[0])+\" \")])],1)]}}],null,true)}):_c('div',{staticClass:\"my-2\"},[_c('p',[_vm._v(\"Start Date\")]),_c('h4',[_vm._v(\" \"+_vm._s(_vm.moment(_vm.taskLocal.start_date).format(\"DD MMM YYYY\"))+\" \")])]),(_vm.allowEdit)?_c('validation-provider',{attrs:{\"name\":\"Deadline Date\"},scopedSlots:_vm._u([{key:\"default\",fn:function(validationContext){return [_c('b-form-group',{attrs:{\"label\":\"Deadline Date\",\"label-for\":\"due-date\"}},[_c('flat-pickr',{staticClass:\"form-control\",model:{value:(_vm.taskLocal.deadline_date),callback:function ($$v) {_vm.$set(_vm.taskLocal, \"deadline_date\", $$v)},expression:\"taskLocal.deadline_date\"}}),_c('b-form-invalid-feedback',{attrs:{\"state\":_vm.getValidationState(validationContext)}},[_vm._v(\" \"+_vm._s(validationContext.errors[0])+\" \")])],1)]}}],null,true)}):_c('div',{staticClass:\"my-2\"},[_c('p',[_vm._v(\"Deadline Date\")]),_c('h4',[_vm._v(\" \"+_vm._s(_vm.moment(_vm.taskLocal.deadline_date).format(\"DD MMM YYYY\"))+\" \")])]),(_vm.allowEdit)?_c('b-form-group',{attrs:{\"label\":\"Priority\",\"label-for\":\"tag\"}},[_c('v-select',{attrs:{\"options\":_vm.priorityOptions,\"label\":\"label\",\"reduce\":function (priority) { return priority.value; },\"close-on-select\":true,\"input-id\":\"tags\"},model:{value:(_vm.taskLocal.tk_priority),callback:function ($$v) {_vm.$set(_vm.taskLocal, \"tk_priority\", $$v)},expression:\"taskLocal.tk_priority\"}})],1):_c('div',{staticClass:\"my-2\"},[_c('p',[_vm._v(\"Priority Date\")]),_c('h4',[_vm._v(\" \"+_vm._s(_vm.taskLocal.tk_priority[0].toUpperCase() + _vm.taskLocal.tk_priority.slice(1))+\" \")])]),(_vm.allowEdit)?_c('b-form-group',{attrs:{\"label\":\"Description\",\"label-for\":\"task-description\"}},[_c('quill-editor',{staticClass:\"border-bottom-0\",attrs:{\"id\":\"quil-content\",\"options\":_vm.editorOption},model:{value:(_vm.taskLocal.tk_description),callback:function ($$v) {_vm.$set(_vm.taskLocal, \"tk_description\", $$v)},expression:\"taskLocal.tk_description\"}}),_c('div',{staticClass:\"d-flex justify-content-end border-top-0\",attrs:{\"id\":\"quill-toolbar\"}},[_c('button',{staticClass:\"ql-bold\"}),_c('button',{staticClass:\"ql-italic\"}),_c('button',{staticClass:\"ql-underline\"}),_c('button',{staticClass:\"ql-align\"}),_c('button',{staticClass:\"ql-link\"})])],1):_c('div',{staticClass:\"my-2\"},[_c('h4',[_vm._v(\"Description\")]),_c('div',{domProps:{\"innerHTML\":_vm._s(_vm.taskLocal.tk_description)}})]),(_vm.allowEdit)?_c('div',{staticClass:\"d-flex mt-2\"},[_c('b-button',{directives:[{name:\"ripple\",rawName:\"v-ripple.400\",value:('rgba(255, 255, 255, 0.15)'),expression:\"'rgba(255, 255, 255, 0.15)'\",modifiers:{\"400\":true}}],staticClass:\"mr-2\",attrs:{\"variant\":\"primary\",\"type\":\"submit\"}},[_vm._v(\" \"+_vm._s(_vm.taskLocal.tk_id ? \"Update\" : \"Add \")+\" \")]),_c('b-button',{directives:[{name:\"ripple\",rawName:\"v-ripple.400\",value:('rgba(186, 191, 199, 0.15)'),expression:\"'rgba(186, 191, 199, 0.15)'\",modifiers:{\"400\":true}}],attrs:{\"type\":\"reset\",\"variant\":\"outline-secondary\"}},[_vm._v(\" Reset \")])],1):_vm._e()],1)]}}],null,true)})]}}])})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { ref, nextTick } from '@vue/composition-api'\n\n// ===========================================================\n// ! This is coupled with \"veeValidate\" plugin\n// ===========================================================\n\nexport default function formValidation(resetFormData, clearFormData = () => {}) {\n // ------------------------------------------------\n // refFormObserver\n // ! This is for veeValidate Observer\n // * Used for veeValidate form observer\n // ------------------------------------------------\n const refFormObserver = ref(null)\n\n // ------------------------------------------------\n // resetObserver\n // ! This function is coupled with veeValidate\n // * It resets form observer\n // ------------------------------------------------\n const resetObserver = () => {\n refFormObserver.value.reset()\n }\n\n // ------------------------------------------------\n // getValidationState\n // ! This function is coupled with veeValidate\n // * It returns true/false based on validation\n // ------------------------------------------------\n // eslint-disable-next-line object-curly-newline\n const getValidationState = ({ dirty, validated, required: fieldRequired, changed, valid = null }) => {\n const result = dirty || validated ? valid : null\n return !fieldRequired && !changed ? null : result\n }\n\n // ------------------------------------------------\n // resetForm\n // ! This function is coupled with veeValidate\n // * This uses resetFormData arg to reset form data\n // ------------------------------------------------\n const resetForm = () => {\n resetFormData()\n nextTick(() => {\n resetObserver()\n })\n }\n\n // ------------------------------------------------\n // clearForm\n // ! This function is coupled with veeValidate\n // * This uses clearFormData arg to reset form data\n // ------------------------------------------------\n const clearForm = () => {\n clearFormData()\n nextTick(() => {\n resetObserver()\n })\n }\n\n return {\n refFormObserver,\n resetObserver,\n getValidationState,\n resetForm,\n clearForm,\n }\n}\n","import { ref, watch } from \"@vue/composition-api\";\n// import store from '@/store'\n\nexport default function useTaskHandler(props, emit) {\n // ------------------------------------------------\n // taskLocal\n // ------------------------------------------------\n const taskLocal = ref(JSON.parse(JSON.stringify(props.task.value)));\n const resetTaskLocal = () => {\n taskLocal.value = JSON.parse(JSON.stringify(props.task.value));\n };\n watch(props.task, () => {\n resetTaskLocal();\n });\n\n // ------------------------------------------------\n // isEventHandlerSidebarActive\n // * Clear form if sidebar is closed\n // ! We can hide it using @hidden event\n // ------------------------------------------------\n // watch(props.isEventHandlerSidebarActive, val => {\n // // ? Don't reset event till transition is finished\n // if (!val) {\n // setTimeout(() => {\n // clearForm.value()\n // }, 350)\n // }\n // })\n\n const onSubmit = () => {\n const taskData = JSON.parse(JSON.stringify(taskLocal));\n\n // * If event has id => Edit Event\n // Emit event for add/update event\n if (props.task.value.id) emit(\"update-task\", taskData.value);\n else emit(\"add-task\", taskData.value);\n\n // Close sidebar\n emit(\"update:is-task-handler-sidebar-active\", false);\n };\n\n // *===============================================---*\n // *--------- UI ---------------------------------------*\n // *===============================================---*\n\n // ------------------------------------------------\n // guestOptions\n // ------------------------------------------------\n\n /* eslint-disable global-require */\n const assigneeOptions = [\n {\n avatar: require(\"@/assets/images/avatars/1-small.png\"),\n fullName: \"Jane Foster\",\n },\n {\n avatar: require(\"@/assets/images/avatars/3-small.png\"),\n fullName: \"Donna Frank\",\n },\n {\n avatar: require(\"@/assets/images/avatars/5-small.png\"),\n fullName: \"Gabrielle Robertson\",\n },\n {\n avatar: require(\"@/assets/images/avatars/7-small.png\"),\n fullName: \"Lori Spears\",\n },\n {\n avatar: require(\"@/assets/images/avatars/9-small.png\"),\n fullName: \"Sandy Vega\",\n },\n {\n avatar: require(\"@/assets/images/avatars/11-small.png\"),\n fullName: \"Cheryl May\",\n },\n ];\n /* eslint-enable global-require */\n\n const resolveAvatarVariant = (tags) => {\n if (tags.includes(\"high\")) return \"primary\";\n if (tags.includes(\"medium\")) return \"warning\";\n if (tags.includes(\"low\")) return \"success\";\n // if (tags.includes(\"update\")) return \"danger\";\n // if (tags.includes(\"team\")) return \"info\";\n return \"primary\";\n };\n\n const tagOptions = [\n // { label: 'Team', value: 'team' },\n { label: \"Low\", value: \"low\" },\n { label: \"Medium\", value: \"medium\" },\n { label: \"High\", value: \"high\" },\n // { label: 'Update', value: 'update' },\n ];\n\n return {\n taskLocal,\n resetTaskLocal,\n\n // UI\n assigneeOptions,\n resolveAvatarVariant,\n tagOptions,\n onSubmit,\n };\n}\n","\n\n\n\n\n\n\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!./TodoTaskHandlerSidebar.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!./TodoTaskHandlerSidebar.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TodoTaskHandlerSidebar.vue?vue&type=template&id=4ab7f9c1&scoped=true&\"\nimport script from \"./TodoTaskHandlerSidebar.vue?vue&type=script&lang=js&\"\nexport * from \"./TodoTaskHandlerSidebar.vue?vue&type=script&lang=js&\"\nimport style0 from \"./TodoTaskHandlerSidebar.vue?vue&type=style&index=0&lang=scss&\"\nimport style1 from \"./TodoTaskHandlerSidebar.vue?vue&type=style&index=1&id=4ab7f9c1&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 \"4ab7f9c1\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\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!./Todo.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!./Todo.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Todo.vue?vue&type=template&id=374f59fb&scoped=true&\"\nimport script from \"./Todo.vue?vue&type=script&lang=js&\"\nexport * from \"./Todo.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Todo.vue?vue&type=style&index=0&id=374f59fb&lang=scss&scoped=true&\"\nimport style1 from \"./Todo.vue?vue&type=style&index=1&lang=scss&\"\nimport style2 from \"./Todo.vue?vue&type=style&index=2&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 \"374f59fb\",\n null\n \n)\n\nexport default component.exports","var Eventful = require(\"../mixin/Eventful\");\n\nexports.Dispatcher = Eventful;\n\nvar env = require(\"./env\");\n\nvar _dom = require(\"./dom\");\n\nvar isCanvasEl = _dom.isCanvasEl;\nvar transformCoordWithViewport = _dom.transformCoordWithViewport;\n\n/**\n * Utilities for mouse or touch events.\n */\nvar isDomLevel2 = typeof window !== 'undefined' && !!window.addEventListener;\nvar MOUSE_EVENT_REG = /^(?:mouse|pointer|contextmenu|drag|drop)|click/;\nvar _calcOut = [];\n/**\n * Get the `zrX` and `zrY`, which are relative to the top-left of\n * the input `el`.\n * CSS transform (2D & 3D) is supported.\n *\n * The strategy to fetch the coords:\n * + If `calculate` is not set as `true`, users of this method should\n * ensure that `el` is the same or the same size & location as `e.target`.\n * Otherwise the result coords are probably not expected. Because we\n * firstly try to get coords from e.offsetX/e.offsetY.\n * + If `calculate` is set as `true`, the input `el` can be any element\n * and we force to calculate the coords based on `el`.\n * + The input `el` should be positionable (not position:static).\n *\n * The force `calculate` can be used in case like:\n * When mousemove event triggered on ec tooltip, `e.target` is not `el`(zr painter.dom).\n *\n * @param {HTMLElement} el DOM element.\n * @param {Event} e Mouse event or touch event.\n * @param {Object} out Get `out.zrX` and `out.zrY` as the result.\n * @param {boolean} [calculate=false] Whether to force calculate\n * the coordinates but not use ones provided by browser.\n */\n\nfunction clientToLocal(el, e, out, calculate) {\n out = out || {}; // According to the W3C Working Draft, offsetX and offsetY should be relative\n // to the padding edge of the target element. The only browser using this convention\n // is IE. Webkit uses the border edge, Opera uses the content edge, and FireFox does\n // not support the properties.\n // (see http://www.jacklmoore.com/notes/mouse-position/)\n // In zr painter.dom, padding edge equals to border edge.\n\n if (calculate || !env.canvasSupported) {\n calculateZrXY(el, e, out);\n } // Caution: In FireFox, layerX/layerY Mouse position relative to the closest positioned\n // ancestor element, so we should make sure el is positioned (e.g., not position:static).\n // BTW1, Webkit don't return the same results as FF in non-simple cases (like add\n // zoom-factor, overflow / opacity layers, transforms ...)\n // BTW2, (ev.offsetY || ev.pageY - $(ev.target).offset().top) is not correct in preserve-3d.\n // \n // BTW3, In ff, offsetX/offsetY is always 0.\n else if (env.browser.firefox && e.layerX != null && e.layerX !== e.offsetX) {\n out.zrX = e.layerX;\n out.zrY = e.layerY;\n } // For IE6+, chrome, safari, opera. (When will ff support offsetX?)\n else if (e.offsetX != null) {\n out.zrX = e.offsetX;\n out.zrY = e.offsetY;\n } // For some other device, e.g., IOS safari.\n else {\n calculateZrXY(el, e, out);\n }\n\n return out;\n}\n\nfunction calculateZrXY(el, e, out) {\n // BlackBerry 5, iOS 3 (original iPhone) don't have getBoundingRect.\n if (env.domSupported && el.getBoundingClientRect) {\n var ex = e.clientX;\n var ey = e.clientY;\n\n if (isCanvasEl(el)) {\n // Original approach, which do not support CSS transform.\n // marker can not be locationed in a canvas container\n // (getBoundingClientRect is always 0). We do not support\n // that input a pre-created canvas to zr while using css\n // transform in iOS.\n var box = el.getBoundingClientRect();\n out.zrX = ex - box.left;\n out.zrY = ey - box.top;\n return;\n } else {\n if (transformCoordWithViewport(_calcOut, el, ex, ey)) {\n out.zrX = _calcOut[0];\n out.zrY = _calcOut[1];\n return;\n }\n }\n }\n\n out.zrX = out.zrY = 0;\n}\n/**\n * Find native event compat for legency IE.\n * Should be called at the begining of a native event listener.\n *\n * @param {Event} [e] Mouse event or touch event or pointer event.\n * For lagency IE, we use `window.event` is used.\n * @return {Event} The native event.\n */\n\n\nfunction getNativeEvent(e) {\n return e || window.event;\n}\n/**\n * Normalize the coordinates of the input event.\n *\n * Get the `e.zrX` and `e.zrY`, which are relative to the top-left of\n * the input `el`.\n * Get `e.zrDelta` if using mouse wheel.\n * Get `e.which`, see the comment inside this function.\n *\n * Do not calculate repeatly if `zrX` and `zrY` already exist.\n *\n * Notice: see comments in `clientToLocal`. check the relationship\n * between the result coords and the parameters `el` and `calculate`.\n *\n * @param {HTMLElement} el DOM element.\n * @param {Event} [e] See `getNativeEvent`.\n * @param {boolean} [calculate=false] Whether to force calculate\n * the coordinates but not use ones provided by browser.\n * @return {UIEvent} The normalized native UIEvent.\n */\n\n\nfunction normalizeEvent(el, e, calculate) {\n e = getNativeEvent(e);\n\n if (e.zrX != null) {\n return e;\n }\n\n var eventType = e.type;\n var isTouch = eventType && eventType.indexOf('touch') >= 0;\n\n if (!isTouch) {\n clientToLocal(el, e, e, calculate);\n e.zrDelta = e.wheelDelta ? e.wheelDelta / 120 : -(e.detail || 0) / 3;\n } else {\n var touch = eventType !== 'touchend' ? e.targetTouches[0] : e.changedTouches[0];\n touch && clientToLocal(el, touch, e, calculate);\n } // Add which for click: 1 === left; 2 === middle; 3 === right; otherwise: 0;\n // See jQuery: https://github.com/jquery/jquery/blob/master/src/event.js\n // If e.which has been defined, it may be readonly,\n // see: https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/which\n\n\n var button = e.button;\n\n if (e.which == null && button !== undefined && MOUSE_EVENT_REG.test(e.type)) {\n e.which = button & 1 ? 1 : button & 2 ? 3 : button & 4 ? 2 : 0;\n } // [Caution]: `e.which` from browser is not always reliable. For example,\n // when press left button and `mousemove (pointermove)` in Edge, the `e.which`\n // is 65536 and the `e.button` is -1. But the `mouseup (pointerup)` and\n // `mousedown (pointerdown)` is the same as Chrome does.\n\n\n return e;\n}\n/**\n * @param {HTMLElement} el\n * @param {string} name\n * @param {Function} handler\n * @param {Object|boolean} opt If boolean, means `opt.capture`\n * @param {boolean} [opt.capture=false]\n * @param {boolean} [opt.passive=false]\n */\n\n\nfunction addEventListener(el, name, handler, opt) {\n if (isDomLevel2) {\n // Reproduct the console warning:\n // [Violation] Added non-passive event listener to a scroll-blocking event.\n // Consider marking event handler as 'passive' to make the page more responsive.\n // Just set console log level: verbose in chrome dev tool.\n // then the warning log will be printed when addEventListener called.\n // See https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md\n // We have not yet found a neat way to using passive. Because in zrender the dom event\n // listener delegate all of the upper events of element. Some of those events need\n // to prevent default. For example, the feature `preventDefaultMouseMove` of echarts.\n // Before passive can be adopted, these issues should be considered:\n // (1) Whether and how a zrender user specifies an event listener passive. And by default,\n // passive or not.\n // (2) How to tread that some zrender event listener is passive, and some is not. If\n // we use other way but not preventDefault of mousewheel and touchmove, browser\n // compatibility should be handled.\n // var opts = (env.passiveSupported && name === 'mousewheel')\n // ? {passive: true}\n // // By default, the third param of el.addEventListener is `capture: false`.\n // : void 0;\n // el.addEventListener(name, handler /* , opts */);\n el.addEventListener(name, handler, opt);\n } else {\n // For simplicity, do not implement `setCapture` for IE9-.\n el.attachEvent('on' + name, handler);\n }\n}\n/**\n * Parameter are the same as `addEventListener`.\n *\n * Notice that if a listener is registered twice, one with capture and one without,\n * remove each one separately. Removal of a capturing listener does not affect a\n * non-capturing version of the same listener, and vice versa.\n */\n\n\nfunction removeEventListener(el, name, handler, opt) {\n if (isDomLevel2) {\n el.removeEventListener(name, handler, opt);\n } else {\n el.detachEvent('on' + name, handler);\n }\n}\n/**\n * preventDefault and stopPropagation.\n * Notice: do not use this method in zrender. It can only be\n * used by upper applications if necessary.\n *\n * @param {Event} e A mouse or touch event.\n */\n\n\nvar stop = isDomLevel2 ? function (e) {\n e.preventDefault();\n e.stopPropagation();\n e.cancelBubble = true;\n} : function (e) {\n e.returnValue = false;\n e.cancelBubble = true;\n};\n/**\n * This method only works for mouseup and mousedown. The functionality is restricted\n * for fault tolerance, See the `e.which` compatibility above.\n *\n * @param {MouseEvent} e\n * @return {boolean}\n */\n\nfunction isMiddleOrRightButtonOnMouseUpDown(e) {\n return e.which === 2 || e.which === 3;\n}\n/**\n * To be removed.\n * @deprecated\n */\n\n\nfunction notLeftMouse(e) {\n // If e.which is undefined, considered as left mouse event.\n return e.which > 1;\n} // For backward compatibility\n\n\nexports.clientToLocal = clientToLocal;\nexports.getNativeEvent = getNativeEvent;\nexports.normalizeEvent = normalizeEvent;\nexports.addEventListener = addEventListener;\nexports.removeEventListener = removeEventListener;\nexports.stop = stop;\nexports.isMiddleOrRightButtonOnMouseUpDown = isMiddleOrRightButtonOnMouseUpDown;\nexports.notLeftMouse = notLeftMouse;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = require(\"../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar Model = require(\"../model/Model\");\n\nvar DataDiffer = require(\"./DataDiffer\");\n\nvar Source = require(\"./Source\");\n\nvar _dataProvider = require(\"./helper/dataProvider\");\n\nvar defaultDimValueGetters = _dataProvider.defaultDimValueGetters;\nvar DefaultDataProvider = _dataProvider.DefaultDataProvider;\n\nvar _dimensionHelper = require(\"./helper/dimensionHelper\");\n\nvar summarizeDimensions = _dimensionHelper.summarizeDimensions;\n\nvar DataDimensionInfo = require(\"./DataDimensionInfo\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/* global Float64Array, Int32Array, Uint32Array, Uint16Array */\n\n/**\n * List for data storage\n * @module echarts/data/List\n */\nvar isObject = zrUtil.isObject;\nvar UNDEFINED = 'undefined';\nvar INDEX_NOT_FOUND = -1; // Use prefix to avoid index to be the same as otherIdList[idx],\n// which will cause weird udpate animation.\n\nvar ID_PREFIX = 'e\\0\\0';\nvar dataCtors = {\n 'float': typeof Float64Array === UNDEFINED ? Array : Float64Array,\n 'int': typeof Int32Array === UNDEFINED ? Array : Int32Array,\n // Ordinal data type can be string or int\n 'ordinal': Array,\n 'number': Array,\n 'time': Array\n}; // Caution: MUST not use `new CtorUint32Array(arr, 0, len)`, because the Ctor of array is\n// different from the Ctor of typed array.\n\nvar CtorUint32Array = typeof Uint32Array === UNDEFINED ? Array : Uint32Array;\nvar CtorInt32Array = typeof Int32Array === UNDEFINED ? Array : Int32Array;\nvar CtorUint16Array = typeof Uint16Array === UNDEFINED ? Array : Uint16Array;\n\nfunction getIndicesCtor(list) {\n // The possible max value in this._indicies is always this._rawCount despite of filtering.\n return list._rawCount > 65535 ? CtorUint32Array : CtorUint16Array;\n}\n\nfunction cloneChunk(originalChunk) {\n var Ctor = originalChunk.constructor; // Only shallow clone is enough when Array.\n\n return Ctor === Array ? originalChunk.slice() : new Ctor(originalChunk);\n}\n\nvar TRANSFERABLE_PROPERTIES = ['hasItemOption', '_nameList', '_idList', '_invertedIndicesMap', '_rawData', '_chunkSize', '_chunkCount', '_dimValueGetter', '_count', '_rawCount', '_nameDimIdx', '_idDimIdx'];\nvar CLONE_PROPERTIES = ['_extent', '_approximateExtent', '_rawExtent'];\n\nfunction transferProperties(target, source) {\n zrUtil.each(TRANSFERABLE_PROPERTIES.concat(source.__wrappedMethods || []), function (propName) {\n if (source.hasOwnProperty(propName)) {\n target[propName] = source[propName];\n }\n });\n target.__wrappedMethods = source.__wrappedMethods;\n zrUtil.each(CLONE_PROPERTIES, function (propName) {\n target[propName] = zrUtil.clone(source[propName]);\n });\n target._calculationInfo = zrUtil.extend(source._calculationInfo);\n}\n/**\n * @constructor\n * @alias module:echarts/data/List\n *\n * @param {Array.} dimensions\n * For example, ['someDimName', {name: 'someDimName', type: 'someDimType'}, ...].\n * Dimensions should be concrete names like x, y, z, lng, lat, angle, radius\n * @param {module:echarts/model/Model} hostModel\n */\n\n\nvar List = function (dimensions, hostModel) {\n dimensions = dimensions || ['x', 'y'];\n var dimensionInfos = {};\n var dimensionNames = [];\n var invertedIndicesMap = {};\n\n for (var i = 0; i < dimensions.length; i++) {\n // Use the original dimensions[i], where other flag props may exists.\n var dimensionInfo = dimensions[i];\n\n if (zrUtil.isString(dimensionInfo)) {\n dimensionInfo = new DataDimensionInfo({\n name: dimensionInfo\n });\n } else if (!(dimensionInfo instanceof DataDimensionInfo)) {\n dimensionInfo = new DataDimensionInfo(dimensionInfo);\n }\n\n var dimensionName = dimensionInfo.name;\n dimensionInfo.type = dimensionInfo.type || 'float';\n\n if (!dimensionInfo.coordDim) {\n dimensionInfo.coordDim = dimensionName;\n dimensionInfo.coordDimIndex = 0;\n }\n\n dimensionInfo.otherDims = dimensionInfo.otherDims || {};\n dimensionNames.push(dimensionName);\n dimensionInfos[dimensionName] = dimensionInfo;\n dimensionInfo.index = i;\n\n if (dimensionInfo.createInvertedIndices) {\n invertedIndicesMap[dimensionName] = [];\n }\n }\n /**\n * @readOnly\n * @type {Array.}\n */\n\n\n this.dimensions = dimensionNames;\n /**\n * Infomation of each data dimension, like data type.\n * @type {Object}\n */\n\n this._dimensionInfos = dimensionInfos;\n /**\n * @type {module:echarts/model/Model}\n */\n\n this.hostModel = hostModel;\n /**\n * @type {module:echarts/model/Model}\n */\n\n this.dataType;\n /**\n * Indices stores the indices of data subset after filtered.\n * This data subset will be used in chart.\n * @type {Array.}\n * @readOnly\n */\n\n this._indices = null;\n this._count = 0;\n this._rawCount = 0;\n /**\n * Data storage\n * @type {Object.>}\n * @private\n */\n\n this._storage = {};\n /**\n * @type {Array.}\n */\n\n this._nameList = [];\n /**\n * @type {Array.}\n */\n\n this._idList = [];\n /**\n * Models of data option is stored sparse for optimizing memory cost\n * @type {Array.}\n * @private\n */\n\n this._optionModels = [];\n /**\n * Global visual properties after visual coding\n * @type {Object}\n * @private\n */\n\n this._visual = {};\n /**\n * Globel layout properties.\n * @type {Object}\n * @private\n */\n\n this._layout = {};\n /**\n * Item visual properties after visual coding\n * @type {Array.}\n * @private\n */\n\n this._itemVisuals = [];\n /**\n * Key: visual type, Value: boolean\n * @type {Object}\n * @readOnly\n */\n\n this.hasItemVisual = {};\n /**\n * Item layout properties after layout\n * @type {Array.}\n * @private\n */\n\n this._itemLayouts = [];\n /**\n * Graphic elemnents\n * @type {Array.}\n * @private\n */\n\n this._graphicEls = [];\n /**\n * Max size of each chunk.\n * @type {number}\n * @private\n */\n\n this._chunkSize = 1e5;\n /**\n * @type {number}\n * @private\n */\n\n this._chunkCount = 0;\n /**\n * @type {Array.}\n * @private\n */\n\n this._rawData;\n /**\n * Raw extent will not be cloned, but only transfered.\n * It will not be calculated util needed.\n * key: dim,\n * value: {end: number, extent: Array.}\n * @type {Object}\n * @private\n */\n\n this._rawExtent = {};\n /**\n * @type {Object}\n * @private\n */\n\n this._extent = {};\n /**\n * key: dim\n * value: extent\n * @type {Object}\n * @private\n */\n\n this._approximateExtent = {};\n /**\n * Cache summary info for fast visit. See \"dimensionHelper\".\n * @type {Object}\n * @private\n */\n\n this._dimensionsSummary = summarizeDimensions(this);\n /**\n * @type {Object.}\n * @private\n */\n\n this._invertedIndicesMap = invertedIndicesMap;\n /**\n * @type {Object}\n * @private\n */\n\n this._calculationInfo = {};\n /**\n * User output info of this data.\n * DO NOT use it in other places!\n *\n * When preparing user params for user callbacks, we have\n * to clone these inner data structures to prevent users\n * from modifying them to effect built-in logic. And for\n * performance consideration we make this `userOutput` to\n * avoid clone them too many times.\n *\n * @type {Object}\n * @readOnly\n */\n\n this.userOutput = this._dimensionsSummary.userOutput;\n};\n\nvar listProto = List.prototype;\nlistProto.type = 'list';\n/**\n * If each data item has it's own option\n * @type {boolean}\n */\n\nlistProto.hasItemOption = true;\n/**\n * The meanings of the input parameter `dim`:\n *\n * + If dim is a number (e.g., `1`), it means the index of the dimension.\n * For example, `getDimension(0)` will return 'x' or 'lng' or 'radius'.\n * + If dim is a number-like string (e.g., `\"1\"`):\n * + If there is the same concrete dim name defined in `this.dimensions`, it means that concrete name.\n * + If not, it will be converted to a number, which means the index of the dimension.\n * (why? because of the backward compatbility. We have been tolerating number-like string in\n * dimension setting, although now it seems that it is not a good idea.)\n * For example, `visualMap[i].dimension: \"1\"` is the same meaning as `visualMap[i].dimension: 1`,\n * if no dimension name is defined as `\"1\"`.\n * + If dim is a not-number-like string, it means the concrete dim name.\n * For example, it can be be default name `\"x\"`, `\"y\"`, `\"z\"`, `\"lng\"`, `\"lat\"`, `\"angle\"`, `\"radius\"`,\n * or customized in `dimensions` property of option like `\"age\"`.\n *\n * Get dimension name\n * @param {string|number} dim See above.\n * @return {string} Concrete dim name.\n */\n\nlistProto.getDimension = function (dim) {\n if (typeof dim === 'number' // If being a number-like string but not being defined a dimension name.\n || !isNaN(dim) && !this._dimensionInfos.hasOwnProperty(dim)) {\n dim = this.dimensions[dim];\n }\n\n return dim;\n};\n/**\n * Get type and calculation info of particular dimension\n * @param {string|number} dim\n * Dimension can be concrete names like x, y, z, lng, lat, angle, radius\n * Or a ordinal number. For example getDimensionInfo(0) will return 'x' or 'lng' or 'radius'\n */\n\n\nlistProto.getDimensionInfo = function (dim) {\n // Do not clone, because there may be categories in dimInfo.\n return this._dimensionInfos[this.getDimension(dim)];\n};\n/**\n * @return {Array.} concrete dimension name list on coord.\n */\n\n\nlistProto.getDimensionsOnCoord = function () {\n return this._dimensionsSummary.dataDimsOnCoord.slice();\n};\n/**\n * @param {string} coordDim\n * @param {number} [idx] A coordDim may map to more than one data dim.\n * If idx is `true`, return a array of all mapped dims.\n * If idx is not specified, return the first dim not extra.\n * @return {string|Array.} concrete data dim.\n * If idx is number, and not found, return null/undefined.\n * If idx is `true`, and not found, return empty array (always return array).\n */\n\n\nlistProto.mapDimension = function (coordDim, idx) {\n var dimensionsSummary = this._dimensionsSummary;\n\n if (idx == null) {\n return dimensionsSummary.encodeFirstDimNotExtra[coordDim];\n }\n\n var dims = dimensionsSummary.encode[coordDim];\n return idx === true // always return array if idx is `true`\n ? (dims || []).slice() : dims && dims[idx];\n};\n/**\n * Initialize from data\n * @param {Array.} data source or data or data provider.\n * @param {Array.} [nameLIst] The name of a datum is used on data diff and\n * defualt label/tooltip.\n * A name can be specified in encode.itemName,\n * or dataItem.name (only for series option data),\n * or provided in nameList from outside.\n * @param {Function} [dimValueGetter] (dataItem, dimName, dataIndex, dimIndex) => number\n */\n\n\nlistProto.initData = function (data, nameList, dimValueGetter) {\n var notProvider = Source.isInstance(data) || zrUtil.isArrayLike(data);\n\n if (notProvider) {\n data = new DefaultDataProvider(data, this.dimensions.length);\n }\n\n this._rawData = data; // Clear\n\n this._storage = {};\n this._indices = null;\n this._nameList = nameList || [];\n this._idList = [];\n this._nameRepeatCount = {};\n\n if (!dimValueGetter) {\n this.hasItemOption = false;\n }\n /**\n * @readOnly\n */\n\n\n this.defaultDimValueGetter = defaultDimValueGetters[this._rawData.getSource().sourceFormat]; // Default dim value getter\n\n this._dimValueGetter = dimValueGetter = dimValueGetter || this.defaultDimValueGetter;\n this._dimValueGetterArrayRows = defaultDimValueGetters.arrayRows; // Reset raw extent.\n\n this._rawExtent = {};\n\n this._initDataFromProvider(0, data.count()); // If data has no item option.\n\n\n if (data.pure) {\n this.hasItemOption = false;\n }\n};\n\nlistProto.getProvider = function () {\n return this._rawData;\n};\n/**\n * Caution: Can be only called on raw data (before `this._indices` created).\n */\n\n\nlistProto.appendData = function (data) {\n var rawData = this._rawData;\n var start = this.count();\n rawData.appendData(data);\n var end = rawData.count();\n\n if (!rawData.persistent) {\n end += start;\n }\n\n this._initDataFromProvider(start, end);\n};\n/**\n * Caution: Can be only called on raw data (before `this._indices` created).\n * This method does not modify `rawData` (`dataProvider`), but only\n * add values to storage.\n *\n * The final count will be increased by `Math.max(values.length, names.length)`.\n *\n * @param {Array.>} values That is the SourceType: 'arrayRows', like\n * [\n * [12, 33, 44],\n * [NaN, 43, 1],\n * ['-', 'asdf', 0]\n * ]\n * Each item is exaclty cooresponding to a dimension.\n * @param {Array.} [names]\n */\n\n\nlistProto.appendValues = function (values, names) {\n var chunkSize = this._chunkSize;\n var storage = this._storage;\n var dimensions = this.dimensions;\n var dimLen = dimensions.length;\n var rawExtent = this._rawExtent;\n var start = this.count();\n var end = start + Math.max(values.length, names ? names.length : 0);\n var originalChunkCount = this._chunkCount;\n\n for (var i = 0; i < dimLen; i++) {\n var dim = dimensions[i];\n\n if (!rawExtent[dim]) {\n rawExtent[dim] = getInitialExtent();\n }\n\n if (!storage[dim]) {\n storage[dim] = [];\n }\n\n prepareChunks(storage, this._dimensionInfos[dim], chunkSize, originalChunkCount, end);\n this._chunkCount = storage[dim].length;\n }\n\n var emptyDataItem = new Array(dimLen);\n\n for (var idx = start; idx < end; idx++) {\n var sourceIdx = idx - start;\n var chunkIndex = Math.floor(idx / chunkSize);\n var chunkOffset = idx % chunkSize; // Store the data by dimensions\n\n for (var k = 0; k < dimLen; k++) {\n var dim = dimensions[k];\n\n var val = this._dimValueGetterArrayRows(values[sourceIdx] || emptyDataItem, dim, sourceIdx, k);\n\n storage[dim][chunkIndex][chunkOffset] = val;\n var dimRawExtent = rawExtent[dim];\n val < dimRawExtent[0] && (dimRawExtent[0] = val);\n val > dimRawExtent[1] && (dimRawExtent[1] = val);\n }\n\n if (names) {\n this._nameList[idx] = names[sourceIdx];\n }\n }\n\n this._rawCount = this._count = end; // Reset data extent\n\n this._extent = {};\n prepareInvertedIndex(this);\n};\n\nlistProto._initDataFromProvider = function (start, end) {\n // Optimize.\n if (start >= end) {\n return;\n }\n\n var chunkSize = this._chunkSize;\n var rawData = this._rawData;\n var storage = this._storage;\n var dimensions = this.dimensions;\n var dimLen = dimensions.length;\n var dimensionInfoMap = this._dimensionInfos;\n var nameList = this._nameList;\n var idList = this._idList;\n var rawExtent = this._rawExtent;\n var nameRepeatCount = this._nameRepeatCount = {};\n var nameDimIdx;\n var originalChunkCount = this._chunkCount;\n\n for (var i = 0; i < dimLen; i++) {\n var dim = dimensions[i];\n\n if (!rawExtent[dim]) {\n rawExtent[dim] = getInitialExtent();\n }\n\n var dimInfo = dimensionInfoMap[dim];\n\n if (dimInfo.otherDims.itemName === 0) {\n nameDimIdx = this._nameDimIdx = i;\n }\n\n if (dimInfo.otherDims.itemId === 0) {\n this._idDimIdx = i;\n }\n\n if (!storage[dim]) {\n storage[dim] = [];\n }\n\n prepareChunks(storage, dimInfo, chunkSize, originalChunkCount, end);\n this._chunkCount = storage[dim].length;\n }\n\n var dataItem = new Array(dimLen);\n\n for (var idx = start; idx < end; idx++) {\n // NOTICE: Try not to write things into dataItem\n dataItem = rawData.getItem(idx, dataItem); // Each data item is value\n // [1, 2]\n // 2\n // Bar chart, line chart which uses category axis\n // only gives the 'y' value. 'x' value is the indices of category\n // Use a tempValue to normalize the value to be a (x, y) value\n\n var chunkIndex = Math.floor(idx / chunkSize);\n var chunkOffset = idx % chunkSize; // Store the data by dimensions\n\n for (var k = 0; k < dimLen; k++) {\n var dim = dimensions[k];\n var dimStorage = storage[dim][chunkIndex]; // PENDING NULL is empty or zero\n\n var val = this._dimValueGetter(dataItem, dim, idx, k);\n\n dimStorage[chunkOffset] = val;\n var dimRawExtent = rawExtent[dim];\n val < dimRawExtent[0] && (dimRawExtent[0] = val);\n val > dimRawExtent[1] && (dimRawExtent[1] = val);\n } // ??? FIXME not check by pure but sourceFormat?\n // TODO refactor these logic.\n\n\n if (!rawData.pure) {\n var name = nameList[idx];\n\n if (dataItem && name == null) {\n // If dataItem is {name: ...}, it has highest priority.\n // That is appropriate for many common cases.\n if (dataItem.name != null) {\n // There is no other place to persistent dataItem.name,\n // so save it to nameList.\n nameList[idx] = name = dataItem.name;\n } else if (nameDimIdx != null) {\n var nameDim = dimensions[nameDimIdx];\n var nameDimChunk = storage[nameDim][chunkIndex];\n\n if (nameDimChunk) {\n name = nameDimChunk[chunkOffset];\n var ordinalMeta = dimensionInfoMap[nameDim].ordinalMeta;\n\n if (ordinalMeta && ordinalMeta.categories.length) {\n name = ordinalMeta.categories[name];\n }\n }\n }\n } // Try using the id in option\n // id or name is used on dynamical data, mapping old and new items.\n\n\n var id = dataItem == null ? null : dataItem.id;\n\n if (id == null && name != null) {\n // Use name as id and add counter to avoid same name\n nameRepeatCount[name] = nameRepeatCount[name] || 0;\n id = name;\n\n if (nameRepeatCount[name] > 0) {\n id += '__ec__' + nameRepeatCount[name];\n }\n\n nameRepeatCount[name]++;\n }\n\n id != null && (idList[idx] = id);\n }\n }\n\n if (!rawData.persistent && rawData.clean) {\n // Clean unused data if data source is typed array.\n rawData.clean();\n }\n\n this._rawCount = this._count = end; // Reset data extent\n\n this._extent = {};\n prepareInvertedIndex(this);\n};\n\nfunction prepareChunks(storage, dimInfo, chunkSize, chunkCount, end) {\n var DataCtor = dataCtors[dimInfo.type];\n var lastChunkIndex = chunkCount - 1;\n var dim = dimInfo.name;\n var resizeChunkArray = storage[dim][lastChunkIndex];\n\n if (resizeChunkArray && resizeChunkArray.length < chunkSize) {\n var newStore = new DataCtor(Math.min(end - lastChunkIndex * chunkSize, chunkSize)); // The cost of the copy is probably inconsiderable\n // within the initial chunkSize.\n\n for (var j = 0; j < resizeChunkArray.length; j++) {\n newStore[j] = resizeChunkArray[j];\n }\n\n storage[dim][lastChunkIndex] = newStore;\n } // Create new chunks.\n\n\n for (var k = chunkCount * chunkSize; k < end; k += chunkSize) {\n storage[dim].push(new DataCtor(Math.min(end - k, chunkSize)));\n }\n}\n\nfunction prepareInvertedIndex(list) {\n var invertedIndicesMap = list._invertedIndicesMap;\n zrUtil.each(invertedIndicesMap, function (invertedIndices, dim) {\n var dimInfo = list._dimensionInfos[dim]; // Currently, only dimensions that has ordinalMeta can create inverted indices.\n\n var ordinalMeta = dimInfo.ordinalMeta;\n\n if (ordinalMeta) {\n invertedIndices = invertedIndicesMap[dim] = new CtorInt32Array(ordinalMeta.categories.length); // The default value of TypedArray is 0. To avoid miss\n // mapping to 0, we should set it as INDEX_NOT_FOUND.\n\n for (var i = 0; i < invertedIndices.length; i++) {\n invertedIndices[i] = INDEX_NOT_FOUND;\n }\n\n for (var i = 0; i < list._count; i++) {\n // Only support the case that all values are distinct.\n invertedIndices[list.get(dim, i)] = i;\n }\n }\n });\n}\n\nfunction getRawValueFromStore(list, dimIndex, rawIndex) {\n var val;\n\n if (dimIndex != null) {\n var chunkSize = list._chunkSize;\n var chunkIndex = Math.floor(rawIndex / chunkSize);\n var chunkOffset = rawIndex % chunkSize;\n var dim = list.dimensions[dimIndex];\n var chunk = list._storage[dim][chunkIndex];\n\n if (chunk) {\n val = chunk[chunkOffset];\n var ordinalMeta = list._dimensionInfos[dim].ordinalMeta;\n\n if (ordinalMeta && ordinalMeta.categories.length) {\n val = ordinalMeta.categories[val];\n }\n }\n }\n\n return val;\n}\n/**\n * @return {number}\n */\n\n\nlistProto.count = function () {\n return this._count;\n};\n\nlistProto.getIndices = function () {\n var newIndices;\n var indices = this._indices;\n\n if (indices) {\n var Ctor = indices.constructor;\n var thisCount = this._count; // `new Array(a, b, c)` is different from `new Uint32Array(a, b, c)`.\n\n if (Ctor === Array) {\n newIndices = new Ctor(thisCount);\n\n for (var i = 0; i < thisCount; i++) {\n newIndices[i] = indices[i];\n }\n } else {\n newIndices = new Ctor(indices.buffer, 0, thisCount);\n }\n } else {\n var Ctor = getIndicesCtor(this);\n var newIndices = new Ctor(this.count());\n\n for (var i = 0; i < newIndices.length; i++) {\n newIndices[i] = i;\n }\n }\n\n return newIndices;\n};\n/**\n * Get value. Return NaN if idx is out of range.\n * @param {string} dim Dim must be concrete name.\n * @param {number} idx\n * @param {boolean} stack\n * @return {number}\n */\n\n\nlistProto.get = function (dim, idx\n/*, stack */\n) {\n if (!(idx >= 0 && idx < this._count)) {\n return NaN;\n }\n\n var storage = this._storage;\n\n if (!storage[dim]) {\n // TODO Warn ?\n return NaN;\n }\n\n idx = this.getRawIndex(idx);\n var chunkIndex = Math.floor(idx / this._chunkSize);\n var chunkOffset = idx % this._chunkSize;\n var chunkStore = storage[dim][chunkIndex];\n var value = chunkStore[chunkOffset]; // FIXME ordinal data type is not stackable\n // if (stack) {\n // var dimensionInfo = this._dimensionInfos[dim];\n // if (dimensionInfo && dimensionInfo.stackable) {\n // var stackedOn = this.stackedOn;\n // while (stackedOn) {\n // // Get no stacked data of stacked on\n // var stackedValue = stackedOn.get(dim, idx);\n // // Considering positive stack, negative stack and empty data\n // if ((value >= 0 && stackedValue > 0) // Positive stack\n // || (value <= 0 && stackedValue < 0) // Negative stack\n // ) {\n // value += stackedValue;\n // }\n // stackedOn = stackedOn.stackedOn;\n // }\n // }\n // }\n\n return value;\n};\n/**\n * @param {string} dim concrete dim\n * @param {number} rawIndex\n * @return {number|string}\n */\n\n\nlistProto.getByRawIndex = function (dim, rawIdx) {\n if (!(rawIdx >= 0 && rawIdx < this._rawCount)) {\n return NaN;\n }\n\n var dimStore = this._storage[dim];\n\n if (!dimStore) {\n // TODO Warn ?\n return NaN;\n }\n\n var chunkIndex = Math.floor(rawIdx / this._chunkSize);\n var chunkOffset = rawIdx % this._chunkSize;\n var chunkStore = dimStore[chunkIndex];\n return chunkStore[chunkOffset];\n};\n/**\n * FIXME Use `get` on chrome maybe slow(in filterSelf and selectRange).\n * Hack a much simpler _getFast\n * @private\n */\n\n\nlistProto._getFast = function (dim, rawIdx) {\n var chunkIndex = Math.floor(rawIdx / this._chunkSize);\n var chunkOffset = rawIdx % this._chunkSize;\n var chunkStore = this._storage[dim][chunkIndex];\n return chunkStore[chunkOffset];\n};\n/**\n * Get value for multi dimensions.\n * @param {Array.} [dimensions] If ignored, using all dimensions.\n * @param {number} idx\n * @return {number}\n */\n\n\nlistProto.getValues = function (dimensions, idx\n/*, stack */\n) {\n var values = [];\n\n if (!zrUtil.isArray(dimensions)) {\n // stack = idx;\n idx = dimensions;\n dimensions = this.dimensions;\n }\n\n for (var i = 0, len = dimensions.length; i < len; i++) {\n values.push(this.get(dimensions[i], idx\n /*, stack */\n ));\n }\n\n return values;\n};\n/**\n * If value is NaN. Inlcuding '-'\n * Only check the coord dimensions.\n * @param {string} dim\n * @param {number} idx\n * @return {number}\n */\n\n\nlistProto.hasValue = function (idx) {\n var dataDimsOnCoord = this._dimensionsSummary.dataDimsOnCoord;\n\n for (var i = 0, len = dataDimsOnCoord.length; i < len; i++) {\n // Ordinal type originally can be string or number.\n // But when an ordinal type is used on coord, it can\n // not be string but only number. So we can also use isNaN.\n if (isNaN(this.get(dataDimsOnCoord[i], idx))) {\n return false;\n }\n }\n\n return true;\n};\n/**\n * Get extent of data in one dimension\n * @param {string} dim\n * @param {boolean} stack\n */\n\n\nlistProto.getDataExtent = function (dim\n/*, stack */\n) {\n // Make sure use concrete dim as cache name.\n dim = this.getDimension(dim);\n var dimData = this._storage[dim];\n var initialExtent = getInitialExtent(); // stack = !!((stack || false) && this.getCalculationInfo(dim));\n\n if (!dimData) {\n return initialExtent;\n } // Make more strict checkings to ensure hitting cache.\n\n\n var currEnd = this.count(); // var cacheName = [dim, !!stack].join('_');\n // var cacheName = dim;\n // Consider the most cases when using data zoom, `getDataExtent`\n // happened before filtering. We cache raw extent, which is not\n // necessary to be cleared and recalculated when restore data.\n\n var useRaw = !this._indices; // && !stack;\n\n var dimExtent;\n\n if (useRaw) {\n return this._rawExtent[dim].slice();\n }\n\n dimExtent = this._extent[dim];\n\n if (dimExtent) {\n return dimExtent.slice();\n }\n\n dimExtent = initialExtent;\n var min = dimExtent[0];\n var max = dimExtent[1];\n\n for (var i = 0; i < currEnd; i++) {\n // var value = stack ? this.get(dim, i, true) : this._getFast(dim, this.getRawIndex(i));\n var value = this._getFast(dim, this.getRawIndex(i));\n\n value < min && (min = value);\n value > max && (max = value);\n }\n\n dimExtent = [min, max];\n this._extent[dim] = dimExtent;\n return dimExtent;\n};\n/**\n * Optimize for the scenario that data is filtered by a given extent.\n * Consider that if data amount is more than hundreds of thousand,\n * extent calculation will cost more than 10ms and the cache will\n * be erased because of the filtering.\n */\n\n\nlistProto.getApproximateExtent = function (dim\n/*, stack */\n) {\n dim = this.getDimension(dim);\n return this._approximateExtent[dim] || this.getDataExtent(dim\n /*, stack */\n );\n};\n\nlistProto.setApproximateExtent = function (extent, dim\n/*, stack */\n) {\n dim = this.getDimension(dim);\n this._approximateExtent[dim] = extent.slice();\n};\n/**\n * @param {string} key\n * @return {*}\n */\n\n\nlistProto.getCalculationInfo = function (key) {\n return this._calculationInfo[key];\n};\n/**\n * @param {string|Object} key or k-v object\n * @param {*} [value]\n */\n\n\nlistProto.setCalculationInfo = function (key, value) {\n isObject(key) ? zrUtil.extend(this._calculationInfo, key) : this._calculationInfo[key] = value;\n};\n/**\n * Get sum of data in one dimension\n * @param {string} dim\n */\n\n\nlistProto.getSum = function (dim\n/*, stack */\n) {\n var dimData = this._storage[dim];\n var sum = 0;\n\n if (dimData) {\n for (var i = 0, len = this.count(); i < len; i++) {\n var value = this.get(dim, i\n /*, stack */\n );\n\n if (!isNaN(value)) {\n sum += value;\n }\n }\n }\n\n return sum;\n};\n/**\n * Get median of data in one dimension\n * @param {string} dim\n */\n\n\nlistProto.getMedian = function (dim\n/*, stack */\n) {\n var dimDataArray = []; // map all data of one dimension\n\n this.each(dim, function (val, idx) {\n if (!isNaN(val)) {\n dimDataArray.push(val);\n }\n }); // TODO\n // Use quick select?\n // immutability & sort\n\n var sortedDimDataArray = [].concat(dimDataArray).sort(function (a, b) {\n return a - b;\n });\n var len = this.count(); // calculate median\n\n return len === 0 ? 0 : len % 2 === 1 ? sortedDimDataArray[(len - 1) / 2] : (sortedDimDataArray[len / 2] + sortedDimDataArray[len / 2 - 1]) / 2;\n}; // /**\n// * Retreive the index with given value\n// * @param {string} dim Concrete dimension.\n// * @param {number} value\n// * @return {number}\n// */\n// Currently incorrect: should return dataIndex but not rawIndex.\n// Do not fix it until this method is to be used somewhere.\n// FIXME Precision of float value\n// listProto.indexOf = function (dim, value) {\n// var storage = this._storage;\n// var dimData = storage[dim];\n// var chunkSize = this._chunkSize;\n// if (dimData) {\n// for (var i = 0, len = this.count(); i < len; i++) {\n// var chunkIndex = Math.floor(i / chunkSize);\n// var chunkOffset = i % chunkSize;\n// if (dimData[chunkIndex][chunkOffset] === value) {\n// return i;\n// }\n// }\n// }\n// return -1;\n// };\n\n/**\n * Only support the dimension which inverted index created.\n * Do not support other cases until required.\n * @param {string} concrete dim\n * @param {number|string} value\n * @return {number} rawIndex\n */\n\n\nlistProto.rawIndexOf = function (dim, value) {\n var invertedIndices = dim && this._invertedIndicesMap[dim];\n var rawIndex = invertedIndices[value];\n\n if (rawIndex == null || isNaN(rawIndex)) {\n return INDEX_NOT_FOUND;\n }\n\n return rawIndex;\n};\n/**\n * Retreive the index with given name\n * @param {number} idx\n * @param {number} name\n * @return {number}\n */\n\n\nlistProto.indexOfName = function (name) {\n for (var i = 0, len = this.count(); i < len; i++) {\n if (this.getName(i) === name) {\n return i;\n }\n }\n\n return -1;\n};\n/**\n * Retreive the index with given raw data index\n * @param {number} idx\n * @param {number} name\n * @return {number}\n */\n\n\nlistProto.indexOfRawIndex = function (rawIndex) {\n if (rawIndex >= this._rawCount || rawIndex < 0) {\n return -1;\n }\n\n if (!this._indices) {\n return rawIndex;\n } // Indices are ascending\n\n\n var indices = this._indices; // If rawIndex === dataIndex\n\n var rawDataIndex = indices[rawIndex];\n\n if (rawDataIndex != null && rawDataIndex < this._count && rawDataIndex === rawIndex) {\n return rawIndex;\n }\n\n var left = 0;\n var right = this._count - 1;\n\n while (left <= right) {\n var mid = (left + right) / 2 | 0;\n\n if (indices[mid] < rawIndex) {\n left = mid + 1;\n } else if (indices[mid] > rawIndex) {\n right = mid - 1;\n } else {\n return mid;\n }\n }\n\n return -1;\n};\n/**\n * Retreive the index of nearest value\n * @param {string} dim\n * @param {number} value\n * @param {number} [maxDistance=Infinity]\n * @return {Array.} If and only if multiple indices has\n * the same value, they are put to the result.\n */\n\n\nlistProto.indicesOfNearest = function (dim, value, maxDistance) {\n var storage = this._storage;\n var dimData = storage[dim];\n var nearestIndices = [];\n\n if (!dimData) {\n return nearestIndices;\n }\n\n if (maxDistance == null) {\n maxDistance = Infinity;\n }\n\n var minDist = Infinity;\n var minDiff = -1;\n var nearestIndicesLen = 0; // Check the test case of `test/ut/spec/data/List.js`.\n\n for (var i = 0, len = this.count(); i < len; i++) {\n var diff = value - this.get(dim, i);\n var dist = Math.abs(diff);\n\n if (dist <= maxDistance) {\n // When the `value` is at the middle of `this.get(dim, i)` and `this.get(dim, i+1)`,\n // we'd better not push both of them to `nearestIndices`, otherwise it is easy to\n // get more than one item in `nearestIndices` (more specifically, in `tooltip`).\n // So we chose the one that `diff >= 0` in this csae.\n // But if `this.get(dim, i)` and `this.get(dim, j)` get the same value, both of them\n // should be push to `nearestIndices`.\n if (dist < minDist || dist === minDist && diff >= 0 && minDiff < 0) {\n minDist = dist;\n minDiff = diff;\n nearestIndicesLen = 0;\n }\n\n if (diff === minDiff) {\n nearestIndices[nearestIndicesLen++] = i;\n }\n }\n }\n\n nearestIndices.length = nearestIndicesLen;\n return nearestIndices;\n};\n/**\n * Get raw data index\n * @param {number} idx\n * @return {number}\n */\n\n\nlistProto.getRawIndex = getRawIndexWithoutIndices;\n\nfunction getRawIndexWithoutIndices(idx) {\n return idx;\n}\n\nfunction getRawIndexWithIndices(idx) {\n if (idx < this._count && idx >= 0) {\n return this._indices[idx];\n }\n\n return -1;\n}\n/**\n * Get raw data item\n * @param {number} idx\n * @return {number}\n */\n\n\nlistProto.getRawDataItem = function (idx) {\n if (!this._rawData.persistent) {\n var val = [];\n\n for (var i = 0; i < this.dimensions.length; i++) {\n var dim = this.dimensions[i];\n val.push(this.get(dim, idx));\n }\n\n return val;\n } else {\n return this._rawData.getItem(this.getRawIndex(idx));\n }\n};\n/**\n * @param {number} idx\n * @param {boolean} [notDefaultIdx=false]\n * @return {string}\n */\n\n\nlistProto.getName = function (idx) {\n var rawIndex = this.getRawIndex(idx);\n return this._nameList[rawIndex] || getRawValueFromStore(this, this._nameDimIdx, rawIndex) || '';\n};\n/**\n * @param {number} idx\n * @param {boolean} [notDefaultIdx=false]\n * @return {string}\n */\n\n\nlistProto.getId = function (idx) {\n return getId(this, this.getRawIndex(idx));\n};\n\nfunction getId(list, rawIndex) {\n var id = list._idList[rawIndex];\n\n if (id == null) {\n id = getRawValueFromStore(list, list._idDimIdx, rawIndex);\n }\n\n if (id == null) {\n // FIXME Check the usage in graph, should not use prefix.\n id = ID_PREFIX + rawIndex;\n }\n\n return id;\n}\n\nfunction normalizeDimensions(dimensions) {\n if (!zrUtil.isArray(dimensions)) {\n dimensions = [dimensions];\n }\n\n return dimensions;\n}\n\nfunction validateDimensions(list, dims) {\n for (var i = 0; i < dims.length; i++) {\n // stroage may be empty when no data, so use\n // dimensionInfos to check.\n if (!list._dimensionInfos[dims[i]]) {\n console.error('Unkown dimension ' + dims[i]);\n }\n }\n}\n/**\n * Data iteration\n * @param {string|Array.}\n * @param {Function} cb\n * @param {*} [context=this]\n *\n * @example\n * list.each('x', function (x, idx) {});\n * list.each(['x', 'y'], function (x, y, idx) {});\n * list.each(function (idx) {})\n */\n\n\nlistProto.each = function (dims, cb, context, contextCompat) {\n 'use strict';\n\n if (!this._count) {\n return;\n }\n\n if (typeof dims === 'function') {\n contextCompat = context;\n context = cb;\n cb = dims;\n dims = [];\n } // contextCompat just for compat echarts3\n\n\n context = context || contextCompat || this;\n dims = zrUtil.map(normalizeDimensions(dims), this.getDimension, this);\n var dimSize = dims.length;\n\n for (var i = 0; i < this.count(); i++) {\n // Simple optimization\n switch (dimSize) {\n case 0:\n cb.call(context, i);\n break;\n\n case 1:\n cb.call(context, this.get(dims[0], i), i);\n break;\n\n case 2:\n cb.call(context, this.get(dims[0], i), this.get(dims[1], i), i);\n break;\n\n default:\n var k = 0;\n var value = [];\n\n for (; k < dimSize; k++) {\n value[k] = this.get(dims[k], i);\n } // Index\n\n\n value[k] = i;\n cb.apply(context, value);\n }\n }\n};\n/**\n * Data filter\n * @param {string|Array.}\n * @param {Function} cb\n * @param {*} [context=this]\n */\n\n\nlistProto.filterSelf = function (dimensions, cb, context, contextCompat) {\n 'use strict';\n\n if (!this._count) {\n return;\n }\n\n if (typeof dimensions === 'function') {\n contextCompat = context;\n context = cb;\n cb = dimensions;\n dimensions = [];\n } // contextCompat just for compat echarts3\n\n\n context = context || contextCompat || this;\n dimensions = zrUtil.map(normalizeDimensions(dimensions), this.getDimension, this);\n var count = this.count();\n var Ctor = getIndicesCtor(this);\n var newIndices = new Ctor(count);\n var value = [];\n var dimSize = dimensions.length;\n var offset = 0;\n var dim0 = dimensions[0];\n\n for (var i = 0; i < count; i++) {\n var keep;\n var rawIdx = this.getRawIndex(i); // Simple optimization\n\n if (dimSize === 0) {\n keep = cb.call(context, i);\n } else if (dimSize === 1) {\n var val = this._getFast(dim0, rawIdx);\n\n keep = cb.call(context, val, i);\n } else {\n for (var k = 0; k < dimSize; k++) {\n value[k] = this._getFast(dim0, rawIdx);\n }\n\n value[k] = i;\n keep = cb.apply(context, value);\n }\n\n if (keep) {\n newIndices[offset++] = rawIdx;\n }\n } // Set indices after filtered.\n\n\n if (offset < count) {\n this._indices = newIndices;\n }\n\n this._count = offset; // Reset data extent\n\n this._extent = {};\n this.getRawIndex = this._indices ? getRawIndexWithIndices : getRawIndexWithoutIndices;\n return this;\n};\n/**\n * Select data in range. (For optimization of filter)\n * (Manually inline code, support 5 million data filtering in data zoom.)\n */\n\n\nlistProto.selectRange = function (range) {\n 'use strict';\n\n if (!this._count) {\n return;\n }\n\n var dimensions = [];\n\n for (var dim in range) {\n if (range.hasOwnProperty(dim)) {\n dimensions.push(dim);\n }\n }\n\n var dimSize = dimensions.length;\n\n if (!dimSize) {\n return;\n }\n\n var originalCount = this.count();\n var Ctor = getIndicesCtor(this);\n var newIndices = new Ctor(originalCount);\n var offset = 0;\n var dim0 = dimensions[0];\n var min = range[dim0][0];\n var max = range[dim0][1];\n var quickFinished = false;\n\n if (!this._indices) {\n // Extreme optimization for common case. About 2x faster in chrome.\n var idx = 0;\n\n if (dimSize === 1) {\n var dimStorage = this._storage[dimensions[0]];\n\n for (var k = 0; k < this._chunkCount; k++) {\n var chunkStorage = dimStorage[k];\n var len = Math.min(this._count - k * this._chunkSize, this._chunkSize);\n\n for (var i = 0; i < len; i++) {\n var val = chunkStorage[i]; // NaN will not be filtered. Consider the case, in line chart, empty\n // value indicates the line should be broken. But for the case like\n // scatter plot, a data item with empty value will not be rendered,\n // but the axis extent may be effected if some other dim of the data\n // item has value. Fortunately it is not a significant negative effect.\n\n if (val >= min && val <= max || isNaN(val)) {\n newIndices[offset++] = idx;\n }\n\n idx++;\n }\n }\n\n quickFinished = true;\n } else if (dimSize === 2) {\n var dimStorage = this._storage[dim0];\n var dimStorage2 = this._storage[dimensions[1]];\n var min2 = range[dimensions[1]][0];\n var max2 = range[dimensions[1]][1];\n\n for (var k = 0; k < this._chunkCount; k++) {\n var chunkStorage = dimStorage[k];\n var chunkStorage2 = dimStorage2[k];\n var len = Math.min(this._count - k * this._chunkSize, this._chunkSize);\n\n for (var i = 0; i < len; i++) {\n var val = chunkStorage[i];\n var val2 = chunkStorage2[i]; // Do not filter NaN, see comment above.\n\n if ((val >= min && val <= max || isNaN(val)) && (val2 >= min2 && val2 <= max2 || isNaN(val2))) {\n newIndices[offset++] = idx;\n }\n\n idx++;\n }\n }\n\n quickFinished = true;\n }\n }\n\n if (!quickFinished) {\n if (dimSize === 1) {\n for (var i = 0; i < originalCount; i++) {\n var rawIndex = this.getRawIndex(i);\n\n var val = this._getFast(dim0, rawIndex); // Do not filter NaN, see comment above.\n\n\n if (val >= min && val <= max || isNaN(val)) {\n newIndices[offset++] = rawIndex;\n }\n }\n } else {\n for (var i = 0; i < originalCount; i++) {\n var keep = true;\n var rawIndex = this.getRawIndex(i);\n\n for (var k = 0; k < dimSize; k++) {\n var dimk = dimensions[k];\n\n var val = this._getFast(dim, rawIndex); // Do not filter NaN, see comment above.\n\n\n if (val < range[dimk][0] || val > range[dimk][1]) {\n keep = false;\n }\n }\n\n if (keep) {\n newIndices[offset++] = this.getRawIndex(i);\n }\n }\n }\n } // Set indices after filtered.\n\n\n if (offset < originalCount) {\n this._indices = newIndices;\n }\n\n this._count = offset; // Reset data extent\n\n this._extent = {};\n this.getRawIndex = this._indices ? getRawIndexWithIndices : getRawIndexWithoutIndices;\n return this;\n};\n/**\n * Data mapping to a plain array\n * @param {string|Array.} [dimensions]\n * @param {Function} cb\n * @param {*} [context=this]\n * @return {Array}\n */\n\n\nlistProto.mapArray = function (dimensions, cb, context, contextCompat) {\n 'use strict';\n\n if (typeof dimensions === 'function') {\n contextCompat = context;\n context = cb;\n cb = dimensions;\n dimensions = [];\n } // contextCompat just for compat echarts3\n\n\n context = context || contextCompat || this;\n var result = [];\n this.each(dimensions, function () {\n result.push(cb && cb.apply(this, arguments));\n }, context);\n return result;\n}; // Data in excludeDimensions is copied, otherwise transfered.\n\n\nfunction cloneListForMapAndSample(original, excludeDimensions) {\n var allDimensions = original.dimensions;\n var list = new List(zrUtil.map(allDimensions, original.getDimensionInfo, original), original.hostModel); // FIXME If needs stackedOn, value may already been stacked\n\n transferProperties(list, original);\n var storage = list._storage = {};\n var originalStorage = original._storage; // Init storage\n\n for (var i = 0; i < allDimensions.length; i++) {\n var dim = allDimensions[i];\n\n if (originalStorage[dim]) {\n // Notice that we do not reset invertedIndicesMap here, becuase\n // there is no scenario of mapping or sampling ordinal dimension.\n if (zrUtil.indexOf(excludeDimensions, dim) >= 0) {\n storage[dim] = cloneDimStore(originalStorage[dim]);\n list._rawExtent[dim] = getInitialExtent();\n list._extent[dim] = null;\n } else {\n // Direct reference for other dimensions\n storage[dim] = originalStorage[dim];\n }\n }\n }\n\n return list;\n}\n\nfunction cloneDimStore(originalDimStore) {\n var newDimStore = new Array(originalDimStore.length);\n\n for (var j = 0; j < originalDimStore.length; j++) {\n newDimStore[j] = cloneChunk(originalDimStore[j]);\n }\n\n return newDimStore;\n}\n\nfunction getInitialExtent() {\n return [Infinity, -Infinity];\n}\n/**\n * Data mapping to a new List with given dimensions\n * @param {string|Array.} dimensions\n * @param {Function} cb\n * @param {*} [context=this]\n * @return {Array}\n */\n\n\nlistProto.map = function (dimensions, cb, context, contextCompat) {\n 'use strict'; // contextCompat just for compat echarts3\n\n context = context || contextCompat || this;\n dimensions = zrUtil.map(normalizeDimensions(dimensions), this.getDimension, this);\n var list = cloneListForMapAndSample(this, dimensions); // Following properties are all immutable.\n // So we can reference to the same value\n\n list._indices = this._indices;\n list.getRawIndex = list._indices ? getRawIndexWithIndices : getRawIndexWithoutIndices;\n var storage = list._storage;\n var tmpRetValue = [];\n var chunkSize = this._chunkSize;\n var dimSize = dimensions.length;\n var dataCount = this.count();\n var values = [];\n var rawExtent = list._rawExtent;\n\n for (var dataIndex = 0; dataIndex < dataCount; dataIndex++) {\n for (var dimIndex = 0; dimIndex < dimSize; dimIndex++) {\n values[dimIndex] = this.get(dimensions[dimIndex], dataIndex\n /*, stack */\n );\n }\n\n values[dimSize] = dataIndex;\n var retValue = cb && cb.apply(context, values);\n\n if (retValue != null) {\n // a number or string (in oridinal dimension)?\n if (typeof retValue !== 'object') {\n tmpRetValue[0] = retValue;\n retValue = tmpRetValue;\n }\n\n var rawIndex = this.getRawIndex(dataIndex);\n var chunkIndex = Math.floor(rawIndex / chunkSize);\n var chunkOffset = rawIndex % chunkSize;\n\n for (var i = 0; i < retValue.length; i++) {\n var dim = dimensions[i];\n var val = retValue[i];\n var rawExtentOnDim = rawExtent[dim];\n var dimStore = storage[dim];\n\n if (dimStore) {\n dimStore[chunkIndex][chunkOffset] = val;\n }\n\n if (val < rawExtentOnDim[0]) {\n rawExtentOnDim[0] = val;\n }\n\n if (val > rawExtentOnDim[1]) {\n rawExtentOnDim[1] = val;\n }\n }\n }\n }\n\n return list;\n};\n/**\n * Large data down sampling on given dimension\n * @param {string} dimension\n * @param {number} rate\n * @param {Function} sampleValue\n * @param {Function} sampleIndex Sample index for name and id\n */\n\n\nlistProto.downSample = function (dimension, rate, sampleValue, sampleIndex) {\n var list = cloneListForMapAndSample(this, [dimension]);\n var targetStorage = list._storage;\n var frameValues = [];\n var frameSize = Math.floor(1 / rate);\n var dimStore = targetStorage[dimension];\n var len = this.count();\n var chunkSize = this._chunkSize;\n var rawExtentOnDim = list._rawExtent[dimension];\n var newIndices = new (getIndicesCtor(this))(len);\n var offset = 0;\n\n for (var i = 0; i < len; i += frameSize) {\n // Last frame\n if (frameSize > len - i) {\n frameSize = len - i;\n frameValues.length = frameSize;\n }\n\n for (var k = 0; k < frameSize; k++) {\n var dataIdx = this.getRawIndex(i + k);\n var originalChunkIndex = Math.floor(dataIdx / chunkSize);\n var originalChunkOffset = dataIdx % chunkSize;\n frameValues[k] = dimStore[originalChunkIndex][originalChunkOffset];\n }\n\n var value = sampleValue(frameValues);\n var sampleFrameIdx = this.getRawIndex(Math.min(i + sampleIndex(frameValues, value) || 0, len - 1));\n var sampleChunkIndex = Math.floor(sampleFrameIdx / chunkSize);\n var sampleChunkOffset = sampleFrameIdx % chunkSize; // Only write value on the filtered data\n\n dimStore[sampleChunkIndex][sampleChunkOffset] = value;\n\n if (value < rawExtentOnDim[0]) {\n rawExtentOnDim[0] = value;\n }\n\n if (value > rawExtentOnDim[1]) {\n rawExtentOnDim[1] = value;\n }\n\n newIndices[offset++] = sampleFrameIdx;\n }\n\n list._count = offset;\n list._indices = newIndices;\n list.getRawIndex = getRawIndexWithIndices;\n return list;\n};\n/**\n * Get model of one data item.\n *\n * @param {number} idx\n */\n// FIXME Model proxy ?\n\n\nlistProto.getItemModel = function (idx) {\n var hostModel = this.hostModel;\n return new Model(this.getRawDataItem(idx), hostModel, hostModel && hostModel.ecModel);\n};\n/**\n * Create a data differ\n * @param {module:echarts/data/List} otherList\n * @return {module:echarts/data/DataDiffer}\n */\n\n\nlistProto.diff = function (otherList) {\n var thisList = this;\n return new DataDiffer(otherList ? otherList.getIndices() : [], this.getIndices(), function (idx) {\n return getId(otherList, idx);\n }, function (idx) {\n return getId(thisList, idx);\n });\n};\n/**\n * Get visual property.\n * @param {string} key\n */\n\n\nlistProto.getVisual = function (key) {\n var visual = this._visual;\n return visual && visual[key];\n};\n/**\n * Set visual property\n * @param {string|Object} key\n * @param {*} [value]\n *\n * @example\n * setVisual('color', color);\n * setVisual({\n * 'color': color\n * });\n */\n\n\nlistProto.setVisual = function (key, val) {\n if (isObject(key)) {\n for (var name in key) {\n if (key.hasOwnProperty(name)) {\n this.setVisual(name, key[name]);\n }\n }\n\n return;\n }\n\n this._visual = this._visual || {};\n this._visual[key] = val;\n};\n/**\n * Set layout property.\n * @param {string|Object} key\n * @param {*} [val]\n */\n\n\nlistProto.setLayout = function (key, val) {\n if (isObject(key)) {\n for (var name in key) {\n if (key.hasOwnProperty(name)) {\n this.setLayout(name, key[name]);\n }\n }\n\n return;\n }\n\n this._layout[key] = val;\n};\n/**\n * Get layout property.\n * @param {string} key.\n * @return {*}\n */\n\n\nlistProto.getLayout = function (key) {\n return this._layout[key];\n};\n/**\n * Get layout of single data item\n * @param {number} idx\n */\n\n\nlistProto.getItemLayout = function (idx) {\n return this._itemLayouts[idx];\n};\n/**\n * Set layout of single data item\n * @param {number} idx\n * @param {Object} layout\n * @param {boolean=} [merge=false]\n */\n\n\nlistProto.setItemLayout = function (idx, layout, merge) {\n this._itemLayouts[idx] = merge ? zrUtil.extend(this._itemLayouts[idx] || {}, layout) : layout;\n};\n/**\n * Clear all layout of single data item\n */\n\n\nlistProto.clearItemLayouts = function () {\n this._itemLayouts.length = 0;\n};\n/**\n * Get visual property of single data item\n * @param {number} idx\n * @param {string} key\n * @param {boolean} [ignoreParent=false]\n */\n\n\nlistProto.getItemVisual = function (idx, key, ignoreParent) {\n var itemVisual = this._itemVisuals[idx];\n var val = itemVisual && itemVisual[key];\n\n if (val == null && !ignoreParent) {\n // Use global visual property\n return this.getVisual(key);\n }\n\n return val;\n};\n/**\n * Set visual property of single data item\n *\n * @param {number} idx\n * @param {string|Object} key\n * @param {*} [value]\n *\n * @example\n * setItemVisual(0, 'color', color);\n * setItemVisual(0, {\n * 'color': color\n * });\n */\n\n\nlistProto.setItemVisual = function (idx, key, value) {\n var itemVisual = this._itemVisuals[idx] || {};\n var hasItemVisual = this.hasItemVisual;\n this._itemVisuals[idx] = itemVisual;\n\n if (isObject(key)) {\n for (var name in key) {\n if (key.hasOwnProperty(name)) {\n itemVisual[name] = key[name];\n hasItemVisual[name] = true;\n }\n }\n\n return;\n }\n\n itemVisual[key] = value;\n hasItemVisual[key] = true;\n};\n/**\n * Clear itemVisuals and list visual.\n */\n\n\nlistProto.clearAllVisual = function () {\n this._visual = {};\n this._itemVisuals = [];\n this.hasItemVisual = {};\n};\n\nvar setItemDataAndSeriesIndex = function (child) {\n child.seriesIndex = this.seriesIndex;\n child.dataIndex = this.dataIndex;\n child.dataType = this.dataType;\n};\n/**\n * Set graphic element relative to data. It can be set as null\n * @param {number} idx\n * @param {module:zrender/Element} [el]\n */\n\n\nlistProto.setItemGraphicEl = function (idx, el) {\n var hostModel = this.hostModel;\n\n if (el) {\n // Add data index and series index for indexing the data by element\n // Useful in tooltip\n el.dataIndex = idx;\n el.dataType = this.dataType;\n el.seriesIndex = hostModel && hostModel.seriesIndex;\n\n if (el.type === 'group') {\n el.traverse(setItemDataAndSeriesIndex, el);\n }\n }\n\n this._graphicEls[idx] = el;\n};\n/**\n * @param {number} idx\n * @return {module:zrender/Element}\n */\n\n\nlistProto.getItemGraphicEl = function (idx) {\n return this._graphicEls[idx];\n};\n/**\n * @param {Function} cb\n * @param {*} context\n */\n\n\nlistProto.eachItemGraphicEl = function (cb, context) {\n zrUtil.each(this._graphicEls, function (el, idx) {\n if (el) {\n cb && cb.call(context, el, idx);\n }\n });\n};\n/**\n * Shallow clone a new list except visual and layout properties, and graph elements.\n * New list only change the indices.\n */\n\n\nlistProto.cloneShallow = function (list) {\n if (!list) {\n var dimensionInfoList = zrUtil.map(this.dimensions, this.getDimensionInfo, this);\n list = new List(dimensionInfoList, this.hostModel);\n } // FIXME\n\n\n list._storage = this._storage;\n transferProperties(list, this); // Clone will not change the data extent and indices\n\n if (this._indices) {\n var Ctor = this._indices.constructor;\n list._indices = new Ctor(this._indices);\n } else {\n list._indices = null;\n }\n\n list.getRawIndex = list._indices ? getRawIndexWithIndices : getRawIndexWithoutIndices;\n return list;\n};\n/**\n * Wrap some method to add more feature\n * @param {string} methodName\n * @param {Function} injectFunction\n */\n\n\nlistProto.wrapMethod = function (methodName, injectFunction) {\n var originalMethod = this[methodName];\n\n if (typeof originalMethod !== 'function') {\n return;\n }\n\n this.__wrappedMethods = this.__wrappedMethods || [];\n\n this.__wrappedMethods.push(methodName);\n\n this[methodName] = function () {\n var res = originalMethod.apply(this, arguments);\n return injectFunction.apply(this, [res].concat(zrUtil.slice(arguments)));\n };\n}; // Methods that create a new list based on this list should be listed here.\n// Notice that those method should `RETURN` the new list.\n\n\nlistProto.TRANSFERABLE_METHODS = ['cloneShallow', 'downSample', 'map']; // Methods that change indices of this list should be listed here.\n\nlistProto.CHANGABLE_METHODS = ['filterSelf', 'selectRange'];\nvar _default = List;\nmodule.exports = _default;","var _vector = require(\"../../core/vector\");\n\nvar v2Distance = _vector.distance;\n\n/**\n * Catmull-Rom spline 插值折线\n * @module zrender/shape/util/smoothSpline\n * @author pissang (https://www.github.com/pissang)\n * Kener (@Kener-林峰, kener.linfeng@gmail.com)\n * errorrik (errorrik@gmail.com)\n */\n\n/**\n * @inner\n */\nfunction interpolate(p0, p1, p2, p3, t, t2, t3) {\n var v0 = (p2 - p0) * 0.5;\n var v1 = (p3 - p1) * 0.5;\n return (2 * (p1 - p2) + v0 + v1) * t3 + (-3 * (p1 - p2) - 2 * v0 - v1) * t2 + v0 * t + p1;\n}\n/**\n * @alias module:zrender/shape/util/smoothSpline\n * @param {Array} points 线段顶点数组\n * @param {boolean} isLoop\n * @return {Array}\n */\n\n\nfunction _default(points, isLoop) {\n var len = points.length;\n var ret = [];\n var distance = 0;\n\n for (var i = 1; i < len; i++) {\n distance += v2Distance(points[i - 1], points[i]);\n }\n\n var segs = distance / 2;\n segs = segs < len ? len : segs;\n\n for (var i = 0; i < segs; i++) {\n var pos = i / (segs - 1) * (isLoop ? len : len - 1);\n var idx = Math.floor(pos);\n var w = pos - idx;\n var p0;\n var p1 = points[idx % len];\n var p2;\n var p3;\n\n if (!isLoop) {\n p0 = points[idx === 0 ? idx : idx - 1];\n p2 = points[idx > len - 2 ? len - 1 : idx + 1];\n p3 = points[idx > len - 3 ? len - 1 : idx + 2];\n } else {\n p0 = points[(idx - 1 + len) % len];\n p2 = points[(idx + 1) % len];\n p3 = points[(idx + 2) % len];\n }\n\n var w2 = w * w;\n var w3 = w * w2;\n ret.push([interpolate(p0[0], p1[0], p2[0], p3[0], w, w2, w3), interpolate(p0[1], p1[1], p2[1], p3[1], w, w2, w3)]);\n }\n\n return ret;\n}\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = require(\"../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar TYPE_DELIMITER = '.';\nvar IS_CONTAINER = '___EC__COMPONENT__CONTAINER___';\n/**\n * Notice, parseClassType('') should returns {main: '', sub: ''}\n * @public\n */\n\nfunction parseClassType(componentType) {\n var ret = {\n main: '',\n sub: ''\n };\n\n if (componentType) {\n componentType = componentType.split(TYPE_DELIMITER);\n ret.main = componentType[0] || '';\n ret.sub = componentType[1] || '';\n }\n\n return ret;\n}\n/**\n * @public\n */\n\n\nfunction checkClassType(componentType) {\n zrUtil.assert(/^[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)?$/.test(componentType), 'componentType \"' + componentType + '\" illegal');\n}\n/**\n * @public\n */\n\n\nfunction enableClassExtend(RootClass, mandatoryMethods) {\n RootClass.$constructor = RootClass;\n\n RootClass.extend = function (proto) {\n var superClass = this;\n\n var ExtendedClass = function () {\n if (!proto.$constructor) {\n superClass.apply(this, arguments);\n } else {\n proto.$constructor.apply(this, arguments);\n }\n };\n\n zrUtil.extend(ExtendedClass.prototype, proto);\n ExtendedClass.extend = this.extend;\n ExtendedClass.superCall = superCall;\n ExtendedClass.superApply = superApply;\n zrUtil.inherits(ExtendedClass, this);\n ExtendedClass.superClass = superClass;\n return ExtendedClass;\n };\n}\n\nvar classBase = 0;\n/**\n * Can not use instanceof, consider different scope by\n * cross domain or es module import in ec extensions.\n * Mount a method \"isInstance()\" to Clz.\n */\n\nfunction enableClassCheck(Clz) {\n var classAttr = ['__\\0is_clz', classBase++, Math.random().toFixed(3)].join('_');\n Clz.prototype[classAttr] = true;\n\n Clz.isInstance = function (obj) {\n return !!(obj && obj[classAttr]);\n };\n} // superCall should have class info, which can not be fetch from 'this'.\n// Consider this case:\n// class A has method f,\n// class B inherits class A, overrides method f, f call superApply('f'),\n// class C inherits class B, do not overrides method f,\n// then when method of class C is called, dead loop occured.\n\n\nfunction superCall(context, methodName) {\n var args = zrUtil.slice(arguments, 2);\n return this.superClass.prototype[methodName].apply(context, args);\n}\n\nfunction superApply(context, methodName, args) {\n return this.superClass.prototype[methodName].apply(context, args);\n}\n/**\n * @param {Object} entity\n * @param {Object} options\n * @param {boolean} [options.registerWhenExtend]\n * @public\n */\n\n\nfunction enableClassManagement(entity, options) {\n options = options || {};\n /**\n * Component model classes\n * key: componentType,\n * value:\n * componentClass, when componentType is 'xxx'\n * or Object., when componentType is 'xxx.yy'\n * @type {Object}\n */\n\n var storage = {};\n\n entity.registerClass = function (Clazz, componentType) {\n if (componentType) {\n checkClassType(componentType);\n componentType = parseClassType(componentType);\n\n if (!componentType.sub) {\n storage[componentType.main] = Clazz;\n } else if (componentType.sub !== IS_CONTAINER) {\n var container = makeContainer(componentType);\n container[componentType.sub] = Clazz;\n }\n }\n\n return Clazz;\n };\n\n entity.getClass = function (componentMainType, subType, throwWhenNotFound) {\n var Clazz = storage[componentMainType];\n\n if (Clazz && Clazz[IS_CONTAINER]) {\n Clazz = subType ? Clazz[subType] : null;\n }\n\n if (throwWhenNotFound && !Clazz) {\n throw new Error(!subType ? componentMainType + '.' + 'type should be specified.' : 'Component ' + componentMainType + '.' + (subType || '') + ' not exists. Load it first.');\n }\n\n return Clazz;\n };\n\n entity.getClassesByMainType = function (componentType) {\n componentType = parseClassType(componentType);\n var result = [];\n var obj = storage[componentType.main];\n\n if (obj && obj[IS_CONTAINER]) {\n zrUtil.each(obj, function (o, type) {\n type !== IS_CONTAINER && result.push(o);\n });\n } else {\n result.push(obj);\n }\n\n return result;\n };\n\n entity.hasClass = function (componentType) {\n // Just consider componentType.main.\n componentType = parseClassType(componentType);\n return !!storage[componentType.main];\n };\n /**\n * @return {Array.} Like ['aa', 'bb'], but can not be ['aa.xx']\n */\n\n\n entity.getAllClassMainTypes = function () {\n var types = [];\n zrUtil.each(storage, function (obj, type) {\n types.push(type);\n });\n return types;\n };\n /**\n * If a main type is container and has sub types\n * @param {string} mainType\n * @return {boolean}\n */\n\n\n entity.hasSubTypes = function (componentType) {\n componentType = parseClassType(componentType);\n var obj = storage[componentType.main];\n return obj && obj[IS_CONTAINER];\n };\n\n entity.parseClassType = parseClassType;\n\n function makeContainer(componentType) {\n var container = storage[componentType.main];\n\n if (!container || !container[IS_CONTAINER]) {\n container = storage[componentType.main] = {};\n container[IS_CONTAINER] = true;\n }\n\n return container;\n }\n\n if (options.registerWhenExtend) {\n var originalExtend = entity.extend;\n\n if (originalExtend) {\n entity.extend = function (proto) {\n var ExtendedClass = originalExtend.call(this, proto);\n return entity.registerClass(ExtendedClass, proto.type);\n };\n }\n }\n\n return entity;\n}\n/**\n * @param {string|Array.} properties\n */\n\n\nfunction setReadOnly(obj, properties) {// FIXME It seems broken in IE8 simulation of IE11\n // if (!zrUtil.isArray(properties)) {\n // properties = properties != null ? [properties] : [];\n // }\n // zrUtil.each(properties, function (prop) {\n // var value = obj[prop];\n // Object.defineProperty\n // && Object.defineProperty(obj, prop, {\n // value: value, writable: false\n // });\n // zrUtil.isArray(obj[prop])\n // && Object.freeze\n // && Object.freeze(obj[prop]);\n // });\n}\n\nexports.parseClassType = parseClassType;\nexports.enableClassExtend = enableClassExtend;\nexports.enableClassCheck = enableClassCheck;\nexports.enableClassManagement = enableClassManagement;\nexports.setReadOnly = setReadOnly;","var env = require(\"./env\");\n\nvar _fourPointsTransform = require(\"./fourPointsTransform\");\n\nvar buildTransformer = _fourPointsTransform.buildTransformer;\nvar EVENT_SAVED_PROP = '___zrEVENTSAVED';\nvar _calcOut = [];\n/**\n * Transform \"local coord\" from `elFrom` to `elTarget`.\n * \"local coord\": the coord based on the input `el`. The origin point is at\n * the position of \"left: 0; top: 0;\" in the `el`.\n *\n * Support when CSS transform is used.\n *\n * Having the `out` (that is, `[outX, outY]`), we can create an DOM element\n * and set the CSS style as \"left: outX; top: outY;\" and append it to `elTarge`\n * to locate the element.\n *\n * For example, this code below positions a child of `document.body` on the event\n * point, no matter whether `body` has `margin`/`paddin`/`transfrom`/... :\n * ```js\n * transformLocalCoord(out, container, document.body, event.offsetX, event.offsetY);\n * if (!eqNaN(out[0])) {\n * // Then locate the tip element on the event point.\n * var tipEl = document.createElement('div');\n * tipEl.style.cssText = 'position: absolute; left:' + out[0] + ';top:' + out[1] + ';';\n * document.body.appendChild(tipEl);\n * }\n * ```\n *\n * Notice: In some env this method is not supported. If called, `out` will be `[NaN, NaN]`.\n *\n * @param {Array.} out [inX: number, inY: number] The output..\n * If can not transform, `out` will not be modified but return `false`.\n * @param {HTMLElement} elFrom The `[inX, inY]` is based on elFrom.\n * @param {HTMLElement} elTarget The `out` is based on elTarget.\n * @param {number} inX\n * @param {number} inY\n * @return {boolean} Whether transform successfully.\n */\n\nfunction transformLocalCoord(out, elFrom, elTarget, inX, inY) {\n return transformCoordWithViewport(_calcOut, elFrom, inX, inY, true) && transformCoordWithViewport(out, elTarget, _calcOut[0], _calcOut[1]);\n}\n/**\n * Transform between a \"viewport coord\" and a \"local coord\".\n * \"viewport coord\": the coord based on the left-top corner of the viewport\n * of the browser.\n * \"local coord\": the coord based on the input `el`. The origin point is at\n * the position of \"left: 0; top: 0;\" in the `el`.\n *\n * Support the case when CSS transform is used on el.\n *\n * @param {Array.} out [inX: number, inY: number] The output. If `inverse: false`,\n * it represents \"local coord\", otherwise \"vireport coord\".\n * If can not transform, `out` will not be modified but return `false`.\n * @param {HTMLElement} el The \"local coord\" is based on the `el`, see comment above.\n * @param {number} inX If `inverse: false`,\n * it represents \"vireport coord\", otherwise \"local coord\".\n * @param {number} inY If `inverse: false`,\n * it represents \"vireport coord\", otherwise \"local coord\".\n * @param {boolean} [inverse=false]\n * `true`: from \"viewport coord\" to \"local coord\".\n * `false`: from \"local coord\" to \"viewport coord\".\n * @return {boolean} Whether transform successfully.\n */\n\n\nfunction transformCoordWithViewport(out, el, inX, inY, inverse) {\n if (el.getBoundingClientRect && env.domSupported && !isCanvasEl(el)) {\n var saved = el[EVENT_SAVED_PROP] || (el[EVENT_SAVED_PROP] = {});\n var markers = prepareCoordMarkers(el, saved);\n var transformer = preparePointerTransformer(markers, saved, inverse);\n\n if (transformer) {\n transformer(out, inX, inY);\n return true;\n }\n }\n\n return false;\n}\n\nfunction prepareCoordMarkers(el, saved) {\n var markers = saved.markers;\n\n if (markers) {\n return markers;\n }\n\n markers = saved.markers = [];\n var propLR = ['left', 'right'];\n var propTB = ['top', 'bottom'];\n\n for (var i = 0; i < 4; i++) {\n var marker = document.createElement('div');\n var stl = marker.style;\n var idxLR = i % 2;\n var idxTB = (i >> 1) % 2;\n stl.cssText = ['position: absolute', 'visibility: hidden', 'padding: 0', 'margin: 0', 'border-width: 0', 'user-select: none', 'width:0', 'height:0', // 'width: 5px',\n // 'height: 5px',\n propLR[idxLR] + ':0', propTB[idxTB] + ':0', propLR[1 - idxLR] + ':auto', propTB[1 - idxTB] + ':auto', ''].join('!important;');\n el.appendChild(marker);\n markers.push(marker);\n }\n\n return markers;\n}\n\nfunction preparePointerTransformer(markers, saved, inverse) {\n var transformerName = inverse ? 'invTrans' : 'trans';\n var transformer = saved[transformerName];\n var oldSrcCoords = saved.srcCoords;\n var oldCoordTheSame = true;\n var srcCoords = [];\n var destCoords = [];\n\n for (var i = 0; i < 4; i++) {\n var rect = markers[i].getBoundingClientRect();\n var ii = 2 * i;\n var x = rect.left;\n var y = rect.top;\n srcCoords.push(x, y);\n oldCoordTheSame = oldCoordTheSame && oldSrcCoords && x === oldSrcCoords[ii] && y === oldSrcCoords[ii + 1];\n destCoords.push(markers[i].offsetLeft, markers[i].offsetTop);\n } // Cache to avoid time consuming of `buildTransformer`.\n\n\n return oldCoordTheSame && transformer ? transformer : (saved.srcCoords = srcCoords, saved[transformerName] = inverse ? buildTransformer(destCoords, srcCoords) : buildTransformer(srcCoords, destCoords));\n}\n\nfunction isCanvasEl(el) {\n return el.nodeName.toUpperCase() === 'CANVAS';\n}\n\nexports.transformLocalCoord = transformLocalCoord;\nexports.transformCoordWithViewport = transformCoordWithViewport;\nexports.isCanvasEl = isCanvasEl;","var _curve = require(\"../core/curve\");\n\nvar quadraticProjectPoint = _curve.quadraticProjectPoint;\n\n/**\n * 二次贝塞尔曲线描边包含判断\n * @param {number} x0\n * @param {number} y0\n * @param {number} x1\n * @param {number} y1\n * @param {number} x2\n * @param {number} y2\n * @param {number} lineWidth\n * @param {number} x\n * @param {number} y\n * @return {boolean}\n */\nfunction containStroke(x0, y0, x1, y1, x2, y2, lineWidth, x, y) {\n if (lineWidth === 0) {\n return false;\n }\n\n var _l = lineWidth; // Quick reject\n\n if (y > y0 + _l && y > y1 + _l && y > y2 + _l || y < y0 - _l && y < y1 - _l && y < y2 - _l || x > x0 + _l && x > x1 + _l && x > x2 + _l || x < x0 - _l && x < x1 - _l && x < x2 - _l) {\n return false;\n }\n\n var d = quadraticProjectPoint(x0, y0, x1, y1, x2, y2, x, y, null);\n return d <= _l / 2;\n}\n\nexports.containStroke = containStroke;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = require(\"../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar OrdinalScale = require(\"../scale/Ordinal\");\n\nvar IntervalScale = require(\"../scale/Interval\");\n\nvar Scale = require(\"../scale/Scale\");\n\nvar numberUtil = require(\"../util/number\");\n\nvar _barGrid = require(\"../layout/barGrid\");\n\nvar prepareLayoutBarSeries = _barGrid.prepareLayoutBarSeries;\nvar makeColumnLayout = _barGrid.makeColumnLayout;\nvar retrieveColumnLayout = _barGrid.retrieveColumnLayout;\n\nvar BoundingRect = require(\"zrender/lib/core/BoundingRect\");\n\nrequire(\"../scale/Time\");\n\nrequire(\"../scale/Log\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Get axis scale extent before niced.\n * Item of returned array can only be number (including Infinity and NaN).\n */\nfunction getScaleExtent(scale, model) {\n var scaleType = scale.type;\n var min = model.getMin();\n var max = model.getMax();\n var originalExtent = scale.getExtent();\n var axisDataLen;\n var boundaryGap;\n var span;\n\n if (scaleType === 'ordinal') {\n axisDataLen = model.getCategories().length;\n } else {\n boundaryGap = model.get('boundaryGap');\n\n if (!zrUtil.isArray(boundaryGap)) {\n boundaryGap = [boundaryGap || 0, boundaryGap || 0];\n }\n\n if (typeof boundaryGap[0] === 'boolean') {\n boundaryGap = [0, 0];\n }\n\n boundaryGap[0] = numberUtil.parsePercent(boundaryGap[0], 1);\n boundaryGap[1] = numberUtil.parsePercent(boundaryGap[1], 1);\n span = originalExtent[1] - originalExtent[0] || Math.abs(originalExtent[0]);\n } // Notice: When min/max is not set (that is, when there are null/undefined,\n // which is the most common case), these cases should be ensured:\n // (1) For 'ordinal', show all axis.data.\n // (2) For others:\n // + `boundaryGap` is applied (if min/max set, boundaryGap is\n // disabled).\n // + If `needCrossZero`, min/max should be zero, otherwise, min/max should\n // be the result that originalExtent enlarged by boundaryGap.\n // (3) If no data, it should be ensured that `scale.setBlank` is set.\n // FIXME\n // (1) When min/max is 'dataMin' or 'dataMax', should boundaryGap be able to used?\n // (2) When `needCrossZero` and all data is positive/negative, should it be ensured\n // that the results processed by boundaryGap are positive/negative?\n\n\n if (min === 'dataMin') {\n min = originalExtent[0];\n } else if (typeof min === 'function') {\n min = min({\n min: originalExtent[0],\n max: originalExtent[1]\n });\n }\n\n if (max === 'dataMax') {\n max = originalExtent[1];\n } else if (typeof max === 'function') {\n max = max({\n min: originalExtent[0],\n max: originalExtent[1]\n });\n }\n\n var fixMin = min != null;\n var fixMax = max != null;\n\n if (min == null) {\n min = scaleType === 'ordinal' ? axisDataLen ? 0 : NaN : originalExtent[0] - boundaryGap[0] * span;\n }\n\n if (max == null) {\n max = scaleType === 'ordinal' ? axisDataLen ? axisDataLen - 1 : NaN : originalExtent[1] + boundaryGap[1] * span;\n }\n\n (min == null || !isFinite(min)) && (min = NaN);\n (max == null || !isFinite(max)) && (max = NaN);\n scale.setBlank(zrUtil.eqNaN(min) || zrUtil.eqNaN(max) || scaleType === 'ordinal' && !scale.getOrdinalMeta().categories.length); // Evaluate if axis needs cross zero\n\n if (model.getNeedCrossZero()) {\n // Axis is over zero and min is not set\n if (min > 0 && max > 0 && !fixMin) {\n min = 0;\n } // Axis is under zero and max is not set\n\n\n if (min < 0 && max < 0 && !fixMax) {\n max = 0;\n }\n } // If bars are placed on a base axis of type time or interval account for axis boundary overflow and current axis\n // is base axis\n // FIXME\n // (1) Consider support value axis, where below zero and axis `onZero` should be handled properly.\n // (2) Refactor the logic with `barGrid`. Is it not need to `makeBarWidthAndOffsetInfo` twice with different extent?\n // Should not depend on series type `bar`?\n // (3) Fix that might overlap when using dataZoom.\n // (4) Consider other chart types using `barGrid`?\n // See #6728, #4862, `test/bar-overflow-time-plot.html`\n\n\n var ecModel = model.ecModel;\n\n if (ecModel && scaleType === 'time'\n /*|| scaleType === 'interval' */\n ) {\n var barSeriesModels = prepareLayoutBarSeries('bar', ecModel);\n var isBaseAxisAndHasBarSeries;\n zrUtil.each(barSeriesModels, function (seriesModel) {\n isBaseAxisAndHasBarSeries |= seriesModel.getBaseAxis() === model.axis;\n });\n\n if (isBaseAxisAndHasBarSeries) {\n // Calculate placement of bars on axis\n var barWidthAndOffset = makeColumnLayout(barSeriesModels); // Adjust axis min and max to account for overflow\n\n var adjustedScale = adjustScaleForOverflow(min, max, model, barWidthAndOffset);\n min = adjustedScale.min;\n max = adjustedScale.max;\n }\n }\n\n return {\n extent: [min, max],\n // \"fix\" means \"fixed\", the value should not be\n // changed in the subsequent steps.\n fixMin: fixMin,\n fixMax: fixMax\n };\n}\n\nfunction adjustScaleForOverflow(min, max, model, barWidthAndOffset) {\n // Get Axis Length\n var axisExtent = model.axis.getExtent();\n var axisLength = axisExtent[1] - axisExtent[0]; // Get bars on current base axis and calculate min and max overflow\n\n var barsOnCurrentAxis = retrieveColumnLayout(barWidthAndOffset, model.axis);\n\n if (barsOnCurrentAxis === undefined) {\n return {\n min: min,\n max: max\n };\n }\n\n var minOverflow = Infinity;\n zrUtil.each(barsOnCurrentAxis, function (item) {\n minOverflow = Math.min(item.offset, minOverflow);\n });\n var maxOverflow = -Infinity;\n zrUtil.each(barsOnCurrentAxis, function (item) {\n maxOverflow = Math.max(item.offset + item.width, maxOverflow);\n });\n minOverflow = Math.abs(minOverflow);\n maxOverflow = Math.abs(maxOverflow);\n var totalOverFlow = minOverflow + maxOverflow; // Calulate required buffer based on old range and overflow\n\n var oldRange = max - min;\n var oldRangePercentOfNew = 1 - (minOverflow + maxOverflow) / axisLength;\n var overflowBuffer = oldRange / oldRangePercentOfNew - oldRange;\n max += overflowBuffer * (maxOverflow / totalOverFlow);\n min -= overflowBuffer * (minOverflow / totalOverFlow);\n return {\n min: min,\n max: max\n };\n}\n\nfunction niceScaleExtent(scale, model) {\n var extentInfo = getScaleExtent(scale, model);\n var extent = extentInfo.extent;\n var splitNumber = model.get('splitNumber');\n\n if (scale.type === 'log') {\n scale.base = model.get('logBase');\n }\n\n var scaleType = scale.type;\n scale.setExtent(extent[0], extent[1]);\n scale.niceExtent({\n splitNumber: splitNumber,\n fixMin: extentInfo.fixMin,\n fixMax: extentInfo.fixMax,\n minInterval: scaleType === 'interval' || scaleType === 'time' ? model.get('minInterval') : null,\n maxInterval: scaleType === 'interval' || scaleType === 'time' ? model.get('maxInterval') : null\n }); // If some one specified the min, max. And the default calculated interval\n // is not good enough. He can specify the interval. It is often appeared\n // in angle axis with angle 0 - 360. Interval calculated in interval scale is hard\n // to be 60.\n // FIXME\n\n var interval = model.get('interval');\n\n if (interval != null) {\n scale.setInterval && scale.setInterval(interval);\n }\n}\n/**\n * @param {module:echarts/model/Model} model\n * @param {string} [axisType] Default retrieve from model.type\n * @return {module:echarts/scale/*}\n */\n\n\nfunction createScaleByModel(model, axisType) {\n axisType = axisType || model.get('type');\n\n if (axisType) {\n switch (axisType) {\n // Buildin scale\n case 'category':\n return new OrdinalScale(model.getOrdinalMeta ? model.getOrdinalMeta() : model.getCategories(), [Infinity, -Infinity]);\n\n case 'value':\n return new IntervalScale();\n // Extended scale, like time and log\n\n default:\n return (Scale.getClass(axisType) || IntervalScale).create(model);\n }\n }\n}\n/**\n * Check if the axis corss 0\n */\n\n\nfunction ifAxisCrossZero(axis) {\n var dataExtent = axis.scale.getExtent();\n var min = dataExtent[0];\n var max = dataExtent[1];\n return !(min > 0 && max > 0 || min < 0 && max < 0);\n}\n/**\n * @param {module:echarts/coord/Axis} axis\n * @return {Function} Label formatter function.\n * param: {number} tickValue,\n * param: {number} idx, the index in all ticks.\n * If category axis, this param is not requied.\n * return: {string} label string.\n */\n\n\nfunction makeLabelFormatter(axis) {\n var labelFormatter = axis.getLabelModel().get('formatter');\n var categoryTickStart = axis.type === 'category' ? axis.scale.getExtent()[0] : null;\n\n if (typeof labelFormatter === 'string') {\n labelFormatter = function (tpl) {\n return function (val) {\n // For category axis, get raw value; for numeric axis,\n // get foramtted label like '1,333,444'.\n val = axis.scale.getLabel(val);\n return tpl.replace('{value}', val != null ? val : '');\n };\n }(labelFormatter); // Consider empty array\n\n\n return labelFormatter;\n } else if (typeof labelFormatter === 'function') {\n return function (tickValue, idx) {\n // The original intention of `idx` is \"the index of the tick in all ticks\".\n // But the previous implementation of category axis do not consider the\n // `axisLabel.interval`, which cause that, for example, the `interval` is\n // `1`, then the ticks \"name5\", \"name7\", \"name9\" are displayed, where the\n // corresponding `idx` are `0`, `2`, `4`, but not `0`, `1`, `2`. So we keep\n // the definition here for back compatibility.\n if (categoryTickStart != null) {\n idx = tickValue - categoryTickStart;\n }\n\n return labelFormatter(getAxisRawValue(axis, tickValue), idx);\n };\n } else {\n return function (tick) {\n return axis.scale.getLabel(tick);\n };\n }\n}\n\nfunction getAxisRawValue(axis, value) {\n // In category axis with data zoom, tick is not the original\n // index of axis.data. So tick should not be exposed to user\n // in category axis.\n return axis.type === 'category' ? axis.scale.getLabel(value) : value;\n}\n/**\n * @param {module:echarts/coord/Axis} axis\n * @return {module:zrender/core/BoundingRect} Be null/undefined if no labels.\n */\n\n\nfunction estimateLabelUnionRect(axis) {\n var axisModel = axis.model;\n var scale = axis.scale;\n\n if (!axisModel.get('axisLabel.show') || scale.isBlank()) {\n return;\n }\n\n var isCategory = axis.type === 'category';\n var realNumberScaleTicks;\n var tickCount;\n var categoryScaleExtent = scale.getExtent(); // Optimize for large category data, avoid call `getTicks()`.\n\n if (isCategory) {\n tickCount = scale.count();\n } else {\n realNumberScaleTicks = scale.getTicks();\n tickCount = realNumberScaleTicks.length;\n }\n\n var axisLabelModel = axis.getLabelModel();\n var labelFormatter = makeLabelFormatter(axis);\n var rect;\n var step = 1; // Simple optimization for large amount of labels\n\n if (tickCount > 40) {\n step = Math.ceil(tickCount / 40);\n }\n\n for (var i = 0; i < tickCount; i += step) {\n var tickValue = realNumberScaleTicks ? realNumberScaleTicks[i] : categoryScaleExtent[0] + i;\n var label = labelFormatter(tickValue);\n var unrotatedSingleRect = axisLabelModel.getTextRect(label);\n var singleRect = rotateTextRect(unrotatedSingleRect, axisLabelModel.get('rotate') || 0);\n rect ? rect.union(singleRect) : rect = singleRect;\n }\n\n return rect;\n}\n\nfunction rotateTextRect(textRect, rotate) {\n var rotateRadians = rotate * Math.PI / 180;\n var boundingBox = textRect.plain();\n var beforeWidth = boundingBox.width;\n var beforeHeight = boundingBox.height;\n var afterWidth = beforeWidth * Math.cos(rotateRadians) + beforeHeight * Math.sin(rotateRadians);\n var afterHeight = beforeWidth * Math.sin(rotateRadians) + beforeHeight * Math.cos(rotateRadians);\n var rotatedRect = new BoundingRect(boundingBox.x, boundingBox.y, afterWidth, afterHeight);\n return rotatedRect;\n}\n/**\n * @param {module:echarts/src/model/Model} model axisLabelModel or axisTickModel\n * @return {number|String} Can be null|'auto'|number|function\n */\n\n\nfunction getOptionCategoryInterval(model) {\n var interval = model.get('interval');\n return interval == null ? 'auto' : interval;\n}\n/**\n * Set `categoryInterval` as 0 implicitly indicates that\n * show all labels reguardless of overlap.\n * @param {Object} axis axisModel.axis\n * @return {boolean}\n */\n\n\nfunction shouldShowAllLabels(axis) {\n return axis.type === 'category' && getOptionCategoryInterval(axis.getLabelModel()) === 0;\n}\n\nexports.getScaleExtent = getScaleExtent;\nexports.niceScaleExtent = niceScaleExtent;\nexports.createScaleByModel = createScaleByModel;\nexports.ifAxisCrossZero = ifAxisCrossZero;\nexports.makeLabelFormatter = makeLabelFormatter;\nexports.getAxisRawValue = getAxisRawValue;\nexports.estimateLabelUnionRect = estimateLabelUnionRect;\nexports.getOptionCategoryInterval = getOptionCategoryInterval;\nexports.shouldShowAllLabels = shouldShowAllLabels;","var guid = require(\"./core/guid\");\n\nvar env = require(\"./core/env\");\n\nvar zrUtil = require(\"./core/util\");\n\nvar Handler = require(\"./Handler\");\n\nvar Storage = require(\"./Storage\");\n\nvar Painter = require(\"./Painter\");\n\nvar Animation = require(\"./animation/Animation\");\n\nvar HandlerProxy = require(\"./dom/HandlerProxy\");\n\n/*!\n* ZRender, a high performance 2d drawing library.\n*\n* Copyright (c) 2013, Baidu Inc.\n* All rights reserved.\n*\n* LICENSE\n* https://github.com/ecomfe/zrender/blob/master/LICENSE.txt\n*/\nvar useVML = !env.canvasSupported;\nvar painterCtors = {\n canvas: Painter\n};\nvar instances = {}; // ZRender实例map索引\n\n/**\n * @type {string}\n */\n\nvar version = '4.3.1';\n/**\n * Initializing a zrender instance\n * @param {HTMLElement} dom\n * @param {Object} [opts]\n * @param {string} [opts.renderer='canvas'] 'canvas' or 'svg'\n * @param {number} [opts.devicePixelRatio]\n * @param {number|string} [opts.width] Can be 'auto' (the same as null/undefined)\n * @param {number|string} [opts.height] Can be 'auto' (the same as null/undefined)\n * @return {module:zrender/ZRender}\n */\n\nfunction init(dom, opts) {\n var zr = new ZRender(guid(), dom, opts);\n instances[zr.id] = zr;\n return zr;\n}\n/**\n * Dispose zrender instance\n * @param {module:zrender/ZRender} zr\n */\n\n\nfunction dispose(zr) {\n if (zr) {\n zr.dispose();\n } else {\n for (var key in instances) {\n if (instances.hasOwnProperty(key)) {\n instances[key].dispose();\n }\n }\n\n instances = {};\n }\n\n return this;\n}\n/**\n * Get zrender instance by id\n * @param {string} id zrender instance id\n * @return {module:zrender/ZRender}\n */\n\n\nfunction getInstance(id) {\n return instances[id];\n}\n\nfunction registerPainter(name, Ctor) {\n painterCtors[name] = Ctor;\n}\n\nfunction delInstance(id) {\n delete instances[id];\n}\n/**\n * @module zrender/ZRender\n */\n\n/**\n * @constructor\n * @alias module:zrender/ZRender\n * @param {string} id\n * @param {HTMLElement} dom\n * @param {Object} opts\n * @param {string} [opts.renderer='canvas'] 'canvas' or 'svg'\n * @param {number} [opts.devicePixelRatio]\n * @param {number} [opts.width] Can be 'auto' (the same as null/undefined)\n * @param {number} [opts.height] Can be 'auto' (the same as null/undefined)\n */\n\n\nvar ZRender = function (id, dom, opts) {\n opts = opts || {};\n /**\n * @type {HTMLDomElement}\n */\n\n this.dom = dom;\n /**\n * @type {string}\n */\n\n this.id = id;\n var self = this;\n var storage = new Storage();\n var rendererType = opts.renderer; // TODO WebGL\n\n if (useVML) {\n if (!painterCtors.vml) {\n throw new Error('You need to require \\'zrender/vml/vml\\' to support IE8');\n }\n\n rendererType = 'vml';\n } else if (!rendererType || !painterCtors[rendererType]) {\n rendererType = 'canvas';\n }\n\n var painter = new painterCtors[rendererType](dom, storage, opts, id);\n this.storage = storage;\n this.painter = painter;\n var handerProxy = !env.node && !env.worker ? new HandlerProxy(painter.getViewportRoot(), painter.root) : null;\n this.handler = new Handler(storage, painter, handerProxy, painter.root);\n /**\n * @type {module:zrender/animation/Animation}\n */\n\n this.animation = new Animation({\n stage: {\n update: zrUtil.bind(this.flush, this)\n }\n });\n this.animation.start();\n /**\n * @type {boolean}\n * @private\n */\n\n this._needsRefresh; // 修改 storage.delFromStorage, 每次删除元素之前删除动画\n // FIXME 有点ugly\n\n var oldDelFromStorage = storage.delFromStorage;\n var oldAddToStorage = storage.addToStorage;\n\n storage.delFromStorage = function (el) {\n oldDelFromStorage.call(storage, el);\n el && el.removeSelfFromZr(self);\n };\n\n storage.addToStorage = function (el) {\n oldAddToStorage.call(storage, el);\n el.addSelfToZr(self);\n };\n};\n\nZRender.prototype = {\n constructor: ZRender,\n\n /**\n * 获取实例唯一标识\n * @return {string}\n */\n getId: function () {\n return this.id;\n },\n\n /**\n * 添加元素\n * @param {module:zrender/Element} el\n */\n add: function (el) {\n this.storage.addRoot(el);\n this._needsRefresh = true;\n },\n\n /**\n * 删除元素\n * @param {module:zrender/Element} el\n */\n remove: function (el) {\n this.storage.delRoot(el);\n this._needsRefresh = true;\n },\n\n /**\n * Change configuration of layer\n * @param {string} zLevel\n * @param {Object} config\n * @param {string} [config.clearColor=0] Clear color\n * @param {string} [config.motionBlur=false] If enable motion blur\n * @param {number} [config.lastFrameAlpha=0.7] Motion blur factor. Larger value cause longer trailer\n */\n configLayer: function (zLevel, config) {\n if (this.painter.configLayer) {\n this.painter.configLayer(zLevel, config);\n }\n\n this._needsRefresh = true;\n },\n\n /**\n * Set background color\n * @param {string} backgroundColor\n */\n setBackgroundColor: function (backgroundColor) {\n if (this.painter.setBackgroundColor) {\n this.painter.setBackgroundColor(backgroundColor);\n }\n\n this._needsRefresh = true;\n },\n\n /**\n * Repaint the canvas immediately\n */\n refreshImmediately: function () {\n // var start = new Date();\n // Clear needsRefresh ahead to avoid something wrong happens in refresh\n // Or it will cause zrender refreshes again and again.\n this._needsRefresh = this._needsRefreshHover = false;\n this.painter.refresh(); // Avoid trigger zr.refresh in Element#beforeUpdate hook\n\n this._needsRefresh = this._needsRefreshHover = false; // var end = new Date();\n // var log = document.getElementById('log');\n // if (log) {\n // log.innerHTML = log.innerHTML + '
' + (end - start);\n // }\n },\n\n /**\n * Mark and repaint the canvas in the next frame of browser\n */\n refresh: function () {\n this._needsRefresh = true;\n },\n\n /**\n * Perform all refresh\n */\n flush: function () {\n var triggerRendered;\n\n if (this._needsRefresh) {\n triggerRendered = true;\n this.refreshImmediately();\n }\n\n if (this._needsRefreshHover) {\n triggerRendered = true;\n this.refreshHoverImmediately();\n }\n\n triggerRendered && this.trigger('rendered');\n },\n\n /**\n * Add element to hover layer\n * @param {module:zrender/Element} el\n * @param {Object} style\n */\n addHover: function (el, style) {\n if (this.painter.addHover) {\n var elMirror = this.painter.addHover(el, style);\n this.refreshHover();\n return elMirror;\n }\n },\n\n /**\n * Add element from hover layer\n * @param {module:zrender/Element} el\n */\n removeHover: function (el) {\n if (this.painter.removeHover) {\n this.painter.removeHover(el);\n this.refreshHover();\n }\n },\n\n /**\n * Clear all hover elements in hover layer\n * @param {module:zrender/Element} el\n */\n clearHover: function () {\n if (this.painter.clearHover) {\n this.painter.clearHover();\n this.refreshHover();\n }\n },\n\n /**\n * Refresh hover in next frame\n */\n refreshHover: function () {\n this._needsRefreshHover = true;\n },\n\n /**\n * Refresh hover immediately\n */\n refreshHoverImmediately: function () {\n this._needsRefreshHover = false;\n this.painter.refreshHover && this.painter.refreshHover();\n },\n\n /**\n * Resize the canvas.\n * Should be invoked when container size is changed\n * @param {Object} [opts]\n * @param {number|string} [opts.width] Can be 'auto' (the same as null/undefined)\n * @param {number|string} [opts.height] Can be 'auto' (the same as null/undefined)\n */\n resize: function (opts) {\n opts = opts || {};\n this.painter.resize(opts.width, opts.height);\n this.handler.resize();\n },\n\n /**\n * Stop and clear all animation immediately\n */\n clearAnimation: function () {\n this.animation.clear();\n },\n\n /**\n * Get container width\n */\n getWidth: function () {\n return this.painter.getWidth();\n },\n\n /**\n * Get container height\n */\n getHeight: function () {\n return this.painter.getHeight();\n },\n\n /**\n * Export the canvas as Base64 URL\n * @param {string} type\n * @param {string} [backgroundColor='#fff']\n * @return {string} Base64 URL\n */\n // toDataURL: function(type, backgroundColor) {\n // return this.painter.getRenderedCanvas({\n // backgroundColor: backgroundColor\n // }).toDataURL(type);\n // },\n\n /**\n * Converting a path to image.\n * It has much better performance of drawing image rather than drawing a vector path.\n * @param {module:zrender/graphic/Path} e\n * @param {number} width\n * @param {number} height\n */\n pathToImage: function (e, dpr) {\n return this.painter.pathToImage(e, dpr);\n },\n\n /**\n * Set default cursor\n * @param {string} [cursorStyle='default'] 例如 crosshair\n */\n setCursorStyle: function (cursorStyle) {\n this.handler.setCursorStyle(cursorStyle);\n },\n\n /**\n * Find hovered element\n * @param {number} x\n * @param {number} y\n * @return {Object} {target, topTarget}\n */\n findHover: function (x, y) {\n return this.handler.findHover(x, y);\n },\n\n /**\n * Bind event\n *\n * @param {string} eventName Event name\n * @param {Function} eventHandler Handler function\n * @param {Object} [context] Context object\n */\n on: function (eventName, eventHandler, context) {\n this.handler.on(eventName, eventHandler, context);\n },\n\n /**\n * Unbind event\n * @param {string} eventName Event name\n * @param {Function} [eventHandler] Handler function\n */\n off: function (eventName, eventHandler) {\n this.handler.off(eventName, eventHandler);\n },\n\n /**\n * Trigger event manually\n *\n * @param {string} eventName Event name\n * @param {event=} event Event object\n */\n trigger: function (eventName, event) {\n this.handler.trigger(eventName, event);\n },\n\n /**\n * Clear all objects and the canvas.\n */\n clear: function () {\n this.storage.delRoot();\n this.painter.clear();\n },\n\n /**\n * Dispose self.\n */\n dispose: function () {\n this.animation.stop();\n this.clear();\n this.storage.dispose();\n this.painter.dispose();\n this.handler.dispose();\n this.animation = this.storage = this.painter = this.handler = null;\n delInstance(this.id);\n }\n};\nexports.version = version;\nexports.init = init;\nexports.dispose = dispose;\nexports.getInstance = getInstance;\nexports.registerPainter = registerPainter;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar each = _util.each;\nvar map = _util.map;\nvar isFunction = _util.isFunction;\nvar createHashMap = _util.createHashMap;\nvar noop = _util.noop;\n\nvar _task = require(\"./task\");\n\nvar createTask = _task.createTask;\n\nvar _component = require(\"../util/component\");\n\nvar getUID = _component.getUID;\n\nvar GlobalModel = require(\"../model/Global\");\n\nvar ExtensionAPI = require(\"../ExtensionAPI\");\n\nvar _model = require(\"../util/model\");\n\nvar normalizeToArray = _model.normalizeToArray;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @module echarts/stream/Scheduler\n */\n\n/**\n * @constructor\n */\nfunction Scheduler(ecInstance, api, dataProcessorHandlers, visualHandlers) {\n this.ecInstance = ecInstance;\n this.api = api;\n this.unfinished; // Fix current processors in case that in some rear cases that\n // processors might be registered after echarts instance created.\n // Register processors incrementally for a echarts instance is\n // not supported by this stream architecture.\n\n var dataProcessorHandlers = this._dataProcessorHandlers = dataProcessorHandlers.slice();\n var visualHandlers = this._visualHandlers = visualHandlers.slice();\n this._allHandlers = dataProcessorHandlers.concat(visualHandlers);\n /**\n * @private\n * @type {\n * [handlerUID: string]: {\n * seriesTaskMap?: {\n * [seriesUID: string]: Task\n * },\n * overallTask?: Task\n * }\n * }\n */\n\n this._stageTaskMap = createHashMap();\n}\n\nvar proto = Scheduler.prototype;\n/**\n * @param {module:echarts/model/Global} ecModel\n * @param {Object} payload\n */\n\nproto.restoreData = function (ecModel, payload) {\n // TODO: Only restroe needed series and components, but not all components.\n // Currently `restoreData` of all of the series and component will be called.\n // But some independent components like `title`, `legend`, `graphic`, `toolbox`,\n // `tooltip`, `axisPointer`, etc, do not need series refresh when `setOption`,\n // and some components like coordinate system, axes, dataZoom, visualMap only\n // need their target series refresh.\n // (1) If we are implementing this feature some day, we should consider these cases:\n // if a data processor depends on a component (e.g., dataZoomProcessor depends\n // on the settings of `dataZoom`), it should be re-performed if the component\n // is modified by `setOption`.\n // (2) If a processor depends on sevral series, speicified by its `getTargetSeries`,\n // it should be re-performed when the result array of `getTargetSeries` changed.\n // We use `dependencies` to cover these issues.\n // (3) How to update target series when coordinate system related components modified.\n // TODO: simply the dirty mechanism? Check whether only the case here can set tasks dirty,\n // and this case all of the tasks will be set as dirty.\n ecModel.restoreData(payload); // Theoretically an overall task not only depends on each of its target series, but also\n // depends on all of the series.\n // The overall task is not in pipeline, and `ecModel.restoreData` only set pipeline tasks\n // dirty. If `getTargetSeries` of an overall task returns nothing, we should also ensure\n // that the overall task is set as dirty and to be performed, otherwise it probably cause\n // state chaos. So we have to set dirty of all of the overall tasks manually, otherwise it\n // probably cause state chaos (consider `dataZoomProcessor`).\n\n this._stageTaskMap.each(function (taskRecord) {\n var overallTask = taskRecord.overallTask;\n overallTask && overallTask.dirty();\n });\n}; // If seriesModel provided, incremental threshold is check by series data.\n\n\nproto.getPerformArgs = function (task, isBlock) {\n // For overall task\n if (!task.__pipeline) {\n return;\n }\n\n var pipeline = this._pipelineMap.get(task.__pipeline.id);\n\n var pCtx = pipeline.context;\n var incremental = !isBlock && pipeline.progressiveEnabled && (!pCtx || pCtx.progressiveRender) && task.__idxInPipeline > pipeline.blockIndex;\n var step = incremental ? pipeline.step : null;\n var modDataCount = pCtx && pCtx.modDataCount;\n var modBy = modDataCount != null ? Math.ceil(modDataCount / step) : null;\n return {\n step: step,\n modBy: modBy,\n modDataCount: modDataCount\n };\n};\n\nproto.getPipeline = function (pipelineId) {\n return this._pipelineMap.get(pipelineId);\n};\n/**\n * Current, progressive rendering starts from visual and layout.\n * Always detect render mode in the same stage, avoiding that incorrect\n * detection caused by data filtering.\n * Caution:\n * `updateStreamModes` use `seriesModel.getData()`.\n */\n\n\nproto.updateStreamModes = function (seriesModel, view) {\n var pipeline = this._pipelineMap.get(seriesModel.uid);\n\n var data = seriesModel.getData();\n var dataLen = data.count(); // `progressiveRender` means that can render progressively in each\n // animation frame. Note that some types of series do not provide\n // `view.incrementalPrepareRender` but support `chart.appendData`. We\n // use the term `incremental` but not `progressive` to describe the\n // case that `chart.appendData`.\n\n var progressiveRender = pipeline.progressiveEnabled && view.incrementalPrepareRender && dataLen >= pipeline.threshold;\n var large = seriesModel.get('large') && dataLen >= seriesModel.get('largeThreshold'); // TODO: modDataCount should not updated if `appendData`, otherwise cause whole repaint.\n // see `test/candlestick-large3.html`\n\n var modDataCount = seriesModel.get('progressiveChunkMode') === 'mod' ? dataLen : null;\n seriesModel.pipelineContext = pipeline.context = {\n progressiveRender: progressiveRender,\n modDataCount: modDataCount,\n large: large\n };\n};\n\nproto.restorePipelines = function (ecModel) {\n var scheduler = this;\n var pipelineMap = scheduler._pipelineMap = createHashMap();\n ecModel.eachSeries(function (seriesModel) {\n var progressive = seriesModel.getProgressive();\n var pipelineId = seriesModel.uid;\n pipelineMap.set(pipelineId, {\n id: pipelineId,\n head: null,\n tail: null,\n threshold: seriesModel.getProgressiveThreshold(),\n progressiveEnabled: progressive && !(seriesModel.preventIncremental && seriesModel.preventIncremental()),\n blockIndex: -1,\n step: Math.round(progressive || 700),\n count: 0\n });\n pipe(scheduler, seriesModel, seriesModel.dataTask);\n });\n};\n\nproto.prepareStageTasks = function () {\n var stageTaskMap = this._stageTaskMap;\n var ecModel = this.ecInstance.getModel();\n var api = this.api;\n each(this._allHandlers, function (handler) {\n var record = stageTaskMap.get(handler.uid) || stageTaskMap.set(handler.uid, []);\n handler.reset && createSeriesStageTask(this, handler, record, ecModel, api);\n handler.overallReset && createOverallStageTask(this, handler, record, ecModel, api);\n }, this);\n};\n\nproto.prepareView = function (view, model, ecModel, api) {\n var renderTask = view.renderTask;\n var context = renderTask.context;\n context.model = model;\n context.ecModel = ecModel;\n context.api = api;\n renderTask.__block = !view.incrementalPrepareRender;\n pipe(this, model, renderTask);\n};\n\nproto.performDataProcessorTasks = function (ecModel, payload) {\n // If we do not use `block` here, it should be considered when to update modes.\n performStageTasks(this, this._dataProcessorHandlers, ecModel, payload, {\n block: true\n });\n}; // opt\n// opt.visualType: 'visual' or 'layout'\n// opt.setDirty\n\n\nproto.performVisualTasks = function (ecModel, payload, opt) {\n performStageTasks(this, this._visualHandlers, ecModel, payload, opt);\n};\n\nfunction performStageTasks(scheduler, stageHandlers, ecModel, payload, opt) {\n opt = opt || {};\n var unfinished;\n each(stageHandlers, function (stageHandler, idx) {\n if (opt.visualType && opt.visualType !== stageHandler.visualType) {\n return;\n }\n\n var stageHandlerRecord = scheduler._stageTaskMap.get(stageHandler.uid);\n\n var seriesTaskMap = stageHandlerRecord.seriesTaskMap;\n var overallTask = stageHandlerRecord.overallTask;\n\n if (overallTask) {\n var overallNeedDirty;\n var agentStubMap = overallTask.agentStubMap;\n agentStubMap.each(function (stub) {\n if (needSetDirty(opt, stub)) {\n stub.dirty();\n overallNeedDirty = true;\n }\n });\n overallNeedDirty && overallTask.dirty();\n updatePayload(overallTask, payload);\n var performArgs = scheduler.getPerformArgs(overallTask, opt.block); // Execute stubs firstly, which may set the overall task dirty,\n // then execute the overall task. And stub will call seriesModel.setData,\n // which ensures that in the overallTask seriesModel.getData() will not\n // return incorrect data.\n\n agentStubMap.each(function (stub) {\n stub.perform(performArgs);\n });\n unfinished |= overallTask.perform(performArgs);\n } else if (seriesTaskMap) {\n seriesTaskMap.each(function (task, pipelineId) {\n if (needSetDirty(opt, task)) {\n task.dirty();\n }\n\n var performArgs = scheduler.getPerformArgs(task, opt.block); // FIXME\n // if intending to decalare `performRawSeries` in handlers, only\n // stream-independent (specifically, data item independent) operations can be\n // performed. Because is a series is filtered, most of the tasks will not\n // be performed. A stream-dependent operation probably cause wrong biz logic.\n // Perhaps we should not provide a separate callback for this case instead\n // of providing the config `performRawSeries`. The stream-dependent operaions\n // and stream-independent operations should better not be mixed.\n\n performArgs.skip = !stageHandler.performRawSeries && ecModel.isSeriesFiltered(task.context.model);\n updatePayload(task, payload);\n unfinished |= task.perform(performArgs);\n });\n }\n });\n\n function needSetDirty(opt, task) {\n return opt.setDirty && (!opt.dirtyMap || opt.dirtyMap.get(task.__pipeline.id));\n }\n\n scheduler.unfinished |= unfinished;\n}\n\nproto.performSeriesTasks = function (ecModel) {\n var unfinished;\n ecModel.eachSeries(function (seriesModel) {\n // Progress to the end for dataInit and dataRestore.\n unfinished |= seriesModel.dataTask.perform();\n });\n this.unfinished |= unfinished;\n};\n\nproto.plan = function () {\n // Travel pipelines, check block.\n this._pipelineMap.each(function (pipeline) {\n var task = pipeline.tail;\n\n do {\n if (task.__block) {\n pipeline.blockIndex = task.__idxInPipeline;\n break;\n }\n\n task = task.getUpstream();\n } while (task);\n });\n};\n\nvar updatePayload = proto.updatePayload = function (task, payload) {\n payload !== 'remain' && (task.context.payload = payload);\n};\n\nfunction createSeriesStageTask(scheduler, stageHandler, stageHandlerRecord, ecModel, api) {\n var seriesTaskMap = stageHandlerRecord.seriesTaskMap || (stageHandlerRecord.seriesTaskMap = createHashMap());\n var seriesType = stageHandler.seriesType;\n var getTargetSeries = stageHandler.getTargetSeries; // If a stageHandler should cover all series, `createOnAllSeries` should be declared mandatorily,\n // to avoid some typo or abuse. Otherwise if an extension do not specify a `seriesType`,\n // it works but it may cause other irrelevant charts blocked.\n\n if (stageHandler.createOnAllSeries) {\n ecModel.eachRawSeries(create);\n } else if (seriesType) {\n ecModel.eachRawSeriesByType(seriesType, create);\n } else if (getTargetSeries) {\n getTargetSeries(ecModel, api).each(create);\n }\n\n function create(seriesModel) {\n var pipelineId = seriesModel.uid; // Init tasks for each seriesModel only once.\n // Reuse original task instance.\n\n var task = seriesTaskMap.get(pipelineId) || seriesTaskMap.set(pipelineId, createTask({\n plan: seriesTaskPlan,\n reset: seriesTaskReset,\n count: seriesTaskCount\n }));\n task.context = {\n model: seriesModel,\n ecModel: ecModel,\n api: api,\n useClearVisual: stageHandler.isVisual && !stageHandler.isLayout,\n plan: stageHandler.plan,\n reset: stageHandler.reset,\n scheduler: scheduler\n };\n pipe(scheduler, seriesModel, task);\n } // Clear unused series tasks.\n\n\n var pipelineMap = scheduler._pipelineMap;\n seriesTaskMap.each(function (task, pipelineId) {\n if (!pipelineMap.get(pipelineId)) {\n task.dispose();\n seriesTaskMap.removeKey(pipelineId);\n }\n });\n}\n\nfunction createOverallStageTask(scheduler, stageHandler, stageHandlerRecord, ecModel, api) {\n var overallTask = stageHandlerRecord.overallTask = stageHandlerRecord.overallTask // For overall task, the function only be called on reset stage.\n || createTask({\n reset: overallTaskReset\n });\n overallTask.context = {\n ecModel: ecModel,\n api: api,\n overallReset: stageHandler.overallReset,\n scheduler: scheduler\n }; // Reuse orignal stubs.\n\n var agentStubMap = overallTask.agentStubMap = overallTask.agentStubMap || createHashMap();\n var seriesType = stageHandler.seriesType;\n var getTargetSeries = stageHandler.getTargetSeries;\n var overallProgress = true;\n var modifyOutputEnd = stageHandler.modifyOutputEnd; // An overall task with seriesType detected or has `getTargetSeries`, we add\n // stub in each pipelines, it will set the overall task dirty when the pipeline\n // progress. Moreover, to avoid call the overall task each frame (too frequent),\n // we set the pipeline block.\n\n if (seriesType) {\n ecModel.eachRawSeriesByType(seriesType, createStub);\n } else if (getTargetSeries) {\n getTargetSeries(ecModel, api).each(createStub);\n } // Otherwise, (usually it is legancy case), the overall task will only be\n // executed when upstream dirty. Otherwise the progressive rendering of all\n // pipelines will be disabled unexpectedly. But it still needs stubs to receive\n // dirty info from upsteam.\n else {\n overallProgress = false;\n each(ecModel.getSeries(), createStub);\n }\n\n function createStub(seriesModel) {\n var pipelineId = seriesModel.uid;\n var stub = agentStubMap.get(pipelineId);\n\n if (!stub) {\n stub = agentStubMap.set(pipelineId, createTask({\n reset: stubReset,\n onDirty: stubOnDirty\n })); // When the result of `getTargetSeries` changed, the overallTask\n // should be set as dirty and re-performed.\n\n overallTask.dirty();\n }\n\n stub.context = {\n model: seriesModel,\n overallProgress: overallProgress,\n modifyOutputEnd: modifyOutputEnd\n };\n stub.agent = overallTask;\n stub.__block = overallProgress;\n pipe(scheduler, seriesModel, stub);\n } // Clear unused stubs.\n\n\n var pipelineMap = scheduler._pipelineMap;\n agentStubMap.each(function (stub, pipelineId) {\n if (!pipelineMap.get(pipelineId)) {\n stub.dispose(); // When the result of `getTargetSeries` changed, the overallTask\n // should be set as dirty and re-performed.\n\n overallTask.dirty();\n agentStubMap.removeKey(pipelineId);\n }\n });\n}\n\nfunction overallTaskReset(context) {\n context.overallReset(context.ecModel, context.api, context.payload);\n}\n\nfunction stubReset(context, upstreamContext) {\n return context.overallProgress && stubProgress;\n}\n\nfunction stubProgress() {\n this.agent.dirty();\n this.getDownstream().dirty();\n}\n\nfunction stubOnDirty() {\n this.agent && this.agent.dirty();\n}\n\nfunction seriesTaskPlan(context) {\n return context.plan && context.plan(context.model, context.ecModel, context.api, context.payload);\n}\n\nfunction seriesTaskReset(context) {\n if (context.useClearVisual) {\n context.data.clearAllVisual();\n }\n\n var resetDefines = context.resetDefines = normalizeToArray(context.reset(context.model, context.ecModel, context.api, context.payload));\n return resetDefines.length > 1 ? map(resetDefines, function (v, idx) {\n return makeSeriesTaskProgress(idx);\n }) : singleSeriesTaskProgress;\n}\n\nvar singleSeriesTaskProgress = makeSeriesTaskProgress(0);\n\nfunction makeSeriesTaskProgress(resetDefineIdx) {\n return function (params, context) {\n var data = context.data;\n var resetDefine = context.resetDefines[resetDefineIdx];\n\n if (resetDefine && resetDefine.dataEach) {\n for (var i = params.start; i < params.end; i++) {\n resetDefine.dataEach(data, i);\n }\n } else if (resetDefine && resetDefine.progress) {\n resetDefine.progress(params, data);\n }\n };\n}\n\nfunction seriesTaskCount(context) {\n return context.data.count();\n}\n\nfunction pipe(scheduler, seriesModel, task) {\n var pipelineId = seriesModel.uid;\n\n var pipeline = scheduler._pipelineMap.get(pipelineId);\n\n !pipeline.head && (pipeline.head = task);\n pipeline.tail && pipeline.tail.pipe(task);\n pipeline.tail = task;\n task.__idxInPipeline = pipeline.count++;\n task.__pipeline = pipeline;\n}\n\nScheduler.wrapStageHandler = function (stageHandler, visualType) {\n if (isFunction(stageHandler)) {\n stageHandler = {\n overallReset: stageHandler,\n seriesType: detectSeriseType(stageHandler)\n };\n }\n\n stageHandler.uid = getUID('stageHandler');\n visualType && (stageHandler.visualType = visualType);\n return stageHandler;\n};\n/**\n * Only some legacy stage handlers (usually in echarts extensions) are pure function.\n * To ensure that they can work normally, they should work in block mode, that is,\n * they should not be started util the previous tasks finished. So they cause the\n * progressive rendering disabled. We try to detect the series type, to narrow down\n * the block range to only the series type they concern, but not all series.\n */\n\n\nfunction detectSeriseType(legacyFunc) {\n seriesType = null;\n\n try {\n // Assume there is no async when calling `eachSeriesByType`.\n legacyFunc(ecModelMock, apiMock);\n } catch (e) {}\n\n return seriesType;\n}\n\nvar ecModelMock = {};\nvar apiMock = {};\nvar seriesType;\nmockMethods(ecModelMock, GlobalModel);\nmockMethods(apiMock, ExtensionAPI);\n\necModelMock.eachSeriesByType = ecModelMock.eachRawSeriesByType = function (type) {\n seriesType = type;\n};\n\necModelMock.eachComponent = function (cond) {\n if (cond.mainType === 'series' && cond.subType) {\n seriesType = cond.subType;\n }\n};\n\nfunction mockMethods(target, Clz) {\n /* eslint-disable */\n for (var name in Clz.prototype) {\n // Do not use hasOwnProperty\n target[name] = noop;\n }\n /* eslint-enable */\n\n}\n\nvar _default = Scheduler;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar Model = require(\"./Model\");\n\nvar componentUtil = require(\"../util/component\");\n\nvar _clazz = require(\"../util/clazz\");\n\nvar enableClassManagement = _clazz.enableClassManagement;\nvar parseClassType = _clazz.parseClassType;\n\nvar _model = require(\"../util/model\");\n\nvar makeInner = _model.makeInner;\n\nvar layout = require(\"../util/layout\");\n\nvar boxLayoutMixin = require(\"./mixin/boxLayout\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Component model\n *\n * @module echarts/model/Component\n */\nvar inner = makeInner();\n/**\n * @alias module:echarts/model/Component\n * @constructor\n * @param {Object} option\n * @param {module:echarts/model/Model} parentModel\n * @param {module:echarts/model/Model} ecModel\n */\n\nvar ComponentModel = Model.extend({\n type: 'component',\n\n /**\n * @readOnly\n * @type {string}\n */\n id: '',\n\n /**\n * Because simplified concept is probably better, series.name (or component.name)\n * has been having too many resposibilities:\n * (1) Generating id (which requires name in option should not be modified).\n * (2) As an index to mapping series when merging option or calling API (a name\n * can refer to more then one components, which is convinient is some case).\n * (3) Display.\n * @readOnly\n */\n name: '',\n\n /**\n * @readOnly\n * @type {string}\n */\n mainType: '',\n\n /**\n * @readOnly\n * @type {string}\n */\n subType: '',\n\n /**\n * @readOnly\n * @type {number}\n */\n componentIndex: 0,\n\n /**\n * @type {Object}\n * @protected\n */\n defaultOption: null,\n\n /**\n * @type {module:echarts/model/Global}\n * @readOnly\n */\n ecModel: null,\n\n /**\n * key: componentType\n * value: Component model list, can not be null.\n * @type {Object.>}\n * @readOnly\n */\n dependentModels: [],\n\n /**\n * @type {string}\n * @readOnly\n */\n uid: null,\n\n /**\n * Support merge layout params.\n * Only support 'box' now (left/right/top/bottom/width/height).\n * @type {string|Object} Object can be {ignoreSize: true}\n * @readOnly\n */\n layoutMode: null,\n $constructor: function (option, parentModel, ecModel, extraOpt) {\n Model.call(this, option, parentModel, ecModel, extraOpt);\n this.uid = componentUtil.getUID('ec_cpt_model');\n },\n init: function (option, parentModel, ecModel, extraOpt) {\n this.mergeDefaultAndTheme(option, ecModel);\n },\n mergeDefaultAndTheme: function (option, ecModel) {\n var layoutMode = this.layoutMode;\n var inputPositionParams = layoutMode ? layout.getLayoutParams(option) : {};\n var themeModel = ecModel.getTheme();\n zrUtil.merge(option, themeModel.get(this.mainType));\n zrUtil.merge(option, this.getDefaultOption());\n\n if (layoutMode) {\n layout.mergeLayoutParam(option, inputPositionParams, layoutMode);\n }\n },\n mergeOption: function (option, extraOpt) {\n zrUtil.merge(this.option, option, true);\n var layoutMode = this.layoutMode;\n\n if (layoutMode) {\n layout.mergeLayoutParam(this.option, option, layoutMode);\n }\n },\n // Hooker after init or mergeOption\n optionUpdated: function (newCptOption, isInit) {},\n getDefaultOption: function () {\n var fields = inner(this);\n\n if (!fields.defaultOption) {\n var optList = [];\n var Class = this.constructor;\n\n while (Class) {\n var opt = Class.prototype.defaultOption;\n opt && optList.push(opt);\n Class = Class.superClass;\n }\n\n var defaultOption = {};\n\n for (var i = optList.length - 1; i >= 0; i--) {\n defaultOption = zrUtil.merge(defaultOption, optList[i], true);\n }\n\n fields.defaultOption = defaultOption;\n }\n\n return fields.defaultOption;\n },\n getReferringComponents: function (mainType) {\n return this.ecModel.queryComponents({\n mainType: mainType,\n index: this.get(mainType + 'Index', true),\n id: this.get(mainType + 'Id', true)\n });\n }\n}); // Reset ComponentModel.extend, add preConstruct.\n// clazzUtil.enableClassExtend(\n// ComponentModel,\n// function (option, parentModel, ecModel, extraOpt) {\n// // Set dependentModels, componentIndex, name, id, mainType, subType.\n// zrUtil.extend(this, extraOpt);\n// this.uid = componentUtil.getUID('componentModel');\n// // this.setReadOnly([\n// // 'type', 'id', 'uid', 'name', 'mainType', 'subType',\n// // 'dependentModels', 'componentIndex'\n// // ]);\n// }\n// );\n// Add capability of registerClass, getClass, hasClass, registerSubTypeDefaulter and so on.\n\nenableClassManagement(ComponentModel, {\n registerWhenExtend: true\n});\ncomponentUtil.enableSubTypeDefaulter(ComponentModel); // Add capability of ComponentModel.topologicalTravel.\n\ncomponentUtil.enableTopologicalTravel(ComponentModel, getDependencies);\n\nfunction getDependencies(componentType) {\n var deps = [];\n zrUtil.each(ComponentModel.getClassesByMainType(componentType), function (Clazz) {\n deps = deps.concat(Clazz.prototype.dependencies || []);\n }); // Ensure main type.\n\n deps = zrUtil.map(deps, function (type) {\n return parseClassType(type).main;\n }); // Hack dataset for convenience.\n\n if (componentType !== 'dataset' && zrUtil.indexOf(deps, 'dataset') <= 0) {\n deps.unshift('dataset');\n }\n\n return deps;\n}\n\nzrUtil.mixin(ComponentModel, boxLayoutMixin);\nvar _default = ComponentModel;\nmodule.exports = _default;","/**\n * @module zrender/core/util\n */\n// 用于处理merge时无法遍历Date等对象的问题\nvar BUILTIN_OBJECT = {\n '[object Function]': 1,\n '[object RegExp]': 1,\n '[object Date]': 1,\n '[object Error]': 1,\n '[object CanvasGradient]': 1,\n '[object CanvasPattern]': 1,\n // For node-canvas\n '[object Image]': 1,\n '[object Canvas]': 1\n};\nvar TYPED_ARRAY = {\n '[object Int8Array]': 1,\n '[object Uint8Array]': 1,\n '[object Uint8ClampedArray]': 1,\n '[object Int16Array]': 1,\n '[object Uint16Array]': 1,\n '[object Int32Array]': 1,\n '[object Uint32Array]': 1,\n '[object Float32Array]': 1,\n '[object Float64Array]': 1\n};\nvar objToString = Object.prototype.toString;\nvar arrayProto = Array.prototype;\nvar nativeForEach = arrayProto.forEach;\nvar nativeFilter = arrayProto.filter;\nvar nativeSlice = arrayProto.slice;\nvar nativeMap = arrayProto.map;\nvar nativeReduce = arrayProto.reduce; // Avoid assign to an exported variable, for transforming to cjs.\n\nvar methods = {};\n\nfunction $override(name, fn) {\n // Clear ctx instance for different environment\n if (name === 'createCanvas') {\n _ctx = null;\n }\n\n methods[name] = fn;\n}\n/**\n * Those data types can be cloned:\n * Plain object, Array, TypedArray, number, string, null, undefined.\n * Those data types will be assgined using the orginal data:\n * BUILTIN_OBJECT\n * Instance of user defined class will be cloned to a plain object, without\n * properties in prototype.\n * Other data types is not supported (not sure what will happen).\n *\n * Caution: do not support clone Date, for performance consideration.\n * (There might be a large number of date in `series.data`).\n * So date should not be modified in and out of echarts.\n *\n * @param {*} source\n * @return {*} new\n */\n\n\nfunction clone(source) {\n if (source == null || typeof source !== 'object') {\n return source;\n }\n\n var result = source;\n var typeStr = objToString.call(source);\n\n if (typeStr === '[object Array]') {\n if (!isPrimitive(source)) {\n result = [];\n\n for (var i = 0, len = source.length; i < len; i++) {\n result[i] = clone(source[i]);\n }\n }\n } else if (TYPED_ARRAY[typeStr]) {\n if (!isPrimitive(source)) {\n var Ctor = source.constructor;\n\n if (source.constructor.from) {\n result = Ctor.from(source);\n } else {\n result = new Ctor(source.length);\n\n for (var i = 0, len = source.length; i < len; i++) {\n result[i] = clone(source[i]);\n }\n }\n }\n } else if (!BUILTIN_OBJECT[typeStr] && !isPrimitive(source) && !isDom(source)) {\n result = {};\n\n for (var key in source) {\n if (source.hasOwnProperty(key)) {\n result[key] = clone(source[key]);\n }\n }\n }\n\n return result;\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {*} target\n * @param {*} source\n * @param {boolean} [overwrite=false]\n */\n\n\nfunction merge(target, source, overwrite) {\n // We should escapse that source is string\n // and enter for ... in ...\n if (!isObject(source) || !isObject(target)) {\n return overwrite ? clone(source) : target;\n }\n\n for (var key in source) {\n if (source.hasOwnProperty(key)) {\n var targetProp = target[key];\n var sourceProp = source[key];\n\n if (isObject(sourceProp) && isObject(targetProp) && !isArray(sourceProp) && !isArray(targetProp) && !isDom(sourceProp) && !isDom(targetProp) && !isBuiltInObject(sourceProp) && !isBuiltInObject(targetProp) && !isPrimitive(sourceProp) && !isPrimitive(targetProp)) {\n // 如果需要递归覆盖,就递归调用merge\n merge(targetProp, sourceProp, overwrite);\n } else if (overwrite || !(key in target)) {\n // 否则只处理overwrite为true,或者在目标对象中没有此属性的情况\n // NOTE,在 target[key] 不存在的时候也是直接覆盖\n target[key] = clone(source[key], true);\n }\n }\n }\n\n return target;\n}\n/**\n * @param {Array} targetAndSources The first item is target, and the rests are source.\n * @param {boolean} [overwrite=false]\n * @return {*} target\n */\n\n\nfunction mergeAll(targetAndSources, overwrite) {\n var result = targetAndSources[0];\n\n for (var i = 1, len = targetAndSources.length; i < len; i++) {\n result = merge(result, targetAndSources[i], overwrite);\n }\n\n return result;\n}\n/**\n * @param {*} target\n * @param {*} source\n * @memberOf module:zrender/core/util\n */\n\n\nfunction extend(target, source) {\n for (var key in source) {\n if (source.hasOwnProperty(key)) {\n target[key] = source[key];\n }\n }\n\n return target;\n}\n/**\n * @param {*} target\n * @param {*} source\n * @param {boolean} [overlay=false]\n * @memberOf module:zrender/core/util\n */\n\n\nfunction defaults(target, source, overlay) {\n for (var key in source) {\n if (source.hasOwnProperty(key) && (overlay ? source[key] != null : target[key] == null)) {\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nvar createCanvas = function () {\n return methods.createCanvas();\n};\n\nmethods.createCanvas = function () {\n return document.createElement('canvas');\n}; // FIXME\n\n\nvar _ctx;\n\nfunction getContext() {\n if (!_ctx) {\n // Use util.createCanvas instead of createCanvas\n // because createCanvas may be overwritten in different environment\n _ctx = createCanvas().getContext('2d');\n }\n\n return _ctx;\n}\n/**\n * 查询数组中元素的index\n * @memberOf module:zrender/core/util\n */\n\n\nfunction indexOf(array, value) {\n if (array) {\n if (array.indexOf) {\n return array.indexOf(value);\n }\n\n for (var i = 0, len = array.length; i < len; i++) {\n if (array[i] === value) {\n return i;\n }\n }\n }\n\n return -1;\n}\n/**\n * 构造类继承关系\n *\n * @memberOf module:zrender/core/util\n * @param {Function} clazz 源类\n * @param {Function} baseClazz 基类\n */\n\n\nfunction inherits(clazz, baseClazz) {\n var clazzPrototype = clazz.prototype;\n\n function F() {}\n\n F.prototype = baseClazz.prototype;\n clazz.prototype = new F();\n\n for (var prop in clazzPrototype) {\n if (clazzPrototype.hasOwnProperty(prop)) {\n clazz.prototype[prop] = clazzPrototype[prop];\n }\n }\n\n clazz.prototype.constructor = clazz;\n clazz.superClass = baseClazz;\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {Object|Function} target\n * @param {Object|Function} sorce\n * @param {boolean} overlay\n */\n\n\nfunction mixin(target, source, overlay) {\n target = 'prototype' in target ? target.prototype : target;\n source = 'prototype' in source ? source.prototype : source;\n defaults(target, source, overlay);\n}\n/**\n * Consider typed array.\n * @param {Array|TypedArray} data\n */\n\n\nfunction isArrayLike(data) {\n if (!data) {\n return;\n }\n\n if (typeof data === 'string') {\n return false;\n }\n\n return typeof data.length === 'number';\n}\n/**\n * 数组或对象遍历\n * @memberOf module:zrender/core/util\n * @param {Object|Array} obj\n * @param {Function} cb\n * @param {*} [context]\n */\n\n\nfunction each(obj, cb, context) {\n if (!(obj && cb)) {\n return;\n }\n\n if (obj.forEach && obj.forEach === nativeForEach) {\n obj.forEach(cb, context);\n } else if (obj.length === +obj.length) {\n for (var i = 0, len = obj.length; i < len; i++) {\n cb.call(context, obj[i], i, obj);\n }\n } else {\n for (var key in obj) {\n if (obj.hasOwnProperty(key)) {\n cb.call(context, obj[key], key, obj);\n }\n }\n }\n}\n/**\n * 数组映射\n * @memberOf module:zrender/core/util\n * @param {Array} obj\n * @param {Function} cb\n * @param {*} [context]\n * @return {Array}\n */\n\n\nfunction map(obj, cb, context) {\n if (!(obj && cb)) {\n return;\n }\n\n if (obj.map && obj.map === nativeMap) {\n return obj.map(cb, context);\n } else {\n var result = [];\n\n for (var i = 0, len = obj.length; i < len; i++) {\n result.push(cb.call(context, obj[i], i, obj));\n }\n\n return result;\n }\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {Array} obj\n * @param {Function} cb\n * @param {Object} [memo]\n * @param {*} [context]\n * @return {Array}\n */\n\n\nfunction reduce(obj, cb, memo, context) {\n if (!(obj && cb)) {\n return;\n }\n\n if (obj.reduce && obj.reduce === nativeReduce) {\n return obj.reduce(cb, memo, context);\n } else {\n for (var i = 0, len = obj.length; i < len; i++) {\n memo = cb.call(context, memo, obj[i], i, obj);\n }\n\n return memo;\n }\n}\n/**\n * 数组过滤\n * @memberOf module:zrender/core/util\n * @param {Array} obj\n * @param {Function} cb\n * @param {*} [context]\n * @return {Array}\n */\n\n\nfunction filter(obj, cb, context) {\n if (!(obj && cb)) {\n return;\n }\n\n if (obj.filter && obj.filter === nativeFilter) {\n return obj.filter(cb, context);\n } else {\n var result = [];\n\n for (var i = 0, len = obj.length; i < len; i++) {\n if (cb.call(context, obj[i], i, obj)) {\n result.push(obj[i]);\n }\n }\n\n return result;\n }\n}\n/**\n * 数组项查找\n * @memberOf module:zrender/core/util\n * @param {Array} obj\n * @param {Function} cb\n * @param {*} [context]\n * @return {*}\n */\n\n\nfunction find(obj, cb, context) {\n if (!(obj && cb)) {\n return;\n }\n\n for (var i = 0, len = obj.length; i < len; i++) {\n if (cb.call(context, obj[i], i, obj)) {\n return obj[i];\n }\n }\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {Function} func\n * @param {*} context\n * @return {Function}\n */\n\n\nfunction bind(func, context) {\n var args = nativeSlice.call(arguments, 2);\n return function () {\n return func.apply(context, args.concat(nativeSlice.call(arguments)));\n };\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {Function} func\n * @return {Function}\n */\n\n\nfunction curry(func) {\n var args = nativeSlice.call(arguments, 1);\n return function () {\n return func.apply(this, args.concat(nativeSlice.call(arguments)));\n };\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {*} value\n * @return {boolean}\n */\n\n\nfunction isArray(value) {\n return objToString.call(value) === '[object Array]';\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {*} value\n * @return {boolean}\n */\n\n\nfunction isFunction(value) {\n return typeof value === 'function';\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {*} value\n * @return {boolean}\n */\n\n\nfunction isString(value) {\n return objToString.call(value) === '[object String]';\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {*} value\n * @return {boolean}\n */\n\n\nfunction isObject(value) {\n // Avoid a V8 JIT bug in Chrome 19-20.\n // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.\n var type = typeof value;\n return type === 'function' || !!value && type === 'object';\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {*} value\n * @return {boolean}\n */\n\n\nfunction isBuiltInObject(value) {\n return !!BUILTIN_OBJECT[objToString.call(value)];\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {*} value\n * @return {boolean}\n */\n\n\nfunction isTypedArray(value) {\n return !!TYPED_ARRAY[objToString.call(value)];\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {*} value\n * @return {boolean}\n */\n\n\nfunction isDom(value) {\n return typeof value === 'object' && typeof value.nodeType === 'number' && typeof value.ownerDocument === 'object';\n}\n/**\n * Whether is exactly NaN. Notice isNaN('a') returns true.\n * @param {*} value\n * @return {boolean}\n */\n\n\nfunction eqNaN(value) {\n /* eslint-disable-next-line no-self-compare */\n return value !== value;\n}\n/**\n * If value1 is not null, then return value1, otherwise judget rest of values.\n * Low performance.\n * @memberOf module:zrender/core/util\n * @return {*} Final value\n */\n\n\nfunction retrieve(values) {\n for (var i = 0, len = arguments.length; i < len; i++) {\n if (arguments[i] != null) {\n return arguments[i];\n }\n }\n}\n\nfunction retrieve2(value0, value1) {\n return value0 != null ? value0 : value1;\n}\n\nfunction retrieve3(value0, value1, value2) {\n return value0 != null ? value0 : value1 != null ? value1 : value2;\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {Array} arr\n * @param {number} startIndex\n * @param {number} endIndex\n * @return {Array}\n */\n\n\nfunction slice() {\n return Function.call.apply(nativeSlice, arguments);\n}\n/**\n * Normalize css liked array configuration\n * e.g.\n * 3 => [3, 3, 3, 3]\n * [4, 2] => [4, 2, 4, 2]\n * [4, 3, 2] => [4, 3, 2, 3]\n * @param {number|Array.} val\n * @return {Array.}\n */\n\n\nfunction normalizeCssArray(val) {\n if (typeof val === 'number') {\n return [val, val, val, val];\n }\n\n var len = val.length;\n\n if (len === 2) {\n // vertical | horizontal\n return [val[0], val[1], val[0], val[1]];\n } else if (len === 3) {\n // top | horizontal | bottom\n return [val[0], val[1], val[2], val[1]];\n }\n\n return val;\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {boolean} condition\n * @param {string} message\n */\n\n\nfunction assert(condition, message) {\n if (!condition) {\n throw new Error(message);\n }\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {string} str string to be trimed\n * @return {string} trimed string\n */\n\n\nfunction trim(str) {\n if (str == null) {\n return null;\n } else if (typeof str.trim === 'function') {\n return str.trim();\n } else {\n return str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n }\n}\n\nvar primitiveKey = '__ec_primitive__';\n/**\n * Set an object as primitive to be ignored traversing children in clone or merge\n */\n\nfunction setAsPrimitive(obj) {\n obj[primitiveKey] = true;\n}\n\nfunction isPrimitive(obj) {\n return obj[primitiveKey];\n}\n/**\n * @constructor\n * @param {Object} obj Only apply `ownProperty`.\n */\n\n\nfunction HashMap(obj) {\n var isArr = isArray(obj); // Key should not be set on this, otherwise\n // methods get/set/... may be overrided.\n\n this.data = {};\n var thisMap = this;\n obj instanceof HashMap ? obj.each(visit) : obj && each(obj, visit);\n\n function visit(value, key) {\n isArr ? thisMap.set(value, key) : thisMap.set(key, value);\n }\n}\n\nHashMap.prototype = {\n constructor: HashMap,\n // Do not provide `has` method to avoid defining what is `has`.\n // (We usually treat `null` and `undefined` as the same, different\n // from ES6 Map).\n get: function (key) {\n return this.data.hasOwnProperty(key) ? this.data[key] : null;\n },\n set: function (key, value) {\n // Comparing with invocation chaining, `return value` is more commonly\n // used in this case: `var someVal = map.set('a', genVal());`\n return this.data[key] = value;\n },\n // Although util.each can be performed on this hashMap directly, user\n // should not use the exposed keys, who are prefixed.\n each: function (cb, context) {\n context !== void 0 && (cb = bind(cb, context));\n /* eslint-disable guard-for-in */\n\n for (var key in this.data) {\n this.data.hasOwnProperty(key) && cb(this.data[key], key);\n }\n /* eslint-enable guard-for-in */\n\n },\n // Do not use this method if performance sensitive.\n removeKey: function (key) {\n delete this.data[key];\n }\n};\n\nfunction createHashMap(obj) {\n return new HashMap(obj);\n}\n\nfunction concatArray(a, b) {\n var newArray = new a.constructor(a.length + b.length);\n\n for (var i = 0; i < a.length; i++) {\n newArray[i] = a[i];\n }\n\n var offset = a.length;\n\n for (i = 0; i < b.length; i++) {\n newArray[i + offset] = b[i];\n }\n\n return newArray;\n}\n\nfunction noop() {}\n\nexports.$override = $override;\nexports.clone = clone;\nexports.merge = merge;\nexports.mergeAll = mergeAll;\nexports.extend = extend;\nexports.defaults = defaults;\nexports.createCanvas = createCanvas;\nexports.getContext = getContext;\nexports.indexOf = indexOf;\nexports.inherits = inherits;\nexports.mixin = mixin;\nexports.isArrayLike = isArrayLike;\nexports.each = each;\nexports.map = map;\nexports.reduce = reduce;\nexports.filter = filter;\nexports.find = find;\nexports.bind = bind;\nexports.curry = curry;\nexports.isArray = isArray;\nexports.isFunction = isFunction;\nexports.isString = isString;\nexports.isObject = isObject;\nexports.isBuiltInObject = isBuiltInObject;\nexports.isTypedArray = isTypedArray;\nexports.isDom = isDom;\nexports.eqNaN = eqNaN;\nexports.retrieve = retrieve;\nexports.retrieve2 = retrieve2;\nexports.retrieve3 = retrieve3;\nexports.slice = slice;\nexports.normalizeCssArray = normalizeCssArray;\nexports.assert = assert;\nexports.trim = trim;\nexports.setAsPrimitive = setAsPrimitive;\nexports.isPrimitive = isPrimitive;\nexports.createHashMap = createHashMap;\nexports.concatArray = concatArray;\nexports.noop = noop;","\"use strict\";\nif (typeof Object.assign !== \"function\") {\n Object.assign = function (target) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (!target) {\n throw TypeError(\"Cannot convert undefined or null to object\");\n }\n var _loop_1 = function (source) {\n if (source) {\n Object.keys(source).forEach(function (key) { return (target[key] = source[key]); });\n }\n };\n for (var _a = 0, args_1 = args; _a < args_1.length; _a++) {\n var source = args_1[_a];\n _loop_1(source);\n }\n return target;\n };\n}\n","/**\n * 缓动代码来自 https://github.com/sole/tween.js/blob/master/src/Tween.js\n * @see http://sole.github.io/tween.js/examples/03_graphs.html\n * @exports zrender/animation/easing\n */\nvar easing = {\n /**\n * @param {number} k\n * @return {number}\n */\n linear: function (k) {\n return k;\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n quadraticIn: function (k) {\n return k * k;\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n quadraticOut: function (k) {\n return k * (2 - k);\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n quadraticInOut: function (k) {\n if ((k *= 2) < 1) {\n return 0.5 * k * k;\n }\n\n return -0.5 * (--k * (k - 2) - 1);\n },\n // 三次方的缓动(t^3)\n\n /**\n * @param {number} k\n * @return {number}\n */\n cubicIn: function (k) {\n return k * k * k;\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n cubicOut: function (k) {\n return --k * k * k + 1;\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n cubicInOut: function (k) {\n if ((k *= 2) < 1) {\n return 0.5 * k * k * k;\n }\n\n return 0.5 * ((k -= 2) * k * k + 2);\n },\n // 四次方的缓动(t^4)\n\n /**\n * @param {number} k\n * @return {number}\n */\n quarticIn: function (k) {\n return k * k * k * k;\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n quarticOut: function (k) {\n return 1 - --k * k * k * k;\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n quarticInOut: function (k) {\n if ((k *= 2) < 1) {\n return 0.5 * k * k * k * k;\n }\n\n return -0.5 * ((k -= 2) * k * k * k - 2);\n },\n // 五次方的缓动(t^5)\n\n /**\n * @param {number} k\n * @return {number}\n */\n quinticIn: function (k) {\n return k * k * k * k * k;\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n quinticOut: function (k) {\n return --k * k * k * k * k + 1;\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n quinticInOut: function (k) {\n if ((k *= 2) < 1) {\n return 0.5 * k * k * k * k * k;\n }\n\n return 0.5 * ((k -= 2) * k * k * k * k + 2);\n },\n // 正弦曲线的缓动(sin(t))\n\n /**\n * @param {number} k\n * @return {number}\n */\n sinusoidalIn: function (k) {\n return 1 - Math.cos(k * Math.PI / 2);\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n sinusoidalOut: function (k) {\n return Math.sin(k * Math.PI / 2);\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n sinusoidalInOut: function (k) {\n return 0.5 * (1 - Math.cos(Math.PI * k));\n },\n // 指数曲线的缓动(2^t)\n\n /**\n * @param {number} k\n * @return {number}\n */\n exponentialIn: function (k) {\n return k === 0 ? 0 : Math.pow(1024, k - 1);\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n exponentialOut: function (k) {\n return k === 1 ? 1 : 1 - Math.pow(2, -10 * k);\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n exponentialInOut: function (k) {\n if (k === 0) {\n return 0;\n }\n\n if (k === 1) {\n return 1;\n }\n\n if ((k *= 2) < 1) {\n return 0.5 * Math.pow(1024, k - 1);\n }\n\n return 0.5 * (-Math.pow(2, -10 * (k - 1)) + 2);\n },\n // 圆形曲线的缓动(sqrt(1-t^2))\n\n /**\n * @param {number} k\n * @return {number}\n */\n circularIn: function (k) {\n return 1 - Math.sqrt(1 - k * k);\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n circularOut: function (k) {\n return Math.sqrt(1 - --k * k);\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n circularInOut: function (k) {\n if ((k *= 2) < 1) {\n return -0.5 * (Math.sqrt(1 - k * k) - 1);\n }\n\n return 0.5 * (Math.sqrt(1 - (k -= 2) * k) + 1);\n },\n // 创建类似于弹簧在停止前来回振荡的动画\n\n /**\n * @param {number} k\n * @return {number}\n */\n elasticIn: function (k) {\n var s;\n var a = 0.1;\n var p = 0.4;\n\n if (k === 0) {\n return 0;\n }\n\n if (k === 1) {\n return 1;\n }\n\n if (!a || a < 1) {\n a = 1;\n s = p / 4;\n } else {\n s = p * Math.asin(1 / a) / (2 * Math.PI);\n }\n\n return -(a * Math.pow(2, 10 * (k -= 1)) * Math.sin((k - s) * (2 * Math.PI) / p));\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n elasticOut: function (k) {\n var s;\n var a = 0.1;\n var p = 0.4;\n\n if (k === 0) {\n return 0;\n }\n\n if (k === 1) {\n return 1;\n }\n\n if (!a || a < 1) {\n a = 1;\n s = p / 4;\n } else {\n s = p * Math.asin(1 / a) / (2 * Math.PI);\n }\n\n return a * Math.pow(2, -10 * k) * Math.sin((k - s) * (2 * Math.PI) / p) + 1;\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n elasticInOut: function (k) {\n var s;\n var a = 0.1;\n var p = 0.4;\n\n if (k === 0) {\n return 0;\n }\n\n if (k === 1) {\n return 1;\n }\n\n if (!a || a < 1) {\n a = 1;\n s = p / 4;\n } else {\n s = p * Math.asin(1 / a) / (2 * Math.PI);\n }\n\n if ((k *= 2) < 1) {\n return -0.5 * (a * Math.pow(2, 10 * (k -= 1)) * Math.sin((k - s) * (2 * Math.PI) / p));\n }\n\n return a * Math.pow(2, -10 * (k -= 1)) * Math.sin((k - s) * (2 * Math.PI) / p) * 0.5 + 1;\n },\n // 在某一动画开始沿指示的路径进行动画处理前稍稍收回该动画的移动\n\n /**\n * @param {number} k\n * @return {number}\n */\n backIn: function (k) {\n var s = 1.70158;\n return k * k * ((s + 1) * k - s);\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n backOut: function (k) {\n var s = 1.70158;\n return --k * k * ((s + 1) * k + s) + 1;\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n backInOut: function (k) {\n var s = 1.70158 * 1.525;\n\n if ((k *= 2) < 1) {\n return 0.5 * (k * k * ((s + 1) * k - s));\n }\n\n return 0.5 * ((k -= 2) * k * ((s + 1) * k + s) + 2);\n },\n // 创建弹跳效果\n\n /**\n * @param {number} k\n * @return {number}\n */\n bounceIn: function (k) {\n return 1 - easing.bounceOut(1 - k);\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n bounceOut: function (k) {\n if (k < 1 / 2.75) {\n return 7.5625 * k * k;\n } else if (k < 2 / 2.75) {\n return 7.5625 * (k -= 1.5 / 2.75) * k + 0.75;\n } else if (k < 2.5 / 2.75) {\n return 7.5625 * (k -= 2.25 / 2.75) * k + 0.9375;\n } else {\n return 7.5625 * (k -= 2.625 / 2.75) * k + 0.984375;\n }\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n bounceInOut: function (k) {\n if (k < 0.5) {\n return easing.bounceIn(k * 2) * 0.5;\n }\n\n return easing.bounceOut(k * 2 - 1) * 0.5 + 0.5;\n }\n};\nvar _default = easing;\nmodule.exports = _default;","var Displayable = require(\"./Displayable\");\n\nvar zrUtil = require(\"../core/util\");\n\nvar textContain = require(\"../contain/text\");\n\nvar textHelper = require(\"./helper/text\");\n\nvar _constant = require(\"./constant\");\n\nvar ContextCachedBy = _constant.ContextCachedBy;\n\n/**\n * @alias zrender/graphic/Text\n * @extends module:zrender/graphic/Displayable\n * @constructor\n * @param {Object} opts\n */\nvar Text = function (opts) {\n // jshint ignore:line\n Displayable.call(this, opts);\n};\n\nText.prototype = {\n constructor: Text,\n type: 'text',\n brush: function (ctx, prevEl) {\n var style = this.style; // Optimize, avoid normalize every time.\n\n this.__dirty && textHelper.normalizeTextStyle(style, true); // Use props with prefix 'text'.\n\n style.fill = style.stroke = style.shadowBlur = style.shadowColor = style.shadowOffsetX = style.shadowOffsetY = null;\n var text = style.text; // Convert to string\n\n text != null && (text += ''); // Do not apply style.bind in Text node. Because the real bind job\n // is in textHelper.renderText, and performance of text render should\n // be considered.\n // style.bind(ctx, this, prevEl);\n\n if (!textHelper.needDrawText(text, style)) {\n // The current el.style is not applied\n // and should not be used as cache.\n ctx.__attrCachedBy = ContextCachedBy.NONE;\n return;\n }\n\n this.setTransform(ctx);\n textHelper.renderText(this, ctx, text, style, null, prevEl);\n this.restoreTransform(ctx);\n },\n getBoundingRect: function () {\n var style = this.style; // Optimize, avoid normalize every time.\n\n this.__dirty && textHelper.normalizeTextStyle(style, true);\n\n if (!this._rect) {\n var text = style.text;\n text != null ? text += '' : text = '';\n var rect = textContain.getBoundingRect(style.text + '', style.font, style.textAlign, style.textVerticalAlign, style.textPadding, style.textLineHeight, style.rich);\n rect.x += style.x || 0;\n rect.y += style.y || 0;\n\n if (textHelper.getStroke(style.textStroke, style.textStrokeWidth)) {\n var w = style.textStrokeWidth;\n rect.x -= w / 2;\n rect.y -= w / 2;\n rect.width += w;\n rect.height += w;\n }\n\n this._rect = rect;\n }\n\n return this._rect;\n }\n};\nzrUtil.inherits(Text, Displayable);\nvar _default = Text;\nmodule.exports = _default;","/**\n * vee-validate v3.4.5\n * (c) 2020 Abdelrahman Awad\n * @license MIT\n */\nimport Vue from 'vue';\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nfunction __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nfunction __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\n\nfunction isNaN(value) {\r\n // NaN is the one value that does not equal itself.\r\n // eslint-disable-next-line\r\n return value !== value;\r\n}\r\nfunction isNullOrUndefined(value) {\r\n return value === null || value === undefined;\r\n}\r\nfunction isEmptyArray(arr) {\r\n return Array.isArray(arr) && arr.length === 0;\r\n}\r\nvar isObject = function (obj) {\r\n return obj !== null && obj && typeof obj === 'object' && !Array.isArray(obj);\r\n};\r\n/**\r\n * A reference comparison function with NaN support\r\n */\r\nfunction isRefEqual(lhs, rhs) {\r\n if (isNaN(lhs) && isNaN(rhs)) {\r\n return true;\r\n }\r\n return lhs === rhs;\r\n}\r\n/**\r\n * Shallow object comparison.\r\n */\r\nfunction isEqual(lhs, rhs) {\r\n if (lhs instanceof RegExp && rhs instanceof RegExp) {\r\n return isEqual(lhs.source, rhs.source) && isEqual(lhs.flags, rhs.flags);\r\n }\r\n if (Array.isArray(lhs) && Array.isArray(rhs)) {\r\n if (lhs.length !== rhs.length)\r\n return false;\r\n for (var i = 0; i < lhs.length; i++) {\r\n if (!isEqual(lhs[i], rhs[i])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n // if both are objects, compare each key recursively.\r\n if (isObject(lhs) && isObject(rhs)) {\r\n return (Object.keys(lhs).every(function (key) {\r\n return isEqual(lhs[key], rhs[key]);\r\n }) &&\r\n Object.keys(rhs).every(function (key) {\r\n return isEqual(lhs[key], rhs[key]);\r\n }));\r\n }\r\n return isRefEqual(lhs, rhs);\r\n}\r\n// Checks if a given value is not an empty string or null or undefined.\r\nfunction isSpecified(val) {\r\n if (val === '') {\r\n return false;\r\n }\r\n return !isNullOrUndefined(val);\r\n}\r\nfunction isCallable(fn) {\r\n return typeof fn === 'function';\r\n}\r\nfunction isLocator(value) {\r\n return isCallable(value) && !!value.__locatorRef;\r\n}\n\nfunction findIndex(arrayLike, predicate) {\r\n var array = Array.isArray(arrayLike) ? arrayLike : toArray(arrayLike);\r\n if (isCallable(array.findIndex)) {\r\n return array.findIndex(predicate);\r\n }\r\n /* istanbul ignore next */\r\n for (var i = 0; i < array.length; i++) {\r\n if (predicate(array[i], i)) {\r\n return i;\r\n }\r\n }\r\n /* istanbul ignore next */\r\n return -1;\r\n}\r\n/**\r\n * finds the first element that satisfies the predicate callback, polyfills array.find\r\n */\r\nfunction find(arrayLike, predicate) {\r\n var array = Array.isArray(arrayLike) ? arrayLike : toArray(arrayLike);\r\n var idx = findIndex(array, predicate);\r\n return idx === -1 ? undefined : array[idx];\r\n}\r\nfunction includes(collection, item) {\r\n return collection.indexOf(item) !== -1;\r\n}\r\n/**\r\n * Converts an array-like object to array, provides a simple polyfill for Array.from\r\n */\r\nfunction toArray(arrayLike) {\r\n if (isCallable(Array.from)) {\r\n return Array.from(arrayLike);\r\n }\r\n /* istanbul ignore next */\r\n return _copyArray(arrayLike);\r\n}\r\n/* istanbul ignore next */\r\nfunction _copyArray(arrayLike) {\r\n var array = [];\r\n var length = arrayLike.length;\r\n for (var i = 0; i < length; i++) {\r\n array.push(arrayLike[i]);\r\n }\r\n return array;\r\n}\r\nfunction values(obj) {\r\n if (isCallable(Object.values)) {\r\n return Object.values(obj);\r\n }\r\n // fallback to keys()\r\n /* istanbul ignore next */\r\n return Object.keys(obj).map(function (k) { return obj[k]; });\r\n}\r\nfunction merge(target, source) {\r\n Object.keys(source).forEach(function (key) {\r\n if (isObject(source[key])) {\r\n if (!target[key]) {\r\n target[key] = {};\r\n }\r\n merge(target[key], source[key]);\r\n return;\r\n }\r\n target[key] = source[key];\r\n });\r\n return target;\r\n}\n\nfunction createFlags() {\r\n return {\r\n untouched: true,\r\n touched: false,\r\n dirty: false,\r\n pristine: true,\r\n valid: false,\r\n invalid: false,\r\n validated: false,\r\n pending: false,\r\n required: false,\r\n changed: false,\r\n passed: false,\r\n failed: false\r\n };\r\n}\n\nfunction identity(x) {\r\n return x;\r\n}\r\nfunction debounce(fn, wait, token) {\r\n if (wait === void 0) { wait = 0; }\r\n if (token === void 0) { token = { cancelled: false }; }\r\n if (wait === 0) {\r\n return fn;\r\n }\r\n var timeout;\r\n return function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n var later = function () {\r\n timeout = undefined;\r\n // check if the fn call was cancelled.\r\n if (!token.cancelled)\r\n fn.apply(void 0, args);\r\n };\r\n // because we might want to use Node.js setTimout for SSR.\r\n clearTimeout(timeout);\r\n timeout = setTimeout(later, wait);\r\n };\r\n}\n\n/**\r\n * Emits a warning to the console\r\n */\r\nfunction warn(message) {\r\n console.warn(\"[vee-validate] \" + message);\r\n}\r\n/**\r\n * Replaces placeholder values in a string with their actual values\r\n */\r\nfunction interpolate(template, values) {\r\n return template.replace(/{([^}]+)}/g, function (_, p) {\r\n return p in values ? values[p] : \"{\" + p + \"}\";\r\n });\r\n}\n\nvar RULES = {};\r\nfunction normalizeSchema(schema) {\r\n var _a;\r\n if ((_a = schema.params) === null || _a === void 0 ? void 0 : _a.length) {\r\n schema.params = schema.params.map(function (param) {\r\n if (typeof param === 'string') {\r\n return { name: param };\r\n }\r\n return param;\r\n });\r\n }\r\n return schema;\r\n}\r\nvar RuleContainer = /** @class */ (function () {\r\n function RuleContainer() {\r\n }\r\n RuleContainer.extend = function (name, schema) {\r\n // if rule already exists, overwrite it.\r\n var rule = normalizeSchema(schema);\r\n if (RULES[name]) {\r\n RULES[name] = merge(RULES[name], schema);\r\n return;\r\n }\r\n RULES[name] = __assign({ lazy: false, computesRequired: false }, rule);\r\n };\r\n RuleContainer.isLazy = function (name) {\r\n var _a;\r\n return !!((_a = RULES[name]) === null || _a === void 0 ? void 0 : _a.lazy);\r\n };\r\n RuleContainer.isRequireRule = function (name) {\r\n var _a;\r\n return !!((_a = RULES[name]) === null || _a === void 0 ? void 0 : _a.computesRequired);\r\n };\r\n RuleContainer.getRuleDefinition = function (ruleName) {\r\n return RULES[ruleName];\r\n };\r\n return RuleContainer;\r\n}());\r\n/**\r\n * Adds a custom validator to the list of validation rules.\r\n */\r\nfunction extend(name, schema) {\r\n // makes sure new rules are properly formatted.\r\n guardExtend(name, schema);\r\n // Full schema object.\r\n if (typeof schema === 'object') {\r\n RuleContainer.extend(name, schema);\r\n return;\r\n }\r\n RuleContainer.extend(name, {\r\n validate: schema\r\n });\r\n}\r\n/**\r\n * Guards from extension violations.\r\n */\r\nfunction guardExtend(name, validator) {\r\n if (isCallable(validator)) {\r\n return;\r\n }\r\n if (isCallable(validator.validate)) {\r\n return;\r\n }\r\n if (RuleContainer.getRuleDefinition(name)) {\r\n return;\r\n }\r\n throw new Error(\"Extension Error: The validator '\" + name + \"' must be a function or have a 'validate' method.\");\r\n}\n\nvar DEFAULT_CONFIG = {\r\n defaultMessage: \"{_field_} is not valid.\",\r\n skipOptional: true,\r\n classes: {\r\n touched: 'touched',\r\n untouched: 'untouched',\r\n valid: 'valid',\r\n invalid: 'invalid',\r\n pristine: 'pristine',\r\n dirty: 'dirty' // control has been interacted with\r\n },\r\n bails: true,\r\n mode: 'aggressive',\r\n useConstraintAttrs: true\r\n};\r\nvar currentConfig = __assign({}, DEFAULT_CONFIG);\r\nvar getConfig = function () { return currentConfig; };\r\nvar setConfig = function (newConf) {\r\n currentConfig = __assign(__assign({}, currentConfig), newConf);\r\n};\r\nvar configure = function (cfg) {\r\n setConfig(cfg);\r\n};\n\n/**\r\n * Normalizes the given rules expression.\r\n */\r\nfunction normalizeRules(rules) {\r\n // if falsy value return an empty object.\r\n var acc = {};\r\n Object.defineProperty(acc, '_$$isNormalized', {\r\n value: true,\r\n writable: false,\r\n enumerable: false,\r\n configurable: false\r\n });\r\n if (!rules) {\r\n return acc;\r\n }\r\n // Object is already normalized, skip.\r\n if (isObject(rules) && rules._$$isNormalized) {\r\n return rules;\r\n }\r\n if (isObject(rules)) {\r\n return Object.keys(rules).reduce(function (prev, curr) {\r\n var params = [];\r\n if (rules[curr] === true) {\r\n params = [];\r\n }\r\n else if (Array.isArray(rules[curr])) {\r\n params = rules[curr];\r\n }\r\n else if (isObject(rules[curr])) {\r\n params = rules[curr];\r\n }\r\n else {\r\n params = [rules[curr]];\r\n }\r\n if (rules[curr] !== false) {\r\n prev[curr] = buildParams(curr, params);\r\n }\r\n return prev;\r\n }, acc);\r\n }\r\n /* istanbul ignore if */\r\n if (typeof rules !== 'string') {\r\n warn('rules must be either a string or an object.');\r\n return acc;\r\n }\r\n return rules.split('|').reduce(function (prev, rule) {\r\n var parsedRule = parseRule(rule);\r\n if (!parsedRule.name) {\r\n return prev;\r\n }\r\n prev[parsedRule.name] = buildParams(parsedRule.name, parsedRule.params);\r\n return prev;\r\n }, acc);\r\n}\r\nfunction buildParams(ruleName, provided) {\r\n var ruleSchema = RuleContainer.getRuleDefinition(ruleName);\r\n if (!ruleSchema) {\r\n return provided;\r\n }\r\n var params = {};\r\n if (!ruleSchema.params && !Array.isArray(provided)) {\r\n throw new Error('You provided an object params to a rule that has no defined schema.');\r\n }\r\n // Rule probably uses an array for their args, keep it as is.\r\n if (Array.isArray(provided) && !ruleSchema.params) {\r\n return provided;\r\n }\r\n var definedParams;\r\n // collect the params schema.\r\n if (!ruleSchema.params || (ruleSchema.params.length < provided.length && Array.isArray(provided))) {\r\n var lastDefinedParam_1;\r\n // collect any additional parameters in the last item.\r\n definedParams = provided.map(function (_, idx) {\r\n var _a;\r\n var param = (_a = ruleSchema.params) === null || _a === void 0 ? void 0 : _a[idx];\r\n lastDefinedParam_1 = param || lastDefinedParam_1;\r\n if (!param) {\r\n param = lastDefinedParam_1;\r\n }\r\n return param;\r\n });\r\n }\r\n else {\r\n definedParams = ruleSchema.params;\r\n }\r\n // Match the provided array length with a temporary schema.\r\n for (var i = 0; i < definedParams.length; i++) {\r\n var options = definedParams[i];\r\n var value = options.default;\r\n // if the provided is an array, map element value.\r\n if (Array.isArray(provided)) {\r\n if (i in provided) {\r\n value = provided[i];\r\n }\r\n }\r\n else {\r\n // If the param exists in the provided object.\r\n if (options.name in provided) {\r\n value = provided[options.name];\r\n // if the provided is the first param value.\r\n }\r\n else if (definedParams.length === 1) {\r\n value = provided;\r\n }\r\n }\r\n // if the param is a target, resolve the target value.\r\n if (options.isTarget) {\r\n value = createLocator(value, options.cast);\r\n }\r\n // A target param using interpolation\r\n if (typeof value === 'string' && value[0] === '@') {\r\n value = createLocator(value.slice(1), options.cast);\r\n }\r\n // If there is a transformer defined.\r\n if (!isLocator(value) && options.cast) {\r\n value = options.cast(value);\r\n }\r\n // already been set, probably multiple values.\r\n if (params[options.name]) {\r\n params[options.name] = Array.isArray(params[options.name]) ? params[options.name] : [params[options.name]];\r\n params[options.name].push(value);\r\n }\r\n else {\r\n // set the value.\r\n params[options.name] = value;\r\n }\r\n }\r\n return params;\r\n}\r\n/**\r\n * Parses a rule string expression.\r\n */\r\nvar parseRule = function (rule) {\r\n var params = [];\r\n var name = rule.split(':')[0];\r\n if (includes(rule, ':')) {\r\n params = rule\r\n .split(':')\r\n .slice(1)\r\n .join(':')\r\n .split(',');\r\n }\r\n return { name: name, params: params };\r\n};\r\nfunction createLocator(value, castFn) {\r\n var locator = function (crossTable) {\r\n var val = crossTable[value];\r\n return castFn ? castFn(val) : val;\r\n };\r\n locator.__locatorRef = value;\r\n return locator;\r\n}\r\nfunction extractLocators(params) {\r\n if (Array.isArray(params)) {\r\n return params.filter(function (param) {\r\n return isLocator(param) || (typeof param === 'string' && param[0] === '@');\r\n });\r\n }\r\n return Object.keys(params)\r\n .filter(function (key) { return isLocator(params[key]); })\r\n .map(function (key) { return params[key]; });\r\n}\n\n/**\r\n * Validates a value against the rules.\r\n */\r\nfunction validate(value, rules, options) {\r\n if (options === void 0) { options = {}; }\r\n return __awaiter(this, void 0, void 0, function () {\r\n var shouldBail, skipIfEmpty, field, result, errors, failedRules, regenerateMap;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n shouldBail = options === null || options === void 0 ? void 0 : options.bails;\r\n skipIfEmpty = options === null || options === void 0 ? void 0 : options.skipIfEmpty;\r\n field = {\r\n name: (options === null || options === void 0 ? void 0 : options.name) || '{field}',\r\n rules: normalizeRules(rules),\r\n bails: shouldBail !== null && shouldBail !== void 0 ? shouldBail : true,\r\n skipIfEmpty: skipIfEmpty !== null && skipIfEmpty !== void 0 ? skipIfEmpty : true,\r\n forceRequired: false,\r\n crossTable: (options === null || options === void 0 ? void 0 : options.values) || {},\r\n names: (options === null || options === void 0 ? void 0 : options.names) || {},\r\n customMessages: (options === null || options === void 0 ? void 0 : options.customMessages) || {}\r\n };\r\n return [4 /*yield*/, _validate(field, value, options)];\r\n case 1:\r\n result = _a.sent();\r\n errors = [];\r\n failedRules = {};\r\n regenerateMap = {};\r\n result.errors.forEach(function (e) {\r\n var msg = e.msg();\r\n errors.push(msg);\r\n failedRules[e.rule] = msg;\r\n regenerateMap[e.rule] = e.msg;\r\n });\r\n return [2 /*return*/, {\r\n valid: result.valid,\r\n errors: errors,\r\n failedRules: failedRules,\r\n regenerateMap: regenerateMap\r\n }];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Starts the validation process.\r\n */\r\nfunction _validate(field, value, _a) {\r\n var _b = (_a === void 0 ? {} : _a).isInitial, isInitial = _b === void 0 ? false : _b;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _c, shouldSkip, errors, rules, length, i, rule, result;\r\n return __generator(this, function (_d) {\r\n switch (_d.label) {\r\n case 0: return [4 /*yield*/, _shouldSkip(field, value)];\r\n case 1:\r\n _c = _d.sent(), shouldSkip = _c.shouldSkip, errors = _c.errors;\r\n if (shouldSkip) {\r\n return [2 /*return*/, {\r\n valid: !errors.length,\r\n errors: errors\r\n }];\r\n }\r\n rules = Object.keys(field.rules).filter(function (rule) { return !RuleContainer.isRequireRule(rule); });\r\n length = rules.length;\r\n i = 0;\r\n _d.label = 2;\r\n case 2:\r\n if (!(i < length)) return [3 /*break*/, 5];\r\n if (isInitial && RuleContainer.isLazy(rules[i])) {\r\n return [3 /*break*/, 4];\r\n }\r\n rule = rules[i];\r\n return [4 /*yield*/, _test(field, value, {\r\n name: rule,\r\n params: field.rules[rule]\r\n })];\r\n case 3:\r\n result = _d.sent();\r\n if (!result.valid && result.error) {\r\n errors.push(result.error);\r\n if (field.bails) {\r\n return [2 /*return*/, {\r\n valid: false,\r\n errors: errors\r\n }];\r\n }\r\n }\r\n _d.label = 4;\r\n case 4:\r\n i++;\r\n return [3 /*break*/, 2];\r\n case 5: return [2 /*return*/, {\r\n valid: !errors.length,\r\n errors: errors\r\n }];\r\n }\r\n });\r\n });\r\n}\r\nfunction _shouldSkip(field, value) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var requireRules, length, errors, isEmpty, isEmptyAndOptional, isRequired, i, rule, result;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n requireRules = Object.keys(field.rules).filter(RuleContainer.isRequireRule);\r\n length = requireRules.length;\r\n errors = [];\r\n isEmpty = isNullOrUndefined(value) || value === '' || isEmptyArray(value);\r\n isEmptyAndOptional = isEmpty && field.skipIfEmpty;\r\n isRequired = false;\r\n i = 0;\r\n _a.label = 1;\r\n case 1:\r\n if (!(i < length)) return [3 /*break*/, 4];\r\n rule = requireRules[i];\r\n return [4 /*yield*/, _test(field, value, {\r\n name: rule,\r\n params: field.rules[rule]\r\n })];\r\n case 2:\r\n result = _a.sent();\r\n if (!isObject(result)) {\r\n throw new Error('Require rules has to return an object (see docs)');\r\n }\r\n if (result.required) {\r\n isRequired = true;\r\n }\r\n if (!result.valid && result.error) {\r\n errors.push(result.error);\r\n // Exit early as the field is required and failed validation.\r\n if (field.bails) {\r\n return [2 /*return*/, {\r\n shouldSkip: true,\r\n errors: errors\r\n }];\r\n }\r\n }\r\n _a.label = 3;\r\n case 3:\r\n i++;\r\n return [3 /*break*/, 1];\r\n case 4:\r\n if (isEmpty && !isRequired && !field.skipIfEmpty) {\r\n return [2 /*return*/, {\r\n shouldSkip: false,\r\n errors: errors\r\n }];\r\n }\r\n // field is configured to run through the pipeline regardless\r\n if (!field.bails && !isEmptyAndOptional) {\r\n return [2 /*return*/, {\r\n shouldSkip: false,\r\n errors: errors\r\n }];\r\n }\r\n // skip if the field is not required and has an empty value.\r\n return [2 /*return*/, {\r\n shouldSkip: !isRequired && isEmpty,\r\n errors: errors\r\n }];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Tests a single input value against a rule.\r\n */\r\nfunction _test(field, value, rule) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var ruleSchema, normalizedValue, params, result, values_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n ruleSchema = RuleContainer.getRuleDefinition(rule.name);\r\n if (!ruleSchema || !ruleSchema.validate) {\r\n throw new Error(\"No such validator '\" + rule.name + \"' exists.\");\r\n }\r\n normalizedValue = ruleSchema.castValue ? ruleSchema.castValue(value) : value;\r\n params = fillTargetValues(rule.params, field.crossTable);\r\n return [4 /*yield*/, ruleSchema.validate(normalizedValue, params)];\r\n case 1:\r\n result = _a.sent();\r\n if (typeof result === 'string') {\r\n values_1 = __assign(__assign({}, (params || {})), { _field_: field.name, _value_: value, _rule_: rule.name });\r\n return [2 /*return*/, {\r\n valid: false,\r\n error: { rule: rule.name, msg: function () { return interpolate(result, values_1); } }\r\n }];\r\n }\r\n if (!isObject(result)) {\r\n result = { valid: result };\r\n }\r\n return [2 /*return*/, {\r\n valid: result.valid,\r\n required: result.required,\r\n error: result.valid ? undefined : _generateFieldError(field, value, ruleSchema, rule.name, params)\r\n }];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Generates error messages.\r\n */\r\nfunction _generateFieldError(field, value, ruleSchema, ruleName, params) {\r\n var _a;\r\n var message = (_a = field.customMessages[ruleName]) !== null && _a !== void 0 ? _a : ruleSchema.message;\r\n var ruleTargets = _getRuleTargets(field, ruleSchema, ruleName);\r\n var _b = _getUserTargets(field, ruleSchema, ruleName, message), userTargets = _b.userTargets, userMessage = _b.userMessage;\r\n var values = __assign(__assign(__assign(__assign({}, (params || {})), { _field_: field.name, _value_: value, _rule_: ruleName }), ruleTargets), userTargets);\r\n return {\r\n msg: function () { return _normalizeMessage(userMessage || getConfig().defaultMessage, field.name, values); },\r\n rule: ruleName\r\n };\r\n}\r\nfunction _getRuleTargets(field, ruleSchema, ruleName) {\r\n var params = ruleSchema.params;\r\n if (!params) {\r\n return {};\r\n }\r\n var numTargets = params.filter(function (param) { return param.isTarget; }).length;\r\n if (numTargets <= 0) {\r\n return {};\r\n }\r\n var names = {};\r\n var ruleConfig = field.rules[ruleName];\r\n if (!Array.isArray(ruleConfig) && isObject(ruleConfig)) {\r\n ruleConfig = params.map(function (param) {\r\n return ruleConfig[param.name];\r\n });\r\n }\r\n for (var index = 0; index < params.length; index++) {\r\n var param = params[index];\r\n var key = ruleConfig[index];\r\n if (!isLocator(key)) {\r\n continue;\r\n }\r\n key = key.__locatorRef;\r\n var name_1 = field.names[key] || key;\r\n names[param.name] = name_1;\r\n names[\"_\" + param.name + \"_\"] = field.crossTable[key];\r\n }\r\n return names;\r\n}\r\nfunction _getUserTargets(field, ruleSchema, ruleName, userMessage) {\r\n var userTargets = {};\r\n var rules = field.rules[ruleName];\r\n var params = ruleSchema.params || [];\r\n // early return if no rules\r\n if (!rules) {\r\n return {};\r\n }\r\n // check all rules to convert targets\r\n Object.keys(rules).forEach(function (key, index) {\r\n // get the rule\r\n var rule = rules[key];\r\n if (!isLocator(rule)) {\r\n return {};\r\n }\r\n // get associated parameter\r\n var param = params[index];\r\n if (!param) {\r\n return {};\r\n }\r\n // grab the name of the target\r\n var name = rule.__locatorRef;\r\n userTargets[param.name] = field.names[name] || name;\r\n userTargets[\"_\" + param.name + \"_\"] = field.crossTable[name];\r\n });\r\n return {\r\n userTargets: userTargets,\r\n userMessage: userMessage\r\n };\r\n}\r\nfunction _normalizeMessage(template, field, values) {\r\n if (typeof template === 'function') {\r\n return template(field, values);\r\n }\r\n return interpolate(template, __assign(__assign({}, values), { _field_: field }));\r\n}\r\nfunction fillTargetValues(params, crossTable) {\r\n if (Array.isArray(params)) {\r\n return params.map(function (param) {\r\n var targetPart = typeof param === 'string' && param[0] === '@' ? param.slice(1) : param;\r\n if (targetPart in crossTable) {\r\n return crossTable[targetPart];\r\n }\r\n return param;\r\n });\r\n }\r\n var values = {};\r\n var normalize = function (value) {\r\n if (isLocator(value)) {\r\n return value(crossTable);\r\n }\r\n return value;\r\n };\r\n Object.keys(params).forEach(function (param) {\r\n values[param] = normalize(params[param]);\r\n });\r\n return values;\r\n}\n\nvar aggressive = function () { return ({\r\n on: ['input', 'blur']\r\n}); };\r\nvar lazy = function () { return ({\r\n on: ['change', 'blur']\r\n}); };\r\nvar eager = function (_a) {\r\n var errors = _a.errors;\r\n if (errors.length) {\r\n return {\r\n on: ['input', 'change']\r\n };\r\n }\r\n return {\r\n on: ['change', 'blur']\r\n };\r\n};\r\nvar passive = function () { return ({\r\n on: []\r\n}); };\r\nvar modes = {\r\n aggressive: aggressive,\r\n eager: eager,\r\n passive: passive,\r\n lazy: lazy\r\n};\r\nvar setInteractionMode = function (mode, implementation) {\r\n setConfig({ mode: mode });\r\n if (!implementation) {\r\n return;\r\n }\r\n if (!isCallable(implementation)) {\r\n throw new Error('A mode implementation must be a function');\r\n }\r\n modes[mode] = implementation;\r\n};\n\nvar EVENT_BUS = new Vue();\r\nfunction localeChanged() {\r\n EVENT_BUS.$emit('change:locale');\r\n}\n\nvar Dictionary = /** @class */ (function () {\r\n function Dictionary(locale, dictionary) {\r\n this.container = {};\r\n this.locale = locale;\r\n this.merge(dictionary);\r\n }\r\n Dictionary.prototype.resolve = function (field, rule, values) {\r\n return this.format(this.locale, field, rule, values);\r\n };\r\n Dictionary.prototype.format = function (locale, field, rule, values) {\r\n var _a, _b, _c, _d, _e, _f, _g, _h;\r\n var message;\r\n // find if specific message for that field was specified.\r\n var fieldContainer = (_c = (_b = (_a = this.container[locale]) === null || _a === void 0 ? void 0 : _a.fields) === null || _b === void 0 ? void 0 : _b[field]) === null || _c === void 0 ? void 0 : _c[rule];\r\n var messageContainer = (_e = (_d = this.container[locale]) === null || _d === void 0 ? void 0 : _d.messages) === null || _e === void 0 ? void 0 : _e[rule];\r\n message = fieldContainer || messageContainer || '';\r\n if (!message) {\r\n message = '{_field_} is not valid';\r\n }\r\n field = (_h = (_g = (_f = this.container[locale]) === null || _f === void 0 ? void 0 : _f.names) === null || _g === void 0 ? void 0 : _g[field]) !== null && _h !== void 0 ? _h : field;\r\n return isCallable(message) ? message(field, values) : interpolate(message, __assign(__assign({}, values), { _field_: field }));\r\n };\r\n Dictionary.prototype.merge = function (dictionary) {\r\n merge(this.container, dictionary);\r\n };\r\n Dictionary.prototype.hasRule = function (name) {\r\n var _a, _b;\r\n return !!((_b = (_a = this.container[this.locale]) === null || _a === void 0 ? void 0 : _a.messages) === null || _b === void 0 ? void 0 : _b[name]);\r\n };\r\n return Dictionary;\r\n}());\r\nvar DICTIONARY;\r\nfunction localize(locale, dictionary) {\r\n var _a;\r\n if (!DICTIONARY) {\r\n DICTIONARY = new Dictionary('en', {});\r\n setConfig({\r\n defaultMessage: function (field, values) {\r\n return DICTIONARY.resolve(field, values === null || values === void 0 ? void 0 : values._rule_, values || {});\r\n }\r\n });\r\n }\r\n if (typeof locale === 'string') {\r\n DICTIONARY.locale = locale;\r\n if (dictionary) {\r\n DICTIONARY.merge((_a = {}, _a[locale] = dictionary, _a));\r\n }\r\n localeChanged();\r\n return;\r\n }\r\n DICTIONARY.merge(locale);\r\n}\n\nvar isEvent = function (evt) {\r\n if (!evt) {\r\n return false;\r\n }\r\n if (typeof Event !== 'undefined' && isCallable(Event) && evt instanceof Event) {\r\n return true;\r\n }\r\n // this is for IE\r\n /* istanbul ignore next */\r\n if (evt && evt.srcElement) {\r\n return true;\r\n }\r\n return false;\r\n};\r\nfunction normalizeEventValue(value) {\r\n var _a, _b;\r\n if (!isEvent(value)) {\r\n return value;\r\n }\r\n var input = value.target;\r\n if (input.type === 'file' && input.files) {\r\n return toArray(input.files);\r\n }\r\n // If the input has a `v-model.number` modifier applied.\r\n if ((_a = input._vModifiers) === null || _a === void 0 ? void 0 : _a.number) {\r\n // as per the spec the v-model.number uses parseFloat\r\n var valueAsNumber = parseFloat(input.value);\r\n if (isNaN(valueAsNumber)) {\r\n return input.value;\r\n }\r\n return valueAsNumber;\r\n }\r\n if ((_b = input._vModifiers) === null || _b === void 0 ? void 0 : _b.trim) {\r\n var trimmedValue = typeof input.value === 'string' ? input.value.trim() : input.value;\r\n return trimmedValue;\r\n }\r\n return input.value;\r\n}\n\nvar isTextInput = function (vnode) {\r\n var _a;\r\n var attrs = ((_a = vnode.data) === null || _a === void 0 ? void 0 : _a.attrs) || vnode.elm;\r\n // it will fallback to being a text input per browsers spec.\r\n if (vnode.tag === 'input' && (!attrs || !attrs.type)) {\r\n return true;\r\n }\r\n if (vnode.tag === 'textarea') {\r\n return true;\r\n }\r\n return includes(['text', 'password', 'search', 'email', 'tel', 'url', 'number'], attrs === null || attrs === void 0 ? void 0 : attrs.type);\r\n};\r\n// export const isCheckboxOrRadioInput = (vnode: VNode): boolean => {\r\n// const attrs = (vnode.data && vnode.data.attrs) || vnode.elm;\r\n// return includes(['radio', 'checkbox'], attrs && attrs.type);\r\n// };\r\n// Gets the model object on the vnode.\r\nfunction findModel(vnode) {\r\n if (!vnode.data) {\r\n return undefined;\r\n }\r\n // Component Model\r\n // THIS IS NOT TYPED IN OFFICIAL VUE TYPINGS\r\n // eslint-disable-next-line\r\n var nonStandardVNodeData = vnode.data;\r\n if ('model' in nonStandardVNodeData) {\r\n return nonStandardVNodeData.model;\r\n }\r\n if (!vnode.data.directives) {\r\n return undefined;\r\n }\r\n return find(vnode.data.directives, function (d) { return d.name === 'model'; });\r\n}\r\nfunction findValue(vnode) {\r\n var _a, _b;\r\n var model = findModel(vnode);\r\n if (model) {\r\n return { value: model.value };\r\n }\r\n var config = findModelConfig(vnode);\r\n var prop = (config === null || config === void 0 ? void 0 : config.prop) || 'value';\r\n if (((_a = vnode.componentOptions) === null || _a === void 0 ? void 0 : _a.propsData) && prop in vnode.componentOptions.propsData) {\r\n var propsDataWithValue = vnode.componentOptions.propsData;\r\n return { value: propsDataWithValue[prop] };\r\n }\r\n if (((_b = vnode.data) === null || _b === void 0 ? void 0 : _b.domProps) && 'value' in vnode.data.domProps) {\r\n return { value: vnode.data.domProps.value };\r\n }\r\n return undefined;\r\n}\r\nfunction extractChildren(vnode) {\r\n if (Array.isArray(vnode)) {\r\n return vnode;\r\n }\r\n if (Array.isArray(vnode.children)) {\r\n return vnode.children;\r\n }\r\n /* istanbul ignore next */\r\n if (vnode.componentOptions && Array.isArray(vnode.componentOptions.children)) {\r\n return vnode.componentOptions.children;\r\n }\r\n return [];\r\n}\r\nfunction findInputNodes(vnode) {\r\n if (!Array.isArray(vnode) && findValue(vnode) !== undefined) {\r\n return [vnode];\r\n }\r\n var children = extractChildren(vnode);\r\n return children.reduce(function (nodes, node) {\r\n var candidates = findInputNodes(node);\r\n if (candidates.length) {\r\n nodes.push.apply(nodes, candidates);\r\n }\r\n return nodes;\r\n }, []);\r\n}\r\n// Resolves v-model config if exists.\r\nfunction findModelConfig(vnode) {\r\n /* istanbul ignore next */\r\n if (!vnode.componentOptions)\r\n return null;\r\n // This is also not typed in the standard Vue TS.\r\n return vnode.componentOptions.Ctor.options.model;\r\n}\r\n// Adds a listener to vnode listener object.\r\nfunction mergeVNodeListeners(obj, eventName, handler) {\r\n // no listener at all.\r\n if (isNullOrUndefined(obj[eventName])) {\r\n obj[eventName] = [handler];\r\n return;\r\n }\r\n // Is an invoker.\r\n if (isCallable(obj[eventName]) && obj[eventName].fns) {\r\n var invoker = obj[eventName];\r\n invoker.fns = Array.isArray(invoker.fns) ? invoker.fns : [invoker.fns];\r\n if (!includes(invoker.fns, handler)) {\r\n invoker.fns.push(handler);\r\n }\r\n return;\r\n }\r\n if (isCallable(obj[eventName])) {\r\n var prev = obj[eventName];\r\n obj[eventName] = [prev];\r\n }\r\n if (Array.isArray(obj[eventName]) && !includes(obj[eventName], handler)) {\r\n obj[eventName].push(handler);\r\n }\r\n}\r\n// Adds a listener to a native HTML vnode.\r\nfunction addNativeNodeListener(node, eventName, handler) {\r\n /* istanbul ignore next */\r\n if (!node.data) {\r\n node.data = {};\r\n }\r\n if (isNullOrUndefined(node.data.on)) {\r\n node.data.on = {};\r\n }\r\n mergeVNodeListeners(node.data.on, eventName, handler);\r\n}\r\n// Adds a listener to a Vue component vnode.\r\nfunction addComponentNodeListener(node, eventName, handler) {\r\n /* istanbul ignore next */\r\n if (!node.componentOptions) {\r\n return;\r\n }\r\n /* istanbul ignore next */\r\n if (!node.componentOptions.listeners) {\r\n node.componentOptions.listeners = {};\r\n }\r\n mergeVNodeListeners(node.componentOptions.listeners, eventName, handler);\r\n}\r\nfunction addVNodeListener(vnode, eventName, handler) {\r\n if (vnode.componentOptions) {\r\n addComponentNodeListener(vnode, eventName, handler);\r\n return;\r\n }\r\n addNativeNodeListener(vnode, eventName, handler);\r\n}\r\n// Determines if `change` should be used over `input` for listeners.\r\nfunction getInputEventName(vnode, model) {\r\n var _a;\r\n // Is a component.\r\n if (vnode.componentOptions) {\r\n var event_1 = (findModelConfig(vnode) || { event: 'input' }).event;\r\n return event_1;\r\n }\r\n // Lazy Models typically use change event\r\n if ((_a = model === null || model === void 0 ? void 0 : model.modifiers) === null || _a === void 0 ? void 0 : _a.lazy) {\r\n return 'change';\r\n }\r\n // is a textual-type input.\r\n if (isTextInput(vnode)) {\r\n return 'input';\r\n }\r\n return 'change';\r\n}\r\nfunction isHTMLNode(node) {\r\n return includes(['input', 'select', 'textarea'], node.tag);\r\n}\r\n// TODO: Type this one properly.\r\nfunction normalizeSlots(slots, ctx) {\r\n var acc = [];\r\n return Object.keys(slots).reduce(function (arr, key) {\r\n slots[key].forEach(function (vnode) {\r\n if (!vnode.context) {\r\n slots[key].context = ctx;\r\n if (!vnode.data) {\r\n vnode.data = {};\r\n }\r\n vnode.data.slot = key;\r\n }\r\n });\r\n return arr.concat(slots[key]);\r\n }, acc);\r\n}\r\nfunction resolveTextualRules(vnode) {\r\n var _a;\r\n var attrs = (_a = vnode.data) === null || _a === void 0 ? void 0 : _a.attrs;\r\n var rules = {};\r\n if (!attrs)\r\n return rules;\r\n if (attrs.type === 'email' && RuleContainer.getRuleDefinition('email')) {\r\n rules.email = ['multiple' in attrs];\r\n }\r\n if (attrs.pattern && RuleContainer.getRuleDefinition('regex')) {\r\n rules.regex = attrs.pattern;\r\n }\r\n if (attrs.maxlength >= 0 && RuleContainer.getRuleDefinition('max')) {\r\n rules.max = attrs.maxlength;\r\n }\r\n if (attrs.minlength >= 0 && RuleContainer.getRuleDefinition('min')) {\r\n rules.min = attrs.minlength;\r\n }\r\n if (attrs.type === 'number') {\r\n if (isSpecified(attrs.min) && RuleContainer.getRuleDefinition('min_value')) {\r\n rules.min_value = Number(attrs.min);\r\n }\r\n if (isSpecified(attrs.max) && RuleContainer.getRuleDefinition('max_value')) {\r\n rules.max_value = Number(attrs.max);\r\n }\r\n }\r\n return rules;\r\n}\r\nfunction resolveRules(vnode) {\r\n var _a;\r\n var htmlTags = ['input', 'select', 'textarea'];\r\n var attrs = (_a = vnode.data) === null || _a === void 0 ? void 0 : _a.attrs;\r\n if (!includes(htmlTags, vnode.tag) || !attrs) {\r\n return {};\r\n }\r\n var rules = {};\r\n if ('required' in attrs && attrs.required !== false && RuleContainer.getRuleDefinition('required')) {\r\n rules.required = attrs.type === 'checkbox' ? [true] : true;\r\n }\r\n if (isTextInput(vnode)) {\r\n return normalizeRules(__assign(__assign({}, rules), resolveTextualRules(vnode)));\r\n }\r\n return normalizeRules(rules);\r\n}\r\nfunction normalizeChildren(context, slotProps) {\r\n if (context.$scopedSlots.default) {\r\n return context.$scopedSlots.default(slotProps) || [];\r\n }\r\n return context.$slots.default || [];\r\n}\n\n/**\r\n * Determines if a provider needs to run validation.\r\n */\r\nfunction shouldValidate(ctx, value) {\r\n // when an immediate/initial validation is needed and wasn't done before.\r\n if (!ctx._ignoreImmediate && ctx.immediate) {\r\n return true;\r\n }\r\n // when the value changes for whatever reason.\r\n if (!isRefEqual(ctx.value, value) && ctx.normalizedEvents.length) {\r\n return true;\r\n }\r\n // when it needs validation due to props/cross-fields changes.\r\n if (ctx._needsValidation) {\r\n return true;\r\n }\r\n // when the initial value is undefined and the field wasn't rendered yet.\r\n if (!ctx.initialized && value === undefined) {\r\n return true;\r\n }\r\n return false;\r\n}\r\nfunction createValidationCtx(ctx) {\r\n return __assign(__assign({}, ctx.flags), { errors: ctx.errors, classes: ctx.classes, failedRules: ctx.failedRules, reset: function () { return ctx.reset(); }, validate: function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n return ctx.validate.apply(ctx, args);\r\n }, ariaInput: {\r\n 'aria-invalid': ctx.flags.invalid ? 'true' : 'false',\r\n 'aria-required': ctx.isRequired ? 'true' : 'false',\r\n 'aria-errormessage': \"vee_\" + ctx.id\r\n }, ariaMsg: {\r\n id: \"vee_\" + ctx.id,\r\n 'aria-live': ctx.errors.length ? 'assertive' : 'off'\r\n } });\r\n}\r\nfunction onRenderUpdate(vm, value) {\r\n if (!vm.initialized) {\r\n vm.initialValue = value;\r\n }\r\n var validateNow = shouldValidate(vm, value);\r\n vm._needsValidation = false;\r\n vm.value = value;\r\n vm._ignoreImmediate = true;\r\n if (!validateNow) {\r\n return;\r\n }\r\n var validate = function () {\r\n if (vm.immediate || vm.flags.validated) {\r\n return triggerThreadSafeValidation(vm);\r\n }\r\n vm.validateSilent();\r\n };\r\n if (vm.initialized) {\r\n validate();\r\n return;\r\n }\r\n vm.$once('hook:mounted', function () { return validate(); });\r\n}\r\nfunction computeModeSetting(ctx) {\r\n var compute = (isCallable(ctx.mode) ? ctx.mode : modes[ctx.mode]);\r\n return compute(ctx);\r\n}\r\nfunction triggerThreadSafeValidation(vm) {\r\n var pendingPromise = vm.validateSilent();\r\n // avoids race conditions between successive validations.\r\n vm._pendingValidation = pendingPromise;\r\n return pendingPromise.then(function (result) {\r\n if (pendingPromise === vm._pendingValidation) {\r\n vm.applyResult(result);\r\n vm._pendingValidation = undefined;\r\n }\r\n return result;\r\n });\r\n}\r\n// Creates the common handlers for a validatable context.\r\nfunction createCommonHandlers(vm) {\r\n if (!vm.$veeOnInput) {\r\n vm.$veeOnInput = function (e) {\r\n vm.syncValue(e); // track and keep the value updated.\r\n vm.setFlags({ dirty: true, pristine: false });\r\n };\r\n }\r\n var onInput = vm.$veeOnInput;\r\n if (!vm.$veeOnBlur) {\r\n vm.$veeOnBlur = function () {\r\n vm.setFlags({ touched: true, untouched: false });\r\n };\r\n }\r\n // Blur event listener.\r\n var onBlur = vm.$veeOnBlur;\r\n var onValidate = vm.$veeHandler;\r\n var mode = computeModeSetting(vm);\r\n // Handle debounce changes.\r\n if (!onValidate || vm.$veeDebounce !== vm.debounce) {\r\n onValidate = debounce(function () {\r\n vm.$nextTick(function () {\r\n if (!vm._pendingReset) {\r\n triggerThreadSafeValidation(vm);\r\n }\r\n vm._pendingReset = false;\r\n });\r\n }, mode.debounce || vm.debounce);\r\n // Cache the handler so we don't create it each time.\r\n vm.$veeHandler = onValidate;\r\n // cache the debounce value so we detect if it was changed.\r\n vm.$veeDebounce = vm.debounce;\r\n }\r\n return { onInput: onInput, onBlur: onBlur, onValidate: onValidate };\r\n}\r\n// Adds all plugin listeners to the vnode.\r\nfunction addListeners(vm, node) {\r\n var value = findValue(node);\r\n // cache the input eventName.\r\n vm._inputEventName = vm._inputEventName || getInputEventName(node, findModel(node));\r\n onRenderUpdate(vm, value === null || value === void 0 ? void 0 : value.value);\r\n var _a = createCommonHandlers(vm), onInput = _a.onInput, onBlur = _a.onBlur, onValidate = _a.onValidate;\r\n addVNodeListener(node, vm._inputEventName, onInput);\r\n addVNodeListener(node, 'blur', onBlur);\r\n // add the validation listeners.\r\n vm.normalizedEvents.forEach(function (evt) {\r\n addVNodeListener(node, evt, onValidate);\r\n });\r\n vm.initialized = true;\r\n}\n\nvar PROVIDER_COUNTER = 0;\r\nfunction data() {\r\n var errors = [];\r\n var fieldName = '';\r\n var defaultValues = {\r\n errors: errors,\r\n value: undefined,\r\n initialized: false,\r\n initialValue: undefined,\r\n flags: createFlags(),\r\n failedRules: {},\r\n isActive: true,\r\n fieldName: fieldName,\r\n id: ''\r\n };\r\n return defaultValues;\r\n}\r\nvar ValidationProvider = Vue.extend({\r\n inject: {\r\n $_veeObserver: {\r\n from: '$_veeObserver',\r\n default: function () {\r\n if (!this.$vnode.context.$_veeObserver) {\r\n this.$vnode.context.$_veeObserver = createObserver();\r\n }\r\n return this.$vnode.context.$_veeObserver;\r\n }\r\n }\r\n },\r\n props: {\r\n vid: {\r\n type: String,\r\n default: ''\r\n },\r\n name: {\r\n type: String,\r\n default: null\r\n },\r\n mode: {\r\n type: [String, Function],\r\n default: function () {\r\n return getConfig().mode;\r\n }\r\n },\r\n rules: {\r\n type: [Object, String],\r\n default: null\r\n },\r\n immediate: {\r\n type: Boolean,\r\n default: false\r\n },\r\n bails: {\r\n type: Boolean,\r\n default: function () { return getConfig().bails; }\r\n },\r\n skipIfEmpty: {\r\n type: Boolean,\r\n default: function () { return getConfig().skipOptional; }\r\n },\r\n debounce: {\r\n type: Number,\r\n default: 0\r\n },\r\n tag: {\r\n type: String,\r\n default: 'span'\r\n },\r\n slim: {\r\n type: Boolean,\r\n default: false\r\n },\r\n disabled: {\r\n type: Boolean,\r\n default: false\r\n },\r\n customMessages: {\r\n type: Object,\r\n default: function () {\r\n return {};\r\n }\r\n },\r\n detectInput: {\r\n type: Boolean,\r\n default: true\r\n }\r\n },\r\n watch: {\r\n rules: {\r\n deep: true,\r\n handler: function (val, oldVal) {\r\n this._needsValidation = !isEqual(val, oldVal);\r\n }\r\n }\r\n },\r\n data: data,\r\n computed: {\r\n fieldDeps: function () {\r\n var _this = this;\r\n return Object.keys(this.normalizedRules).reduce(function (acc, rule) {\r\n var deps = extractLocators(_this.normalizedRules[rule]).map(function (dep) {\r\n return isLocator(dep) ? dep.__locatorRef : dep.slice(1);\r\n });\r\n acc.push.apply(acc, deps);\r\n deps.forEach(function (depName) {\r\n watchCrossFieldDep(_this, depName);\r\n });\r\n return acc;\r\n }, []);\r\n },\r\n normalizedEvents: function () {\r\n var _this = this;\r\n var on = computeModeSetting(this).on;\r\n return (on || []).map(function (e) {\r\n if (e === 'input') {\r\n return _this._inputEventName;\r\n }\r\n return e;\r\n });\r\n },\r\n isRequired: function () {\r\n var rules = __assign(__assign({}, this._resolvedRules), this.normalizedRules);\r\n var isRequired = Object.keys(rules).some(RuleContainer.isRequireRule);\r\n this.flags.required = !!isRequired;\r\n return isRequired;\r\n },\r\n classes: function () {\r\n var names = getConfig().classes;\r\n return computeClassObj(names, this.flags);\r\n },\r\n normalizedRules: function () {\r\n return normalizeRules(this.rules);\r\n }\r\n },\r\n mounted: function () {\r\n var _this = this;\r\n var onLocaleChanged = function () {\r\n if (!_this.flags.validated) {\r\n return;\r\n }\r\n var regenerateMap = _this._regenerateMap;\r\n if (regenerateMap) {\r\n var errors_1 = [];\r\n var failedRules_1 = {};\r\n Object.keys(regenerateMap).forEach(function (rule) {\r\n var msg = regenerateMap[rule]();\r\n errors_1.push(msg);\r\n failedRules_1[rule] = msg;\r\n });\r\n _this.applyResult({ errors: errors_1, failedRules: failedRules_1, regenerateMap: regenerateMap });\r\n return;\r\n }\r\n _this.validate();\r\n };\r\n EVENT_BUS.$on('change:locale', onLocaleChanged);\r\n this.$on('hook:beforeDestroy', function () {\r\n EVENT_BUS.$off('change:locale', onLocaleChanged);\r\n });\r\n },\r\n render: function (h) {\r\n var _this = this;\r\n this.registerField();\r\n var ctx = createValidationCtx(this);\r\n var children = normalizeChildren(this, ctx);\r\n // Automatic v-model detection\r\n if (this.detectInput) {\r\n var inputs = findInputNodes(children);\r\n if (inputs.length) {\r\n inputs.forEach(function (input, idx) {\r\n var _a, _b, _c, _d, _e, _f;\r\n // If the elements are not checkboxes and there are more input nodes\r\n if (!includes(['checkbox', 'radio'], (_b = (_a = input.data) === null || _a === void 0 ? void 0 : _a.attrs) === null || _b === void 0 ? void 0 : _b.type) && idx > 0) {\r\n return;\r\n }\r\n var resolved = getConfig().useConstraintAttrs ? resolveRules(input) : {};\r\n if (!isEqual(_this._resolvedRules, resolved)) {\r\n _this._needsValidation = true;\r\n }\r\n if (isHTMLNode(input)) {\r\n _this.fieldName = ((_d = (_c = input.data) === null || _c === void 0 ? void 0 : _c.attrs) === null || _d === void 0 ? void 0 : _d.name) || ((_f = (_e = input.data) === null || _e === void 0 ? void 0 : _e.attrs) === null || _f === void 0 ? void 0 : _f.id);\r\n }\r\n _this._resolvedRules = resolved;\r\n addListeners(_this, input);\r\n });\r\n }\r\n }\r\n return this.slim && children.length <= 1 ? children[0] : h(this.tag, children);\r\n },\r\n beforeDestroy: function () {\r\n // cleanup reference.\r\n this.$_veeObserver.unobserve(this.id);\r\n },\r\n activated: function () {\r\n this.isActive = true;\r\n },\r\n deactivated: function () {\r\n this.isActive = false;\r\n },\r\n methods: {\r\n setFlags: function (flags) {\r\n var _this = this;\r\n Object.keys(flags).forEach(function (flag) {\r\n _this.flags[flag] = flags[flag];\r\n });\r\n },\r\n syncValue: function (v) {\r\n var value = normalizeEventValue(v);\r\n this.value = value;\r\n this.flags.changed = this.initialValue !== value;\r\n },\r\n reset: function () {\r\n var _this = this;\r\n this.errors = [];\r\n this.initialValue = this.value;\r\n var flags = createFlags();\r\n flags.required = this.isRequired;\r\n this.setFlags(flags);\r\n this.failedRules = {};\r\n this.validateSilent();\r\n this._pendingValidation = undefined;\r\n this._pendingReset = true;\r\n setTimeout(function () {\r\n _this._pendingReset = false;\r\n }, this.debounce);\r\n },\r\n validate: function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n if (args.length > 0) {\r\n this.syncValue(args[0]);\r\n }\r\n return [2 /*return*/, triggerThreadSafeValidation(this)];\r\n });\r\n });\r\n },\r\n validateSilent: function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var rules, result;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.setFlags({ pending: true });\r\n rules = __assign(__assign({}, this._resolvedRules), this.normalizedRules);\r\n Object.defineProperty(rules, '_$$isNormalized', {\r\n value: true,\r\n writable: false,\r\n enumerable: false,\r\n configurable: false\r\n });\r\n return [4 /*yield*/, validate(this.value, rules, __assign(__assign({ name: this.name || this.fieldName }, createLookup(this)), { bails: this.bails, skipIfEmpty: this.skipIfEmpty, isInitial: !this.initialized, customMessages: this.customMessages }))];\r\n case 1:\r\n result = _a.sent();\r\n this.setFlags({\r\n pending: false,\r\n valid: result.valid,\r\n invalid: !result.valid\r\n });\r\n return [2 /*return*/, result];\r\n }\r\n });\r\n });\r\n },\r\n setErrors: function (errors) {\r\n this.applyResult({ errors: errors, failedRules: {} });\r\n },\r\n applyResult: function (_a) {\r\n var errors = _a.errors, failedRules = _a.failedRules, regenerateMap = _a.regenerateMap;\r\n this.errors = errors;\r\n this._regenerateMap = regenerateMap;\r\n this.failedRules = __assign({}, (failedRules || {}));\r\n this.setFlags({\r\n valid: !errors.length,\r\n passed: !errors.length,\r\n invalid: !!errors.length,\r\n failed: !!errors.length,\r\n validated: true,\r\n changed: this.value !== this.initialValue\r\n });\r\n },\r\n registerField: function () {\r\n updateRenderingContextRefs(this);\r\n }\r\n }\r\n});\r\nfunction computeClassObj(names, flags) {\r\n var acc = {};\r\n var keys = Object.keys(flags);\r\n var length = keys.length;\r\n var _loop_1 = function (i) {\r\n var flag = keys[i];\r\n var className = (names && names[flag]) || flag;\r\n var value = flags[flag];\r\n if (isNullOrUndefined(value)) {\r\n return \"continue\";\r\n }\r\n if ((flag === 'valid' || flag === 'invalid') && !flags.validated) {\r\n return \"continue\";\r\n }\r\n if (typeof className === 'string') {\r\n acc[className] = value;\r\n }\r\n else if (Array.isArray(className)) {\r\n className.forEach(function (cls) {\r\n acc[cls] = value;\r\n });\r\n }\r\n };\r\n for (var i = 0; i < length; i++) {\r\n _loop_1(i);\r\n }\r\n return acc;\r\n}\r\nfunction createLookup(vm) {\r\n var providers = vm.$_veeObserver.refs;\r\n var reduced = {\r\n names: {},\r\n values: {}\r\n };\r\n return vm.fieldDeps.reduce(function (acc, depName) {\r\n if (!providers[depName]) {\r\n return acc;\r\n }\r\n acc.values[depName] = providers[depName].value;\r\n acc.names[depName] = providers[depName].name;\r\n return acc;\r\n }, reduced);\r\n}\r\nfunction extractId(vm) {\r\n if (vm.vid) {\r\n return vm.vid;\r\n }\r\n if (vm.name) {\r\n return vm.name;\r\n }\r\n if (vm.id) {\r\n return vm.id;\r\n }\r\n if (vm.fieldName) {\r\n return vm.fieldName;\r\n }\r\n PROVIDER_COUNTER++;\r\n return \"_vee_\" + PROVIDER_COUNTER;\r\n}\r\nfunction updateRenderingContextRefs(vm) {\r\n var providedId = extractId(vm);\r\n var id = vm.id;\r\n // Nothing has changed.\r\n if (!vm.isActive || (id === providedId && vm.$_veeObserver.refs[id])) {\r\n return;\r\n }\r\n // vid was changed.\r\n if (id !== providedId && vm.$_veeObserver.refs[id] === vm) {\r\n vm.$_veeObserver.unobserve(id);\r\n }\r\n vm.id = providedId;\r\n vm.$_veeObserver.observe(vm);\r\n}\r\nfunction createObserver() {\r\n return {\r\n refs: {},\r\n observe: function (vm) {\r\n this.refs[vm.id] = vm;\r\n },\r\n unobserve: function (id) {\r\n delete this.refs[id];\r\n }\r\n };\r\n}\r\nfunction watchCrossFieldDep(ctx, depName, withHooks) {\r\n if (withHooks === void 0) { withHooks = true; }\r\n var providers = ctx.$_veeObserver.refs;\r\n if (!ctx._veeWatchers) {\r\n ctx._veeWatchers = {};\r\n }\r\n if (!providers[depName] && withHooks) {\r\n return ctx.$once('hook:mounted', function () {\r\n watchCrossFieldDep(ctx, depName, false);\r\n });\r\n }\r\n if (!isCallable(ctx._veeWatchers[depName]) && providers[depName]) {\r\n ctx._veeWatchers[depName] = providers[depName].$watch('value', function () {\r\n if (ctx.flags.validated) {\r\n ctx._needsValidation = true;\r\n ctx.validate();\r\n }\r\n });\r\n }\r\n}\n\nvar FLAGS_STRATEGIES = [\r\n ['pristine', 'every'],\r\n ['dirty', 'some'],\r\n ['touched', 'some'],\r\n ['untouched', 'every'],\r\n ['valid', 'every'],\r\n ['invalid', 'some'],\r\n ['pending', 'some'],\r\n ['validated', 'every'],\r\n ['changed', 'some'],\r\n ['passed', 'every'],\r\n ['failed', 'some']\r\n];\r\nvar OBSERVER_COUNTER = 0;\r\nfunction data$1() {\r\n var refs = {};\r\n var errors = {};\r\n var flags = createObserverFlags();\r\n var fields = {};\r\n // FIXME: Not sure of this one can be typed, circular type reference.\r\n var observers = [];\r\n return {\r\n id: '',\r\n refs: refs,\r\n observers: observers,\r\n errors: errors,\r\n flags: flags,\r\n fields: fields\r\n };\r\n}\r\nfunction provideSelf() {\r\n return {\r\n $_veeObserver: this\r\n };\r\n}\r\nvar ValidationObserver = Vue.extend({\r\n name: 'ValidationObserver',\r\n provide: provideSelf,\r\n inject: {\r\n $_veeObserver: {\r\n from: '$_veeObserver',\r\n default: function () {\r\n if (!this.$vnode.context.$_veeObserver) {\r\n return null;\r\n }\r\n return this.$vnode.context.$_veeObserver;\r\n }\r\n }\r\n },\r\n props: {\r\n tag: {\r\n type: String,\r\n default: 'span'\r\n },\r\n vid: {\r\n type: String,\r\n default: function () {\r\n return \"obs_\" + OBSERVER_COUNTER++;\r\n }\r\n },\r\n slim: {\r\n type: Boolean,\r\n default: false\r\n },\r\n disabled: {\r\n type: Boolean,\r\n default: false\r\n }\r\n },\r\n data: data$1,\r\n created: function () {\r\n var _this = this;\r\n this.id = this.vid;\r\n register(this);\r\n var onChange = debounce(function (_a) {\r\n var errors = _a.errors, flags = _a.flags, fields = _a.fields;\r\n _this.errors = errors;\r\n _this.flags = flags;\r\n _this.fields = fields;\r\n }, 16);\r\n this.$watch(computeObserverState, onChange);\r\n },\r\n activated: function () {\r\n register(this);\r\n },\r\n deactivated: function () {\r\n unregister(this);\r\n },\r\n beforeDestroy: function () {\r\n unregister(this);\r\n },\r\n render: function (h) {\r\n var children = normalizeChildren(this, prepareSlotProps(this));\r\n return this.slim && children.length <= 1 ? children[0] : h(this.tag, { on: this.$listeners }, children);\r\n },\r\n methods: {\r\n observe: function (subscriber, kind) {\r\n var _a;\r\n if (kind === void 0) { kind = 'provider'; }\r\n if (kind === 'observer') {\r\n this.observers.push(subscriber);\r\n return;\r\n }\r\n this.refs = __assign(__assign({}, this.refs), (_a = {}, _a[subscriber.id] = subscriber, _a));\r\n },\r\n unobserve: function (id, kind) {\r\n if (kind === void 0) { kind = 'provider'; }\r\n if (kind === 'provider') {\r\n var provider = this.refs[id];\r\n if (!provider) {\r\n return;\r\n }\r\n this.$delete(this.refs, id);\r\n return;\r\n }\r\n var idx = findIndex(this.observers, function (o) { return o.id === id; });\r\n if (idx !== -1) {\r\n this.observers.splice(idx, 1);\r\n }\r\n },\r\n validateWithInfo: function (_a) {\r\n var _b = (_a === void 0 ? {} : _a).silent, silent = _b === void 0 ? false : _b;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var results, isValid, _c, errors, flags, fields;\r\n return __generator(this, function (_d) {\r\n switch (_d.label) {\r\n case 0: return [4 /*yield*/, Promise.all(__spreadArrays(values(this.refs)\r\n .filter(function (r) { return !r.disabled; })\r\n .map(function (ref) { return ref[silent ? 'validateSilent' : 'validate']().then(function (r) { return r.valid; }); }), this.observers.filter(function (o) { return !o.disabled; }).map(function (obs) { return obs.validate({ silent: silent }); })))];\r\n case 1:\r\n results = _d.sent();\r\n isValid = results.every(function (r) { return r; });\r\n _c = computeObserverState.call(this), errors = _c.errors, flags = _c.flags, fields = _c.fields;\r\n this.errors = errors;\r\n this.flags = flags;\r\n this.fields = fields;\r\n return [2 /*return*/, {\r\n errors: errors,\r\n flags: flags,\r\n fields: fields,\r\n isValid: isValid\r\n }];\r\n }\r\n });\r\n });\r\n },\r\n validate: function (_a) {\r\n var _b = (_a === void 0 ? {} : _a).silent, silent = _b === void 0 ? false : _b;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var isValid;\r\n return __generator(this, function (_c) {\r\n switch (_c.label) {\r\n case 0: return [4 /*yield*/, this.validateWithInfo({ silent: silent })];\r\n case 1:\r\n isValid = (_c.sent()).isValid;\r\n return [2 /*return*/, isValid];\r\n }\r\n });\r\n });\r\n },\r\n handleSubmit: function (cb) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var isValid;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.validate()];\r\n case 1:\r\n isValid = _a.sent();\r\n if (!isValid || !cb) {\r\n return [2 /*return*/];\r\n }\r\n return [2 /*return*/, cb()];\r\n }\r\n });\r\n });\r\n },\r\n reset: function () {\r\n return __spreadArrays(values(this.refs), this.observers).forEach(function (ref) { return ref.reset(); });\r\n },\r\n setErrors: function (errors) {\r\n var _this = this;\r\n Object.keys(errors).forEach(function (key) {\r\n var provider = _this.refs[key];\r\n if (!provider)\r\n return;\r\n var errorArr = errors[key] || [];\r\n errorArr = typeof errorArr === 'string' ? [errorArr] : errorArr;\r\n provider.setErrors(errorArr);\r\n });\r\n this.observers.forEach(function (observer) {\r\n observer.setErrors(errors);\r\n });\r\n }\r\n }\r\n});\r\nfunction unregister(vm) {\r\n if (vm.$_veeObserver) {\r\n vm.$_veeObserver.unobserve(vm.id, 'observer');\r\n }\r\n}\r\nfunction register(vm) {\r\n if (vm.$_veeObserver) {\r\n vm.$_veeObserver.observe(vm, 'observer');\r\n }\r\n}\r\nfunction prepareSlotProps(vm) {\r\n return __assign(__assign({}, vm.flags), { errors: vm.errors, fields: vm.fields, validate: vm.validate, validateWithInfo: vm.validateWithInfo, passes: vm.handleSubmit, handleSubmit: vm.handleSubmit, reset: vm.reset });\r\n}\r\n// Creates a modified version of validation flags\r\nfunction createObserverFlags() {\r\n return __assign(__assign({}, createFlags()), { valid: true, invalid: false });\r\n}\r\nfunction computeObserverState() {\r\n var vms = __spreadArrays(values(this.refs), this.observers.filter(function (o) { return !o.disabled; }));\r\n var errors = {};\r\n var flags = createObserverFlags();\r\n var fields = {};\r\n var length = vms.length;\r\n for (var i = 0; i < length; i++) {\r\n var vm = vms[i];\r\n // validation provider\r\n if (Array.isArray(vm.errors)) {\r\n errors[vm.id] = vm.errors;\r\n fields[vm.id] = __assign({ id: vm.id, name: vm.name, failedRules: vm.failedRules }, vm.flags);\r\n continue;\r\n }\r\n // Nested observer, merge errors and fields\r\n errors = __assign(__assign({}, errors), vm.errors);\r\n fields = __assign(__assign({}, fields), vm.fields);\r\n }\r\n FLAGS_STRATEGIES.forEach(function (_a) {\r\n var flag = _a[0], method = _a[1];\r\n flags[flag] = vms[method](function (vm) { return vm.flags[flag]; });\r\n });\r\n return { errors: errors, flags: flags, fields: fields };\r\n}\n\nfunction withValidation(component, mapProps) {\r\n var _a;\r\n if (mapProps === void 0) { mapProps = identity; }\r\n var options = 'options' in component ? component.options : component;\r\n var providerOpts = ValidationProvider.options;\r\n var hoc = {\r\n name: (options.name || 'AnonymousHoc') + \"WithValidation\",\r\n props: __assign({}, providerOpts.props),\r\n data: providerOpts.data,\r\n computed: __assign({}, providerOpts.computed),\r\n methods: __assign({}, providerOpts.methods),\r\n beforeDestroy: providerOpts.beforeDestroy,\r\n inject: providerOpts.inject\r\n };\r\n var eventName = ((_a = options === null || options === void 0 ? void 0 : options.model) === null || _a === void 0 ? void 0 : _a.event) || 'input';\r\n hoc.render = function (h) {\r\n var _a;\r\n this.registerField();\r\n var vctx = createValidationCtx(this);\r\n var listeners = __assign({}, this.$listeners);\r\n var model = findModel(this.$vnode);\r\n this._inputEventName = this._inputEventName || getInputEventName(this.$vnode, model);\r\n var value = findValue(this.$vnode);\r\n onRenderUpdate(this, value === null || value === void 0 ? void 0 : value.value);\r\n var _b = createCommonHandlers(this), onInput = _b.onInput, onBlur = _b.onBlur, onValidate = _b.onValidate;\r\n mergeVNodeListeners(listeners, eventName, onInput);\r\n mergeVNodeListeners(listeners, 'blur', onBlur);\r\n this.normalizedEvents.forEach(function (evt) {\r\n mergeVNodeListeners(listeners, evt, onValidate);\r\n });\r\n // Props are any attrs not associated with ValidationProvider Plus the model prop.\r\n // WARNING: Accidental prop overwrite will probably happen.\r\n var prop = (findModelConfig(this.$vnode) || { prop: 'value' }).prop;\r\n var props = __assign(__assign(__assign({}, this.$attrs), (_a = {}, _a[prop] = model === null || model === void 0 ? void 0 : model.value, _a)), mapProps(vctx));\r\n return h(options, {\r\n attrs: this.$attrs,\r\n props: props,\r\n on: listeners,\r\n scopedSlots: this.$scopedSlots\r\n }, normalizeSlots(this.$slots, this.$vnode.context));\r\n };\r\n return hoc;\r\n}\n\nvar version = '3.4.5';\n\nexport { ValidationObserver, ValidationProvider, configure, extend, localeChanged, localize, normalizeRules, setInteractionMode, validate, version, withValidation };\n","var SHADOW_PROPS = {\n 'shadowBlur': 1,\n 'shadowOffsetX': 1,\n 'shadowOffsetY': 1,\n 'textShadowBlur': 1,\n 'textShadowOffsetX': 1,\n 'textShadowOffsetY': 1,\n 'textBoxShadowBlur': 1,\n 'textBoxShadowOffsetX': 1,\n 'textBoxShadowOffsetY': 1\n};\n\nfunction _default(ctx, propName, value) {\n if (SHADOW_PROPS.hasOwnProperty(propName)) {\n return value *= ctx.dpr;\n }\n\n return value;\n}\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = require(\"../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar each = _util.each;\nvar filter = _util.filter;\nvar map = _util.map;\nvar isArray = _util.isArray;\nvar indexOf = _util.indexOf;\nvar isObject = _util.isObject;\nvar isString = _util.isString;\nvar createHashMap = _util.createHashMap;\nvar assert = _util.assert;\nvar clone = _util.clone;\nvar merge = _util.merge;\nvar extend = _util.extend;\nvar mixin = _util.mixin;\n\nvar modelUtil = require(\"../util/model\");\n\nvar Model = require(\"./Model\");\n\nvar ComponentModel = require(\"./Component\");\n\nvar globalDefault = require(\"./globalDefault\");\n\nvar colorPaletteMixin = require(\"./mixin/colorPalette\");\n\nvar _sourceHelper = require(\"../data/helper/sourceHelper\");\n\nvar resetSourceDefaulter = _sourceHelper.resetSourceDefaulter;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * ECharts global model\n *\n * @module {echarts/model/Global}\n */\n\n/**\n * Caution: If the mechanism should be changed some day, these cases\n * should be considered:\n *\n * (1) In `merge option` mode, if using the same option to call `setOption`\n * many times, the result should be the same (try our best to ensure that).\n * (2) In `merge option` mode, if a component has no id/name specified, it\n * will be merged by index, and the result sequence of the components is\n * consistent to the original sequence.\n * (3) `reset` feature (in toolbox). Find detailed info in comments about\n * `mergeOption` in module:echarts/model/OptionManager.\n */\nvar OPTION_INNER_KEY = '\\0_ec_inner';\n/**\n * @alias module:echarts/model/Global\n *\n * @param {Object} option\n * @param {module:echarts/model/Model} parentModel\n * @param {Object} theme\n */\n\nvar GlobalModel = Model.extend({\n init: function (option, parentModel, theme, optionManager) {\n theme = theme || {};\n this.option = null; // Mark as not initialized.\n\n /**\n * @type {module:echarts/model/Model}\n * @private\n */\n\n this._theme = new Model(theme);\n /**\n * @type {module:echarts/model/OptionManager}\n */\n\n this._optionManager = optionManager;\n },\n setOption: function (option, optionPreprocessorFuncs) {\n assert(!(OPTION_INNER_KEY in option), 'please use chart.getOption()');\n\n this._optionManager.setOption(option, optionPreprocessorFuncs);\n\n this.resetOption(null);\n },\n\n /**\n * @param {string} type null/undefined: reset all.\n * 'recreate': force recreate all.\n * 'timeline': only reset timeline option\n * 'media': only reset media query option\n * @return {boolean} Whether option changed.\n */\n resetOption: function (type) {\n var optionChanged = false;\n var optionManager = this._optionManager;\n\n if (!type || type === 'recreate') {\n var baseOption = optionManager.mountOption(type === 'recreate');\n\n if (!this.option || type === 'recreate') {\n initBase.call(this, baseOption);\n } else {\n this.restoreData();\n this.mergeOption(baseOption);\n }\n\n optionChanged = true;\n }\n\n if (type === 'timeline' || type === 'media') {\n this.restoreData();\n }\n\n if (!type || type === 'recreate' || type === 'timeline') {\n var timelineOption = optionManager.getTimelineOption(this);\n timelineOption && (this.mergeOption(timelineOption), optionChanged = true);\n }\n\n if (!type || type === 'recreate' || type === 'media') {\n var mediaOptions = optionManager.getMediaOption(this, this._api);\n\n if (mediaOptions.length) {\n each(mediaOptions, function (mediaOption) {\n this.mergeOption(mediaOption, optionChanged = true);\n }, this);\n }\n }\n\n return optionChanged;\n },\n\n /**\n * @protected\n */\n mergeOption: function (newOption) {\n var option = this.option;\n var componentsMap = this._componentsMap;\n var newCptTypes = [];\n resetSourceDefaulter(this); // If no component class, merge directly.\n // For example: color, animaiton options, etc.\n\n each(newOption, function (componentOption, mainType) {\n if (componentOption == null) {\n return;\n }\n\n if (!ComponentModel.hasClass(mainType)) {\n // globalSettingTask.dirty();\n option[mainType] = option[mainType] == null ? clone(componentOption) : merge(option[mainType], componentOption, true);\n } else if (mainType) {\n newCptTypes.push(mainType);\n }\n });\n ComponentModel.topologicalTravel(newCptTypes, ComponentModel.getAllClassMainTypes(), visitComponent, this);\n\n function visitComponent(mainType, dependencies) {\n var newCptOptionList = modelUtil.normalizeToArray(newOption[mainType]);\n var mapResult = modelUtil.mappingToExists(componentsMap.get(mainType), newCptOptionList);\n modelUtil.makeIdAndName(mapResult); // Set mainType and complete subType.\n\n each(mapResult, function (item, index) {\n var opt = item.option;\n\n if (isObject(opt)) {\n item.keyInfo.mainType = mainType;\n item.keyInfo.subType = determineSubType(mainType, opt, item.exist);\n }\n });\n var dependentModels = getComponentsByTypes(componentsMap, dependencies);\n option[mainType] = [];\n componentsMap.set(mainType, []);\n each(mapResult, function (resultItem, index) {\n var componentModel = resultItem.exist;\n var newCptOption = resultItem.option;\n assert(isObject(newCptOption) || componentModel, 'Empty component definition'); // Consider where is no new option and should be merged using {},\n // see removeEdgeAndAdd in topologicalTravel and\n // ComponentModel.getAllClassMainTypes.\n\n if (!newCptOption) {\n componentModel.mergeOption({}, this);\n componentModel.optionUpdated({}, false);\n } else {\n var ComponentModelClass = ComponentModel.getClass(mainType, resultItem.keyInfo.subType, true);\n\n if (componentModel && componentModel.constructor === ComponentModelClass) {\n componentModel.name = resultItem.keyInfo.name; // componentModel.settingTask && componentModel.settingTask.dirty();\n\n componentModel.mergeOption(newCptOption, this);\n componentModel.optionUpdated(newCptOption, false);\n } else {\n // PENDING Global as parent ?\n var extraOpt = extend({\n dependentModels: dependentModels,\n componentIndex: index\n }, resultItem.keyInfo);\n componentModel = new ComponentModelClass(newCptOption, this, this, extraOpt);\n extend(componentModel, extraOpt);\n componentModel.init(newCptOption, this, this, extraOpt); // Call optionUpdated after init.\n // newCptOption has been used as componentModel.option\n // and may be merged with theme and default, so pass null\n // to avoid confusion.\n\n componentModel.optionUpdated(null, true);\n }\n }\n\n componentsMap.get(mainType)[index] = componentModel;\n option[mainType][index] = componentModel.option;\n }, this); // Backup series for filtering.\n\n if (mainType === 'series') {\n createSeriesIndices(this, componentsMap.get('series'));\n }\n }\n\n this._seriesIndicesMap = createHashMap(this._seriesIndices = this._seriesIndices || []);\n },\n\n /**\n * Get option for output (cloned option and inner info removed)\n * @public\n * @return {Object}\n */\n getOption: function () {\n var option = clone(this.option);\n each(option, function (opts, mainType) {\n if (ComponentModel.hasClass(mainType)) {\n var opts = modelUtil.normalizeToArray(opts);\n\n for (var i = opts.length - 1; i >= 0; i--) {\n // Remove options with inner id.\n if (modelUtil.isIdInner(opts[i])) {\n opts.splice(i, 1);\n }\n }\n\n option[mainType] = opts;\n }\n });\n delete option[OPTION_INNER_KEY];\n return option;\n },\n\n /**\n * @return {module:echarts/model/Model}\n */\n getTheme: function () {\n return this._theme;\n },\n\n /**\n * @param {string} mainType\n * @param {number} [idx=0]\n * @return {module:echarts/model/Component}\n */\n getComponent: function (mainType, idx) {\n var list = this._componentsMap.get(mainType);\n\n if (list) {\n return list[idx || 0];\n }\n },\n\n /**\n * If none of index and id and name used, return all components with mainType.\n * @param {Object} condition\n * @param {string} condition.mainType\n * @param {string} [condition.subType] If ignore, only query by mainType\n * @param {number|Array.} [condition.index] Either input index or id or name.\n * @param {string|Array.} [condition.id] Either input index or id or name.\n * @param {string|Array.} [condition.name] Either input index or id or name.\n * @return {Array.}\n */\n queryComponents: function (condition) {\n var mainType = condition.mainType;\n\n if (!mainType) {\n return [];\n }\n\n var index = condition.index;\n var id = condition.id;\n var name = condition.name;\n\n var cpts = this._componentsMap.get(mainType);\n\n if (!cpts || !cpts.length) {\n return [];\n }\n\n var result;\n\n if (index != null) {\n if (!isArray(index)) {\n index = [index];\n }\n\n result = filter(map(index, function (idx) {\n return cpts[idx];\n }), function (val) {\n return !!val;\n });\n } else if (id != null) {\n var isIdArray = isArray(id);\n result = filter(cpts, function (cpt) {\n return isIdArray && indexOf(id, cpt.id) >= 0 || !isIdArray && cpt.id === id;\n });\n } else if (name != null) {\n var isNameArray = isArray(name);\n result = filter(cpts, function (cpt) {\n return isNameArray && indexOf(name, cpt.name) >= 0 || !isNameArray && cpt.name === name;\n });\n } else {\n // Return all components with mainType\n result = cpts.slice();\n }\n\n return filterBySubType(result, condition);\n },\n\n /**\n * The interface is different from queryComponents,\n * which is convenient for inner usage.\n *\n * @usage\n * var result = findComponents(\n * {mainType: 'dataZoom', query: {dataZoomId: 'abc'}}\n * );\n * var result = findComponents(\n * {mainType: 'series', subType: 'pie', query: {seriesName: 'uio'}}\n * );\n * var result = findComponents(\n * {mainType: 'series',\n * filter: function (model, index) {...}}\n * );\n * // result like [component0, componnet1, ...]\n *\n * @param {Object} condition\n * @param {string} condition.mainType Mandatory.\n * @param {string} [condition.subType] Optional.\n * @param {Object} [condition.query] like {xxxIndex, xxxId, xxxName},\n * where xxx is mainType.\n * If query attribute is null/undefined or has no index/id/name,\n * do not filtering by query conditions, which is convenient for\n * no-payload situations or when target of action is global.\n * @param {Function} [condition.filter] parameter: component, return boolean.\n * @return {Array.}\n */\n findComponents: function (condition) {\n var query = condition.query;\n var mainType = condition.mainType;\n var queryCond = getQueryCond(query);\n var result = queryCond ? this.queryComponents(queryCond) : this._componentsMap.get(mainType);\n return doFilter(filterBySubType(result, condition));\n\n function getQueryCond(q) {\n var indexAttr = mainType + 'Index';\n var idAttr = mainType + 'Id';\n var nameAttr = mainType + 'Name';\n return q && (q[indexAttr] != null || q[idAttr] != null || q[nameAttr] != null) ? {\n mainType: mainType,\n // subType will be filtered finally.\n index: q[indexAttr],\n id: q[idAttr],\n name: q[nameAttr]\n } : null;\n }\n\n function doFilter(res) {\n return condition.filter ? filter(res, condition.filter) : res;\n }\n },\n\n /**\n * @usage\n * eachComponent('legend', function (legendModel, index) {\n * ...\n * });\n * eachComponent(function (componentType, model, index) {\n * // componentType does not include subType\n * // (componentType is 'xxx' but not 'xxx.aa')\n * });\n * eachComponent(\n * {mainType: 'dataZoom', query: {dataZoomId: 'abc'}},\n * function (model, index) {...}\n * );\n * eachComponent(\n * {mainType: 'series', subType: 'pie', query: {seriesName: 'uio'}},\n * function (model, index) {...}\n * );\n *\n * @param {string|Object=} mainType When mainType is object, the definition\n * is the same as the method 'findComponents'.\n * @param {Function} cb\n * @param {*} context\n */\n eachComponent: function (mainType, cb, context) {\n var componentsMap = this._componentsMap;\n\n if (typeof mainType === 'function') {\n context = cb;\n cb = mainType;\n componentsMap.each(function (components, componentType) {\n each(components, function (component, index) {\n cb.call(context, componentType, component, index);\n });\n });\n } else if (isString(mainType)) {\n each(componentsMap.get(mainType), cb, context);\n } else if (isObject(mainType)) {\n var queryResult = this.findComponents(mainType);\n each(queryResult, cb, context);\n }\n },\n\n /**\n * @param {string} name\n * @return {Array.}\n */\n getSeriesByName: function (name) {\n var series = this._componentsMap.get('series');\n\n return filter(series, function (oneSeries) {\n return oneSeries.name === name;\n });\n },\n\n /**\n * @param {number} seriesIndex\n * @return {module:echarts/model/Series}\n */\n getSeriesByIndex: function (seriesIndex) {\n return this._componentsMap.get('series')[seriesIndex];\n },\n\n /**\n * Get series list before filtered by type.\n * FIXME: rename to getRawSeriesByType?\n *\n * @param {string} subType\n * @return {Array.}\n */\n getSeriesByType: function (subType) {\n var series = this._componentsMap.get('series');\n\n return filter(series, function (oneSeries) {\n return oneSeries.subType === subType;\n });\n },\n\n /**\n * @return {Array.}\n */\n getSeries: function () {\n return this._componentsMap.get('series').slice();\n },\n\n /**\n * @return {number}\n */\n getSeriesCount: function () {\n return this._componentsMap.get('series').length;\n },\n\n /**\n * After filtering, series may be different\n * frome raw series.\n *\n * @param {Function} cb\n * @param {*} context\n */\n eachSeries: function (cb, context) {\n assertSeriesInitialized(this);\n each(this._seriesIndices, function (rawSeriesIndex) {\n var series = this._componentsMap.get('series')[rawSeriesIndex];\n\n cb.call(context, series, rawSeriesIndex);\n }, this);\n },\n\n /**\n * Iterate raw series before filtered.\n *\n * @param {Function} cb\n * @param {*} context\n */\n eachRawSeries: function (cb, context) {\n each(this._componentsMap.get('series'), cb, context);\n },\n\n /**\n * After filtering, series may be different.\n * frome raw series.\n *\n * @param {string} subType.\n * @param {Function} cb\n * @param {*} context\n */\n eachSeriesByType: function (subType, cb, context) {\n assertSeriesInitialized(this);\n each(this._seriesIndices, function (rawSeriesIndex) {\n var series = this._componentsMap.get('series')[rawSeriesIndex];\n\n if (series.subType === subType) {\n cb.call(context, series, rawSeriesIndex);\n }\n }, this);\n },\n\n /**\n * Iterate raw series before filtered of given type.\n *\n * @parma {string} subType\n * @param {Function} cb\n * @param {*} context\n */\n eachRawSeriesByType: function (subType, cb, context) {\n return each(this.getSeriesByType(subType), cb, context);\n },\n\n /**\n * @param {module:echarts/model/Series} seriesModel\n */\n isSeriesFiltered: function (seriesModel) {\n assertSeriesInitialized(this);\n return this._seriesIndicesMap.get(seriesModel.componentIndex) == null;\n },\n\n /**\n * @return {Array.}\n */\n getCurrentSeriesIndices: function () {\n return (this._seriesIndices || []).slice();\n },\n\n /**\n * @param {Function} cb\n * @param {*} context\n */\n filterSeries: function (cb, context) {\n assertSeriesInitialized(this);\n var filteredSeries = filter(this._componentsMap.get('series'), cb, context);\n createSeriesIndices(this, filteredSeries);\n },\n restoreData: function (payload) {\n var componentsMap = this._componentsMap;\n createSeriesIndices(this, componentsMap.get('series'));\n var componentTypes = [];\n componentsMap.each(function (components, componentType) {\n componentTypes.push(componentType);\n });\n ComponentModel.topologicalTravel(componentTypes, ComponentModel.getAllClassMainTypes(), function (componentType, dependencies) {\n each(componentsMap.get(componentType), function (component) {\n (componentType !== 'series' || !isNotTargetSeries(component, payload)) && component.restoreData();\n });\n });\n }\n});\n\nfunction isNotTargetSeries(seriesModel, payload) {\n if (payload) {\n var index = payload.seiresIndex;\n var id = payload.seriesId;\n var name = payload.seriesName;\n return index != null && seriesModel.componentIndex !== index || id != null && seriesModel.id !== id || name != null && seriesModel.name !== name;\n }\n}\n/**\n * @inner\n */\n\n\nfunction mergeTheme(option, theme) {\n // PENDING\n // NOT use `colorLayer` in theme if option has `color`\n var notMergeColorLayer = option.color && !option.colorLayer;\n each(theme, function (themeItem, name) {\n if (name === 'colorLayer' && notMergeColorLayer) {\n return;\n } // 如果有 component model 则把具体的 merge 逻辑交给该 model 处理\n\n\n if (!ComponentModel.hasClass(name)) {\n if (typeof themeItem === 'object') {\n option[name] = !option[name] ? clone(themeItem) : merge(option[name], themeItem, false);\n } else {\n if (option[name] == null) {\n option[name] = themeItem;\n }\n }\n }\n });\n}\n\nfunction initBase(baseOption) {\n baseOption = baseOption; // Using OPTION_INNER_KEY to mark that this option can not be used outside,\n // i.e. `chart.setOption(chart.getModel().option);` is forbiden.\n\n this.option = {};\n this.option[OPTION_INNER_KEY] = 1;\n /**\n * Init with series: [], in case of calling findSeries method\n * before series initialized.\n * @type {Object.>}\n * @private\n */\n\n this._componentsMap = createHashMap({\n series: []\n });\n /**\n * Mapping between filtered series list and raw series list.\n * key: filtered series indices, value: raw series indices.\n * @type {Array.}\n * @private\n */\n\n this._seriesIndices;\n this._seriesIndicesMap;\n mergeTheme(baseOption, this._theme.option); // TODO Needs clone when merging to the unexisted property\n\n merge(baseOption, globalDefault, false);\n this.mergeOption(baseOption);\n}\n/**\n * @inner\n * @param {Array.|string} types model types\n * @return {Object} key: {string} type, value: {Array.} models\n */\n\n\nfunction getComponentsByTypes(componentsMap, types) {\n if (!isArray(types)) {\n types = types ? [types] : [];\n }\n\n var ret = {};\n each(types, function (type) {\n ret[type] = (componentsMap.get(type) || []).slice();\n });\n return ret;\n}\n/**\n * @inner\n */\n\n\nfunction determineSubType(mainType, newCptOption, existComponent) {\n var subType = newCptOption.type ? newCptOption.type : existComponent ? existComponent.subType // Use determineSubType only when there is no existComponent.\n : ComponentModel.determineSubType(mainType, newCptOption); // tooltip, markline, markpoint may always has no subType\n\n return subType;\n}\n/**\n * @inner\n */\n\n\nfunction createSeriesIndices(ecModel, seriesModels) {\n ecModel._seriesIndicesMap = createHashMap(ecModel._seriesIndices = map(seriesModels, function (series) {\n return series.componentIndex;\n }) || []);\n}\n/**\n * @inner\n */\n\n\nfunction filterBySubType(components, condition) {\n // Using hasOwnProperty for restrict. Consider\n // subType is undefined in user payload.\n return condition.hasOwnProperty('subType') ? filter(components, function (cpt) {\n return cpt.subType === condition.subType;\n }) : components;\n}\n/**\n * @inner\n */\n\n\nfunction assertSeriesInitialized(ecModel) {}\n\nmixin(GlobalModel, colorPaletteMixin);\nvar _default = GlobalModel;\nmodule.exports = _default;","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!./TodoTaskHandlerSidebar.vue?vue&type=style&index=1&id=4ab7f9c1&lang=scss&scoped=true&\"","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction defaultKeyGetter(item) {\n return item;\n}\n/**\n * @param {Array} oldArr\n * @param {Array} newArr\n * @param {Function} oldKeyGetter\n * @param {Function} newKeyGetter\n * @param {Object} [context] Can be visited by this.context in callback.\n */\n\n\nfunction DataDiffer(oldArr, newArr, oldKeyGetter, newKeyGetter, context) {\n this._old = oldArr;\n this._new = newArr;\n this._oldKeyGetter = oldKeyGetter || defaultKeyGetter;\n this._newKeyGetter = newKeyGetter || defaultKeyGetter;\n this.context = context;\n}\n\nDataDiffer.prototype = {\n constructor: DataDiffer,\n\n /**\n * Callback function when add a data\n */\n add: function (func) {\n this._add = func;\n return this;\n },\n\n /**\n * Callback function when update a data\n */\n update: function (func) {\n this._update = func;\n return this;\n },\n\n /**\n * Callback function when remove a data\n */\n remove: function (func) {\n this._remove = func;\n return this;\n },\n execute: function () {\n var oldArr = this._old;\n var newArr = this._new;\n var oldDataIndexMap = {};\n var newDataIndexMap = {};\n var oldDataKeyArr = [];\n var newDataKeyArr = [];\n var i;\n initIndexMap(oldArr, oldDataIndexMap, oldDataKeyArr, '_oldKeyGetter', this);\n initIndexMap(newArr, newDataIndexMap, newDataKeyArr, '_newKeyGetter', this);\n\n for (i = 0; i < oldArr.length; i++) {\n var key = oldDataKeyArr[i];\n var idx = newDataIndexMap[key]; // idx can never be empty array here. see 'set null' logic below.\n\n if (idx != null) {\n // Consider there is duplicate key (for example, use dataItem.name as key).\n // We should make sure every item in newArr and oldArr can be visited.\n var len = idx.length;\n\n if (len) {\n len === 1 && (newDataIndexMap[key] = null);\n idx = idx.shift();\n } else {\n newDataIndexMap[key] = null;\n }\n\n this._update && this._update(idx, i);\n } else {\n this._remove && this._remove(i);\n }\n }\n\n for (var i = 0; i < newDataKeyArr.length; i++) {\n var key = newDataKeyArr[i];\n\n if (newDataIndexMap.hasOwnProperty(key)) {\n var idx = newDataIndexMap[key];\n\n if (idx == null) {\n continue;\n } // idx can never be empty array here. see 'set null' logic above.\n\n\n if (!idx.length) {\n this._add && this._add(idx);\n } else {\n for (var j = 0, len = idx.length; j < len; j++) {\n this._add && this._add(idx[j]);\n }\n }\n }\n }\n }\n};\n\nfunction initIndexMap(arr, map, keyArr, keyGetterName, dataDiffer) {\n for (var i = 0; i < arr.length; i++) {\n // Add prefix to avoid conflict with Object.prototype.\n var key = '_ec_' + dataDiffer[keyGetterName](arr[i], i);\n var existence = map[key];\n\n if (existence == null) {\n keyArr.push(key);\n map[key] = i;\n } else {\n if (!existence.length) {\n map[key] = existence = [existence];\n }\n\n existence.push(i);\n }\n }\n}\n\nvar _default = DataDiffer;\nmodule.exports = _default;","var ContextCachedBy = {\n NONE: 0,\n STYLE_BIND: 1,\n PLAIN_TEXT: 2\n}; // Avoid confused with 0/false.\n\nvar WILL_BE_RESTORED = 9;\nexports.ContextCachedBy = ContextCachedBy;\nexports.WILL_BE_RESTORED = WILL_BE_RESTORED;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar echartsAPIList = ['getDom', 'getZr', 'getWidth', 'getHeight', 'getDevicePixelRatio', 'dispatchAction', 'isDisposed', 'on', 'off', 'getDataURL', 'getConnectedDataURL', 'getModel', 'getOption', 'getViewOfComponentModel', 'getViewOfSeriesModel']; // And `getCoordinateSystems` and `getComponentByElement` will be injected in echarts.js\n\nfunction ExtensionAPI(chartInstance) {\n zrUtil.each(echartsAPIList, function (name) {\n this[name] = zrUtil.bind(chartInstance[name], chartInstance);\n }, this);\n}\n\nvar _default = ExtensionAPI;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar each = _util.each;\nvar map = _util.map;\n\nvar _number = require(\"../util/number\");\n\nvar linearMap = _number.linearMap;\nvar getPixelPrecision = _number.getPixelPrecision;\nvar round = _number.round;\n\nvar _axisTickLabelBuilder = require(\"./axisTickLabelBuilder\");\n\nvar createAxisTicks = _axisTickLabelBuilder.createAxisTicks;\nvar createAxisLabels = _axisTickLabelBuilder.createAxisLabels;\nvar calculateCategoryInterval = _axisTickLabelBuilder.calculateCategoryInterval;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar NORMALIZED_EXTENT = [0, 1];\n/**\n * Base class of Axis.\n * @constructor\n */\n\nvar Axis = function (dim, scale, extent) {\n /**\n * Axis dimension. Such as 'x', 'y', 'z', 'angle', 'radius'.\n * @type {string}\n */\n this.dim = dim;\n /**\n * Axis scale\n * @type {module:echarts/coord/scale/*}\n */\n\n this.scale = scale;\n /**\n * @type {Array.}\n * @private\n */\n\n this._extent = extent || [0, 0];\n /**\n * @type {boolean}\n */\n\n this.inverse = false;\n /**\n * Usually true when axis has a ordinal scale\n * @type {boolean}\n */\n\n this.onBand = false;\n};\n\nAxis.prototype = {\n constructor: Axis,\n\n /**\n * If axis extent contain given coord\n * @param {number} coord\n * @return {boolean}\n */\n contain: function (coord) {\n var extent = this._extent;\n var min = Math.min(extent[0], extent[1]);\n var max = Math.max(extent[0], extent[1]);\n return coord >= min && coord <= max;\n },\n\n /**\n * If axis extent contain given data\n * @param {number} data\n * @return {boolean}\n */\n containData: function (data) {\n return this.scale.contain(data);\n },\n\n /**\n * Get coord extent.\n * @return {Array.}\n */\n getExtent: function () {\n return this._extent.slice();\n },\n\n /**\n * Get precision used for formatting\n * @param {Array.} [dataExtent]\n * @return {number}\n */\n getPixelPrecision: function (dataExtent) {\n return getPixelPrecision(dataExtent || this.scale.getExtent(), this._extent);\n },\n\n /**\n * Set coord extent\n * @param {number} start\n * @param {number} end\n */\n setExtent: function (start, end) {\n var extent = this._extent;\n extent[0] = start;\n extent[1] = end;\n },\n\n /**\n * Convert data to coord. Data is the rank if it has an ordinal scale\n * @param {number} data\n * @param {boolean} clamp\n * @return {number}\n */\n dataToCoord: function (data, clamp) {\n var extent = this._extent;\n var scale = this.scale;\n data = scale.normalize(data);\n\n if (this.onBand && scale.type === 'ordinal') {\n extent = extent.slice();\n fixExtentWithBands(extent, scale.count());\n }\n\n return linearMap(data, NORMALIZED_EXTENT, extent, clamp);\n },\n\n /**\n * Convert coord to data. Data is the rank if it has an ordinal scale\n * @param {number} coord\n * @param {boolean} clamp\n * @return {number}\n */\n coordToData: function (coord, clamp) {\n var extent = this._extent;\n var scale = this.scale;\n\n if (this.onBand && scale.type === 'ordinal') {\n extent = extent.slice();\n fixExtentWithBands(extent, scale.count());\n }\n\n var t = linearMap(coord, extent, NORMALIZED_EXTENT, clamp);\n return this.scale.scale(t);\n },\n\n /**\n * Convert pixel point to data in axis\n * @param {Array.} point\n * @param {boolean} clamp\n * @return {number} data\n */\n pointToData: function (point, clamp) {// Should be implemented in derived class if necessary.\n },\n\n /**\n * Different from `zrUtil.map(axis.getTicks(), axis.dataToCoord, axis)`,\n * `axis.getTicksCoords` considers `onBand`, which is used by\n * `boundaryGap:true` of category axis and splitLine and splitArea.\n * @param {Object} [opt]\n * @param {Model} [opt.tickModel=axis.model.getModel('axisTick')]\n * @param {boolean} [opt.clamp] If `true`, the first and the last\n * tick must be at the axis end points. Otherwise, clip ticks\n * that outside the axis extent.\n * @return {Array.} [{\n * coord: ...,\n * tickValue: ...\n * }, ...]\n */\n getTicksCoords: function (opt) {\n opt = opt || {};\n var tickModel = opt.tickModel || this.getTickModel();\n var result = createAxisTicks(this, tickModel);\n var ticks = result.ticks;\n var ticksCoords = map(ticks, function (tickValue) {\n return {\n coord: this.dataToCoord(tickValue),\n tickValue: tickValue\n };\n }, this);\n var alignWithLabel = tickModel.get('alignWithLabel');\n fixOnBandTicksCoords(this, ticksCoords, alignWithLabel, opt.clamp);\n return ticksCoords;\n },\n\n /**\n * @return {Array.>} [{ coord: ..., tickValue: ...}]\n */\n getMinorTicksCoords: function () {\n if (this.scale.type === 'ordinal') {\n // Category axis doesn't support minor ticks\n return [];\n }\n\n var minorTickModel = this.model.getModel('minorTick');\n var splitNumber = minorTickModel.get('splitNumber'); // Protection.\n\n if (!(splitNumber > 0 && splitNumber < 100)) {\n splitNumber = 5;\n }\n\n var minorTicks = this.scale.getMinorTicks(splitNumber);\n var minorTicksCoords = map(minorTicks, function (minorTicksGroup) {\n return map(minorTicksGroup, function (minorTick) {\n return {\n coord: this.dataToCoord(minorTick),\n tickValue: minorTick\n };\n }, this);\n }, this);\n return minorTicksCoords;\n },\n\n /**\n * @return {Array.} [{\n * formattedLabel: string,\n * rawLabel: axis.scale.getLabel(tickValue)\n * tickValue: number\n * }, ...]\n */\n getViewLabels: function () {\n return createAxisLabels(this).labels;\n },\n\n /**\n * @return {module:echarts/coord/model/Model}\n */\n getLabelModel: function () {\n return this.model.getModel('axisLabel');\n },\n\n /**\n * Notice here we only get the default tick model. For splitLine\n * or splitArea, we should pass the splitLineModel or splitAreaModel\n * manually when calling `getTicksCoords`.\n * In GL, this method may be overrided to:\n * `axisModel.getModel('axisTick', grid3DModel.getModel('axisTick'));`\n * @return {module:echarts/coord/model/Model}\n */\n getTickModel: function () {\n return this.model.getModel('axisTick');\n },\n\n /**\n * Get width of band\n * @return {number}\n */\n getBandWidth: function () {\n var axisExtent = this._extent;\n var dataExtent = this.scale.getExtent();\n var len = dataExtent[1] - dataExtent[0] + (this.onBand ? 1 : 0); // Fix #2728, avoid NaN when only one data.\n\n len === 0 && (len = 1);\n var size = Math.abs(axisExtent[1] - axisExtent[0]);\n return Math.abs(size) / len;\n },\n\n /**\n * @abstract\n * @return {boolean} Is horizontal\n */\n isHorizontal: null,\n\n /**\n * @abstract\n * @return {number} Get axis rotate, by degree.\n */\n getRotate: null,\n\n /**\n * Only be called in category axis.\n * Can be overrided, consider other axes like in 3D.\n * @return {number} Auto interval for cateogry axis tick and label\n */\n calculateCategoryInterval: function () {\n return calculateCategoryInterval(this);\n }\n};\n\nfunction fixExtentWithBands(extent, nTick) {\n var size = extent[1] - extent[0];\n var len = nTick;\n var margin = size / len / 2;\n extent[0] += margin;\n extent[1] -= margin;\n} // If axis has labels [1, 2, 3, 4]. Bands on the axis are\n// |---1---|---2---|---3---|---4---|.\n// So the displayed ticks and splitLine/splitArea should between\n// each data item, otherwise cause misleading (e.g., split tow bars\n// of a single data item when there are two bar series).\n// Also consider if tickCategoryInterval > 0 and onBand, ticks and\n// splitLine/spliteArea should layout appropriately corresponding\n// to displayed labels. (So we should not use `getBandWidth` in this\n// case).\n\n\nfunction fixOnBandTicksCoords(axis, ticksCoords, alignWithLabel, clamp) {\n var ticksLen = ticksCoords.length;\n\n if (!axis.onBand || alignWithLabel || !ticksLen) {\n return;\n }\n\n var axisExtent = axis.getExtent();\n var last;\n var diffSize;\n\n if (ticksLen === 1) {\n ticksCoords[0].coord = axisExtent[0];\n last = ticksCoords[1] = {\n coord: axisExtent[0]\n };\n } else {\n var crossLen = ticksCoords[ticksLen - 1].tickValue - ticksCoords[0].tickValue;\n var shift = (ticksCoords[ticksLen - 1].coord - ticksCoords[0].coord) / crossLen;\n each(ticksCoords, function (ticksItem) {\n ticksItem.coord -= shift / 2;\n });\n var dataExtent = axis.scale.getExtent();\n diffSize = 1 + dataExtent[1] - ticksCoords[ticksLen - 1].tickValue;\n last = {\n coord: ticksCoords[ticksLen - 1].coord + shift * diffSize\n };\n ticksCoords.push(last);\n }\n\n var inverse = axisExtent[0] > axisExtent[1]; // Handling clamp.\n\n if (littleThan(ticksCoords[0].coord, axisExtent[0])) {\n clamp ? ticksCoords[0].coord = axisExtent[0] : ticksCoords.shift();\n }\n\n if (clamp && littleThan(axisExtent[0], ticksCoords[0].coord)) {\n ticksCoords.unshift({\n coord: axisExtent[0]\n });\n }\n\n if (littleThan(axisExtent[1], last.coord)) {\n clamp ? last.coord = axisExtent[1] : ticksCoords.pop();\n }\n\n if (clamp && littleThan(last.coord, axisExtent[1])) {\n ticksCoords.push({\n coord: axisExtent[1]\n });\n }\n\n function littleThan(a, b) {\n // Avoid rounding error cause calculated tick coord different with extent.\n // It may cause an extra unecessary tick added.\n a = round(a);\n b = round(b);\n return inverse ? a > b : a < b;\n }\n}\n\nvar _default = Axis;\nmodule.exports = _default;","/**\n * The algoritm is learnt from\n * https://franklinta.com/2014/09/08/computing-css-matrix3d-transforms/\n * And we made some optimization for matrix inversion.\n * Other similar approaches:\n * \"cv::getPerspectiveTransform\", \"Direct Linear Transformation\".\n */\nvar LN2 = Math.log(2);\n\nfunction determinant(rows, rank, rowStart, rowMask, colMask, detCache) {\n var cacheKey = rowMask + '-' + colMask;\n var fullRank = rows.length;\n\n if (detCache.hasOwnProperty(cacheKey)) {\n return detCache[cacheKey];\n }\n\n if (rank === 1) {\n // In this case the colMask must be like: `11101111`. We can find the place of `0`.\n var colStart = Math.round(Math.log((1 << fullRank) - 1 & ~colMask) / LN2);\n return rows[rowStart][colStart];\n }\n\n var subRowMask = rowMask | 1 << rowStart;\n var subRowStart = rowStart + 1;\n\n while (rowMask & 1 << subRowStart) {\n subRowStart++;\n }\n\n var sum = 0;\n\n for (var j = 0, colLocalIdx = 0; j < fullRank; j++) {\n var colTag = 1 << j;\n\n if (!(colTag & colMask)) {\n sum += (colLocalIdx % 2 ? -1 : 1) * rows[rowStart][j] // det(subMatrix(0, j))\n * determinant(rows, rank - 1, subRowStart, subRowMask, colMask | colTag, detCache);\n colLocalIdx++;\n }\n }\n\n detCache[cacheKey] = sum;\n return sum;\n}\n/**\n * Usage:\n * ```js\n * var transformer = buildTransformer(\n * [10, 44, 100, 44, 100, 300, 10, 300],\n * [50, 54, 130, 14, 140, 330, 14, 220]\n * );\n * var out = [];\n * transformer && transformer([11, 33], out);\n * ```\n *\n * Notice: `buildTransformer` may take more than 10ms in some Android device.\n *\n * @param {Array.} src source four points, [x0, y0, x1, y1, x2, y2, x3, y3]\n * @param {Array.} dest destination four points, [x0, y0, x1, y1, x2, y2, x3, y3]\n * @return {Function} transformer If fail, return null/undefined.\n */\n\n\nfunction buildTransformer(src, dest) {\n var mA = [[src[0], src[1], 1, 0, 0, 0, -dest[0] * src[0], -dest[0] * src[1]], [0, 0, 0, src[0], src[1], 1, -dest[1] * src[0], -dest[1] * src[1]], [src[2], src[3], 1, 0, 0, 0, -dest[2] * src[2], -dest[2] * src[3]], [0, 0, 0, src[2], src[3], 1, -dest[3] * src[2], -dest[3] * src[3]], [src[4], src[5], 1, 0, 0, 0, -dest[4] * src[4], -dest[4] * src[5]], [0, 0, 0, src[4], src[5], 1, -dest[5] * src[4], -dest[5] * src[5]], [src[6], src[7], 1, 0, 0, 0, -dest[6] * src[6], -dest[6] * src[7]], [0, 0, 0, src[6], src[7], 1, -dest[7] * src[6], -dest[7] * src[7]]];\n var detCache = {};\n var det = determinant(mA, 8, 0, 0, 0, detCache);\n\n if (det === 0) {\n // can not make transformer when and only when\n // any three of the markers are collinear.\n return;\n } // `invert(mA) * dest`, that is, `adj(mA) / det * dest`.\n\n\n var vh = [];\n\n for (var i = 0; i < 8; i++) {\n for (var j = 0; j < 8; j++) {\n vh[j] == null && (vh[j] = 0);\n vh[j] += ((i + j) % 2 ? -1 : 1) * // det(subMatrix(i, j))\n determinant(mA, 7, i === 0 ? 1 : 0, 1 << i, 1 << j, detCache) / det * dest[i];\n }\n }\n\n return function (out, srcPointX, srcPointY) {\n var pk = srcPointX * vh[6] + srcPointY * vh[7] + 1;\n out[0] = (srcPointX * vh[0] + srcPointY * vh[1] + vh[2]) / pk;\n out[1] = (srcPointX * vh[3] + srcPointY * vh[4] + vh[5]) / pk;\n };\n}\n\nexports.buildTransformer = buildTransformer;","var PI2 = Math.PI * 2;\n\nfunction normalizeRadian(angle) {\n angle %= PI2;\n\n if (angle < 0) {\n angle += PI2;\n }\n\n return angle;\n}\n\nexports.normalizeRadian = normalizeRadian;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar createHashMap = _util.createHashMap;\nvar each = _util.each;\nvar isString = _util.isString;\nvar defaults = _util.defaults;\nvar extend = _util.extend;\nvar isObject = _util.isObject;\nvar clone = _util.clone;\n\nvar _model = require(\"../../util/model\");\n\nvar normalizeToArray = _model.normalizeToArray;\n\nvar _sourceHelper = require(\"./sourceHelper\");\n\nvar guessOrdinal = _sourceHelper.guessOrdinal;\nvar BE_ORDINAL = _sourceHelper.BE_ORDINAL;\n\nvar Source = require(\"../Source\");\n\nvar _dimensionHelper = require(\"./dimensionHelper\");\n\nvar OTHER_DIMENSIONS = _dimensionHelper.OTHER_DIMENSIONS;\n\nvar DataDimensionInfo = require(\"../DataDimensionInfo\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @deprecated\n * Use `echarts/data/helper/createDimensions` instead.\n */\n\n/**\n * @see {module:echarts/test/ut/spec/data/completeDimensions}\n *\n * This method builds the relationship between:\n * + \"what the coord sys or series requires (see `sysDims`)\",\n * + \"what the user defines (in `encode` and `dimensions`, see `opt.dimsDef` and `opt.encodeDef`)\"\n * + \"what the data source provids (see `source`)\".\n *\n * Some guess strategy will be adapted if user does not define something.\n * If no 'value' dimension specified, the first no-named dimension will be\n * named as 'value'.\n *\n * @param {Array.} sysDims Necessary dimensions, like ['x', 'y'], which\n * provides not only dim template, but also default order.\n * properties: 'name', 'type', 'displayName'.\n * `name` of each item provides default coord name.\n * [{dimsDef: [string|Object, ...]}, ...] dimsDef of sysDim item provides default dim name, and\n * provide dims count that the sysDim required.\n * [{ordinalMeta}] can be specified.\n * @param {module:echarts/data/Source|Array|Object} source or data (for compatibal with pervious)\n * @param {Object} [opt]\n * @param {Array.} [opt.dimsDef] option.series.dimensions User defined dimensions\n * For example: ['asdf', {name, type}, ...].\n * @param {Object|HashMap} [opt.encodeDef] option.series.encode {x: 2, y: [3, 1], tooltip: [1, 2], label: 3}\n * @param {Function} [opt.encodeDefaulter] Called if no `opt.encodeDef` exists.\n * If not specified, auto find the next available data dim.\n * param source {module:data/Source}\n * param dimCount {number}\n * return {Object} encode Never be `null/undefined`.\n * @param {string} [opt.generateCoord] Generate coord dim with the given name.\n * If not specified, extra dim names will be:\n * 'value', 'value0', 'value1', ...\n * @param {number} [opt.generateCoordCount] By default, the generated dim name is `generateCoord`.\n * If `generateCoordCount` specified, the generated dim names will be:\n * `generateCoord` + 0, `generateCoord` + 1, ...\n * can be Infinity, indicate that use all of the remain columns.\n * @param {number} [opt.dimCount] If not specified, guess by the first data item.\n * @return {Array.}\n */\nfunction completeDimensions(sysDims, source, opt) {\n if (!Source.isInstance(source)) {\n source = Source.seriesDataToSource(source);\n }\n\n opt = opt || {};\n sysDims = (sysDims || []).slice();\n var dimsDef = (opt.dimsDef || []).slice();\n var dataDimNameMap = createHashMap();\n var coordDimNameMap = createHashMap(); // var valueCandidate;\n\n var result = [];\n var dimCount = getDimCount(source, sysDims, dimsDef, opt.dimCount); // Apply user defined dims (`name` and `type`) and init result.\n\n for (var i = 0; i < dimCount; i++) {\n var dimDefItem = dimsDef[i] = extend({}, isObject(dimsDef[i]) ? dimsDef[i] : {\n name: dimsDef[i]\n });\n var userDimName = dimDefItem.name;\n var resultItem = result[i] = new DataDimensionInfo(); // Name will be applied later for avoiding duplication.\n\n if (userDimName != null && dataDimNameMap.get(userDimName) == null) {\n // Only if `series.dimensions` is defined in option\n // displayName, will be set, and dimension will be diplayed vertically in\n // tooltip by default.\n resultItem.name = resultItem.displayName = userDimName;\n dataDimNameMap.set(userDimName, i);\n }\n\n dimDefItem.type != null && (resultItem.type = dimDefItem.type);\n dimDefItem.displayName != null && (resultItem.displayName = dimDefItem.displayName);\n }\n\n var encodeDef = opt.encodeDef;\n\n if (!encodeDef && opt.encodeDefaulter) {\n encodeDef = opt.encodeDefaulter(source, dimCount);\n }\n\n encodeDef = createHashMap(encodeDef); // Set `coordDim` and `coordDimIndex` by `encodeDef` and normalize `encodeDef`.\n\n encodeDef.each(function (dataDims, coordDim) {\n dataDims = normalizeToArray(dataDims).slice(); // Note: It is allowed that `dataDims.length` is `0`, e.g., options is\n // `{encode: {x: -1, y: 1}}`. Should not filter anything in\n // this case.\n\n if (dataDims.length === 1 && !isString(dataDims[0]) && dataDims[0] < 0) {\n encodeDef.set(coordDim, false);\n return;\n }\n\n var validDataDims = encodeDef.set(coordDim, []);\n each(dataDims, function (resultDimIdx, idx) {\n // The input resultDimIdx can be dim name or index.\n isString(resultDimIdx) && (resultDimIdx = dataDimNameMap.get(resultDimIdx));\n\n if (resultDimIdx != null && resultDimIdx < dimCount) {\n validDataDims[idx] = resultDimIdx;\n applyDim(result[resultDimIdx], coordDim, idx);\n }\n });\n }); // Apply templetes and default order from `sysDims`.\n\n var availDimIdx = 0;\n each(sysDims, function (sysDimItem, sysDimIndex) {\n var coordDim;\n var sysDimItem;\n var sysDimItemDimsDef;\n var sysDimItemOtherDims;\n\n if (isString(sysDimItem)) {\n coordDim = sysDimItem;\n sysDimItem = {};\n } else {\n coordDim = sysDimItem.name;\n var ordinalMeta = sysDimItem.ordinalMeta;\n sysDimItem.ordinalMeta = null;\n sysDimItem = clone(sysDimItem);\n sysDimItem.ordinalMeta = ordinalMeta; // `coordDimIndex` should not be set directly.\n\n sysDimItemDimsDef = sysDimItem.dimsDef;\n sysDimItemOtherDims = sysDimItem.otherDims;\n sysDimItem.name = sysDimItem.coordDim = sysDimItem.coordDimIndex = sysDimItem.dimsDef = sysDimItem.otherDims = null;\n }\n\n var dataDims = encodeDef.get(coordDim); // negative resultDimIdx means no need to mapping.\n\n if (dataDims === false) {\n return;\n }\n\n var dataDims = normalizeToArray(dataDims); // dimensions provides default dim sequences.\n\n if (!dataDims.length) {\n for (var i = 0; i < (sysDimItemDimsDef && sysDimItemDimsDef.length || 1); i++) {\n while (availDimIdx < result.length && result[availDimIdx].coordDim != null) {\n availDimIdx++;\n }\n\n availDimIdx < result.length && dataDims.push(availDimIdx++);\n }\n } // Apply templates.\n\n\n each(dataDims, function (resultDimIdx, coordDimIndex) {\n var resultItem = result[resultDimIdx];\n applyDim(defaults(resultItem, sysDimItem), coordDim, coordDimIndex);\n\n if (resultItem.name == null && sysDimItemDimsDef) {\n var sysDimItemDimsDefItem = sysDimItemDimsDef[coordDimIndex];\n !isObject(sysDimItemDimsDefItem) && (sysDimItemDimsDefItem = {\n name: sysDimItemDimsDefItem\n });\n resultItem.name = resultItem.displayName = sysDimItemDimsDefItem.name;\n resultItem.defaultTooltip = sysDimItemDimsDefItem.defaultTooltip;\n } // FIXME refactor, currently only used in case: {otherDims: {tooltip: false}}\n\n\n sysDimItemOtherDims && defaults(resultItem.otherDims, sysDimItemOtherDims);\n });\n });\n\n function applyDim(resultItem, coordDim, coordDimIndex) {\n if (OTHER_DIMENSIONS.get(coordDim) != null) {\n resultItem.otherDims[coordDim] = coordDimIndex;\n } else {\n resultItem.coordDim = coordDim;\n resultItem.coordDimIndex = coordDimIndex;\n coordDimNameMap.set(coordDim, true);\n }\n } // Make sure the first extra dim is 'value'.\n\n\n var generateCoord = opt.generateCoord;\n var generateCoordCount = opt.generateCoordCount;\n var fromZero = generateCoordCount != null;\n generateCoordCount = generateCoord ? generateCoordCount || 1 : 0;\n var extra = generateCoord || 'value'; // Set dim `name` and other `coordDim` and other props.\n\n for (var resultDimIdx = 0; resultDimIdx < dimCount; resultDimIdx++) {\n var resultItem = result[resultDimIdx] = result[resultDimIdx] || new DataDimensionInfo();\n var coordDim = resultItem.coordDim;\n\n if (coordDim == null) {\n resultItem.coordDim = genName(extra, coordDimNameMap, fromZero);\n resultItem.coordDimIndex = 0;\n\n if (!generateCoord || generateCoordCount <= 0) {\n resultItem.isExtraCoord = true;\n }\n\n generateCoordCount--;\n }\n\n resultItem.name == null && (resultItem.name = genName(resultItem.coordDim, dataDimNameMap));\n\n if (resultItem.type == null && (guessOrdinal(source, resultDimIdx, resultItem.name) === BE_ORDINAL.Must // Consider the case:\n // {\n // dataset: {source: [\n // ['2001', 123],\n // ['2002', 456],\n // ...\n // ['The others', 987],\n // ]},\n // series: {type: 'pie'}\n // }\n // The first colum should better be treated as a \"ordinal\" although it\n // might not able to be detected as an \"ordinal\" by `guessOrdinal`.\n || resultItem.isExtraCoord && (resultItem.otherDims.itemName != null || resultItem.otherDims.seriesName != null))) {\n resultItem.type = 'ordinal';\n }\n }\n\n return result;\n} // ??? TODO\n// Originally detect dimCount by data[0]. Should we\n// optimize it to only by sysDims and dimensions and encode.\n// So only necessary dims will be initialized.\n// But\n// (1) custom series should be considered. where other dims\n// may be visited.\n// (2) sometimes user need to calcualte bubble size or use visualMap\n// on other dimensions besides coordSys needed.\n// So, dims that is not used by system, should be shared in storage?\n\n\nfunction getDimCount(source, sysDims, dimsDef, optDimCount) {\n // Note that the result dimCount should not small than columns count\n // of data, otherwise `dataDimNameMap` checking will be incorrect.\n var dimCount = Math.max(source.dimensionsDetectCount || 1, sysDims.length, dimsDef.length, optDimCount || 0);\n each(sysDims, function (sysDimItem) {\n var sysDimItemDimsDef = sysDimItem.dimsDef;\n sysDimItemDimsDef && (dimCount = Math.max(dimCount, sysDimItemDimsDef.length));\n });\n return dimCount;\n}\n\nfunction genName(name, map, fromZero) {\n if (fromZero || map.get(name) != null) {\n var i = 0;\n\n while (map.get(name + i) != null) {\n i++;\n }\n\n name += i;\n }\n\n map.set(name, true);\n return name;\n}\n\nvar _default = completeDimensions;\nmodule.exports = _default;","function windingLine(x0, y0, x1, y1, x, y) {\n if (y > y0 && y > y1 || y < y0 && y < y1) {\n return 0;\n } // Ignore horizontal line\n\n\n if (y1 === y0) {\n return 0;\n }\n\n var dir = y1 < y0 ? 1 : -1;\n var t = (y - y0) / (y1 - y0); // Avoid winding error when intersection point is the connect point of two line of polygon\n\n if (t === 1 || t === 0) {\n dir = y1 < y0 ? 0.5 : -0.5;\n }\n\n var x_ = t * (x1 - x0) + x0; // If (x, y) on the line, considered as \"contain\".\n\n return x_ === x ? Infinity : x_ > x ? dir : 0;\n}\n\nmodule.exports = windingLine;","var Path = require(\"../Path\");\n\nvar polyHelper = require(\"../helper/poly\");\n\n/**\n * 多边形\n * @module zrender/shape/Polygon\n */\nvar _default = Path.extend({\n type: 'polygon',\n shape: {\n points: null,\n smooth: false,\n smoothConstraint: null\n },\n buildPath: function (ctx, shape) {\n polyHelper.buildPath(ctx, shape, true);\n }\n});\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar ORIGIN_METHOD = '\\0__throttleOriginMethod';\nvar RATE = '\\0__throttleRate';\nvar THROTTLE_TYPE = '\\0__throttleType';\n/**\n * @public\n * @param {(Function)} fn\n * @param {number} [delay=0] Unit: ms.\n * @param {boolean} [debounce=false]\n * true: If call interval less than `delay`, only the last call works.\n * false: If call interval less than `delay, call works on fixed rate.\n * @return {(Function)} throttled fn.\n */\n\nfunction throttle(fn, delay, debounce) {\n var currCall;\n var lastCall = 0;\n var lastExec = 0;\n var timer = null;\n var diff;\n var scope;\n var args;\n var debounceNextCall;\n delay = delay || 0;\n\n function exec() {\n lastExec = new Date().getTime();\n timer = null;\n fn.apply(scope, args || []);\n }\n\n var cb = function () {\n currCall = new Date().getTime();\n scope = this;\n args = arguments;\n var thisDelay = debounceNextCall || delay;\n var thisDebounce = debounceNextCall || debounce;\n debounceNextCall = null;\n diff = currCall - (thisDebounce ? lastCall : lastExec) - thisDelay;\n clearTimeout(timer); // Here we should make sure that: the `exec` SHOULD NOT be called later\n // than a new call of `cb`, that is, preserving the command order. Consider\n // calculating \"scale rate\" when roaming as an example. When a call of `cb`\n // happens, either the `exec` is called dierectly, or the call is delayed.\n // But the delayed call should never be later than next call of `cb`. Under\n // this assurance, we can simply update view state each time `dispatchAction`\n // triggered by user roaming, but not need to add extra code to avoid the\n // state being \"rolled-back\".\n\n if (thisDebounce) {\n timer = setTimeout(exec, thisDelay);\n } else {\n if (diff >= 0) {\n exec();\n } else {\n timer = setTimeout(exec, -diff);\n }\n }\n\n lastCall = currCall;\n };\n /**\n * Clear throttle.\n * @public\n */\n\n\n cb.clear = function () {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n };\n /**\n * Enable debounce once.\n */\n\n\n cb.debounceNextCall = function (debounceDelay) {\n debounceNextCall = debounceDelay;\n };\n\n return cb;\n}\n/**\n * Create throttle method or update throttle rate.\n *\n * @example\n * ComponentView.prototype.render = function () {\n * ...\n * throttle.createOrUpdate(\n * this,\n * '_dispatchAction',\n * this.model.get('throttle'),\n * 'fixRate'\n * );\n * };\n * ComponentView.prototype.remove = function () {\n * throttle.clear(this, '_dispatchAction');\n * };\n * ComponentView.prototype.dispose = function () {\n * throttle.clear(this, '_dispatchAction');\n * };\n *\n * @public\n * @param {Object} obj\n * @param {string} fnAttr\n * @param {number} [rate]\n * @param {string} [throttleType='fixRate'] 'fixRate' or 'debounce'\n * @return {Function} throttled function.\n */\n\n\nfunction createOrUpdate(obj, fnAttr, rate, throttleType) {\n var fn = obj[fnAttr];\n\n if (!fn) {\n return;\n }\n\n var originFn = fn[ORIGIN_METHOD] || fn;\n var lastThrottleType = fn[THROTTLE_TYPE];\n var lastRate = fn[RATE];\n\n if (lastRate !== rate || lastThrottleType !== throttleType) {\n if (rate == null || !throttleType) {\n return obj[fnAttr] = originFn;\n }\n\n fn = obj[fnAttr] = throttle(originFn, rate, throttleType === 'debounce');\n fn[ORIGIN_METHOD] = originFn;\n fn[THROTTLE_TYPE] = throttleType;\n fn[RATE] = rate;\n }\n\n return fn;\n}\n/**\n * Clear throttle. Example see throttle.createOrUpdate.\n *\n * @public\n * @param {Object} obj\n * @param {string} fnAttr\n */\n\n\nfunction clear(obj, fnAttr) {\n var fn = obj[fnAttr];\n\n if (fn && fn[ORIGIN_METHOD]) {\n obj[fnAttr] = fn[ORIGIN_METHOD];\n }\n}\n\nexports.throttle = throttle;\nexports.createOrUpdate = createOrUpdate;\nexports.clear = clear;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar _clazz = require(\"./clazz\");\n\nvar parseClassType = _clazz.parseClassType;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar base = 0;\n/**\n * @public\n * @param {string} type\n * @return {string}\n */\n\nfunction getUID(type) {\n // Considering the case of crossing js context,\n // use Math.random to make id as unique as possible.\n return [type || '', base++, Math.random().toFixed(5)].join('_');\n}\n/**\n * @inner\n */\n\n\nfunction enableSubTypeDefaulter(entity) {\n var subTypeDefaulters = {};\n\n entity.registerSubTypeDefaulter = function (componentType, defaulter) {\n componentType = parseClassType(componentType);\n subTypeDefaulters[componentType.main] = defaulter;\n };\n\n entity.determineSubType = function (componentType, option) {\n var type = option.type;\n\n if (!type) {\n var componentTypeMain = parseClassType(componentType).main;\n\n if (entity.hasSubTypes(componentType) && subTypeDefaulters[componentTypeMain]) {\n type = subTypeDefaulters[componentTypeMain](option);\n }\n }\n\n return type;\n };\n\n return entity;\n}\n/**\n * Topological travel on Activity Network (Activity On Vertices).\n * Dependencies is defined in Model.prototype.dependencies, like ['xAxis', 'yAxis'].\n *\n * If 'xAxis' or 'yAxis' is absent in componentTypeList, just ignore it in topology.\n *\n * If there is circle dependencey, Error will be thrown.\n *\n */\n\n\nfunction enableTopologicalTravel(entity, dependencyGetter) {\n /**\n * @public\n * @param {Array.} targetNameList Target Component type list.\n * Can be ['aa', 'bb', 'aa.xx']\n * @param {Array.} fullNameList By which we can build dependency graph.\n * @param {Function} callback Params: componentType, dependencies.\n * @param {Object} context Scope of callback.\n */\n entity.topologicalTravel = function (targetNameList, fullNameList, callback, context) {\n if (!targetNameList.length) {\n return;\n }\n\n var result = makeDepndencyGraph(fullNameList);\n var graph = result.graph;\n var stack = result.noEntryList;\n var targetNameSet = {};\n zrUtil.each(targetNameList, function (name) {\n targetNameSet[name] = true;\n });\n\n while (stack.length) {\n var currComponentType = stack.pop();\n var currVertex = graph[currComponentType];\n var isInTargetNameSet = !!targetNameSet[currComponentType];\n\n if (isInTargetNameSet) {\n callback.call(context, currComponentType, currVertex.originalDeps.slice());\n delete targetNameSet[currComponentType];\n }\n\n zrUtil.each(currVertex.successor, isInTargetNameSet ? removeEdgeAndAdd : removeEdge);\n }\n\n zrUtil.each(targetNameSet, function () {\n throw new Error('Circle dependency may exists');\n });\n\n function removeEdge(succComponentType) {\n graph[succComponentType].entryCount--;\n\n if (graph[succComponentType].entryCount === 0) {\n stack.push(succComponentType);\n }\n } // Consider this case: legend depends on series, and we call\n // chart.setOption({series: [...]}), where only series is in option.\n // If we do not have 'removeEdgeAndAdd', legendModel.mergeOption will\n // not be called, but only sereis.mergeOption is called. Thus legend\n // have no chance to update its local record about series (like which\n // name of series is available in legend).\n\n\n function removeEdgeAndAdd(succComponentType) {\n targetNameSet[succComponentType] = true;\n removeEdge(succComponentType);\n }\n };\n /**\n * DepndencyGraph: {Object}\n * key: conponentType,\n * value: {\n * successor: [conponentTypes...],\n * originalDeps: [conponentTypes...],\n * entryCount: {number}\n * }\n */\n\n\n function makeDepndencyGraph(fullNameList) {\n var graph = {};\n var noEntryList = [];\n zrUtil.each(fullNameList, function (name) {\n var thisItem = createDependencyGraphItem(graph, name);\n var originalDeps = thisItem.originalDeps = dependencyGetter(name);\n var availableDeps = getAvailableDependencies(originalDeps, fullNameList);\n thisItem.entryCount = availableDeps.length;\n\n if (thisItem.entryCount === 0) {\n noEntryList.push(name);\n }\n\n zrUtil.each(availableDeps, function (dependentName) {\n if (zrUtil.indexOf(thisItem.predecessor, dependentName) < 0) {\n thisItem.predecessor.push(dependentName);\n }\n\n var thatItem = createDependencyGraphItem(graph, dependentName);\n\n if (zrUtil.indexOf(thatItem.successor, dependentName) < 0) {\n thatItem.successor.push(name);\n }\n });\n });\n return {\n graph: graph,\n noEntryList: noEntryList\n };\n }\n\n function createDependencyGraphItem(graph, name) {\n if (!graph[name]) {\n graph[name] = {\n predecessor: [],\n successor: []\n };\n }\n\n return graph[name];\n }\n\n function getAvailableDependencies(originalDeps, fullNameList) {\n var availableDeps = [];\n zrUtil.each(originalDeps, function (dep) {\n zrUtil.indexOf(fullNameList, dep) >= 0 && availableDeps.push(dep);\n });\n return availableDeps;\n }\n}\n\nexports.getUID = getUID;\nexports.enableSubTypeDefaulter = enableSubTypeDefaulter;\nexports.enableTopologicalTravel = enableTopologicalTravel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar platform = ''; // Navigator not exists in node\n\nif (typeof navigator !== 'undefined') {\n platform = navigator.platform || '';\n}\n\nvar _default = {\n // backgroundColor: 'rgba(0,0,0,0)',\n // https://dribbble.com/shots/1065960-Infographic-Pie-chart-visualization\n // color: ['#5793f3', '#d14a61', '#fd9c35', '#675bba', '#fec42c', '#dd4444', '#d4df5a', '#cd4870'],\n // Light colors:\n // color: ['#bcd3bb', '#e88f70', '#edc1a5', '#9dc5c8', '#e1e8c8', '#7b7c68', '#e5b5b5', '#f0b489', '#928ea8', '#bda29a'],\n // color: ['#cc5664', '#9bd6ec', '#ea946e', '#8acaaa', '#f1ec64', '#ee8686', '#a48dc1', '#5da6bc', '#b9dcae'],\n // Dark colors:\n color: ['#c23531', '#2f4554', '#61a0a8', '#d48265', '#91c7ae', '#749f83', '#ca8622', '#bda29a', '#6e7074', '#546570', '#c4ccd3'],\n gradientColor: ['#f6efa6', '#d88273', '#bf444c'],\n // If xAxis and yAxis declared, grid is created by default.\n // grid: {},\n textStyle: {\n // color: '#000',\n // decoration: 'none',\n // PENDING\n fontFamily: platform.match(/^Win/) ? 'Microsoft YaHei' : 'sans-serif',\n // fontFamily: 'Arial, Verdana, sans-serif',\n fontSize: 12,\n fontStyle: 'normal',\n fontWeight: 'normal'\n },\n // http://blogs.adobe.com/webplatform/2014/02/24/using-blend-modes-in-html-canvas/\n // https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/globalCompositeOperation\n // Default is source-over\n blendMode: null,\n animation: 'auto',\n animationDuration: 1000,\n animationDurationUpdate: 300,\n animationEasing: 'exponentialOut',\n animationEasingUpdate: 'cubicOut',\n animationThreshold: 2000,\n // Configuration for progressive/incremental rendering\n progressiveThreshold: 3000,\n progressive: 400,\n // Threshold of if use single hover layer to optimize.\n // It is recommended that `hoverLayerThreshold` is equivalent to or less than\n // `progressiveThreshold`, otherwise hover will cause restart of progressive,\n // which is unexpected.\n // see example .\n hoverLayerThreshold: 3000,\n // See: module:echarts/scale/Time\n useUTC: false\n};\nmodule.exports = _default;","var env = require(\"../../core/env\");\n\n// Fix weird bug in some version of IE11 (like 11.0.9600.178**),\n// where exception \"unexpected call to method or property access\"\n// might be thrown when calling ctx.fill or ctx.stroke after a path\n// whose area size is zero is drawn and ctx.clip() is called and\n// shadowBlur is set. See #4572, #3112, #5777.\n// (e.g.,\n// ctx.moveTo(10, 10);\n// ctx.lineTo(20, 10);\n// ctx.closePath();\n// ctx.clip();\n// ctx.shadowBlur = 10;\n// ...\n// ctx.fill();\n// )\nvar shadowTemp = [['shadowBlur', 0], ['shadowColor', '#000'], ['shadowOffsetX', 0], ['shadowOffsetY', 0]];\n\nfunction _default(orignalBrush) {\n // version string can be: '11.0'\n return env.browser.ie && env.browser.version >= 11 ? function () {\n var clipPaths = this.__clipPaths;\n var style = this.style;\n var modified;\n\n if (clipPaths) {\n for (var i = 0; i < clipPaths.length; i++) {\n var clipPath = clipPaths[i];\n var shape = clipPath && clipPath.shape;\n var type = clipPath && clipPath.type;\n\n if (shape && (type === 'sector' && shape.startAngle === shape.endAngle || type === 'rect' && (!shape.width || !shape.height))) {\n for (var j = 0; j < shadowTemp.length; j++) {\n // It is save to put shadowTemp static, because shadowTemp\n // will be all modified each item brush called.\n shadowTemp[j][2] = style[shadowTemp[j][0]];\n style[shadowTemp[j][0]] = shadowTemp[j][1];\n }\n\n modified = true;\n break;\n }\n }\n }\n\n orignalBrush.apply(this, arguments);\n\n if (modified) {\n for (var j = 0; j < shadowTemp.length; j++) {\n style[shadowTemp[j][0]] = shadowTemp[j][2];\n }\n }\n } : orignalBrush;\n}\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar numberUtil = require(\"../util/number\");\n\nvar formatUtil = require(\"../util/format\");\n\nvar Scale = require(\"./Scale\");\n\nvar helper = require(\"./helper\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Interval scale\n * @module echarts/scale/Interval\n */\nvar roundNumber = numberUtil.round;\n/**\n * @alias module:echarts/coord/scale/Interval\n * @constructor\n */\n\nvar IntervalScale = Scale.extend({\n type: 'interval',\n _interval: 0,\n _intervalPrecision: 2,\n setExtent: function (start, end) {\n var thisExtent = this._extent; //start,end may be a Number like '25',so...\n\n if (!isNaN(start)) {\n thisExtent[0] = parseFloat(start);\n }\n\n if (!isNaN(end)) {\n thisExtent[1] = parseFloat(end);\n }\n },\n unionExtent: function (other) {\n var extent = this._extent;\n other[0] < extent[0] && (extent[0] = other[0]);\n other[1] > extent[1] && (extent[1] = other[1]); // unionExtent may called by it's sub classes\n\n IntervalScale.prototype.setExtent.call(this, extent[0], extent[1]);\n },\n\n /**\n * Get interval\n */\n getInterval: function () {\n return this._interval;\n },\n\n /**\n * Set interval\n */\n setInterval: function (interval) {\n this._interval = interval; // Dropped auto calculated niceExtent and use user setted extent\n // We assume user wan't to set both interval, min, max to get a better result\n\n this._niceExtent = this._extent.slice();\n this._intervalPrecision = helper.getIntervalPrecision(interval);\n },\n\n /**\n * @param {boolean} [expandToNicedExtent=false] If expand the ticks to niced extent.\n * @return {Array.}\n */\n getTicks: function (expandToNicedExtent) {\n var interval = this._interval;\n var extent = this._extent;\n var niceTickExtent = this._niceExtent;\n var intervalPrecision = this._intervalPrecision;\n var ticks = []; // If interval is 0, return [];\n\n if (!interval) {\n return ticks;\n } // Consider this case: using dataZoom toolbox, zoom and zoom.\n\n\n var safeLimit = 10000;\n\n if (extent[0] < niceTickExtent[0]) {\n if (expandToNicedExtent) {\n ticks.push(roundNumber(niceTickExtent[0] - interval, intervalPrecision));\n } else {\n ticks.push(extent[0]);\n }\n }\n\n var tick = niceTickExtent[0];\n\n while (tick <= niceTickExtent[1]) {\n ticks.push(tick); // Avoid rounding error\n\n tick = roundNumber(tick + interval, intervalPrecision);\n\n if (tick === ticks[ticks.length - 1]) {\n // Consider out of safe float point, e.g.,\n // -3711126.9907707 + 2e-10 === -3711126.9907707\n break;\n }\n\n if (ticks.length > safeLimit) {\n return [];\n }\n } // Consider this case: the last item of ticks is smaller\n // than niceTickExtent[1] and niceTickExtent[1] === extent[1].\n\n\n var lastNiceTick = ticks.length ? ticks[ticks.length - 1] : niceTickExtent[1];\n\n if (extent[1] > lastNiceTick) {\n if (expandToNicedExtent) {\n ticks.push(roundNumber(lastNiceTick + interval, intervalPrecision));\n } else {\n ticks.push(extent[1]);\n }\n }\n\n return ticks;\n },\n\n /**\n * @param {number} [splitNumber=5]\n * @return {Array.>}\n */\n getMinorTicks: function (splitNumber) {\n var ticks = this.getTicks(true);\n var minorTicks = [];\n var extent = this.getExtent();\n\n for (var i = 1; i < ticks.length; i++) {\n var nextTick = ticks[i];\n var prevTick = ticks[i - 1];\n var count = 0;\n var minorTicksGroup = [];\n var interval = nextTick - prevTick;\n var minorInterval = interval / splitNumber;\n\n while (count < splitNumber - 1) {\n var minorTick = numberUtil.round(prevTick + (count + 1) * minorInterval); // For the first and last interval. The count may be less than splitNumber.\n\n if (minorTick > extent[0] && minorTick < extent[1]) {\n minorTicksGroup.push(minorTick);\n }\n\n count++;\n }\n\n minorTicks.push(minorTicksGroup);\n }\n\n return minorTicks;\n },\n\n /**\n * @param {number} data\n * @param {Object} [opt]\n * @param {number|string} [opt.precision] If 'auto', use nice presision.\n * @param {boolean} [opt.pad] returns 1.50 but not 1.5 if precision is 2.\n * @return {string}\n */\n getLabel: function (data, opt) {\n if (data == null) {\n return '';\n }\n\n var precision = opt && opt.precision;\n\n if (precision == null) {\n precision = numberUtil.getPrecisionSafe(data) || 0;\n } else if (precision === 'auto') {\n // Should be more precise then tick.\n precision = this._intervalPrecision;\n } // (1) If `precision` is set, 12.005 should be display as '12.00500'.\n // (2) Use roundNumber (toFixed) to avoid scientific notation like '3.5e-7'.\n\n\n data = roundNumber(data, precision, true);\n return formatUtil.addCommas(data);\n },\n\n /**\n * Update interval and extent of intervals for nice ticks\n *\n * @param {number} [splitNumber = 5] Desired number of ticks\n * @param {number} [minInterval]\n * @param {number} [maxInterval]\n */\n niceTicks: function (splitNumber, minInterval, maxInterval) {\n splitNumber = splitNumber || 5;\n var extent = this._extent;\n var span = extent[1] - extent[0];\n\n if (!isFinite(span)) {\n return;\n } // User may set axis min 0 and data are all negative\n // FIXME If it needs to reverse ?\n\n\n if (span < 0) {\n span = -span;\n extent.reverse();\n }\n\n var result = helper.intervalScaleNiceTicks(extent, splitNumber, minInterval, maxInterval);\n this._intervalPrecision = result.intervalPrecision;\n this._interval = result.interval;\n this._niceExtent = result.niceTickExtent;\n },\n\n /**\n * Nice extent.\n * @param {Object} opt\n * @param {number} [opt.splitNumber = 5] Given approx tick number\n * @param {boolean} [opt.fixMin=false]\n * @param {boolean} [opt.fixMax=false]\n * @param {boolean} [opt.minInterval]\n * @param {boolean} [opt.maxInterval]\n */\n niceExtent: function (opt) {\n var extent = this._extent; // If extent start and end are same, expand them\n\n if (extent[0] === extent[1]) {\n if (extent[0] !== 0) {\n // Expand extent\n var expandSize = extent[0]; // In the fowllowing case\n // Axis has been fixed max 100\n // Plus data are all 100 and axis extent are [100, 100].\n // Extend to the both side will cause expanded max is larger than fixed max.\n // So only expand to the smaller side.\n\n if (!opt.fixMax) {\n extent[1] += expandSize / 2;\n extent[0] -= expandSize / 2;\n } else {\n extent[0] -= expandSize / 2;\n }\n } else {\n extent[1] = 1;\n }\n }\n\n var span = extent[1] - extent[0]; // If there are no data and extent are [Infinity, -Infinity]\n\n if (!isFinite(span)) {\n extent[0] = 0;\n extent[1] = 1;\n }\n\n this.niceTicks(opt.splitNumber, opt.minInterval, opt.maxInterval); // var extent = this._extent;\n\n var interval = this._interval;\n\n if (!opt.fixMin) {\n extent[0] = roundNumber(Math.floor(extent[0] / interval) * interval);\n }\n\n if (!opt.fixMax) {\n extent[1] = roundNumber(Math.ceil(extent[1] / interval) * interval);\n }\n }\n});\n/**\n * @return {module:echarts/scale/Time}\n */\n\nIntervalScale.create = function () {\n return new IntervalScale();\n};\n\nvar _default = IntervalScale;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = require(\"../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar createHashMap = _util.createHashMap;\nvar retrieve = _util.retrieve;\nvar each = _util.each;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Helper for model references.\n * There are many manners to refer axis/coordSys.\n */\n// TODO\n// merge relevant logic to this file?\n// check: \"modelHelper\" of tooltip and \"BrushTargetManager\".\n\n/**\n * @class\n * For example:\n * {\n * coordSysName: 'cartesian2d',\n * coordSysDims: ['x', 'y', ...],\n * axisMap: HashMap({\n * x: xAxisModel,\n * y: yAxisModel\n * }),\n * categoryAxisMap: HashMap({\n * x: xAxisModel,\n * y: undefined\n * }),\n * // The index of the first category axis in `coordSysDims`.\n * // `null/undefined` means no category axis exists.\n * firstCategoryDimIndex: 1,\n * // To replace user specified encode.\n * }\n */\nfunction CoordSysInfo(coordSysName) {\n /**\n * @type {string}\n */\n this.coordSysName = coordSysName;\n /**\n * @type {Array.}\n */\n\n this.coordSysDims = [];\n /**\n * @type {module:zrender/core/util#HashMap}\n */\n\n this.axisMap = createHashMap();\n /**\n * @type {module:zrender/core/util#HashMap}\n */\n\n this.categoryAxisMap = createHashMap();\n /**\n * @type {number}\n */\n\n this.firstCategoryDimIndex = null;\n}\n/**\n * @return {module:model/referHelper#CoordSysInfo}\n */\n\n\nfunction getCoordSysInfoBySeries(seriesModel) {\n var coordSysName = seriesModel.get('coordinateSystem');\n var result = new CoordSysInfo(coordSysName);\n var fetch = fetchers[coordSysName];\n\n if (fetch) {\n fetch(seriesModel, result, result.axisMap, result.categoryAxisMap);\n return result;\n }\n}\n\nvar fetchers = {\n cartesian2d: function (seriesModel, result, axisMap, categoryAxisMap) {\n var xAxisModel = seriesModel.getReferringComponents('xAxis')[0];\n var yAxisModel = seriesModel.getReferringComponents('yAxis')[0];\n result.coordSysDims = ['x', 'y'];\n axisMap.set('x', xAxisModel);\n axisMap.set('y', yAxisModel);\n\n if (isCategory(xAxisModel)) {\n categoryAxisMap.set('x', xAxisModel);\n result.firstCategoryDimIndex = 0;\n }\n\n if (isCategory(yAxisModel)) {\n categoryAxisMap.set('y', yAxisModel);\n result.firstCategoryDimIndex == null & (result.firstCategoryDimIndex = 1);\n }\n },\n singleAxis: function (seriesModel, result, axisMap, categoryAxisMap) {\n var singleAxisModel = seriesModel.getReferringComponents('singleAxis')[0];\n result.coordSysDims = ['single'];\n axisMap.set('single', singleAxisModel);\n\n if (isCategory(singleAxisModel)) {\n categoryAxisMap.set('single', singleAxisModel);\n result.firstCategoryDimIndex = 0;\n }\n },\n polar: function (seriesModel, result, axisMap, categoryAxisMap) {\n var polarModel = seriesModel.getReferringComponents('polar')[0];\n var radiusAxisModel = polarModel.findAxisModel('radiusAxis');\n var angleAxisModel = polarModel.findAxisModel('angleAxis');\n result.coordSysDims = ['radius', 'angle'];\n axisMap.set('radius', radiusAxisModel);\n axisMap.set('angle', angleAxisModel);\n\n if (isCategory(radiusAxisModel)) {\n categoryAxisMap.set('radius', radiusAxisModel);\n result.firstCategoryDimIndex = 0;\n }\n\n if (isCategory(angleAxisModel)) {\n categoryAxisMap.set('angle', angleAxisModel);\n result.firstCategoryDimIndex == null && (result.firstCategoryDimIndex = 1);\n }\n },\n geo: function (seriesModel, result, axisMap, categoryAxisMap) {\n result.coordSysDims = ['lng', 'lat'];\n },\n parallel: function (seriesModel, result, axisMap, categoryAxisMap) {\n var ecModel = seriesModel.ecModel;\n var parallelModel = ecModel.getComponent('parallel', seriesModel.get('parallelIndex'));\n var coordSysDims = result.coordSysDims = parallelModel.dimensions.slice();\n each(parallelModel.parallelAxisIndex, function (axisIndex, index) {\n var axisModel = ecModel.getComponent('parallelAxis', axisIndex);\n var axisDim = coordSysDims[index];\n axisMap.set(axisDim, axisModel);\n\n if (isCategory(axisModel) && result.firstCategoryDimIndex == null) {\n categoryAxisMap.set(axisDim, axisModel);\n result.firstCategoryDimIndex = index;\n }\n });\n }\n};\n\nfunction isCategory(axisModel) {\n return axisModel.get('type') === 'category';\n}\n\nexports.getCoordSysInfoBySeries = getCoordSysInfoBySeries;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar Scale = require(\"./Scale\");\n\nvar numberUtil = require(\"../util/number\");\n\nvar IntervalScale = require(\"./Interval\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Log scale\n * @module echarts/scale/Log\n */\n// Use some method of IntervalScale\nvar scaleProto = Scale.prototype;\nvar intervalScaleProto = IntervalScale.prototype;\nvar getPrecisionSafe = numberUtil.getPrecisionSafe;\nvar roundingErrorFix = numberUtil.round;\nvar mathFloor = Math.floor;\nvar mathCeil = Math.ceil;\nvar mathPow = Math.pow;\nvar mathLog = Math.log;\nvar LogScale = Scale.extend({\n type: 'log',\n base: 10,\n $constructor: function () {\n Scale.apply(this, arguments);\n this._originalScale = new IntervalScale();\n },\n\n /**\n * @param {boolean} [expandToNicedExtent=false] If expand the ticks to niced extent.\n * @return {Array.}\n */\n getTicks: function (expandToNicedExtent) {\n var originalScale = this._originalScale;\n var extent = this._extent;\n var originalExtent = originalScale.getExtent();\n return zrUtil.map(intervalScaleProto.getTicks.call(this, expandToNicedExtent), function (val) {\n var powVal = numberUtil.round(mathPow(this.base, val)); // Fix #4158\n\n powVal = val === extent[0] && originalScale.__fixMin ? fixRoundingError(powVal, originalExtent[0]) : powVal;\n powVal = val === extent[1] && originalScale.__fixMax ? fixRoundingError(powVal, originalExtent[1]) : powVal;\n return powVal;\n }, this);\n },\n\n /**\n * @param {number} splitNumber\n * @return {Array.>}\n */\n getMinorTicks: intervalScaleProto.getMinorTicks,\n\n /**\n * @param {number} val\n * @return {string}\n */\n getLabel: intervalScaleProto.getLabel,\n\n /**\n * @param {number} val\n * @return {number}\n */\n scale: function (val) {\n val = scaleProto.scale.call(this, val);\n return mathPow(this.base, val);\n },\n\n /**\n * @param {number} start\n * @param {number} end\n */\n setExtent: function (start, end) {\n var base = this.base;\n start = mathLog(start) / mathLog(base);\n end = mathLog(end) / mathLog(base);\n intervalScaleProto.setExtent.call(this, start, end);\n },\n\n /**\n * @return {number} end\n */\n getExtent: function () {\n var base = this.base;\n var extent = scaleProto.getExtent.call(this);\n extent[0] = mathPow(base, extent[0]);\n extent[1] = mathPow(base, extent[1]); // Fix #4158\n\n var originalScale = this._originalScale;\n var originalExtent = originalScale.getExtent();\n originalScale.__fixMin && (extent[0] = fixRoundingError(extent[0], originalExtent[0]));\n originalScale.__fixMax && (extent[1] = fixRoundingError(extent[1], originalExtent[1]));\n return extent;\n },\n\n /**\n * @param {Array.} extent\n */\n unionExtent: function (extent) {\n this._originalScale.unionExtent(extent);\n\n var base = this.base;\n extent[0] = mathLog(extent[0]) / mathLog(base);\n extent[1] = mathLog(extent[1]) / mathLog(base);\n scaleProto.unionExtent.call(this, extent);\n },\n\n /**\n * @override\n */\n unionExtentFromData: function (data, dim) {\n // TODO\n // filter value that <= 0\n this.unionExtent(data.getApproximateExtent(dim));\n },\n\n /**\n * Update interval and extent of intervals for nice ticks\n * @param {number} [approxTickNum = 10] Given approx tick number\n */\n niceTicks: function (approxTickNum) {\n approxTickNum = approxTickNum || 10;\n var extent = this._extent;\n var span = extent[1] - extent[0];\n\n if (span === Infinity || span <= 0) {\n return;\n }\n\n var interval = numberUtil.quantity(span);\n var err = approxTickNum / span * interval; // Filter ticks to get closer to the desired count.\n\n if (err <= 0.5) {\n interval *= 10;\n } // Interval should be integer\n\n\n while (!isNaN(interval) && Math.abs(interval) < 1 && Math.abs(interval) > 0) {\n interval *= 10;\n }\n\n var niceExtent = [numberUtil.round(mathCeil(extent[0] / interval) * interval), numberUtil.round(mathFloor(extent[1] / interval) * interval)];\n this._interval = interval;\n this._niceExtent = niceExtent;\n },\n\n /**\n * Nice extent.\n * @override\n */\n niceExtent: function (opt) {\n intervalScaleProto.niceExtent.call(this, opt);\n var originalScale = this._originalScale;\n originalScale.__fixMin = opt.fixMin;\n originalScale.__fixMax = opt.fixMax;\n }\n});\nzrUtil.each(['contain', 'normalize'], function (methodName) {\n LogScale.prototype[methodName] = function (val) {\n val = mathLog(val) / mathLog(this.base);\n return scaleProto[methodName].call(this, val);\n };\n});\n\nLogScale.create = function () {\n return new LogScale();\n};\n\nfunction fixRoundingError(val, originalVal) {\n return roundingErrorFix(val, getPrecisionSafe(originalVal));\n}\n\nvar _default = LogScale;\nmodule.exports = _default;","var Path = require(\"../Path\");\n\n/**\n * 圆弧\n * @module zrender/graphic/shape/Arc\n */\nvar _default = Path.extend({\n type: 'arc',\n shape: {\n cx: 0,\n cy: 0,\n r: 0,\n startAngle: 0,\n endAngle: Math.PI * 2,\n clockwise: true\n },\n style: {\n stroke: '#000',\n fill: null\n },\n buildPath: function (ctx, shape) {\n var x = shape.cx;\n var y = shape.cy;\n var r = Math.max(shape.r, 0);\n var startAngle = shape.startAngle;\n var endAngle = shape.endAngle;\n var clockwise = shape.clockwise;\n var unitX = Math.cos(startAngle);\n var unitY = Math.sin(startAngle);\n ctx.moveTo(unitX * r + x, unitY * r + y);\n ctx.arc(x, y, r, startAngle, endAngle, !clockwise);\n }\n});\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar createHashMap = _util.createHashMap;\nvar isObject = _util.isObject;\nvar map = _util.map;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @constructor\n * @param {Object} [opt]\n * @param {Object} [opt.categories=[]]\n * @param {Object} [opt.needCollect=false]\n * @param {Object} [opt.deduplication=false]\n */\nfunction OrdinalMeta(opt) {\n /**\n * @readOnly\n * @type {Array.}\n */\n this.categories = opt.categories || [];\n /**\n * @private\n * @type {boolean}\n */\n\n this._needCollect = opt.needCollect;\n /**\n * @private\n * @type {boolean}\n */\n\n this._deduplication = opt.deduplication;\n /**\n * @private\n * @type {boolean}\n */\n\n this._map;\n}\n/**\n * @param {module:echarts/model/Model} axisModel\n * @return {module:echarts/data/OrdinalMeta}\n */\n\n\nOrdinalMeta.createByAxisModel = function (axisModel) {\n var option = axisModel.option;\n var data = option.data;\n var categories = data && map(data, getName);\n return new OrdinalMeta({\n categories: categories,\n needCollect: !categories,\n // deduplication is default in axis.\n deduplication: option.dedplication !== false\n });\n};\n\nvar proto = OrdinalMeta.prototype;\n/**\n * @param {string} category\n * @return {number} ordinal\n */\n\nproto.getOrdinal = function (category) {\n return getOrCreateMap(this).get(category);\n};\n/**\n * @param {*} category\n * @return {number} The ordinal. If not found, return NaN.\n */\n\n\nproto.parseAndCollect = function (category) {\n var index;\n var needCollect = this._needCollect; // The value of category dim can be the index of the given category set.\n // This feature is only supported when !needCollect, because we should\n // consider a common case: a value is 2017, which is a number but is\n // expected to be tread as a category. This case usually happen in dataset,\n // where it happent to be no need of the index feature.\n\n if (typeof category !== 'string' && !needCollect) {\n return category;\n } // Optimize for the scenario:\n // category is ['2012-01-01', '2012-01-02', ...], where the input\n // data has been ensured not duplicate and is large data.\n // Notice, if a dataset dimension provide categroies, usually echarts\n // should remove duplication except user tell echarts dont do that\n // (set axis.deduplication = false), because echarts do not know whether\n // the values in the category dimension has duplication (consider the\n // parallel-aqi example)\n\n\n if (needCollect && !this._deduplication) {\n index = this.categories.length;\n this.categories[index] = category;\n return index;\n }\n\n var map = getOrCreateMap(this);\n index = map.get(category);\n\n if (index == null) {\n if (needCollect) {\n index = this.categories.length;\n this.categories[index] = category;\n map.set(category, index);\n } else {\n index = NaN;\n }\n }\n\n return index;\n}; // Consider big data, do not create map until needed.\n\n\nfunction getOrCreateMap(ordinalMeta) {\n return ordinalMeta._map || (ordinalMeta._map = createHashMap(ordinalMeta.categories));\n}\n\nfunction getName(obj) {\n if (isObject(obj) && obj.value != null) {\n return obj.value;\n } else {\n return obj + '';\n }\n}\n\nvar _default = OrdinalMeta;\nmodule.exports = _default;","/**\n * vee-validate v3.4.5\n * (c) 2020 Abdelrahman Awad\n * @license MIT\n */\n/**\r\n * Some Alpha Regex helpers.\r\n * https://github.com/chriso/validator.js/blob/master/src/lib/alpha.js\r\n */\r\n/* eslint-disable no-misleading-character-class */\r\nvar alpha = {\r\n en: /^[A-Z]*$/i,\r\n cs: /^[A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ]*$/i,\r\n da: /^[A-ZÆØÅ]*$/i,\r\n de: /^[A-ZÄÖÜß]*$/i,\r\n es: /^[A-ZÁÉÍÑÓÚÜ]*$/i,\r\n fa: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰپژگچکی]*$/,\r\n fr: /^[A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]*$/i,\r\n it: /^[A-Z\\xC0-\\xFF]*$/i,\r\n lt: /^[A-ZĄČĘĖĮŠŲŪŽ]*$/i,\r\n nl: /^[A-ZÉËÏÓÖÜ]*$/i,\r\n hu: /^[A-ZÁÉÍÓÖŐÚÜŰ]*$/i,\r\n pl: /^[A-ZĄĆĘŚŁŃÓŻŹ]*$/i,\r\n pt: /^[A-ZÃÁÀÂÇÉÊÍÕÓÔÚÜ]*$/i,\r\n ro: /^[A-ZĂÂÎŞŢ]*$/i,\r\n ru: /^[А-ЯЁ]*$/i,\r\n sk: /^[A-ZÁÄČĎÉÍĹĽŇÓŔŠŤÚÝŽ]*$/i,\r\n sr: /^[A-ZČĆŽŠĐ]*$/i,\r\n sv: /^[A-ZÅÄÖ]*$/i,\r\n tr: /^[A-ZÇĞİıÖŞÜ]*$/i,\r\n uk: /^[А-ЩЬЮЯЄІЇҐ]*$/i,\r\n ar: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ]*$/,\r\n az: /^[A-ZÇƏĞİıÖŞÜ]*$/i,\r\n el: /^[Α-ώ]*$/i\r\n};\r\nvar alphaSpaces = {\r\n en: /^[A-Z\\s]*$/i,\r\n cs: /^[A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ\\s]*$/i,\r\n da: /^[A-ZÆØÅ\\s]*$/i,\r\n de: /^[A-ZÄÖÜß\\s]*$/i,\r\n es: /^[A-ZÁÉÍÑÓÚÜ\\s]*$/i,\r\n fa: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰپژگچکی]*$/,\r\n fr: /^[A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ\\s]*$/i,\r\n it: /^[A-Z\\xC0-\\xFF\\s]*$/i,\r\n lt: /^[A-ZĄČĘĖĮŠŲŪŽ\\s]*$/i,\r\n nl: /^[A-ZÉËÏÓÖÜ\\s]*$/i,\r\n hu: /^[A-ZÁÉÍÓÖŐÚÜŰ\\s]*$/i,\r\n pl: /^[A-ZĄĆĘŚŁŃÓŻŹ\\s]*$/i,\r\n pt: /^[A-ZÃÁÀÂÇÉÊÍÕÓÔÚÜ\\s]*$/i,\r\n ro: /^[A-ZĂÂÎŞŢ\\s]*$/i,\r\n ru: /^[А-ЯЁ\\s]*$/i,\r\n sk: /^[A-ZÁÄČĎÉÍĹĽŇÓŔŠŤÚÝŽ\\s]*$/i,\r\n sr: /^[A-ZČĆŽŠĐ\\s]*$/i,\r\n sv: /^[A-ZÅÄÖ\\s]*$/i,\r\n tr: /^[A-ZÇĞİıÖŞÜ\\s]*$/i,\r\n uk: /^[А-ЩЬЮЯЄІЇҐ\\s]*$/i,\r\n ar: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ\\s]*$/,\r\n az: /^[A-ZÇƏĞİıÖŞÜ\\s]*$/i,\r\n el: /^[Α-ώ\\s]*$/i\r\n};\r\nvar alphanumeric = {\r\n en: /^[0-9A-Z]*$/i,\r\n cs: /^[0-9A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ]*$/i,\r\n da: /^[0-9A-ZÆØÅ]$/i,\r\n de: /^[0-9A-ZÄÖÜß]*$/i,\r\n es: /^[0-9A-ZÁÉÍÑÓÚÜ]*$/i,\r\n fa: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰپژگچکی]*$/,\r\n fr: /^[0-9A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]*$/i,\r\n it: /^[0-9A-Z\\xC0-\\xFF]*$/i,\r\n lt: /^[0-9A-ZĄČĘĖĮŠŲŪŽ]*$/i,\r\n hu: /^[0-9A-ZÁÉÍÓÖŐÚÜŰ]*$/i,\r\n nl: /^[0-9A-ZÉËÏÓÖÜ]*$/i,\r\n pl: /^[0-9A-ZĄĆĘŚŁŃÓŻŹ]*$/i,\r\n pt: /^[0-9A-ZÃÁÀÂÇÉÊÍÕÓÔÚÜ]*$/i,\r\n ro: /^[0-9A-ZĂÂÎŞŢ]*$/i,\r\n ru: /^[0-9А-ЯЁ]*$/i,\r\n sk: /^[0-9A-ZÁÄČĎÉÍĹĽŇÓŔŠŤÚÝŽ]*$/i,\r\n sr: /^[0-9A-ZČĆŽŠĐ]*$/i,\r\n sv: /^[0-9A-ZÅÄÖ]*$/i,\r\n tr: /^[0-9A-ZÇĞİıÖŞÜ]*$/i,\r\n uk: /^[0-9А-ЩЬЮЯЄІЇҐ]*$/i,\r\n ar: /^[٠١٢٣٤٥٦٧٨٩0-9ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ]*$/,\r\n az: /^[0-9A-ZÇƏĞİıÖŞÜ]*$/i,\r\n el: /^[0-9Α-ώ]*$/i\r\n};\r\nvar alphaDash = {\r\n en: /^[0-9A-Z_-]*$/i,\r\n cs: /^[0-9A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ_-]*$/i,\r\n da: /^[0-9A-ZÆØÅ_-]*$/i,\r\n de: /^[0-9A-ZÄÖÜß_-]*$/i,\r\n es: /^[0-9A-ZÁÉÍÑÓÚÜ_-]*$/i,\r\n fa: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰپژگچکی]*$/,\r\n fr: /^[0-9A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ_-]*$/i,\r\n it: /^[0-9A-Z\\xC0-\\xFF_-]*$/i,\r\n lt: /^[0-9A-ZĄČĘĖĮŠŲŪŽ_-]*$/i,\r\n nl: /^[0-9A-ZÉËÏÓÖÜ_-]*$/i,\r\n hu: /^[0-9A-ZÁÉÍÓÖŐÚÜŰ_-]*$/i,\r\n pl: /^[0-9A-ZĄĆĘŚŁŃÓŻŹ_-]*$/i,\r\n pt: /^[0-9A-ZÃÁÀÂÇÉÊÍÕÓÔÚÜ_-]*$/i,\r\n ro: /^[0-9A-ZĂÂÎŞŢ_-]*$/i,\r\n ru: /^[0-9А-ЯЁ_-]*$/i,\r\n sk: /^[0-9A-ZÁÄČĎÉÍĹĽŇÓŔŠŤÚÝŽ_-]*$/i,\r\n sr: /^[0-9A-ZČĆŽŠĐ_-]*$/i,\r\n sv: /^[0-9A-ZÅÄÖ_-]*$/i,\r\n tr: /^[0-9A-ZÇĞİıÖŞÜ_-]*$/i,\r\n uk: /^[0-9А-ЩЬЮЯЄІЇҐ_-]*$/i,\r\n ar: /^[٠١٢٣٤٥٦٧٨٩0-9ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ_-]*$/,\r\n az: /^[0-9A-ZÇƏĞİıÖŞÜ_-]*$/i,\r\n el: /^[0-9Α-ώ_-]*$/i\r\n};\n\nvar validate = function (value, _a) {\r\n var _b = (_a === void 0 ? {} : _a).locale, locale = _b === void 0 ? '' : _b;\r\n if (Array.isArray(value)) {\r\n return value.every(function (val) { return validate(val, { locale: locale }); });\r\n }\r\n // Match at least one locale.\r\n if (!locale) {\r\n return Object.keys(alpha).some(function (loc) { return alpha[loc].test(value); });\r\n }\r\n return (alpha[locale] || alpha.en).test(value);\r\n};\r\nvar params = [\r\n {\r\n name: 'locale'\r\n }\r\n];\r\nvar alpha$1 = {\r\n validate: validate,\r\n params: params\r\n};\n\nvar validate$1 = function (value, _a) {\r\n var _b = (_a === void 0 ? {} : _a).locale, locale = _b === void 0 ? '' : _b;\r\n if (Array.isArray(value)) {\r\n return value.every(function (val) { return validate$1(val, { locale: locale }); });\r\n }\r\n // Match at least one locale.\r\n if (!locale) {\r\n return Object.keys(alphaDash).some(function (loc) { return alphaDash[loc].test(value); });\r\n }\r\n return (alphaDash[locale] || alphaDash.en).test(value);\r\n};\r\nvar params$1 = [\r\n {\r\n name: 'locale'\r\n }\r\n];\r\nvar alpha_dash = {\r\n validate: validate$1,\r\n params: params$1\r\n};\n\nvar validate$2 = function (value, _a) {\r\n var _b = (_a === void 0 ? {} : _a).locale, locale = _b === void 0 ? '' : _b;\r\n if (Array.isArray(value)) {\r\n return value.every(function (val) { return validate$2(val, { locale: locale }); });\r\n }\r\n // Match at least one locale.\r\n if (!locale) {\r\n return Object.keys(alphanumeric).some(function (loc) { return alphanumeric[loc].test(value); });\r\n }\r\n return (alphanumeric[locale] || alphanumeric.en).test(value);\r\n};\r\nvar params$2 = [\r\n {\r\n name: 'locale'\r\n }\r\n];\r\nvar alpha_num = {\r\n validate: validate$2,\r\n params: params$2\r\n};\n\nvar validate$3 = function (value, _a) {\r\n var _b = (_a === void 0 ? {} : _a).locale, locale = _b === void 0 ? '' : _b;\r\n if (Array.isArray(value)) {\r\n return value.every(function (val) { return validate$3(val, { locale: locale }); });\r\n }\r\n // Match at least one locale.\r\n if (!locale) {\r\n return Object.keys(alphaSpaces).some(function (loc) { return alphaSpaces[loc].test(value); });\r\n }\r\n return (alphaSpaces[locale] || alphaSpaces.en).test(value);\r\n};\r\nvar params$3 = [\r\n {\r\n name: 'locale'\r\n }\r\n];\r\nvar alpha_spaces = {\r\n validate: validate$3,\r\n params: params$3\r\n};\n\nvar validate$4 = function (value, _a) {\r\n var _b = _a === void 0 ? {} : _a, min = _b.min, max = _b.max;\r\n if (Array.isArray(value)) {\r\n return value.every(function (val) { return !!validate$4(val, { min: min, max: max }); });\r\n }\r\n return Number(min) <= value && Number(max) >= value;\r\n};\r\nvar params$4 = [\r\n {\r\n name: 'min'\r\n },\r\n {\r\n name: 'max'\r\n }\r\n];\r\nvar between = {\r\n validate: validate$4,\r\n params: params$4\r\n};\n\nvar validate$5 = function (value, _a) {\r\n var target = _a.target;\r\n return String(value) === String(target);\r\n};\r\nvar params$5 = [\r\n {\r\n name: 'target',\r\n isTarget: true\r\n }\r\n];\r\nvar confirmed = {\r\n validate: validate$5,\r\n params: params$5\r\n};\n\nvar validate$6 = function (value, _a) {\r\n var length = _a.length;\r\n if (Array.isArray(value)) {\r\n return value.every(function (val) { return validate$6(val, { length: length }); });\r\n }\r\n var strVal = String(value);\r\n return /^[0-9]*$/.test(strVal) && strVal.length === length;\r\n};\r\nvar params$6 = [\r\n {\r\n name: 'length',\r\n cast: function (value) {\r\n return Number(value);\r\n }\r\n }\r\n];\r\nvar digits = {\r\n validate: validate$6,\r\n params: params$6\r\n};\n\nvar validateImage = function (file, width, height) {\r\n var URL = window.URL || window.webkitURL;\r\n return new Promise(function (resolve) {\r\n var image = new Image();\r\n image.onerror = function () { return resolve(false); };\r\n image.onload = function () { return resolve(image.width === width && image.height === height); };\r\n image.src = URL.createObjectURL(file);\r\n });\r\n};\r\nvar validate$7 = function (files, _a) {\r\n var width = _a.width, height = _a.height;\r\n var list = [];\r\n files = Array.isArray(files) ? files : [files];\r\n for (var i = 0; i < files.length; i++) {\r\n // if file is not an image, reject.\r\n if (!/\\.(jpg|svg|jpeg|png|bmp|gif)$/i.test(files[i].name)) {\r\n return Promise.resolve(false);\r\n }\r\n list.push(files[i]);\r\n }\r\n return Promise.all(list.map(function (file) { return validateImage(file, width, height); })).then(function (values) {\r\n return values.every(function (v) { return v; });\r\n });\r\n};\r\nvar params$7 = [\r\n {\r\n name: 'width',\r\n cast: function (value) {\r\n return Number(value);\r\n }\r\n },\r\n {\r\n name: 'height',\r\n cast: function (value) {\r\n return Number(value);\r\n }\r\n }\r\n];\r\nvar dimensions = {\r\n validate: validate$7,\r\n params: params$7\r\n};\n\nvar validate$8 = function (value, _a) {\r\n var multiple = (_a === void 0 ? {} : _a).multiple;\r\n // eslint-disable-next-line\r\n var re = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n if (multiple && !Array.isArray(value)) {\r\n value = String(value)\r\n .split(',')\r\n .map(function (emailStr) { return emailStr.trim(); });\r\n }\r\n if (Array.isArray(value)) {\r\n return value.every(function (val) { return re.test(String(val)); });\r\n }\r\n return re.test(String(value));\r\n};\r\nvar params$8 = [\r\n {\r\n name: 'multiple',\r\n default: false\r\n }\r\n];\r\nvar email = {\r\n validate: validate$8,\r\n params: params$8\r\n};\n\nfunction isNullOrUndefined(value) {\r\n return value === null || value === undefined;\r\n}\r\nfunction isEmptyArray(arr) {\r\n return Array.isArray(arr) && arr.length === 0;\r\n}\r\nfunction isCallable(fn) {\r\n return typeof fn === 'function';\r\n}\n\nfunction includes(collection, item) {\r\n return collection.indexOf(item) !== -1;\r\n}\r\n/**\r\n * Converts an array-like object to array, provides a simple polyfill for Array.from\r\n */\r\nfunction toArray(arrayLike) {\r\n if (isCallable(Array.from)) {\r\n return Array.from(arrayLike);\r\n }\r\n /* istanbul ignore next */\r\n return _copyArray(arrayLike);\r\n}\r\n/* istanbul ignore next */\r\nfunction _copyArray(arrayLike) {\r\n var array = [];\r\n var length = arrayLike.length;\r\n for (var i = 0; i < length; i++) {\r\n array.push(arrayLike[i]);\r\n }\r\n return array;\r\n}\n\nvar validate$9 = function (value, options) {\r\n if (Array.isArray(value)) {\r\n return value.every(function (val) { return validate$9(val, options); });\r\n }\r\n return toArray(options).some(function (item) {\r\n // eslint-disable-next-line\r\n return item == value;\r\n });\r\n};\r\nvar oneOf = {\r\n validate: validate$9\r\n};\n\nvar validate$a = function (value, args) {\r\n return !validate$9(value, args);\r\n};\r\nvar excluded = {\r\n validate: validate$a\r\n};\n\nvar validate$b = function (files, extensions) {\r\n var regex = new RegExp(\".(\" + extensions.join('|') + \")$\", 'i');\r\n if (Array.isArray(files)) {\r\n return files.every(function (file) { return regex.test(file.name); });\r\n }\r\n return regex.test(files.name);\r\n};\r\nvar ext = {\r\n validate: validate$b\r\n};\n\nvar validate$c = function (files) {\r\n var regex = /\\.(jpg|svg|jpeg|png|bmp|gif|webp)$/i;\r\n if (Array.isArray(files)) {\r\n return files.every(function (file) { return regex.test(file.name); });\r\n }\r\n return regex.test(files.name);\r\n};\r\nvar image = {\r\n validate: validate$c\r\n};\n\nvar validate$d = function (value) {\r\n if (Array.isArray(value)) {\r\n return value.every(function (val) { return /^-?[0-9]+$/.test(String(val)); });\r\n }\r\n return /^-?[0-9]+$/.test(String(value));\r\n};\r\nvar integer = {\r\n validate: validate$d\r\n};\n\nvar validate$e = function (value, _a) {\r\n var other = _a.other;\r\n return value === other;\r\n};\r\nvar params$9 = [\r\n {\r\n name: 'other'\r\n }\r\n];\r\nvar is = {\r\n validate: validate$e,\r\n params: params$9\r\n};\n\nvar validate$f = function (value, _a) {\r\n var other = _a.other;\r\n return value !== other;\r\n};\r\nvar params$a = [\r\n {\r\n name: 'other'\r\n }\r\n];\r\nvar is_not = {\r\n validate: validate$f,\r\n params: params$a\r\n};\n\nvar validate$g = function (value, _a) {\r\n var length = _a.length;\r\n if (isNullOrUndefined(value)) {\r\n return false;\r\n }\r\n if (typeof value === 'string') {\r\n value = toArray(value);\r\n }\r\n if (typeof value === 'number') {\r\n value = String(value);\r\n }\r\n if (!value.length) {\r\n value = toArray(value);\r\n }\r\n return value.length === length;\r\n};\r\nvar params$b = [\r\n {\r\n name: 'length',\r\n cast: function (value) { return Number(value); }\r\n }\r\n];\r\nvar length = {\r\n validate: validate$g,\r\n params: params$b\r\n};\n\nvar validate$h = function (value, _a) {\r\n var length = _a.length;\r\n if (isNullOrUndefined(value)) {\r\n return length >= 0;\r\n }\r\n if (Array.isArray(value)) {\r\n return value.every(function (val) { return validate$h(val, { length: length }); });\r\n }\r\n return String(value).length <= length;\r\n};\r\nvar params$c = [\r\n {\r\n name: 'length',\r\n cast: function (value) {\r\n return Number(value);\r\n }\r\n }\r\n];\r\nvar max = {\r\n validate: validate$h,\r\n params: params$c\r\n};\n\nvar validate$i = function (value, _a) {\r\n var max = _a.max;\r\n if (isNullOrUndefined(value) || value === '') {\r\n return false;\r\n }\r\n if (Array.isArray(value)) {\r\n return value.length > 0 && value.every(function (val) { return validate$i(val, { max: max }); });\r\n }\r\n return Number(value) <= max;\r\n};\r\nvar params$d = [\r\n {\r\n name: 'max',\r\n cast: function (value) {\r\n return Number(value);\r\n }\r\n }\r\n];\r\nvar max_value = {\r\n validate: validate$i,\r\n params: params$d\r\n};\n\nvar validate$j = function (files, mimes) {\r\n var regex = new RegExp(mimes.join('|').replace('*', '.+') + \"$\", 'i');\r\n if (Array.isArray(files)) {\r\n return files.every(function (file) { return regex.test(file.type); });\r\n }\r\n return regex.test(files.type);\r\n};\r\nvar mimes = {\r\n validate: validate$j\r\n};\n\nvar validate$k = function (value, _a) {\r\n var length = _a.length;\r\n if (isNullOrUndefined(value)) {\r\n return false;\r\n }\r\n if (Array.isArray(value)) {\r\n return value.every(function (val) { return validate$k(val, { length: length }); });\r\n }\r\n return String(value).length >= length;\r\n};\r\nvar params$e = [\r\n {\r\n name: 'length',\r\n cast: function (value) {\r\n return Number(value);\r\n }\r\n }\r\n];\r\nvar min = {\r\n validate: validate$k,\r\n params: params$e\r\n};\n\nvar validate$l = function (value, _a) {\r\n var min = _a.min;\r\n if (isNullOrUndefined(value) || value === '') {\r\n return false;\r\n }\r\n if (Array.isArray(value)) {\r\n return value.length > 0 && value.every(function (val) { return validate$l(val, { min: min }); });\r\n }\r\n return Number(value) >= min;\r\n};\r\nvar params$f = [\r\n {\r\n name: 'min',\r\n cast: function (value) {\r\n return Number(value);\r\n }\r\n }\r\n];\r\nvar min_value = {\r\n validate: validate$l,\r\n params: params$f\r\n};\n\nvar ar = /^[٠١٢٣٤٥٦٧٨٩]+$/;\r\nvar en = /^[0-9]+$/;\r\nvar validate$m = function (value) {\r\n var testValue = function (val) {\r\n var strValue = String(val);\r\n return en.test(strValue) || ar.test(strValue);\r\n };\r\n if (Array.isArray(value)) {\r\n return value.every(testValue);\r\n }\r\n return testValue(value);\r\n};\r\nvar numeric = {\r\n validate: validate$m\r\n};\n\nvar validate$n = function (value, _a) {\r\n var regex = _a.regex;\r\n if (Array.isArray(value)) {\r\n return value.every(function (val) { return validate$n(val, { regex: regex }); });\r\n }\r\n return regex.test(String(value));\r\n};\r\nvar params$g = [\r\n {\r\n name: 'regex',\r\n cast: function (value) {\r\n if (typeof value === 'string') {\r\n return new RegExp(value);\r\n }\r\n return value;\r\n }\r\n }\r\n];\r\nvar regex = {\r\n validate: validate$n,\r\n params: params$g\r\n};\n\nvar validate$o = function (value, _a) {\r\n var allowFalse = (_a === void 0 ? { allowFalse: true } : _a).allowFalse;\r\n var result = {\r\n valid: false,\r\n required: true\r\n };\r\n if (isNullOrUndefined(value) || isEmptyArray(value)) {\r\n return result;\r\n }\r\n // incase a field considers `false` as an empty value like checkboxes.\r\n if (value === false && !allowFalse) {\r\n return result;\r\n }\r\n result.valid = !!String(value).trim().length;\r\n return result;\r\n};\r\nvar computesRequired = true;\r\nvar params$h = [\r\n {\r\n name: 'allowFalse',\r\n default: true\r\n }\r\n];\r\nvar required = {\r\n validate: validate$o,\r\n params: params$h,\r\n computesRequired: computesRequired\r\n};\n\nvar testEmpty = function (value) {\r\n return isEmptyArray(value) || includes([false, null, undefined], value) || !String(value).trim().length;\r\n};\r\nvar validate$p = function (value, _a) {\r\n var target = _a.target, values = _a.values;\r\n var required;\r\n if (values && values.length) {\r\n if (!Array.isArray(values) && typeof values === 'string') {\r\n values = [values];\r\n }\r\n // eslint-disable-next-line\r\n required = values.some(function (val) { return val == String(target).trim(); });\r\n }\r\n else {\r\n required = !testEmpty(target);\r\n }\r\n if (!required) {\r\n return {\r\n valid: true,\r\n required: required\r\n };\r\n }\r\n return {\r\n valid: !testEmpty(value),\r\n required: required\r\n };\r\n};\r\nvar params$i = [\r\n {\r\n name: 'target',\r\n isTarget: true\r\n },\r\n {\r\n name: 'values'\r\n }\r\n];\r\nvar computesRequired$1 = true;\r\nvar required_if = {\r\n validate: validate$p,\r\n params: params$i,\r\n computesRequired: computesRequired$1\r\n};\n\nvar validate$q = function (files, _a) {\r\n var size = _a.size;\r\n if (isNaN(size)) {\r\n return false;\r\n }\r\n var nSize = size * 1024;\r\n if (!Array.isArray(files)) {\r\n return files.size <= nSize;\r\n }\r\n for (var i = 0; i < files.length; i++) {\r\n if (files[i].size > nSize) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n};\r\nvar params$j = [\r\n {\r\n name: 'size',\r\n cast: function (value) {\r\n return Number(value);\r\n }\r\n }\r\n];\r\nvar size = {\r\n validate: validate$q,\r\n params: params$j\r\n};\n\nvar validate$r = function (value, params) {\r\n var _a = params || {}, _b = _a.decimals, decimals = _b === void 0 ? 0 : _b, _c = _a.separator, separator = _c === void 0 ? 'dot' : _c;\r\n var separators = {\r\n dot: '.',\r\n comma: ','\r\n };\r\n var regexPart = +decimals === 0 ? '+' : \"{\" + decimals + \"}\";\r\n var regex = new RegExp(\"^-?\\\\d+\\\\\" + (separators[separator] || '.') + \"\\\\d\" + regexPart + \"$\");\r\n return Array.isArray(value) ? value.every(function (val) { return regex.test(String(val)); }) : regex.test(String(value));\r\n};\r\nvar params$k = [\r\n {\r\n name: 'decimals',\r\n default: 0\r\n },\r\n {\r\n name: 'separator',\r\n default: 'dot'\r\n }\r\n];\r\nvar double = {\r\n validate: validate$r,\r\n params: params$k\r\n};\n\nexport { alpha$1 as alpha, alpha_dash, alpha_num, alpha_spaces, between, confirmed, digits, dimensions, double, email, excluded, ext, image, integer, is, is_not, length, max, max_value, mimes, min, min_value, numeric, oneOf, regex, required, required_if, size };\n","export const validatorPositive = value => {\n if (value >= 0) {\n return true\n }\n return false\n}\n\nexport const validatorPassword = password => {\n /* eslint-disable no-useless-escape */\n const regExp = /(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%&*()]).{8,}/\n /* eslint-enable no-useless-escape */\n const validPassword = regExp.test(password)\n return validPassword\n}\n\nexport const validatorCreditCard = creditnum => {\n /* eslint-disable no-useless-escape */\n const cRegExp = /^(?:3[47][0-9]{13})$/\n /* eslint-enable no-useless-escape */\n const validCreditCard = cRegExp.test(creditnum)\n return validCreditCard\n}\n\nexport const validatorUrlValidator = val => {\n if (val === undefined || val === null || val.length === 0) {\n return true\n }\n /* eslint-disable no-useless-escape */\n const re = /^(http[s]?:\\/\\/){0,1}(www\\.){0,1}[a-zA-Z0-9\\.\\-]+\\.[a-zA-Z]{2,5}[\\.]{0,1}/\n /* eslint-enable no-useless-escape */\n return re.test(val)\n}\n","import { extend, localize } from 'vee-validate'\nimport {\n required as rule_required,\n email as rule_email,\n min as rule_min,\n confirmed as rule_confirmed,\n regex as rule_regex,\n between as rule_between,\n alpha as rule_alpha,\n integer as rule_integer,\n digits as rule_digits,\n alpha_dash as rule_alpha_dash,\n alpha_num as rule_alpha_num,\n length as rule_length,\n} from 'vee-validate/dist/rules'\nimport ar from 'vee-validate/dist/locale/ar.json'\nimport en from 'vee-validate/dist/locale/en.json'\n\n// eslint-disable-next-line object-curly-newline\nimport { validatorPositive, validatorUrlValidator, validatorPassword, validatorCreditCard } from './validators'\n\n// ////////////////////////////////////////////////////////\n// General\n// ////////////////////////////////////////////////////////\n\nexport const required = extend('required', rule_required)\n\nexport const email = extend('email', rule_email)\n\nexport const min = extend('min', rule_min)\n\nexport const confirmed = extend('confirmed', rule_confirmed)\n\nexport const regex = extend('regex', rule_regex)\n\nexport const between = extend('between', rule_between)\n\nexport const alpha = extend('alpha', rule_alpha)\n\nexport const integer = extend('integer', rule_integer)\n\nexport const digits = extend('digits', rule_digits)\n\nexport const alphaDash = extend('alpha-dash', rule_alpha_dash)\n\nexport const alphaNum = extend('alpha-num', rule_alpha_num)\n\nexport const length = extend('length', rule_length)\n\nexport const positive = extend('positive', {\n validate: validatorPositive,\n message: 'Please enter positive number!',\n})\n\nexport const credit = extend('credit-card', {\n validate: validatorCreditCard,\n message: 'It is not valid credit card!',\n})\n\nexport const password = extend('password', {\n validate: validatorPassword,\n message: 'Your {_field_} must contain at least one uppercase, one lowercase, one special character and one digit',\n})\n\nexport const url = extend('url', {\n validate: validatorUrlValidator,\n message: 'URL is invalid',\n})\n\n// Install English and Arabic localizations.\nlocalize({\n en: {\n messages: en.messages,\n names: {\n email: 'Email',\n password: 'Password',\n },\n fields: {\n password: {\n min: '{_field_} is too short, you want to get hacked?',\n },\n },\n },\n ar: {\n messages: ar.messages,\n names: {\n email: 'البريد الإلكتروني',\n password: 'كلمة السر',\n },\n fields: {\n password: {\n min: 'كلمة السر قصيرة جداً سيتم اختراقك',\n },\n },\n },\n})\n// ////////////////////////////////////////////////////////\n// NOTE:\n// Quasar validation for reference only\n// Remove this note once development is finished and make sure to\n// to convert all of them in veevalidate version\n// ////////////////////////////////////////////////////////\n\n// export const required = (val) => {\n// return (val && val.length > 0) || '*Field is required'\n// }\n\n// export const required_obj = (obj) => {\n// if (obj === null || obj === undefined) return '*Field is required'\n// return (Object.entries(obj).length > 0 && obj.constructor === Object) || '*Field is required'\n// }\n\n// export const no_blank_spaces_arr = (arr) => {\n// return arr.every(val => (val.trim() && val.trim().length > 0)) || 'Blank Spaces are not allowed'\n// }\n\n// export const url = val => {\n// // If blank return\n// if (val === undefined || val === null || val.length === 0) return true\n\n// // Used\n// // https://stackoverflow.com/questions/4314741/url-regex-validation\n\n// // Other\n// // https://stackoverflow.com/questions/5717093/check-if-a-javascript-string-is-a-url\n// // https://www.w3resource.com/javascript-exercises/javascript-regexp-exercise-9.php\n// // https://www.geeksforgeeks.org/how-to-validate-url-using-regular-expression-in-javascript/\n\n// /* eslint-disable no-useless-escape */\n// const re = /^(http[s]?:\\/\\/){0,1}(www\\.){0,1}[a-zA-Z0-9\\.\\-]+\\.[a-zA-Z]{2,5}[\\.]{0,1}/\n// /* eslint-enable no-useless-escape */\n// return re.test(val) || 'URL is invalid'\n// }\n\n// export const date = val => {\n\n// // If blank return\n// if (val === undefined || val === null || val.length === 0) return true\n\n// // https://github.com/quasarframework/quasar/blob/dev/ui/src/utils/patterns.js\n// return /^-?[\\d]+\\/[0-1]\\d\\/[0-3]\\d$/.test(val) || 'Date is invalid'\n// }\n\n// export const max = (val, max) => {\n\n// // If blank return\n// if (val === undefined || val === null) return true\n\n// return val.length <= max || `More than ${max} characters are not allowed`\n// }\n\n// export const max_arr = (val, max) => {\n// return val.length <= max || `More than ${max} values are not allowed`\n// }\n\n// export const min = (val, min) => {\n\n// // If blank return\n// if (val === undefined || val === null || val.length === 0) return true\n\n// return val.length >= min || `Minimum ${min} characters are required`\n// }\n\n// export const num_range = (val, min, max) => {\n\n// // If blank return\n// if (val === undefined || val === null || val.length === 0) return true\n\n// const msg = 'Value is invalid'\n// if (min === null) return val <= max || msg\n// else if (max === null) return val >= min || msg\n// else return (val >= min && val <= max) || msg\n// }\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","/*!\n * Quill Editor v1.3.7\n * https://quilljs.com/\n * Copyright (c) 2014, Jason Chen\n * Copyright (c) 2013, salesforce.com\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Quill\"] = factory();\n\telse\n\t\troot[\"Quill\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn /******/ (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, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\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/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 109);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar container_1 = __webpack_require__(17);\nvar format_1 = __webpack_require__(18);\nvar leaf_1 = __webpack_require__(19);\nvar scroll_1 = __webpack_require__(45);\nvar inline_1 = __webpack_require__(46);\nvar block_1 = __webpack_require__(47);\nvar embed_1 = __webpack_require__(48);\nvar text_1 = __webpack_require__(49);\nvar attributor_1 = __webpack_require__(12);\nvar class_1 = __webpack_require__(32);\nvar style_1 = __webpack_require__(33);\nvar store_1 = __webpack_require__(31);\nvar Registry = __webpack_require__(1);\nvar Parchment = {\n Scope: Registry.Scope,\n create: Registry.create,\n find: Registry.find,\n query: Registry.query,\n register: Registry.register,\n Container: container_1.default,\n Format: format_1.default,\n Leaf: leaf_1.default,\n Embed: embed_1.default,\n Scroll: scroll_1.default,\n Block: block_1.default,\n Inline: inline_1.default,\n Text: text_1.default,\n Attributor: {\n Attribute: attributor_1.default,\n Class: class_1.default,\n Style: style_1.default,\n Store: store_1.default,\n },\n};\nexports.default = Parchment;\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ParchmentError = /** @class */ (function (_super) {\n __extends(ParchmentError, _super);\n function ParchmentError(message) {\n var _this = this;\n message = '[Parchment] ' + message;\n _this = _super.call(this, message) || this;\n _this.message = message;\n _this.name = _this.constructor.name;\n return _this;\n }\n return ParchmentError;\n}(Error));\nexports.ParchmentError = ParchmentError;\nvar attributes = {};\nvar classes = {};\nvar tags = {};\nvar types = {};\nexports.DATA_KEY = '__blot';\nvar Scope;\n(function (Scope) {\n Scope[Scope[\"TYPE\"] = 3] = \"TYPE\";\n Scope[Scope[\"LEVEL\"] = 12] = \"LEVEL\";\n Scope[Scope[\"ATTRIBUTE\"] = 13] = \"ATTRIBUTE\";\n Scope[Scope[\"BLOT\"] = 14] = \"BLOT\";\n Scope[Scope[\"INLINE\"] = 7] = \"INLINE\";\n Scope[Scope[\"BLOCK\"] = 11] = \"BLOCK\";\n Scope[Scope[\"BLOCK_BLOT\"] = 10] = \"BLOCK_BLOT\";\n Scope[Scope[\"INLINE_BLOT\"] = 6] = \"INLINE_BLOT\";\n Scope[Scope[\"BLOCK_ATTRIBUTE\"] = 9] = \"BLOCK_ATTRIBUTE\";\n Scope[Scope[\"INLINE_ATTRIBUTE\"] = 5] = \"INLINE_ATTRIBUTE\";\n Scope[Scope[\"ANY\"] = 15] = \"ANY\";\n})(Scope = exports.Scope || (exports.Scope = {}));\nfunction create(input, value) {\n var match = query(input);\n if (match == null) {\n throw new ParchmentError(\"Unable to create \" + input + \" blot\");\n }\n var BlotClass = match;\n var node = \n // @ts-ignore\n input instanceof Node || input['nodeType'] === Node.TEXT_NODE ? input : BlotClass.create(value);\n return new BlotClass(node, value);\n}\nexports.create = create;\nfunction find(node, bubble) {\n if (bubble === void 0) { bubble = false; }\n if (node == null)\n return null;\n // @ts-ignore\n if (node[exports.DATA_KEY] != null)\n return node[exports.DATA_KEY].blot;\n if (bubble)\n return find(node.parentNode, bubble);\n return null;\n}\nexports.find = find;\nfunction query(query, scope) {\n if (scope === void 0) { scope = Scope.ANY; }\n var match;\n if (typeof query === 'string') {\n match = types[query] || attributes[query];\n // @ts-ignore\n }\n else if (query instanceof Text || query['nodeType'] === Node.TEXT_NODE) {\n match = types['text'];\n }\n else if (typeof query === 'number') {\n if (query & Scope.LEVEL & Scope.BLOCK) {\n match = types['block'];\n }\n else if (query & Scope.LEVEL & Scope.INLINE) {\n match = types['inline'];\n }\n }\n else if (query instanceof HTMLElement) {\n var names = (query.getAttribute('class') || '').split(/\\s+/);\n for (var i in names) {\n match = classes[names[i]];\n if (match)\n break;\n }\n match = match || tags[query.tagName];\n }\n if (match == null)\n return null;\n // @ts-ignore\n if (scope & Scope.LEVEL & match.scope && scope & Scope.TYPE & match.scope)\n return match;\n return null;\n}\nexports.query = query;\nfunction register() {\n var Definitions = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n Definitions[_i] = arguments[_i];\n }\n if (Definitions.length > 1) {\n return Definitions.map(function (d) {\n return register(d);\n });\n }\n var Definition = Definitions[0];\n if (typeof Definition.blotName !== 'string' && typeof Definition.attrName !== 'string') {\n throw new ParchmentError('Invalid definition');\n }\n else if (Definition.blotName === 'abstract') {\n throw new ParchmentError('Cannot register abstract class');\n }\n types[Definition.blotName || Definition.attrName] = Definition;\n if (typeof Definition.keyName === 'string') {\n attributes[Definition.keyName] = Definition;\n }\n else {\n if (Definition.className != null) {\n classes[Definition.className] = Definition;\n }\n if (Definition.tagName != null) {\n if (Array.isArray(Definition.tagName)) {\n Definition.tagName = Definition.tagName.map(function (tagName) {\n return tagName.toUpperCase();\n });\n }\n else {\n Definition.tagName = Definition.tagName.toUpperCase();\n }\n var tagNames = Array.isArray(Definition.tagName) ? Definition.tagName : [Definition.tagName];\n tagNames.forEach(function (tag) {\n if (tags[tag] == null || Definition.className == null) {\n tags[tag] = Definition;\n }\n });\n }\n }\n return Definition;\n}\nexports.register = register;\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar diff = __webpack_require__(51);\nvar equal = __webpack_require__(11);\nvar extend = __webpack_require__(3);\nvar op = __webpack_require__(20);\n\n\nvar NULL_CHARACTER = String.fromCharCode(0); // Placeholder char for embed in diff()\n\n\nvar Delta = function (ops) {\n // Assume we are given a well formed ops\n if (Array.isArray(ops)) {\n this.ops = ops;\n } else if (ops != null && Array.isArray(ops.ops)) {\n this.ops = ops.ops;\n } else {\n this.ops = [];\n }\n};\n\n\nDelta.prototype.insert = function (text, attributes) {\n var newOp = {};\n if (text.length === 0) return this;\n newOp.insert = text;\n if (attributes != null && typeof attributes === 'object' && Object.keys(attributes).length > 0) {\n newOp.attributes = attributes;\n }\n return this.push(newOp);\n};\n\nDelta.prototype['delete'] = function (length) {\n if (length <= 0) return this;\n return this.push({ 'delete': length });\n};\n\nDelta.prototype.retain = function (length, attributes) {\n if (length <= 0) return this;\n var newOp = { retain: length };\n if (attributes != null && typeof attributes === 'object' && Object.keys(attributes).length > 0) {\n newOp.attributes = attributes;\n }\n return this.push(newOp);\n};\n\nDelta.prototype.push = function (newOp) {\n var index = this.ops.length;\n var lastOp = this.ops[index - 1];\n newOp = extend(true, {}, newOp);\n if (typeof lastOp === 'object') {\n if (typeof newOp['delete'] === 'number' && typeof lastOp['delete'] === 'number') {\n this.ops[index - 1] = { 'delete': lastOp['delete'] + newOp['delete'] };\n return this;\n }\n // Since it does not matter if we insert before or after deleting at the same index,\n // always prefer to insert first\n if (typeof lastOp['delete'] === 'number' && newOp.insert != null) {\n index -= 1;\n lastOp = this.ops[index - 1];\n if (typeof lastOp !== 'object') {\n this.ops.unshift(newOp);\n return this;\n }\n }\n if (equal(newOp.attributes, lastOp.attributes)) {\n if (typeof newOp.insert === 'string' && typeof lastOp.insert === 'string') {\n this.ops[index - 1] = { insert: lastOp.insert + newOp.insert };\n if (typeof newOp.attributes === 'object') this.ops[index - 1].attributes = newOp.attributes\n return this;\n } else if (typeof newOp.retain === 'number' && typeof lastOp.retain === 'number') {\n this.ops[index - 1] = { retain: lastOp.retain + newOp.retain };\n if (typeof newOp.attributes === 'object') this.ops[index - 1].attributes = newOp.attributes\n return this;\n }\n }\n }\n if (index === this.ops.length) {\n this.ops.push(newOp);\n } else {\n this.ops.splice(index, 0, newOp);\n }\n return this;\n};\n\nDelta.prototype.chop = function () {\n var lastOp = this.ops[this.ops.length - 1];\n if (lastOp && lastOp.retain && !lastOp.attributes) {\n this.ops.pop();\n }\n return this;\n};\n\nDelta.prototype.filter = function (predicate) {\n return this.ops.filter(predicate);\n};\n\nDelta.prototype.forEach = function (predicate) {\n this.ops.forEach(predicate);\n};\n\nDelta.prototype.map = function (predicate) {\n return this.ops.map(predicate);\n};\n\nDelta.prototype.partition = function (predicate) {\n var passed = [], failed = [];\n this.forEach(function(op) {\n var target = predicate(op) ? passed : failed;\n target.push(op);\n });\n return [passed, failed];\n};\n\nDelta.prototype.reduce = function (predicate, initial) {\n return this.ops.reduce(predicate, initial);\n};\n\nDelta.prototype.changeLength = function () {\n return this.reduce(function (length, elem) {\n if (elem.insert) {\n return length + op.length(elem);\n } else if (elem.delete) {\n return length - elem.delete;\n }\n return length;\n }, 0);\n};\n\nDelta.prototype.length = function () {\n return this.reduce(function (length, elem) {\n return length + op.length(elem);\n }, 0);\n};\n\nDelta.prototype.slice = function (start, end) {\n start = start || 0;\n if (typeof end !== 'number') end = Infinity;\n var ops = [];\n var iter = op.iterator(this.ops);\n var index = 0;\n while (index < end && iter.hasNext()) {\n var nextOp;\n if (index < start) {\n nextOp = iter.next(start - index);\n } else {\n nextOp = iter.next(end - index);\n ops.push(nextOp);\n }\n index += op.length(nextOp);\n }\n return new Delta(ops);\n};\n\n\nDelta.prototype.compose = function (other) {\n var thisIter = op.iterator(this.ops);\n var otherIter = op.iterator(other.ops);\n var ops = [];\n var firstOther = otherIter.peek();\n if (firstOther != null && typeof firstOther.retain === 'number' && firstOther.attributes == null) {\n var firstLeft = firstOther.retain;\n while (thisIter.peekType() === 'insert' && thisIter.peekLength() <= firstLeft) {\n firstLeft -= thisIter.peekLength();\n ops.push(thisIter.next());\n }\n if (firstOther.retain - firstLeft > 0) {\n otherIter.next(firstOther.retain - firstLeft);\n }\n }\n var delta = new Delta(ops);\n while (thisIter.hasNext() || otherIter.hasNext()) {\n if (otherIter.peekType() === 'insert') {\n delta.push(otherIter.next());\n } else if (thisIter.peekType() === 'delete') {\n delta.push(thisIter.next());\n } else {\n var length = Math.min(thisIter.peekLength(), otherIter.peekLength());\n var thisOp = thisIter.next(length);\n var otherOp = otherIter.next(length);\n if (typeof otherOp.retain === 'number') {\n var newOp = {};\n if (typeof thisOp.retain === 'number') {\n newOp.retain = length;\n } else {\n newOp.insert = thisOp.insert;\n }\n // Preserve null when composing with a retain, otherwise remove it for inserts\n var attributes = op.attributes.compose(thisOp.attributes, otherOp.attributes, typeof thisOp.retain === 'number');\n if (attributes) newOp.attributes = attributes;\n delta.push(newOp);\n\n // Optimization if rest of other is just retain\n if (!otherIter.hasNext() && equal(delta.ops[delta.ops.length - 1], newOp)) {\n var rest = new Delta(thisIter.rest());\n return delta.concat(rest).chop();\n }\n\n // Other op should be delete, we could be an insert or retain\n // Insert + delete cancels out\n } else if (typeof otherOp['delete'] === 'number' && typeof thisOp.retain === 'number') {\n delta.push(otherOp);\n }\n }\n }\n return delta.chop();\n};\n\nDelta.prototype.concat = function (other) {\n var delta = new Delta(this.ops.slice());\n if (other.ops.length > 0) {\n delta.push(other.ops[0]);\n delta.ops = delta.ops.concat(other.ops.slice(1));\n }\n return delta;\n};\n\nDelta.prototype.diff = function (other, index) {\n if (this.ops === other.ops) {\n return new Delta();\n }\n var strings = [this, other].map(function (delta) {\n return delta.map(function (op) {\n if (op.insert != null) {\n return typeof op.insert === 'string' ? op.insert : NULL_CHARACTER;\n }\n var prep = (delta === other) ? 'on' : 'with';\n throw new Error('diff() called ' + prep + ' non-document');\n }).join('');\n });\n var delta = new Delta();\n var diffResult = diff(strings[0], strings[1], index);\n var thisIter = op.iterator(this.ops);\n var otherIter = op.iterator(other.ops);\n diffResult.forEach(function (component) {\n var length = component[1].length;\n while (length > 0) {\n var opLength = 0;\n switch (component[0]) {\n case diff.INSERT:\n opLength = Math.min(otherIter.peekLength(), length);\n delta.push(otherIter.next(opLength));\n break;\n case diff.DELETE:\n opLength = Math.min(length, thisIter.peekLength());\n thisIter.next(opLength);\n delta['delete'](opLength);\n break;\n case diff.EQUAL:\n opLength = Math.min(thisIter.peekLength(), otherIter.peekLength(), length);\n var thisOp = thisIter.next(opLength);\n var otherOp = otherIter.next(opLength);\n if (equal(thisOp.insert, otherOp.insert)) {\n delta.retain(opLength, op.attributes.diff(thisOp.attributes, otherOp.attributes));\n } else {\n delta.push(otherOp)['delete'](opLength);\n }\n break;\n }\n length -= opLength;\n }\n });\n return delta.chop();\n};\n\nDelta.prototype.eachLine = function (predicate, newline) {\n newline = newline || '\\n';\n var iter = op.iterator(this.ops);\n var line = new Delta();\n var i = 0;\n while (iter.hasNext()) {\n if (iter.peekType() !== 'insert') return;\n var thisOp = iter.peek();\n var start = op.length(thisOp) - iter.peekLength();\n var index = typeof thisOp.insert === 'string' ?\n thisOp.insert.indexOf(newline, start) - start : -1;\n if (index < 0) {\n line.push(iter.next());\n } else if (index > 0) {\n line.push(iter.next(index));\n } else {\n if (predicate(line, iter.next(1).attributes || {}, i) === false) {\n return;\n }\n i += 1;\n line = new Delta();\n }\n }\n if (line.length() > 0) {\n predicate(line, {}, i);\n }\n};\n\nDelta.prototype.transform = function (other, priority) {\n priority = !!priority;\n if (typeof other === 'number') {\n return this.transformPosition(other, priority);\n }\n var thisIter = op.iterator(this.ops);\n var otherIter = op.iterator(other.ops);\n var delta = new Delta();\n while (thisIter.hasNext() || otherIter.hasNext()) {\n if (thisIter.peekType() === 'insert' && (priority || otherIter.peekType() !== 'insert')) {\n delta.retain(op.length(thisIter.next()));\n } else if (otherIter.peekType() === 'insert') {\n delta.push(otherIter.next());\n } else {\n var length = Math.min(thisIter.peekLength(), otherIter.peekLength());\n var thisOp = thisIter.next(length);\n var otherOp = otherIter.next(length);\n if (thisOp['delete']) {\n // Our delete either makes their delete redundant or removes their retain\n continue;\n } else if (otherOp['delete']) {\n delta.push(otherOp);\n } else {\n // We retain either their retain or insert\n delta.retain(length, op.attributes.transform(thisOp.attributes, otherOp.attributes, priority));\n }\n }\n }\n return delta.chop();\n};\n\nDelta.prototype.transformPosition = function (index, priority) {\n priority = !!priority;\n var thisIter = op.iterator(this.ops);\n var offset = 0;\n while (thisIter.hasNext() && offset <= index) {\n var length = thisIter.peekLength();\n var nextType = thisIter.peekType();\n thisIter.next();\n if (nextType === 'delete') {\n index -= Math.min(length, index - offset);\n continue;\n } else if (nextType === 'insert' && (offset < index || !priority)) {\n index += length;\n }\n offset += length;\n }\n return index;\n};\n\n\nmodule.exports = Delta;\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports) {\n\n'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar defineProperty = Object.defineProperty;\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nvar isArray = function isArray(arr) {\n\tif (typeof Array.isArray === 'function') {\n\t\treturn Array.isArray(arr);\n\t}\n\n\treturn toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t// Not own constructor property must be Object\n\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\treturn false;\n\t}\n\n\t// Own properties are enumerated firstly, so to speed up,\n\t// if last one is own, then all properties are own.\n\tvar key;\n\tfor (key in obj) { /**/ }\n\n\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\n// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target\nvar setProperty = function setProperty(target, options) {\n\tif (defineProperty && options.name === '__proto__') {\n\t\tdefineProperty(target, options.name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\tvalue: options.newValue,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\ttarget[options.name] = options.newValue;\n\t}\n};\n\n// Return undefined instead of __proto__ if '__proto__' is not an own property\nvar getProperty = function getProperty(obj, name) {\n\tif (name === '__proto__') {\n\t\tif (!hasOwn.call(obj, name)) {\n\t\t\treturn void 0;\n\t\t} else if (gOPD) {\n\t\t\t// In early versions of node, obj['__proto__'] is buggy when obj has\n\t\t\t// __proto__ as an own property. Object.getOwnPropertyDescriptor() works.\n\t\t\treturn gOPD(obj, name).value;\n\t\t}\n\t}\n\n\treturn obj[name];\n};\n\nmodule.exports = function extend() {\n\tvar options, name, src, copy, copyIsArray, clone;\n\tvar target = arguments[0];\n\tvar i = 1;\n\tvar length = arguments.length;\n\tvar deep = false;\n\n\t// Handle a deep copy situation\n\tif (typeof target === 'boolean') {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\tif (target == null || (typeof target !== 'object' && typeof target !== 'function')) {\n\t\ttarget = {};\n\t}\n\n\tfor (; i < length; ++i) {\n\t\toptions = arguments[i];\n\t\t// Only deal with non-null/undefined values\n\t\tif (options != null) {\n\t\t\t// Extend the base object\n\t\t\tfor (name in options) {\n\t\t\t\tsrc = getProperty(target, name);\n\t\t\t\tcopy = getProperty(options, name);\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif (target !== copy) {\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: extend(deep, clone, copy) });\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: copy });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.BlockEmbed = exports.bubbleFormats = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _break = __webpack_require__(16);\n\nvar _break2 = _interopRequireDefault(_break);\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nvar _text = __webpack_require__(7);\n\nvar _text2 = _interopRequireDefault(_text);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar NEWLINE_LENGTH = 1;\n\nvar BlockEmbed = function (_Parchment$Embed) {\n _inherits(BlockEmbed, _Parchment$Embed);\n\n function BlockEmbed() {\n _classCallCheck(this, BlockEmbed);\n\n return _possibleConstructorReturn(this, (BlockEmbed.__proto__ || Object.getPrototypeOf(BlockEmbed)).apply(this, arguments));\n }\n\n _createClass(BlockEmbed, [{\n key: 'attach',\n value: function attach() {\n _get(BlockEmbed.prototype.__proto__ || Object.getPrototypeOf(BlockEmbed.prototype), 'attach', this).call(this);\n this.attributes = new _parchment2.default.Attributor.Store(this.domNode);\n }\n }, {\n key: 'delta',\n value: function delta() {\n return new _quillDelta2.default().insert(this.value(), (0, _extend2.default)(this.formats(), this.attributes.values()));\n }\n }, {\n key: 'format',\n value: function format(name, value) {\n var attribute = _parchment2.default.query(name, _parchment2.default.Scope.BLOCK_ATTRIBUTE);\n if (attribute != null) {\n this.attributes.attribute(attribute, value);\n }\n }\n }, {\n key: 'formatAt',\n value: function formatAt(index, length, name, value) {\n this.format(name, value);\n }\n }, {\n key: 'insertAt',\n value: function insertAt(index, value, def) {\n if (typeof value === 'string' && value.endsWith('\\n')) {\n var block = _parchment2.default.create(Block.blotName);\n this.parent.insertBefore(block, index === 0 ? this : this.next);\n block.insertAt(0, value.slice(0, -1));\n } else {\n _get(BlockEmbed.prototype.__proto__ || Object.getPrototypeOf(BlockEmbed.prototype), 'insertAt', this).call(this, index, value, def);\n }\n }\n }]);\n\n return BlockEmbed;\n}(_parchment2.default.Embed);\n\nBlockEmbed.scope = _parchment2.default.Scope.BLOCK_BLOT;\n// It is important for cursor behavior BlockEmbeds use tags that are block level elements\n\n\nvar Block = function (_Parchment$Block) {\n _inherits(Block, _Parchment$Block);\n\n function Block(domNode) {\n _classCallCheck(this, Block);\n\n var _this2 = _possibleConstructorReturn(this, (Block.__proto__ || Object.getPrototypeOf(Block)).call(this, domNode));\n\n _this2.cache = {};\n return _this2;\n }\n\n _createClass(Block, [{\n key: 'delta',\n value: function delta() {\n if (this.cache.delta == null) {\n this.cache.delta = this.descendants(_parchment2.default.Leaf).reduce(function (delta, leaf) {\n if (leaf.length() === 0) {\n return delta;\n } else {\n return delta.insert(leaf.value(), bubbleFormats(leaf));\n }\n }, new _quillDelta2.default()).insert('\\n', bubbleFormats(this));\n }\n return this.cache.delta;\n }\n }, {\n key: 'deleteAt',\n value: function deleteAt(index, length) {\n _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'deleteAt', this).call(this, index, length);\n this.cache = {};\n }\n }, {\n key: 'formatAt',\n value: function formatAt(index, length, name, value) {\n if (length <= 0) return;\n if (_parchment2.default.query(name, _parchment2.default.Scope.BLOCK)) {\n if (index + length === this.length()) {\n this.format(name, value);\n }\n } else {\n _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'formatAt', this).call(this, index, Math.min(length, this.length() - index - 1), name, value);\n }\n this.cache = {};\n }\n }, {\n key: 'insertAt',\n value: function insertAt(index, value, def) {\n if (def != null) return _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'insertAt', this).call(this, index, value, def);\n if (value.length === 0) return;\n var lines = value.split('\\n');\n var text = lines.shift();\n if (text.length > 0) {\n if (index < this.length() - 1 || this.children.tail == null) {\n _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'insertAt', this).call(this, Math.min(index, this.length() - 1), text);\n } else {\n this.children.tail.insertAt(this.children.tail.length(), text);\n }\n this.cache = {};\n }\n var block = this;\n lines.reduce(function (index, line) {\n block = block.split(index, true);\n block.insertAt(0, line);\n return line.length;\n }, index + text.length);\n }\n }, {\n key: 'insertBefore',\n value: function insertBefore(blot, ref) {\n var head = this.children.head;\n _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'insertBefore', this).call(this, blot, ref);\n if (head instanceof _break2.default) {\n head.remove();\n }\n this.cache = {};\n }\n }, {\n key: 'length',\n value: function length() {\n if (this.cache.length == null) {\n this.cache.length = _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'length', this).call(this) + NEWLINE_LENGTH;\n }\n return this.cache.length;\n }\n }, {\n key: 'moveChildren',\n value: function moveChildren(target, ref) {\n _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'moveChildren', this).call(this, target, ref);\n this.cache = {};\n }\n }, {\n key: 'optimize',\n value: function optimize(context) {\n _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'optimize', this).call(this, context);\n this.cache = {};\n }\n }, {\n key: 'path',\n value: function path(index) {\n return _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'path', this).call(this, index, true);\n }\n }, {\n key: 'removeChild',\n value: function removeChild(child) {\n _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'removeChild', this).call(this, child);\n this.cache = {};\n }\n }, {\n key: 'split',\n value: function split(index) {\n var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (force && (index === 0 || index >= this.length() - NEWLINE_LENGTH)) {\n var clone = this.clone();\n if (index === 0) {\n this.parent.insertBefore(clone, this);\n return this;\n } else {\n this.parent.insertBefore(clone, this.next);\n return clone;\n }\n } else {\n var next = _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'split', this).call(this, index, force);\n this.cache = {};\n return next;\n }\n }\n }]);\n\n return Block;\n}(_parchment2.default.Block);\n\nBlock.blotName = 'block';\nBlock.tagName = 'P';\nBlock.defaultChild = 'break';\nBlock.allowedChildren = [_inline2.default, _parchment2.default.Embed, _text2.default];\n\nfunction bubbleFormats(blot) {\n var formats = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (blot == null) return formats;\n if (typeof blot.formats === 'function') {\n formats = (0, _extend2.default)(formats, blot.formats());\n }\n if (blot.parent == null || blot.parent.blotName == 'scroll' || blot.parent.statics.scope !== blot.statics.scope) {\n return formats;\n }\n return bubbleFormats(blot.parent, formats);\n}\n\nexports.bubbleFormats = bubbleFormats;\nexports.BlockEmbed = BlockEmbed;\nexports.default = Block;\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.overload = exports.expandConfig = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n__webpack_require__(50);\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _editor = __webpack_require__(14);\n\nvar _editor2 = _interopRequireDefault(_editor);\n\nvar _emitter3 = __webpack_require__(8);\n\nvar _emitter4 = _interopRequireDefault(_emitter3);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _selection = __webpack_require__(15);\n\nvar _selection2 = _interopRequireDefault(_selection);\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _theme = __webpack_require__(34);\n\nvar _theme2 = _interopRequireDefault(_theme);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar debug = (0, _logger2.default)('quill');\n\nvar Quill = function () {\n _createClass(Quill, null, [{\n key: 'debug',\n value: function debug(limit) {\n if (limit === true) {\n limit = 'log';\n }\n _logger2.default.level(limit);\n }\n }, {\n key: 'find',\n value: function find(node) {\n return node.__quill || _parchment2.default.find(node);\n }\n }, {\n key: 'import',\n value: function _import(name) {\n if (this.imports[name] == null) {\n debug.error('Cannot import ' + name + '. Are you sure it was registered?');\n }\n return this.imports[name];\n }\n }, {\n key: 'register',\n value: function register(path, target) {\n var _this = this;\n\n var overwrite = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n if (typeof path !== 'string') {\n var name = path.attrName || path.blotName;\n if (typeof name === 'string') {\n // register(Blot | Attributor, overwrite)\n this.register('formats/' + name, path, target);\n } else {\n Object.keys(path).forEach(function (key) {\n _this.register(key, path[key], target);\n });\n }\n } else {\n if (this.imports[path] != null && !overwrite) {\n debug.warn('Overwriting ' + path + ' with', target);\n }\n this.imports[path] = target;\n if ((path.startsWith('blots/') || path.startsWith('formats/')) && target.blotName !== 'abstract') {\n _parchment2.default.register(target);\n } else if (path.startsWith('modules') && typeof target.register === 'function') {\n target.register();\n }\n }\n }\n }]);\n\n function Quill(container) {\n var _this2 = this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Quill);\n\n this.options = expandConfig(container, options);\n this.container = this.options.container;\n if (this.container == null) {\n return debug.error('Invalid Quill container', container);\n }\n if (this.options.debug) {\n Quill.debug(this.options.debug);\n }\n var html = this.container.innerHTML.trim();\n this.container.classList.add('ql-container');\n this.container.innerHTML = '';\n this.container.__quill = this;\n this.root = this.addContainer('ql-editor');\n this.root.classList.add('ql-blank');\n this.root.setAttribute('data-gramm', false);\n this.scrollingContainer = this.options.scrollingContainer || this.root;\n this.emitter = new _emitter4.default();\n this.scroll = _parchment2.default.create(this.root, {\n emitter: this.emitter,\n whitelist: this.options.formats\n });\n this.editor = new _editor2.default(this.scroll);\n this.selection = new _selection2.default(this.scroll, this.emitter);\n this.theme = new this.options.theme(this, this.options);\n this.keyboard = this.theme.addModule('keyboard');\n this.clipboard = this.theme.addModule('clipboard');\n this.history = this.theme.addModule('history');\n this.theme.init();\n this.emitter.on(_emitter4.default.events.EDITOR_CHANGE, function (type) {\n if (type === _emitter4.default.events.TEXT_CHANGE) {\n _this2.root.classList.toggle('ql-blank', _this2.editor.isBlank());\n }\n });\n this.emitter.on(_emitter4.default.events.SCROLL_UPDATE, function (source, mutations) {\n var range = _this2.selection.lastRange;\n var index = range && range.length === 0 ? range.index : undefined;\n modify.call(_this2, function () {\n return _this2.editor.update(null, mutations, index);\n }, source);\n });\n var contents = this.clipboard.convert('
' + html + '


');\n this.setContents(contents);\n this.history.clear();\n if (this.options.placeholder) {\n this.root.setAttribute('data-placeholder', this.options.placeholder);\n }\n if (this.options.readOnly) {\n this.disable();\n }\n }\n\n _createClass(Quill, [{\n key: 'addContainer',\n value: function addContainer(container) {\n var refNode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n if (typeof container === 'string') {\n var className = container;\n container = document.createElement('div');\n container.classList.add(className);\n }\n this.container.insertBefore(container, refNode);\n return container;\n }\n }, {\n key: 'blur',\n value: function blur() {\n this.selection.setRange(null);\n }\n }, {\n key: 'deleteText',\n value: function deleteText(index, length, source) {\n var _this3 = this;\n\n var _overload = overload(index, length, source);\n\n var _overload2 = _slicedToArray(_overload, 4);\n\n index = _overload2[0];\n length = _overload2[1];\n source = _overload2[3];\n\n return modify.call(this, function () {\n return _this3.editor.deleteText(index, length);\n }, source, index, -1 * length);\n }\n }, {\n key: 'disable',\n value: function disable() {\n this.enable(false);\n }\n }, {\n key: 'enable',\n value: function enable() {\n var enabled = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n this.scroll.enable(enabled);\n this.container.classList.toggle('ql-disabled', !enabled);\n }\n }, {\n key: 'focus',\n value: function focus() {\n var scrollTop = this.scrollingContainer.scrollTop;\n this.selection.focus();\n this.scrollingContainer.scrollTop = scrollTop;\n this.scrollIntoView();\n }\n }, {\n key: 'format',\n value: function format(name, value) {\n var _this4 = this;\n\n var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _emitter4.default.sources.API;\n\n return modify.call(this, function () {\n var range = _this4.getSelection(true);\n var change = new _quillDelta2.default();\n if (range == null) {\n return change;\n } else if (_parchment2.default.query(name, _parchment2.default.Scope.BLOCK)) {\n change = _this4.editor.formatLine(range.index, range.length, _defineProperty({}, name, value));\n } else if (range.length === 0) {\n _this4.selection.format(name, value);\n return change;\n } else {\n change = _this4.editor.formatText(range.index, range.length, _defineProperty({}, name, value));\n }\n _this4.setSelection(range, _emitter4.default.sources.SILENT);\n return change;\n }, source);\n }\n }, {\n key: 'formatLine',\n value: function formatLine(index, length, name, value, source) {\n var _this5 = this;\n\n var formats = void 0;\n\n var _overload3 = overload(index, length, name, value, source);\n\n var _overload4 = _slicedToArray(_overload3, 4);\n\n index = _overload4[0];\n length = _overload4[1];\n formats = _overload4[2];\n source = _overload4[3];\n\n return modify.call(this, function () {\n return _this5.editor.formatLine(index, length, formats);\n }, source, index, 0);\n }\n }, {\n key: 'formatText',\n value: function formatText(index, length, name, value, source) {\n var _this6 = this;\n\n var formats = void 0;\n\n var _overload5 = overload(index, length, name, value, source);\n\n var _overload6 = _slicedToArray(_overload5, 4);\n\n index = _overload6[0];\n length = _overload6[1];\n formats = _overload6[2];\n source = _overload6[3];\n\n return modify.call(this, function () {\n return _this6.editor.formatText(index, length, formats);\n }, source, index, 0);\n }\n }, {\n key: 'getBounds',\n value: function getBounds(index) {\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n var bounds = void 0;\n if (typeof index === 'number') {\n bounds = this.selection.getBounds(index, length);\n } else {\n bounds = this.selection.getBounds(index.index, index.length);\n }\n var containerBounds = this.container.getBoundingClientRect();\n return {\n bottom: bounds.bottom - containerBounds.top,\n height: bounds.height,\n left: bounds.left - containerBounds.left,\n right: bounds.right - containerBounds.left,\n top: bounds.top - containerBounds.top,\n width: bounds.width\n };\n }\n }, {\n key: 'getContents',\n value: function getContents() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.getLength() - index;\n\n var _overload7 = overload(index, length);\n\n var _overload8 = _slicedToArray(_overload7, 2);\n\n index = _overload8[0];\n length = _overload8[1];\n\n return this.editor.getContents(index, length);\n }\n }, {\n key: 'getFormat',\n value: function getFormat() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.getSelection(true);\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n if (typeof index === 'number') {\n return this.editor.getFormat(index, length);\n } else {\n return this.editor.getFormat(index.index, index.length);\n }\n }\n }, {\n key: 'getIndex',\n value: function getIndex(blot) {\n return blot.offset(this.scroll);\n }\n }, {\n key: 'getLength',\n value: function getLength() {\n return this.scroll.length();\n }\n }, {\n key: 'getLeaf',\n value: function getLeaf(index) {\n return this.scroll.leaf(index);\n }\n }, {\n key: 'getLine',\n value: function getLine(index) {\n return this.scroll.line(index);\n }\n }, {\n key: 'getLines',\n value: function getLines() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Number.MAX_VALUE;\n\n if (typeof index !== 'number') {\n return this.scroll.lines(index.index, index.length);\n } else {\n return this.scroll.lines(index, length);\n }\n }\n }, {\n key: 'getModule',\n value: function getModule(name) {\n return this.theme.modules[name];\n }\n }, {\n key: 'getSelection',\n value: function getSelection() {\n var focus = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n if (focus) this.focus();\n this.update(); // Make sure we access getRange with editor in consistent state\n return this.selection.getRange()[0];\n }\n }, {\n key: 'getText',\n value: function getText() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.getLength() - index;\n\n var _overload9 = overload(index, length);\n\n var _overload10 = _slicedToArray(_overload9, 2);\n\n index = _overload10[0];\n length = _overload10[1];\n\n return this.editor.getText(index, length);\n }\n }, {\n key: 'hasFocus',\n value: function hasFocus() {\n return this.selection.hasFocus();\n }\n }, {\n key: 'insertEmbed',\n value: function insertEmbed(index, embed, value) {\n var _this7 = this;\n\n var source = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : Quill.sources.API;\n\n return modify.call(this, function () {\n return _this7.editor.insertEmbed(index, embed, value);\n }, source, index);\n }\n }, {\n key: 'insertText',\n value: function insertText(index, text, name, value, source) {\n var _this8 = this;\n\n var formats = void 0;\n\n var _overload11 = overload(index, 0, name, value, source);\n\n var _overload12 = _slicedToArray(_overload11, 4);\n\n index = _overload12[0];\n formats = _overload12[2];\n source = _overload12[3];\n\n return modify.call(this, function () {\n return _this8.editor.insertText(index, text, formats);\n }, source, index, text.length);\n }\n }, {\n key: 'isEnabled',\n value: function isEnabled() {\n return !this.container.classList.contains('ql-disabled');\n }\n }, {\n key: 'off',\n value: function off() {\n return this.emitter.off.apply(this.emitter, arguments);\n }\n }, {\n key: 'on',\n value: function on() {\n return this.emitter.on.apply(this.emitter, arguments);\n }\n }, {\n key: 'once',\n value: function once() {\n return this.emitter.once.apply(this.emitter, arguments);\n }\n }, {\n key: 'pasteHTML',\n value: function pasteHTML(index, html, source) {\n this.clipboard.dangerouslyPasteHTML(index, html, source);\n }\n }, {\n key: 'removeFormat',\n value: function removeFormat(index, length, source) {\n var _this9 = this;\n\n var _overload13 = overload(index, length, source);\n\n var _overload14 = _slicedToArray(_overload13, 4);\n\n index = _overload14[0];\n length = _overload14[1];\n source = _overload14[3];\n\n return modify.call(this, function () {\n return _this9.editor.removeFormat(index, length);\n }, source, index);\n }\n }, {\n key: 'scrollIntoView',\n value: function scrollIntoView() {\n this.selection.scrollIntoView(this.scrollingContainer);\n }\n }, {\n key: 'setContents',\n value: function setContents(delta) {\n var _this10 = this;\n\n var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter4.default.sources.API;\n\n return modify.call(this, function () {\n delta = new _quillDelta2.default(delta);\n var length = _this10.getLength();\n var deleted = _this10.editor.deleteText(0, length);\n var applied = _this10.editor.applyDelta(delta);\n var lastOp = applied.ops[applied.ops.length - 1];\n if (lastOp != null && typeof lastOp.insert === 'string' && lastOp.insert[lastOp.insert.length - 1] === '\\n') {\n _this10.editor.deleteText(_this10.getLength() - 1, 1);\n applied.delete(1);\n }\n var ret = deleted.compose(applied);\n return ret;\n }, source);\n }\n }, {\n key: 'setSelection',\n value: function setSelection(index, length, source) {\n if (index == null) {\n this.selection.setRange(null, length || Quill.sources.API);\n } else {\n var _overload15 = overload(index, length, source);\n\n var _overload16 = _slicedToArray(_overload15, 4);\n\n index = _overload16[0];\n length = _overload16[1];\n source = _overload16[3];\n\n this.selection.setRange(new _selection.Range(index, length), source);\n if (source !== _emitter4.default.sources.SILENT) {\n this.selection.scrollIntoView(this.scrollingContainer);\n }\n }\n }\n }, {\n key: 'setText',\n value: function setText(text) {\n var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter4.default.sources.API;\n\n var delta = new _quillDelta2.default().insert(text);\n return this.setContents(delta, source);\n }\n }, {\n key: 'update',\n value: function update() {\n var source = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _emitter4.default.sources.USER;\n\n var change = this.scroll.update(source); // Will update selection before selection.update() does if text changes\n this.selection.update(source);\n return change;\n }\n }, {\n key: 'updateContents',\n value: function updateContents(delta) {\n var _this11 = this;\n\n var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter4.default.sources.API;\n\n return modify.call(this, function () {\n delta = new _quillDelta2.default(delta);\n return _this11.editor.applyDelta(delta, source);\n }, source, true);\n }\n }]);\n\n return Quill;\n}();\n\nQuill.DEFAULTS = {\n bounds: null,\n formats: null,\n modules: {},\n placeholder: '',\n readOnly: false,\n scrollingContainer: null,\n strict: true,\n theme: 'default'\n};\nQuill.events = _emitter4.default.events;\nQuill.sources = _emitter4.default.sources;\n// eslint-disable-next-line no-undef\nQuill.version = false ? 'dev' : \"1.3.7\";\n\nQuill.imports = {\n 'delta': _quillDelta2.default,\n 'parchment': _parchment2.default,\n 'core/module': _module2.default,\n 'core/theme': _theme2.default\n};\n\nfunction expandConfig(container, userConfig) {\n userConfig = (0, _extend2.default)(true, {\n container: container,\n modules: {\n clipboard: true,\n keyboard: true,\n history: true\n }\n }, userConfig);\n if (!userConfig.theme || userConfig.theme === Quill.DEFAULTS.theme) {\n userConfig.theme = _theme2.default;\n } else {\n userConfig.theme = Quill.import('themes/' + userConfig.theme);\n if (userConfig.theme == null) {\n throw new Error('Invalid theme ' + userConfig.theme + '. Did you register it?');\n }\n }\n var themeConfig = (0, _extend2.default)(true, {}, userConfig.theme.DEFAULTS);\n [themeConfig, userConfig].forEach(function (config) {\n config.modules = config.modules || {};\n Object.keys(config.modules).forEach(function (module) {\n if (config.modules[module] === true) {\n config.modules[module] = {};\n }\n });\n });\n var moduleNames = Object.keys(themeConfig.modules).concat(Object.keys(userConfig.modules));\n var moduleConfig = moduleNames.reduce(function (config, name) {\n var moduleClass = Quill.import('modules/' + name);\n if (moduleClass == null) {\n debug.error('Cannot load ' + name + ' module. Are you sure you registered it?');\n } else {\n config[name] = moduleClass.DEFAULTS || {};\n }\n return config;\n }, {});\n // Special case toolbar shorthand\n if (userConfig.modules != null && userConfig.modules.toolbar && userConfig.modules.toolbar.constructor !== Object) {\n userConfig.modules.toolbar = {\n container: userConfig.modules.toolbar\n };\n }\n userConfig = (0, _extend2.default)(true, {}, Quill.DEFAULTS, { modules: moduleConfig }, themeConfig, userConfig);\n ['bounds', 'container', 'scrollingContainer'].forEach(function (key) {\n if (typeof userConfig[key] === 'string') {\n userConfig[key] = document.querySelector(userConfig[key]);\n }\n });\n userConfig.modules = Object.keys(userConfig.modules).reduce(function (config, name) {\n if (userConfig.modules[name]) {\n config[name] = userConfig.modules[name];\n }\n return config;\n }, {});\n return userConfig;\n}\n\n// Handle selection preservation and TEXT_CHANGE emission\n// common to modification APIs\nfunction modify(modifier, source, index, shift) {\n if (this.options.strict && !this.isEnabled() && source === _emitter4.default.sources.USER) {\n return new _quillDelta2.default();\n }\n var range = index == null ? null : this.getSelection();\n var oldDelta = this.editor.delta;\n var change = modifier();\n if (range != null) {\n if (index === true) index = range.index;\n if (shift == null) {\n range = shiftRange(range, change, source);\n } else if (shift !== 0) {\n range = shiftRange(range, index, shift, source);\n }\n this.setSelection(range, _emitter4.default.sources.SILENT);\n }\n if (change.length() > 0) {\n var _emitter;\n\n var args = [_emitter4.default.events.TEXT_CHANGE, change, oldDelta, source];\n (_emitter = this.emitter).emit.apply(_emitter, [_emitter4.default.events.EDITOR_CHANGE].concat(args));\n if (source !== _emitter4.default.sources.SILENT) {\n var _emitter2;\n\n (_emitter2 = this.emitter).emit.apply(_emitter2, args);\n }\n }\n return change;\n}\n\nfunction overload(index, length, name, value, source) {\n var formats = {};\n if (typeof index.index === 'number' && typeof index.length === 'number') {\n // Allow for throwaway end (used by insertText/insertEmbed)\n if (typeof length !== 'number') {\n source = value, value = name, name = length, length = index.length, index = index.index;\n } else {\n length = index.length, index = index.index;\n }\n } else if (typeof length !== 'number') {\n source = value, value = name, name = length, length = 0;\n }\n // Handle format being object, two format name/value strings or excluded\n if ((typeof name === 'undefined' ? 'undefined' : _typeof(name)) === 'object') {\n formats = name;\n source = value;\n } else if (typeof name === 'string') {\n if (value != null) {\n formats[name] = value;\n } else {\n source = name;\n }\n }\n // Handle optional source\n source = source || _emitter4.default.sources.API;\n return [index, length, formats, source];\n}\n\nfunction shiftRange(range, index, length, source) {\n if (range == null) return null;\n var start = void 0,\n end = void 0;\n if (index instanceof _quillDelta2.default) {\n var _map = [range.index, range.index + range.length].map(function (pos) {\n return index.transformPosition(pos, source !== _emitter4.default.sources.USER);\n });\n\n var _map2 = _slicedToArray(_map, 2);\n\n start = _map2[0];\n end = _map2[1];\n } else {\n var _map3 = [range.index, range.index + range.length].map(function (pos) {\n if (pos < index || pos === index && source === _emitter4.default.sources.USER) return pos;\n if (length >= 0) {\n return pos + length;\n } else {\n return Math.max(index, pos + length);\n }\n });\n\n var _map4 = _slicedToArray(_map3, 2);\n\n start = _map4[0];\n end = _map4[1];\n }\n return new _selection.Range(start, end - start);\n}\n\nexports.expandConfig = expandConfig;\nexports.overload = overload;\nexports.default = Quill;\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _text = __webpack_require__(7);\n\nvar _text2 = _interopRequireDefault(_text);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Inline = function (_Parchment$Inline) {\n _inherits(Inline, _Parchment$Inline);\n\n function Inline() {\n _classCallCheck(this, Inline);\n\n return _possibleConstructorReturn(this, (Inline.__proto__ || Object.getPrototypeOf(Inline)).apply(this, arguments));\n }\n\n _createClass(Inline, [{\n key: 'formatAt',\n value: function formatAt(index, length, name, value) {\n if (Inline.compare(this.statics.blotName, name) < 0 && _parchment2.default.query(name, _parchment2.default.Scope.BLOT)) {\n var blot = this.isolate(index, length);\n if (value) {\n blot.wrap(name, value);\n }\n } else {\n _get(Inline.prototype.__proto__ || Object.getPrototypeOf(Inline.prototype), 'formatAt', this).call(this, index, length, name, value);\n }\n }\n }, {\n key: 'optimize',\n value: function optimize(context) {\n _get(Inline.prototype.__proto__ || Object.getPrototypeOf(Inline.prototype), 'optimize', this).call(this, context);\n if (this.parent instanceof Inline && Inline.compare(this.statics.blotName, this.parent.statics.blotName) > 0) {\n var parent = this.parent.isolate(this.offset(), this.length());\n this.moveChildren(parent);\n parent.wrap(this);\n }\n }\n }], [{\n key: 'compare',\n value: function compare(self, other) {\n var selfIndex = Inline.order.indexOf(self);\n var otherIndex = Inline.order.indexOf(other);\n if (selfIndex >= 0 || otherIndex >= 0) {\n return selfIndex - otherIndex;\n } else if (self === other) {\n return 0;\n } else if (self < other) {\n return -1;\n } else {\n return 1;\n }\n }\n }]);\n\n return Inline;\n}(_parchment2.default.Inline);\n\nInline.allowedChildren = [Inline, _parchment2.default.Embed, _text2.default];\n// Lower index means deeper in the DOM tree, since not found (-1) is for embeds\nInline.order = ['cursor', 'inline', // Must be lower\n'underline', 'strike', 'italic', 'bold', 'script', 'link', 'code' // Must be higher\n];\n\nexports.default = Inline;\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar TextBlot = function (_Parchment$Text) {\n _inherits(TextBlot, _Parchment$Text);\n\n function TextBlot() {\n _classCallCheck(this, TextBlot);\n\n return _possibleConstructorReturn(this, (TextBlot.__proto__ || Object.getPrototypeOf(TextBlot)).apply(this, arguments));\n }\n\n return TextBlot;\n}(_parchment2.default.Text);\n\nexports.default = TextBlot;\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _eventemitter = __webpack_require__(54);\n\nvar _eventemitter2 = _interopRequireDefault(_eventemitter);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar debug = (0, _logger2.default)('quill:events');\n\nvar EVENTS = ['selectionchange', 'mousedown', 'mouseup', 'click'];\n\nEVENTS.forEach(function (eventName) {\n document.addEventListener(eventName, function () {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n [].slice.call(document.querySelectorAll('.ql-container')).forEach(function (node) {\n // TODO use WeakMap\n if (node.__quill && node.__quill.emitter) {\n var _node$__quill$emitter;\n\n (_node$__quill$emitter = node.__quill.emitter).handleDOM.apply(_node$__quill$emitter, args);\n }\n });\n });\n});\n\nvar Emitter = function (_EventEmitter) {\n _inherits(Emitter, _EventEmitter);\n\n function Emitter() {\n _classCallCheck(this, Emitter);\n\n var _this = _possibleConstructorReturn(this, (Emitter.__proto__ || Object.getPrototypeOf(Emitter)).call(this));\n\n _this.listeners = {};\n _this.on('error', debug.error);\n return _this;\n }\n\n _createClass(Emitter, [{\n key: 'emit',\n value: function emit() {\n debug.log.apply(debug, arguments);\n _get(Emitter.prototype.__proto__ || Object.getPrototypeOf(Emitter.prototype), 'emit', this).apply(this, arguments);\n }\n }, {\n key: 'handleDOM',\n value: function handleDOM(event) {\n for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n (this.listeners[event.type] || []).forEach(function (_ref) {\n var node = _ref.node,\n handler = _ref.handler;\n\n if (event.target === node || node.contains(event.target)) {\n handler.apply(undefined, [event].concat(args));\n }\n });\n }\n }, {\n key: 'listenDOM',\n value: function listenDOM(eventName, node, handler) {\n if (!this.listeners[eventName]) {\n this.listeners[eventName] = [];\n }\n this.listeners[eventName].push({ node: node, handler: handler });\n }\n }]);\n\n return Emitter;\n}(_eventemitter2.default);\n\nEmitter.events = {\n EDITOR_CHANGE: 'editor-change',\n SCROLL_BEFORE_UPDATE: 'scroll-before-update',\n SCROLL_OPTIMIZE: 'scroll-optimize',\n SCROLL_UPDATE: 'scroll-update',\n SELECTION_CHANGE: 'selection-change',\n TEXT_CHANGE: 'text-change'\n};\nEmitter.sources = {\n API: 'api',\n SILENT: 'silent',\n USER: 'user'\n};\n\nexports.default = Emitter;\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Module = function Module(quill) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Module);\n\n this.quill = quill;\n this.options = options;\n};\n\nModule.DEFAULTS = {};\n\nexports.default = Module;\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar levels = ['error', 'warn', 'log', 'info'];\nvar level = 'warn';\n\nfunction debug(method) {\n if (levels.indexOf(method) <= levels.indexOf(level)) {\n var _console;\n\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n (_console = console)[method].apply(_console, args); // eslint-disable-line no-console\n }\n}\n\nfunction namespace(ns) {\n return levels.reduce(function (logger, method) {\n logger[method] = debug.bind(console, method, ns);\n return logger;\n }, {});\n}\n\ndebug.level = namespace.level = function (newLevel) {\n level = newLevel;\n};\n\nexports.default = namespace;\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar pSlice = Array.prototype.slice;\nvar objectKeys = __webpack_require__(52);\nvar isArguments = __webpack_require__(53);\n\nvar deepEqual = module.exports = function (actual, expected, opts) {\n if (!opts) opts = {};\n // 7.1. All identical values are equivalent, as determined by ===.\n if (actual === expected) {\n return true;\n\n } else if (actual instanceof Date && expected instanceof Date) {\n return actual.getTime() === expected.getTime();\n\n // 7.3. Other pairs that do not both pass typeof value == 'object',\n // equivalence is determined by ==.\n } else if (!actual || !expected || typeof actual != 'object' && typeof expected != 'object') {\n return opts.strict ? actual === expected : actual == expected;\n\n // 7.4. For all other Object pairs, including Array objects, equivalence is\n // determined by having the same number of owned properties (as verified\n // with Object.prototype.hasOwnProperty.call), the same set of keys\n // (although not necessarily the same order), equivalent values for every\n // corresponding key, and an identical 'prototype' property. Note: this\n // accounts for both named and indexed properties on Arrays.\n } else {\n return objEquiv(actual, expected, opts);\n }\n}\n\nfunction isUndefinedOrNull(value) {\n return value === null || value === undefined;\n}\n\nfunction isBuffer (x) {\n if (!x || typeof x !== 'object' || typeof x.length !== 'number') return false;\n if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\n return false;\n }\n if (x.length > 0 && typeof x[0] !== 'number') return false;\n return true;\n}\n\nfunction objEquiv(a, b, opts) {\n var i, key;\n if (isUndefinedOrNull(a) || isUndefinedOrNull(b))\n return false;\n // an identical 'prototype' property.\n if (a.prototype !== b.prototype) return false;\n //~~~I've managed to break Object.keys through screwy arguments passing.\n // Converting to array solves the problem.\n if (isArguments(a)) {\n if (!isArguments(b)) {\n return false;\n }\n a = pSlice.call(a);\n b = pSlice.call(b);\n return deepEqual(a, b, opts);\n }\n if (isBuffer(a)) {\n if (!isBuffer(b)) {\n return false;\n }\n if (a.length !== b.length) return false;\n for (i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) return false;\n }\n return true;\n }\n try {\n var ka = objectKeys(a),\n kb = objectKeys(b);\n } catch (e) {//happens when one is a string literal and the other isn't\n return false;\n }\n // having the same number of owned properties (keys incorporates\n // hasOwnProperty)\n if (ka.length != kb.length)\n return false;\n //the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n //~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] != kb[i])\n return false;\n }\n //equivalent values for every corresponding key, and\n //~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!deepEqual(a[key], b[key], opts)) return false;\n }\n return typeof a === typeof b;\n}\n\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Registry = __webpack_require__(1);\nvar Attributor = /** @class */ (function () {\n function Attributor(attrName, keyName, options) {\n if (options === void 0) { options = {}; }\n this.attrName = attrName;\n this.keyName = keyName;\n var attributeBit = Registry.Scope.TYPE & Registry.Scope.ATTRIBUTE;\n if (options.scope != null) {\n // Ignore type bits, force attribute bit\n this.scope = (options.scope & Registry.Scope.LEVEL) | attributeBit;\n }\n else {\n this.scope = Registry.Scope.ATTRIBUTE;\n }\n if (options.whitelist != null)\n this.whitelist = options.whitelist;\n }\n Attributor.keys = function (node) {\n return [].map.call(node.attributes, function (item) {\n return item.name;\n });\n };\n Attributor.prototype.add = function (node, value) {\n if (!this.canAdd(node, value))\n return false;\n node.setAttribute(this.keyName, value);\n return true;\n };\n Attributor.prototype.canAdd = function (node, value) {\n var match = Registry.query(node, Registry.Scope.BLOT & (this.scope | Registry.Scope.TYPE));\n if (match == null)\n return false;\n if (this.whitelist == null)\n return true;\n if (typeof value === 'string') {\n return this.whitelist.indexOf(value.replace(/[\"']/g, '')) > -1;\n }\n else {\n return this.whitelist.indexOf(value) > -1;\n }\n };\n Attributor.prototype.remove = function (node) {\n node.removeAttribute(this.keyName);\n };\n Attributor.prototype.value = function (node) {\n var value = node.getAttribute(this.keyName);\n if (this.canAdd(node, value) && value) {\n return value;\n }\n return '';\n };\n return Attributor;\n}());\nexports.default = Attributor;\n\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.Code = undefined;\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nvar _text = __webpack_require__(7);\n\nvar _text2 = _interopRequireDefault(_text);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Code = function (_Inline) {\n _inherits(Code, _Inline);\n\n function Code() {\n _classCallCheck(this, Code);\n\n return _possibleConstructorReturn(this, (Code.__proto__ || Object.getPrototypeOf(Code)).apply(this, arguments));\n }\n\n return Code;\n}(_inline2.default);\n\nCode.blotName = 'code';\nCode.tagName = 'CODE';\n\nvar CodeBlock = function (_Block) {\n _inherits(CodeBlock, _Block);\n\n function CodeBlock() {\n _classCallCheck(this, CodeBlock);\n\n return _possibleConstructorReturn(this, (CodeBlock.__proto__ || Object.getPrototypeOf(CodeBlock)).apply(this, arguments));\n }\n\n _createClass(CodeBlock, [{\n key: 'delta',\n value: function delta() {\n var _this3 = this;\n\n var text = this.domNode.textContent;\n if (text.endsWith('\\n')) {\n // Should always be true\n text = text.slice(0, -1);\n }\n return text.split('\\n').reduce(function (delta, frag) {\n return delta.insert(frag).insert('\\n', _this3.formats());\n }, new _quillDelta2.default());\n }\n }, {\n key: 'format',\n value: function format(name, value) {\n if (name === this.statics.blotName && value) return;\n\n var _descendant = this.descendant(_text2.default, this.length() - 1),\n _descendant2 = _slicedToArray(_descendant, 1),\n text = _descendant2[0];\n\n if (text != null) {\n text.deleteAt(text.length() - 1, 1);\n }\n _get(CodeBlock.prototype.__proto__ || Object.getPrototypeOf(CodeBlock.prototype), 'format', this).call(this, name, value);\n }\n }, {\n key: 'formatAt',\n value: function formatAt(index, length, name, value) {\n if (length === 0) return;\n if (_parchment2.default.query(name, _parchment2.default.Scope.BLOCK) == null || name === this.statics.blotName && value === this.statics.formats(this.domNode)) {\n return;\n }\n var nextNewline = this.newlineIndex(index);\n if (nextNewline < 0 || nextNewline >= index + length) return;\n var prevNewline = this.newlineIndex(index, true) + 1;\n var isolateLength = nextNewline - prevNewline + 1;\n var blot = this.isolate(prevNewline, isolateLength);\n var next = blot.next;\n blot.format(name, value);\n if (next instanceof CodeBlock) {\n next.formatAt(0, index - prevNewline + length - isolateLength, name, value);\n }\n }\n }, {\n key: 'insertAt',\n value: function insertAt(index, value, def) {\n if (def != null) return;\n\n var _descendant3 = this.descendant(_text2.default, index),\n _descendant4 = _slicedToArray(_descendant3, 2),\n text = _descendant4[0],\n offset = _descendant4[1];\n\n text.insertAt(offset, value);\n }\n }, {\n key: 'length',\n value: function length() {\n var length = this.domNode.textContent.length;\n if (!this.domNode.textContent.endsWith('\\n')) {\n return length + 1;\n }\n return length;\n }\n }, {\n key: 'newlineIndex',\n value: function newlineIndex(searchIndex) {\n var reverse = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (!reverse) {\n var offset = this.domNode.textContent.slice(searchIndex).indexOf('\\n');\n return offset > -1 ? searchIndex + offset : -1;\n } else {\n return this.domNode.textContent.slice(0, searchIndex).lastIndexOf('\\n');\n }\n }\n }, {\n key: 'optimize',\n value: function optimize(context) {\n if (!this.domNode.textContent.endsWith('\\n')) {\n this.appendChild(_parchment2.default.create('text', '\\n'));\n }\n _get(CodeBlock.prototype.__proto__ || Object.getPrototypeOf(CodeBlock.prototype), 'optimize', this).call(this, context);\n var next = this.next;\n if (next != null && next.prev === this && next.statics.blotName === this.statics.blotName && this.statics.formats(this.domNode) === next.statics.formats(next.domNode)) {\n next.optimize(context);\n next.moveChildren(this);\n next.remove();\n }\n }\n }, {\n key: 'replace',\n value: function replace(target) {\n _get(CodeBlock.prototype.__proto__ || Object.getPrototypeOf(CodeBlock.prototype), 'replace', this).call(this, target);\n [].slice.call(this.domNode.querySelectorAll('*')).forEach(function (node) {\n var blot = _parchment2.default.find(node);\n if (blot == null) {\n node.parentNode.removeChild(node);\n } else if (blot instanceof _parchment2.default.Embed) {\n blot.remove();\n } else {\n blot.unwrap();\n }\n });\n }\n }], [{\n key: 'create',\n value: function create(value) {\n var domNode = _get(CodeBlock.__proto__ || Object.getPrototypeOf(CodeBlock), 'create', this).call(this, value);\n domNode.setAttribute('spellcheck', false);\n return domNode;\n }\n }, {\n key: 'formats',\n value: function formats() {\n return true;\n }\n }]);\n\n return CodeBlock;\n}(_block2.default);\n\nCodeBlock.blotName = 'code-block';\nCodeBlock.tagName = 'PRE';\nCodeBlock.TAB = ' ';\n\nexports.Code = Code;\nexports.default = CodeBlock;\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _op = __webpack_require__(20);\n\nvar _op2 = _interopRequireDefault(_op);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _code = __webpack_require__(13);\n\nvar _code2 = _interopRequireDefault(_code);\n\nvar _cursor = __webpack_require__(24);\n\nvar _cursor2 = _interopRequireDefault(_cursor);\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _break = __webpack_require__(16);\n\nvar _break2 = _interopRequireDefault(_break);\n\nvar _clone = __webpack_require__(21);\n\nvar _clone2 = _interopRequireDefault(_clone);\n\nvar _deepEqual = __webpack_require__(11);\n\nvar _deepEqual2 = _interopRequireDefault(_deepEqual);\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar ASCII = /^[ -~]*$/;\n\nvar Editor = function () {\n function Editor(scroll) {\n _classCallCheck(this, Editor);\n\n this.scroll = scroll;\n this.delta = this.getDelta();\n }\n\n _createClass(Editor, [{\n key: 'applyDelta',\n value: function applyDelta(delta) {\n var _this = this;\n\n var consumeNextNewline = false;\n this.scroll.update();\n var scrollLength = this.scroll.length();\n this.scroll.batchStart();\n delta = normalizeDelta(delta);\n delta.reduce(function (index, op) {\n var length = op.retain || op.delete || op.insert.length || 1;\n var attributes = op.attributes || {};\n if (op.insert != null) {\n if (typeof op.insert === 'string') {\n var text = op.insert;\n if (text.endsWith('\\n') && consumeNextNewline) {\n consumeNextNewline = false;\n text = text.slice(0, -1);\n }\n if (index >= scrollLength && !text.endsWith('\\n')) {\n consumeNextNewline = true;\n }\n _this.scroll.insertAt(index, text);\n\n var _scroll$line = _this.scroll.line(index),\n _scroll$line2 = _slicedToArray(_scroll$line, 2),\n line = _scroll$line2[0],\n offset = _scroll$line2[1];\n\n var formats = (0, _extend2.default)({}, (0, _block.bubbleFormats)(line));\n if (line instanceof _block2.default) {\n var _line$descendant = line.descendant(_parchment2.default.Leaf, offset),\n _line$descendant2 = _slicedToArray(_line$descendant, 1),\n leaf = _line$descendant2[0];\n\n formats = (0, _extend2.default)(formats, (0, _block.bubbleFormats)(leaf));\n }\n attributes = _op2.default.attributes.diff(formats, attributes) || {};\n } else if (_typeof(op.insert) === 'object') {\n var key = Object.keys(op.insert)[0]; // There should only be one key\n if (key == null) return index;\n _this.scroll.insertAt(index, key, op.insert[key]);\n }\n scrollLength += length;\n }\n Object.keys(attributes).forEach(function (name) {\n _this.scroll.formatAt(index, length, name, attributes[name]);\n });\n return index + length;\n }, 0);\n delta.reduce(function (index, op) {\n if (typeof op.delete === 'number') {\n _this.scroll.deleteAt(index, op.delete);\n return index;\n }\n return index + (op.retain || op.insert.length || 1);\n }, 0);\n this.scroll.batchEnd();\n return this.update(delta);\n }\n }, {\n key: 'deleteText',\n value: function deleteText(index, length) {\n this.scroll.deleteAt(index, length);\n return this.update(new _quillDelta2.default().retain(index).delete(length));\n }\n }, {\n key: 'formatLine',\n value: function formatLine(index, length) {\n var _this2 = this;\n\n var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n this.scroll.update();\n Object.keys(formats).forEach(function (format) {\n if (_this2.scroll.whitelist != null && !_this2.scroll.whitelist[format]) return;\n var lines = _this2.scroll.lines(index, Math.max(length, 1));\n var lengthRemaining = length;\n lines.forEach(function (line) {\n var lineLength = line.length();\n if (!(line instanceof _code2.default)) {\n line.format(format, formats[format]);\n } else {\n var codeIndex = index - line.offset(_this2.scroll);\n var codeLength = line.newlineIndex(codeIndex + lengthRemaining) - codeIndex + 1;\n line.formatAt(codeIndex, codeLength, format, formats[format]);\n }\n lengthRemaining -= lineLength;\n });\n });\n this.scroll.optimize();\n return this.update(new _quillDelta2.default().retain(index).retain(length, (0, _clone2.default)(formats)));\n }\n }, {\n key: 'formatText',\n value: function formatText(index, length) {\n var _this3 = this;\n\n var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n Object.keys(formats).forEach(function (format) {\n _this3.scroll.formatAt(index, length, format, formats[format]);\n });\n return this.update(new _quillDelta2.default().retain(index).retain(length, (0, _clone2.default)(formats)));\n }\n }, {\n key: 'getContents',\n value: function getContents(index, length) {\n return this.delta.slice(index, index + length);\n }\n }, {\n key: 'getDelta',\n value: function getDelta() {\n return this.scroll.lines().reduce(function (delta, line) {\n return delta.concat(line.delta());\n }, new _quillDelta2.default());\n }\n }, {\n key: 'getFormat',\n value: function getFormat(index) {\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n var lines = [],\n leaves = [];\n if (length === 0) {\n this.scroll.path(index).forEach(function (path) {\n var _path = _slicedToArray(path, 1),\n blot = _path[0];\n\n if (blot instanceof _block2.default) {\n lines.push(blot);\n } else if (blot instanceof _parchment2.default.Leaf) {\n leaves.push(blot);\n }\n });\n } else {\n lines = this.scroll.lines(index, length);\n leaves = this.scroll.descendants(_parchment2.default.Leaf, index, length);\n }\n var formatsArr = [lines, leaves].map(function (blots) {\n if (blots.length === 0) return {};\n var formats = (0, _block.bubbleFormats)(blots.shift());\n while (Object.keys(formats).length > 0) {\n var blot = blots.shift();\n if (blot == null) return formats;\n formats = combineFormats((0, _block.bubbleFormats)(blot), formats);\n }\n return formats;\n });\n return _extend2.default.apply(_extend2.default, formatsArr);\n }\n }, {\n key: 'getText',\n value: function getText(index, length) {\n return this.getContents(index, length).filter(function (op) {\n return typeof op.insert === 'string';\n }).map(function (op) {\n return op.insert;\n }).join('');\n }\n }, {\n key: 'insertEmbed',\n value: function insertEmbed(index, embed, value) {\n this.scroll.insertAt(index, embed, value);\n return this.update(new _quillDelta2.default().retain(index).insert(_defineProperty({}, embed, value)));\n }\n }, {\n key: 'insertText',\n value: function insertText(index, text) {\n var _this4 = this;\n\n var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n text = text.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n this.scroll.insertAt(index, text);\n Object.keys(formats).forEach(function (format) {\n _this4.scroll.formatAt(index, text.length, format, formats[format]);\n });\n return this.update(new _quillDelta2.default().retain(index).insert(text, (0, _clone2.default)(formats)));\n }\n }, {\n key: 'isBlank',\n value: function isBlank() {\n if (this.scroll.children.length == 0) return true;\n if (this.scroll.children.length > 1) return false;\n var block = this.scroll.children.head;\n if (block.statics.blotName !== _block2.default.blotName) return false;\n if (block.children.length > 1) return false;\n return block.children.head instanceof _break2.default;\n }\n }, {\n key: 'removeFormat',\n value: function removeFormat(index, length) {\n var text = this.getText(index, length);\n\n var _scroll$line3 = this.scroll.line(index + length),\n _scroll$line4 = _slicedToArray(_scroll$line3, 2),\n line = _scroll$line4[0],\n offset = _scroll$line4[1];\n\n var suffixLength = 0,\n suffix = new _quillDelta2.default();\n if (line != null) {\n if (!(line instanceof _code2.default)) {\n suffixLength = line.length() - offset;\n } else {\n suffixLength = line.newlineIndex(offset) - offset + 1;\n }\n suffix = line.delta().slice(offset, offset + suffixLength - 1).insert('\\n');\n }\n var contents = this.getContents(index, length + suffixLength);\n var diff = contents.diff(new _quillDelta2.default().insert(text).concat(suffix));\n var delta = new _quillDelta2.default().retain(index).concat(diff);\n return this.applyDelta(delta);\n }\n }, {\n key: 'update',\n value: function update(change) {\n var mutations = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var cursorIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;\n\n var oldDelta = this.delta;\n if (mutations.length === 1 && mutations[0].type === 'characterData' && mutations[0].target.data.match(ASCII) && _parchment2.default.find(mutations[0].target)) {\n // Optimization for character changes\n var textBlot = _parchment2.default.find(mutations[0].target);\n var formats = (0, _block.bubbleFormats)(textBlot);\n var index = textBlot.offset(this.scroll);\n var oldValue = mutations[0].oldValue.replace(_cursor2.default.CONTENTS, '');\n var oldText = new _quillDelta2.default().insert(oldValue);\n var newText = new _quillDelta2.default().insert(textBlot.value());\n var diffDelta = new _quillDelta2.default().retain(index).concat(oldText.diff(newText, cursorIndex));\n change = diffDelta.reduce(function (delta, op) {\n if (op.insert) {\n return delta.insert(op.insert, formats);\n } else {\n return delta.push(op);\n }\n }, new _quillDelta2.default());\n this.delta = oldDelta.compose(change);\n } else {\n this.delta = this.getDelta();\n if (!change || !(0, _deepEqual2.default)(oldDelta.compose(change), this.delta)) {\n change = oldDelta.diff(this.delta, cursorIndex);\n }\n }\n return change;\n }\n }]);\n\n return Editor;\n}();\n\nfunction combineFormats(formats, combined) {\n return Object.keys(combined).reduce(function (merged, name) {\n if (formats[name] == null) return merged;\n if (combined[name] === formats[name]) {\n merged[name] = combined[name];\n } else if (Array.isArray(combined[name])) {\n if (combined[name].indexOf(formats[name]) < 0) {\n merged[name] = combined[name].concat([formats[name]]);\n }\n } else {\n merged[name] = [combined[name], formats[name]];\n }\n return merged;\n }, {});\n}\n\nfunction normalizeDelta(delta) {\n return delta.reduce(function (delta, op) {\n if (op.insert === 1) {\n var attributes = (0, _clone2.default)(op.attributes);\n delete attributes['image'];\n return delta.insert({ image: op.attributes.image }, attributes);\n }\n if (op.attributes != null && (op.attributes.list === true || op.attributes.bullet === true)) {\n op = (0, _clone2.default)(op);\n if (op.attributes.list) {\n op.attributes.list = 'ordered';\n } else {\n op.attributes.list = 'bullet';\n delete op.attributes.bullet;\n }\n }\n if (typeof op.insert === 'string') {\n var text = op.insert.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n return delta.insert(text, op.attributes);\n }\n return delta.push(op);\n }, new _quillDelta2.default());\n}\n\nexports.default = Editor;\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.Range = undefined;\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _clone = __webpack_require__(21);\n\nvar _clone2 = _interopRequireDefault(_clone);\n\nvar _deepEqual = __webpack_require__(11);\n\nvar _deepEqual2 = _interopRequireDefault(_deepEqual);\n\nvar _emitter3 = __webpack_require__(8);\n\nvar _emitter4 = _interopRequireDefault(_emitter3);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar debug = (0, _logger2.default)('quill:selection');\n\nvar Range = function Range(index) {\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n _classCallCheck(this, Range);\n\n this.index = index;\n this.length = length;\n};\n\nvar Selection = function () {\n function Selection(scroll, emitter) {\n var _this = this;\n\n _classCallCheck(this, Selection);\n\n this.emitter = emitter;\n this.scroll = scroll;\n this.composing = false;\n this.mouseDown = false;\n this.root = this.scroll.domNode;\n this.cursor = _parchment2.default.create('cursor', this);\n // savedRange is last non-null range\n this.lastRange = this.savedRange = new Range(0, 0);\n this.handleComposition();\n this.handleDragging();\n this.emitter.listenDOM('selectionchange', document, function () {\n if (!_this.mouseDown) {\n setTimeout(_this.update.bind(_this, _emitter4.default.sources.USER), 1);\n }\n });\n this.emitter.on(_emitter4.default.events.EDITOR_CHANGE, function (type, delta) {\n if (type === _emitter4.default.events.TEXT_CHANGE && delta.length() > 0) {\n _this.update(_emitter4.default.sources.SILENT);\n }\n });\n this.emitter.on(_emitter4.default.events.SCROLL_BEFORE_UPDATE, function () {\n if (!_this.hasFocus()) return;\n var native = _this.getNativeRange();\n if (native == null) return;\n if (native.start.node === _this.cursor.textNode) return; // cursor.restore() will handle\n // TODO unclear if this has negative side effects\n _this.emitter.once(_emitter4.default.events.SCROLL_UPDATE, function () {\n try {\n _this.setNativeRange(native.start.node, native.start.offset, native.end.node, native.end.offset);\n } catch (ignored) {}\n });\n });\n this.emitter.on(_emitter4.default.events.SCROLL_OPTIMIZE, function (mutations, context) {\n if (context.range) {\n var _context$range = context.range,\n startNode = _context$range.startNode,\n startOffset = _context$range.startOffset,\n endNode = _context$range.endNode,\n endOffset = _context$range.endOffset;\n\n _this.setNativeRange(startNode, startOffset, endNode, endOffset);\n }\n });\n this.update(_emitter4.default.sources.SILENT);\n }\n\n _createClass(Selection, [{\n key: 'handleComposition',\n value: function handleComposition() {\n var _this2 = this;\n\n this.root.addEventListener('compositionstart', function () {\n _this2.composing = true;\n });\n this.root.addEventListener('compositionend', function () {\n _this2.composing = false;\n if (_this2.cursor.parent) {\n var range = _this2.cursor.restore();\n if (!range) return;\n setTimeout(function () {\n _this2.setNativeRange(range.startNode, range.startOffset, range.endNode, range.endOffset);\n }, 1);\n }\n });\n }\n }, {\n key: 'handleDragging',\n value: function handleDragging() {\n var _this3 = this;\n\n this.emitter.listenDOM('mousedown', document.body, function () {\n _this3.mouseDown = true;\n });\n this.emitter.listenDOM('mouseup', document.body, function () {\n _this3.mouseDown = false;\n _this3.update(_emitter4.default.sources.USER);\n });\n }\n }, {\n key: 'focus',\n value: function focus() {\n if (this.hasFocus()) return;\n this.root.focus();\n this.setRange(this.savedRange);\n }\n }, {\n key: 'format',\n value: function format(_format, value) {\n if (this.scroll.whitelist != null && !this.scroll.whitelist[_format]) return;\n this.scroll.update();\n var nativeRange = this.getNativeRange();\n if (nativeRange == null || !nativeRange.native.collapsed || _parchment2.default.query(_format, _parchment2.default.Scope.BLOCK)) return;\n if (nativeRange.start.node !== this.cursor.textNode) {\n var blot = _parchment2.default.find(nativeRange.start.node, false);\n if (blot == null) return;\n // TODO Give blot ability to not split\n if (blot instanceof _parchment2.default.Leaf) {\n var after = blot.split(nativeRange.start.offset);\n blot.parent.insertBefore(this.cursor, after);\n } else {\n blot.insertBefore(this.cursor, nativeRange.start.node); // Should never happen\n }\n this.cursor.attach();\n }\n this.cursor.format(_format, value);\n this.scroll.optimize();\n this.setNativeRange(this.cursor.textNode, this.cursor.textNode.data.length);\n this.update();\n }\n }, {\n key: 'getBounds',\n value: function getBounds(index) {\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n var scrollLength = this.scroll.length();\n index = Math.min(index, scrollLength - 1);\n length = Math.min(index + length, scrollLength - 1) - index;\n var node = void 0,\n _scroll$leaf = this.scroll.leaf(index),\n _scroll$leaf2 = _slicedToArray(_scroll$leaf, 2),\n leaf = _scroll$leaf2[0],\n offset = _scroll$leaf2[1];\n if (leaf == null) return null;\n\n var _leaf$position = leaf.position(offset, true);\n\n var _leaf$position2 = _slicedToArray(_leaf$position, 2);\n\n node = _leaf$position2[0];\n offset = _leaf$position2[1];\n\n var range = document.createRange();\n if (length > 0) {\n range.setStart(node, offset);\n\n var _scroll$leaf3 = this.scroll.leaf(index + length);\n\n var _scroll$leaf4 = _slicedToArray(_scroll$leaf3, 2);\n\n leaf = _scroll$leaf4[0];\n offset = _scroll$leaf4[1];\n\n if (leaf == null) return null;\n\n var _leaf$position3 = leaf.position(offset, true);\n\n var _leaf$position4 = _slicedToArray(_leaf$position3, 2);\n\n node = _leaf$position4[0];\n offset = _leaf$position4[1];\n\n range.setEnd(node, offset);\n return range.getBoundingClientRect();\n } else {\n var side = 'left';\n var rect = void 0;\n if (node instanceof Text) {\n if (offset < node.data.length) {\n range.setStart(node, offset);\n range.setEnd(node, offset + 1);\n } else {\n range.setStart(node, offset - 1);\n range.setEnd(node, offset);\n side = 'right';\n }\n rect = range.getBoundingClientRect();\n } else {\n rect = leaf.domNode.getBoundingClientRect();\n if (offset > 0) side = 'right';\n }\n return {\n bottom: rect.top + rect.height,\n height: rect.height,\n left: rect[side],\n right: rect[side],\n top: rect.top,\n width: 0\n };\n }\n }\n }, {\n key: 'getNativeRange',\n value: function getNativeRange() {\n var selection = document.getSelection();\n if (selection == null || selection.rangeCount <= 0) return null;\n var nativeRange = selection.getRangeAt(0);\n if (nativeRange == null) return null;\n var range = this.normalizeNative(nativeRange);\n debug.info('getNativeRange', range);\n return range;\n }\n }, {\n key: 'getRange',\n value: function getRange() {\n var normalized = this.getNativeRange();\n if (normalized == null) return [null, null];\n var range = this.normalizedToRange(normalized);\n return [range, normalized];\n }\n }, {\n key: 'hasFocus',\n value: function hasFocus() {\n return document.activeElement === this.root;\n }\n }, {\n key: 'normalizedToRange',\n value: function normalizedToRange(range) {\n var _this4 = this;\n\n var positions = [[range.start.node, range.start.offset]];\n if (!range.native.collapsed) {\n positions.push([range.end.node, range.end.offset]);\n }\n var indexes = positions.map(function (position) {\n var _position = _slicedToArray(position, 2),\n node = _position[0],\n offset = _position[1];\n\n var blot = _parchment2.default.find(node, true);\n var index = blot.offset(_this4.scroll);\n if (offset === 0) {\n return index;\n } else if (blot instanceof _parchment2.default.Container) {\n return index + blot.length();\n } else {\n return index + blot.index(node, offset);\n }\n });\n var end = Math.min(Math.max.apply(Math, _toConsumableArray(indexes)), this.scroll.length() - 1);\n var start = Math.min.apply(Math, [end].concat(_toConsumableArray(indexes)));\n return new Range(start, end - start);\n }\n }, {\n key: 'normalizeNative',\n value: function normalizeNative(nativeRange) {\n if (!contains(this.root, nativeRange.startContainer) || !nativeRange.collapsed && !contains(this.root, nativeRange.endContainer)) {\n return null;\n }\n var range = {\n start: { node: nativeRange.startContainer, offset: nativeRange.startOffset },\n end: { node: nativeRange.endContainer, offset: nativeRange.endOffset },\n native: nativeRange\n };\n [range.start, range.end].forEach(function (position) {\n var node = position.node,\n offset = position.offset;\n while (!(node instanceof Text) && node.childNodes.length > 0) {\n if (node.childNodes.length > offset) {\n node = node.childNodes[offset];\n offset = 0;\n } else if (node.childNodes.length === offset) {\n node = node.lastChild;\n offset = node instanceof Text ? node.data.length : node.childNodes.length + 1;\n } else {\n break;\n }\n }\n position.node = node, position.offset = offset;\n });\n return range;\n }\n }, {\n key: 'rangeToNative',\n value: function rangeToNative(range) {\n var _this5 = this;\n\n var indexes = range.collapsed ? [range.index] : [range.index, range.index + range.length];\n var args = [];\n var scrollLength = this.scroll.length();\n indexes.forEach(function (index, i) {\n index = Math.min(scrollLength - 1, index);\n var node = void 0,\n _scroll$leaf5 = _this5.scroll.leaf(index),\n _scroll$leaf6 = _slicedToArray(_scroll$leaf5, 2),\n leaf = _scroll$leaf6[0],\n offset = _scroll$leaf6[1];\n var _leaf$position5 = leaf.position(offset, i !== 0);\n\n var _leaf$position6 = _slicedToArray(_leaf$position5, 2);\n\n node = _leaf$position6[0];\n offset = _leaf$position6[1];\n\n args.push(node, offset);\n });\n if (args.length < 2) {\n args = args.concat(args);\n }\n return args;\n }\n }, {\n key: 'scrollIntoView',\n value: function scrollIntoView(scrollingContainer) {\n var range = this.lastRange;\n if (range == null) return;\n var bounds = this.getBounds(range.index, range.length);\n if (bounds == null) return;\n var limit = this.scroll.length() - 1;\n\n var _scroll$line = this.scroll.line(Math.min(range.index, limit)),\n _scroll$line2 = _slicedToArray(_scroll$line, 1),\n first = _scroll$line2[0];\n\n var last = first;\n if (range.length > 0) {\n var _scroll$line3 = this.scroll.line(Math.min(range.index + range.length, limit));\n\n var _scroll$line4 = _slicedToArray(_scroll$line3, 1);\n\n last = _scroll$line4[0];\n }\n if (first == null || last == null) return;\n var scrollBounds = scrollingContainer.getBoundingClientRect();\n if (bounds.top < scrollBounds.top) {\n scrollingContainer.scrollTop -= scrollBounds.top - bounds.top;\n } else if (bounds.bottom > scrollBounds.bottom) {\n scrollingContainer.scrollTop += bounds.bottom - scrollBounds.bottom;\n }\n }\n }, {\n key: 'setNativeRange',\n value: function setNativeRange(startNode, startOffset) {\n var endNode = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : startNode;\n var endOffset = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : startOffset;\n var force = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n debug.info('setNativeRange', startNode, startOffset, endNode, endOffset);\n if (startNode != null && (this.root.parentNode == null || startNode.parentNode == null || endNode.parentNode == null)) {\n return;\n }\n var selection = document.getSelection();\n if (selection == null) return;\n if (startNode != null) {\n if (!this.hasFocus()) this.root.focus();\n var native = (this.getNativeRange() || {}).native;\n if (native == null || force || startNode !== native.startContainer || startOffset !== native.startOffset || endNode !== native.endContainer || endOffset !== native.endOffset) {\n\n if (startNode.tagName == \"BR\") {\n startOffset = [].indexOf.call(startNode.parentNode.childNodes, startNode);\n startNode = startNode.parentNode;\n }\n if (endNode.tagName == \"BR\") {\n endOffset = [].indexOf.call(endNode.parentNode.childNodes, endNode);\n endNode = endNode.parentNode;\n }\n var range = document.createRange();\n range.setStart(startNode, startOffset);\n range.setEnd(endNode, endOffset);\n selection.removeAllRanges();\n selection.addRange(range);\n }\n } else {\n selection.removeAllRanges();\n this.root.blur();\n document.body.focus(); // root.blur() not enough on IE11+Travis+SauceLabs (but not local VMs)\n }\n }\n }, {\n key: 'setRange',\n value: function setRange(range) {\n var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _emitter4.default.sources.API;\n\n if (typeof force === 'string') {\n source = force;\n force = false;\n }\n debug.info('setRange', range);\n if (range != null) {\n var args = this.rangeToNative(range);\n this.setNativeRange.apply(this, _toConsumableArray(args).concat([force]));\n } else {\n this.setNativeRange(null);\n }\n this.update(source);\n }\n }, {\n key: 'update',\n value: function update() {\n var source = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _emitter4.default.sources.USER;\n\n var oldRange = this.lastRange;\n\n var _getRange = this.getRange(),\n _getRange2 = _slicedToArray(_getRange, 2),\n lastRange = _getRange2[0],\n nativeRange = _getRange2[1];\n\n this.lastRange = lastRange;\n if (this.lastRange != null) {\n this.savedRange = this.lastRange;\n }\n if (!(0, _deepEqual2.default)(oldRange, this.lastRange)) {\n var _emitter;\n\n if (!this.composing && nativeRange != null && nativeRange.native.collapsed && nativeRange.start.node !== this.cursor.textNode) {\n this.cursor.restore();\n }\n var args = [_emitter4.default.events.SELECTION_CHANGE, (0, _clone2.default)(this.lastRange), (0, _clone2.default)(oldRange), source];\n (_emitter = this.emitter).emit.apply(_emitter, [_emitter4.default.events.EDITOR_CHANGE].concat(args));\n if (source !== _emitter4.default.sources.SILENT) {\n var _emitter2;\n\n (_emitter2 = this.emitter).emit.apply(_emitter2, args);\n }\n }\n }\n }]);\n\n return Selection;\n}();\n\nfunction contains(parent, descendant) {\n try {\n // Firefox inserts inaccessible nodes around video elements\n descendant.parentNode;\n } catch (e) {\n return false;\n }\n // IE11 has bug with Text nodes\n // https://connect.microsoft.com/IE/feedback/details/780874/node-contains-is-incorrect\n if (descendant instanceof Text) {\n descendant = descendant.parentNode;\n }\n return parent.contains(descendant);\n}\n\nexports.Range = Range;\nexports.default = Selection;\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Break = function (_Parchment$Embed) {\n _inherits(Break, _Parchment$Embed);\n\n function Break() {\n _classCallCheck(this, Break);\n\n return _possibleConstructorReturn(this, (Break.__proto__ || Object.getPrototypeOf(Break)).apply(this, arguments));\n }\n\n _createClass(Break, [{\n key: 'insertInto',\n value: function insertInto(parent, ref) {\n if (parent.children.length === 0) {\n _get(Break.prototype.__proto__ || Object.getPrototypeOf(Break.prototype), 'insertInto', this).call(this, parent, ref);\n } else {\n this.remove();\n }\n }\n }, {\n key: 'length',\n value: function length() {\n return 0;\n }\n }, {\n key: 'value',\n value: function value() {\n return '';\n }\n }], [{\n key: 'value',\n value: function value() {\n return undefined;\n }\n }]);\n\n return Break;\n}(_parchment2.default.Embed);\n\nBreak.blotName = 'break';\nBreak.tagName = 'BR';\n\nexports.default = Break;\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar linked_list_1 = __webpack_require__(44);\nvar shadow_1 = __webpack_require__(30);\nvar Registry = __webpack_require__(1);\nvar ContainerBlot = /** @class */ (function (_super) {\n __extends(ContainerBlot, _super);\n function ContainerBlot(domNode) {\n var _this = _super.call(this, domNode) || this;\n _this.build();\n return _this;\n }\n ContainerBlot.prototype.appendChild = function (other) {\n this.insertBefore(other);\n };\n ContainerBlot.prototype.attach = function () {\n _super.prototype.attach.call(this);\n this.children.forEach(function (child) {\n child.attach();\n });\n };\n ContainerBlot.prototype.build = function () {\n var _this = this;\n this.children = new linked_list_1.default();\n // Need to be reversed for if DOM nodes already in order\n [].slice\n .call(this.domNode.childNodes)\n .reverse()\n .forEach(function (node) {\n try {\n var child = makeBlot(node);\n _this.insertBefore(child, _this.children.head || undefined);\n }\n catch (err) {\n if (err instanceof Registry.ParchmentError)\n return;\n else\n throw err;\n }\n });\n };\n ContainerBlot.prototype.deleteAt = function (index, length) {\n if (index === 0 && length === this.length()) {\n return this.remove();\n }\n this.children.forEachAt(index, length, function (child, offset, length) {\n child.deleteAt(offset, length);\n });\n };\n ContainerBlot.prototype.descendant = function (criteria, index) {\n var _a = this.children.find(index), child = _a[0], offset = _a[1];\n if ((criteria.blotName == null && criteria(child)) ||\n (criteria.blotName != null && child instanceof criteria)) {\n return [child, offset];\n }\n else if (child instanceof ContainerBlot) {\n return child.descendant(criteria, offset);\n }\n else {\n return [null, -1];\n }\n };\n ContainerBlot.prototype.descendants = function (criteria, index, length) {\n if (index === void 0) { index = 0; }\n if (length === void 0) { length = Number.MAX_VALUE; }\n var descendants = [];\n var lengthLeft = length;\n this.children.forEachAt(index, length, function (child, index, length) {\n if ((criteria.blotName == null && criteria(child)) ||\n (criteria.blotName != null && child instanceof criteria)) {\n descendants.push(child);\n }\n if (child instanceof ContainerBlot) {\n descendants = descendants.concat(child.descendants(criteria, index, lengthLeft));\n }\n lengthLeft -= length;\n });\n return descendants;\n };\n ContainerBlot.prototype.detach = function () {\n this.children.forEach(function (child) {\n child.detach();\n });\n _super.prototype.detach.call(this);\n };\n ContainerBlot.prototype.formatAt = function (index, length, name, value) {\n this.children.forEachAt(index, length, function (child, offset, length) {\n child.formatAt(offset, length, name, value);\n });\n };\n ContainerBlot.prototype.insertAt = function (index, value, def) {\n var _a = this.children.find(index), child = _a[0], offset = _a[1];\n if (child) {\n child.insertAt(offset, value, def);\n }\n else {\n var blot = def == null ? Registry.create('text', value) : Registry.create(value, def);\n this.appendChild(blot);\n }\n };\n ContainerBlot.prototype.insertBefore = function (childBlot, refBlot) {\n if (this.statics.allowedChildren != null &&\n !this.statics.allowedChildren.some(function (child) {\n return childBlot instanceof child;\n })) {\n throw new Registry.ParchmentError(\"Cannot insert \" + childBlot.statics.blotName + \" into \" + this.statics.blotName);\n }\n childBlot.insertInto(this, refBlot);\n };\n ContainerBlot.prototype.length = function () {\n return this.children.reduce(function (memo, child) {\n return memo + child.length();\n }, 0);\n };\n ContainerBlot.prototype.moveChildren = function (targetParent, refNode) {\n this.children.forEach(function (child) {\n targetParent.insertBefore(child, refNode);\n });\n };\n ContainerBlot.prototype.optimize = function (context) {\n _super.prototype.optimize.call(this, context);\n if (this.children.length === 0) {\n if (this.statics.defaultChild != null) {\n var child = Registry.create(this.statics.defaultChild);\n this.appendChild(child);\n child.optimize(context);\n }\n else {\n this.remove();\n }\n }\n };\n ContainerBlot.prototype.path = function (index, inclusive) {\n if (inclusive === void 0) { inclusive = false; }\n var _a = this.children.find(index, inclusive), child = _a[0], offset = _a[1];\n var position = [[this, index]];\n if (child instanceof ContainerBlot) {\n return position.concat(child.path(offset, inclusive));\n }\n else if (child != null) {\n position.push([child, offset]);\n }\n return position;\n };\n ContainerBlot.prototype.removeChild = function (child) {\n this.children.remove(child);\n };\n ContainerBlot.prototype.replace = function (target) {\n if (target instanceof ContainerBlot) {\n target.moveChildren(this);\n }\n _super.prototype.replace.call(this, target);\n };\n ContainerBlot.prototype.split = function (index, force) {\n if (force === void 0) { force = false; }\n if (!force) {\n if (index === 0)\n return this;\n if (index === this.length())\n return this.next;\n }\n var after = this.clone();\n this.parent.insertBefore(after, this.next);\n this.children.forEachAt(index, this.length(), function (child, offset, length) {\n child = child.split(offset, force);\n after.appendChild(child);\n });\n return after;\n };\n ContainerBlot.prototype.unwrap = function () {\n this.moveChildren(this.parent, this.next);\n this.remove();\n };\n ContainerBlot.prototype.update = function (mutations, context) {\n var _this = this;\n var addedNodes = [];\n var removedNodes = [];\n mutations.forEach(function (mutation) {\n if (mutation.target === _this.domNode && mutation.type === 'childList') {\n addedNodes.push.apply(addedNodes, mutation.addedNodes);\n removedNodes.push.apply(removedNodes, mutation.removedNodes);\n }\n });\n removedNodes.forEach(function (node) {\n // Check node has actually been removed\n // One exception is Chrome does not immediately remove IFRAMEs\n // from DOM but MutationRecord is correct in its reported removal\n if (node.parentNode != null &&\n // @ts-ignore\n node.tagName !== 'IFRAME' &&\n document.body.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_CONTAINED_BY) {\n return;\n }\n var blot = Registry.find(node);\n if (blot == null)\n return;\n if (blot.domNode.parentNode == null || blot.domNode.parentNode === _this.domNode) {\n blot.detach();\n }\n });\n addedNodes\n .filter(function (node) {\n return node.parentNode == _this.domNode;\n })\n .sort(function (a, b) {\n if (a === b)\n return 0;\n if (a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_FOLLOWING) {\n return 1;\n }\n return -1;\n })\n .forEach(function (node) {\n var refBlot = null;\n if (node.nextSibling != null) {\n refBlot = Registry.find(node.nextSibling);\n }\n var blot = makeBlot(node);\n if (blot.next != refBlot || blot.next == null) {\n if (blot.parent != null) {\n blot.parent.removeChild(_this);\n }\n _this.insertBefore(blot, refBlot || undefined);\n }\n });\n };\n return ContainerBlot;\n}(shadow_1.default));\nfunction makeBlot(node) {\n var blot = Registry.find(node);\n if (blot == null) {\n try {\n blot = Registry.create(node);\n }\n catch (e) {\n blot = Registry.create(Registry.Scope.INLINE);\n [].slice.call(node.childNodes).forEach(function (child) {\n // @ts-ignore\n blot.domNode.appendChild(child);\n });\n if (node.parentNode) {\n node.parentNode.replaceChild(blot.domNode, node);\n }\n blot.attach();\n }\n }\n return blot;\n}\nexports.default = ContainerBlot;\n\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = __webpack_require__(12);\nvar store_1 = __webpack_require__(31);\nvar container_1 = __webpack_require__(17);\nvar Registry = __webpack_require__(1);\nvar FormatBlot = /** @class */ (function (_super) {\n __extends(FormatBlot, _super);\n function FormatBlot(domNode) {\n var _this = _super.call(this, domNode) || this;\n _this.attributes = new store_1.default(_this.domNode);\n return _this;\n }\n FormatBlot.formats = function (domNode) {\n if (typeof this.tagName === 'string') {\n return true;\n }\n else if (Array.isArray(this.tagName)) {\n return domNode.tagName.toLowerCase();\n }\n return undefined;\n };\n FormatBlot.prototype.format = function (name, value) {\n var format = Registry.query(name);\n if (format instanceof attributor_1.default) {\n this.attributes.attribute(format, value);\n }\n else if (value) {\n if (format != null && (name !== this.statics.blotName || this.formats()[name] !== value)) {\n this.replaceWith(name, value);\n }\n }\n };\n FormatBlot.prototype.formats = function () {\n var formats = this.attributes.values();\n var format = this.statics.formats(this.domNode);\n if (format != null) {\n formats[this.statics.blotName] = format;\n }\n return formats;\n };\n FormatBlot.prototype.replaceWith = function (name, value) {\n var replacement = _super.prototype.replaceWith.call(this, name, value);\n this.attributes.copy(replacement);\n return replacement;\n };\n FormatBlot.prototype.update = function (mutations, context) {\n var _this = this;\n _super.prototype.update.call(this, mutations, context);\n if (mutations.some(function (mutation) {\n return mutation.target === _this.domNode && mutation.type === 'attributes';\n })) {\n this.attributes.build();\n }\n };\n FormatBlot.prototype.wrap = function (name, value) {\n var wrapper = _super.prototype.wrap.call(this, name, value);\n if (wrapper instanceof FormatBlot && wrapper.statics.scope === this.statics.scope) {\n this.attributes.move(wrapper);\n }\n return wrapper;\n };\n return FormatBlot;\n}(container_1.default));\nexports.default = FormatBlot;\n\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar shadow_1 = __webpack_require__(30);\nvar Registry = __webpack_require__(1);\nvar LeafBlot = /** @class */ (function (_super) {\n __extends(LeafBlot, _super);\n function LeafBlot() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n LeafBlot.value = function (domNode) {\n return true;\n };\n LeafBlot.prototype.index = function (node, offset) {\n if (this.domNode === node ||\n this.domNode.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_CONTAINED_BY) {\n return Math.min(offset, 1);\n }\n return -1;\n };\n LeafBlot.prototype.position = function (index, inclusive) {\n var offset = [].indexOf.call(this.parent.domNode.childNodes, this.domNode);\n if (index > 0)\n offset += 1;\n return [this.parent.domNode, offset];\n };\n LeafBlot.prototype.value = function () {\n var _a;\n return _a = {}, _a[this.statics.blotName] = this.statics.value(this.domNode) || true, _a;\n };\n LeafBlot.scope = Registry.Scope.INLINE_BLOT;\n return LeafBlot;\n}(shadow_1.default));\nexports.default = LeafBlot;\n\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar equal = __webpack_require__(11);\nvar extend = __webpack_require__(3);\n\n\nvar lib = {\n attributes: {\n compose: function (a, b, keepNull) {\n if (typeof a !== 'object') a = {};\n if (typeof b !== 'object') b = {};\n var attributes = extend(true, {}, b);\n if (!keepNull) {\n attributes = Object.keys(attributes).reduce(function (copy, key) {\n if (attributes[key] != null) {\n copy[key] = attributes[key];\n }\n return copy;\n }, {});\n }\n for (var key in a) {\n if (a[key] !== undefined && b[key] === undefined) {\n attributes[key] = a[key];\n }\n }\n return Object.keys(attributes).length > 0 ? attributes : undefined;\n },\n\n diff: function(a, b) {\n if (typeof a !== 'object') a = {};\n if (typeof b !== 'object') b = {};\n var attributes = Object.keys(a).concat(Object.keys(b)).reduce(function (attributes, key) {\n if (!equal(a[key], b[key])) {\n attributes[key] = b[key] === undefined ? null : b[key];\n }\n return attributes;\n }, {});\n return Object.keys(attributes).length > 0 ? attributes : undefined;\n },\n\n transform: function (a, b, priority) {\n if (typeof a !== 'object') return b;\n if (typeof b !== 'object') return undefined;\n if (!priority) return b; // b simply overwrites us without priority\n var attributes = Object.keys(b).reduce(function (attributes, key) {\n if (a[key] === undefined) attributes[key] = b[key]; // null is a valid value\n return attributes;\n }, {});\n return Object.keys(attributes).length > 0 ? attributes : undefined;\n }\n },\n\n iterator: function (ops) {\n return new Iterator(ops);\n },\n\n length: function (op) {\n if (typeof op['delete'] === 'number') {\n return op['delete'];\n } else if (typeof op.retain === 'number') {\n return op.retain;\n } else {\n return typeof op.insert === 'string' ? op.insert.length : 1;\n }\n }\n};\n\n\nfunction Iterator(ops) {\n this.ops = ops;\n this.index = 0;\n this.offset = 0;\n};\n\nIterator.prototype.hasNext = function () {\n return this.peekLength() < Infinity;\n};\n\nIterator.prototype.next = function (length) {\n if (!length) length = Infinity;\n var nextOp = this.ops[this.index];\n if (nextOp) {\n var offset = this.offset;\n var opLength = lib.length(nextOp)\n if (length >= opLength - offset) {\n length = opLength - offset;\n this.index += 1;\n this.offset = 0;\n } else {\n this.offset += length;\n }\n if (typeof nextOp['delete'] === 'number') {\n return { 'delete': length };\n } else {\n var retOp = {};\n if (nextOp.attributes) {\n retOp.attributes = nextOp.attributes;\n }\n if (typeof nextOp.retain === 'number') {\n retOp.retain = length;\n } else if (typeof nextOp.insert === 'string') {\n retOp.insert = nextOp.insert.substr(offset, length);\n } else {\n // offset should === 0, length should === 1\n retOp.insert = nextOp.insert;\n }\n return retOp;\n }\n } else {\n return { retain: Infinity };\n }\n};\n\nIterator.prototype.peek = function () {\n return this.ops[this.index];\n};\n\nIterator.prototype.peekLength = function () {\n if (this.ops[this.index]) {\n // Should never return 0 if our index is being managed correctly\n return lib.length(this.ops[this.index]) - this.offset;\n } else {\n return Infinity;\n }\n};\n\nIterator.prototype.peekType = function () {\n if (this.ops[this.index]) {\n if (typeof this.ops[this.index]['delete'] === 'number') {\n return 'delete';\n } else if (typeof this.ops[this.index].retain === 'number') {\n return 'retain';\n } else {\n return 'insert';\n }\n }\n return 'retain';\n};\n\nIterator.prototype.rest = function () {\n if (!this.hasNext()) {\n return [];\n } else if (this.offset === 0) {\n return this.ops.slice(this.index);\n } else {\n var offset = this.offset;\n var index = this.index;\n var next = this.next();\n var rest = this.ops.slice(this.index);\n this.offset = offset;\n this.index = index;\n return [next].concat(rest);\n }\n};\n\n\nmodule.exports = lib;\n\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports) {\n\nvar clone = (function() {\n'use strict';\n\nfunction _instanceof(obj, type) {\n return type != null && obj instanceof type;\n}\n\nvar nativeMap;\ntry {\n nativeMap = Map;\n} catch(_) {\n // maybe a reference error because no `Map`. Give it a dummy value that no\n // value will ever be an instanceof.\n nativeMap = function() {};\n}\n\nvar nativeSet;\ntry {\n nativeSet = Set;\n} catch(_) {\n nativeSet = function() {};\n}\n\nvar nativePromise;\ntry {\n nativePromise = Promise;\n} catch(_) {\n nativePromise = function() {};\n}\n\n/**\n * Clones (copies) an Object using deep copying.\n *\n * This function supports circular references by default, but if you are certain\n * there are no circular references in your object, you can save some CPU time\n * by calling clone(obj, false).\n *\n * Caution: if `circular` is false and `parent` contains circular references,\n * your program may enter an infinite loop and crash.\n *\n * @param `parent` - the object to be cloned\n * @param `circular` - set to true if the object to be cloned may contain\n * circular references. (optional - true by default)\n * @param `depth` - set to a number if the object is only to be cloned to\n * a particular depth. (optional - defaults to Infinity)\n * @param `prototype` - sets the prototype to be used when cloning an object.\n * (optional - defaults to parent prototype).\n * @param `includeNonEnumerable` - set to true if the non-enumerable properties\n * should be cloned as well. Non-enumerable properties on the prototype\n * chain will be ignored. (optional - false by default)\n*/\nfunction clone(parent, circular, depth, prototype, includeNonEnumerable) {\n if (typeof circular === 'object') {\n depth = circular.depth;\n prototype = circular.prototype;\n includeNonEnumerable = circular.includeNonEnumerable;\n circular = circular.circular;\n }\n // maintain two arrays for circular references, where corresponding parents\n // and children have the same index\n var allParents = [];\n var allChildren = [];\n\n var useBuffer = typeof Buffer != 'undefined';\n\n if (typeof circular == 'undefined')\n circular = true;\n\n if (typeof depth == 'undefined')\n depth = Infinity;\n\n // recurse this function so we don't reset allParents and allChildren\n function _clone(parent, depth) {\n // cloning null always returns null\n if (parent === null)\n return null;\n\n if (depth === 0)\n return parent;\n\n var child;\n var proto;\n if (typeof parent != 'object') {\n return parent;\n }\n\n if (_instanceof(parent, nativeMap)) {\n child = new nativeMap();\n } else if (_instanceof(parent, nativeSet)) {\n child = new nativeSet();\n } else if (_instanceof(parent, nativePromise)) {\n child = new nativePromise(function (resolve, reject) {\n parent.then(function(value) {\n resolve(_clone(value, depth - 1));\n }, function(err) {\n reject(_clone(err, depth - 1));\n });\n });\n } else if (clone.__isArray(parent)) {\n child = [];\n } else if (clone.__isRegExp(parent)) {\n child = new RegExp(parent.source, __getRegExpFlags(parent));\n if (parent.lastIndex) child.lastIndex = parent.lastIndex;\n } else if (clone.__isDate(parent)) {\n child = new Date(parent.getTime());\n } else if (useBuffer && Buffer.isBuffer(parent)) {\n if (Buffer.allocUnsafe) {\n // Node.js >= 4.5.0\n child = Buffer.allocUnsafe(parent.length);\n } else {\n // Older Node.js versions\n child = new Buffer(parent.length);\n }\n parent.copy(child);\n return child;\n } else if (_instanceof(parent, Error)) {\n child = Object.create(parent);\n } else {\n if (typeof prototype == 'undefined') {\n proto = Object.getPrototypeOf(parent);\n child = Object.create(proto);\n }\n else {\n child = Object.create(prototype);\n proto = prototype;\n }\n }\n\n if (circular) {\n var index = allParents.indexOf(parent);\n\n if (index != -1) {\n return allChildren[index];\n }\n allParents.push(parent);\n allChildren.push(child);\n }\n\n if (_instanceof(parent, nativeMap)) {\n parent.forEach(function(value, key) {\n var keyChild = _clone(key, depth - 1);\n var valueChild = _clone(value, depth - 1);\n child.set(keyChild, valueChild);\n });\n }\n if (_instanceof(parent, nativeSet)) {\n parent.forEach(function(value) {\n var entryChild = _clone(value, depth - 1);\n child.add(entryChild);\n });\n }\n\n for (var i in parent) {\n var attrs;\n if (proto) {\n attrs = Object.getOwnPropertyDescriptor(proto, i);\n }\n\n if (attrs && attrs.set == null) {\n continue;\n }\n child[i] = _clone(parent[i], depth - 1);\n }\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(parent);\n for (var i = 0; i < symbols.length; i++) {\n // Don't need to worry about cloning a symbol because it is a primitive,\n // like a number or string.\n var symbol = symbols[i];\n var descriptor = Object.getOwnPropertyDescriptor(parent, symbol);\n if (descriptor && !descriptor.enumerable && !includeNonEnumerable) {\n continue;\n }\n child[symbol] = _clone(parent[symbol], depth - 1);\n if (!descriptor.enumerable) {\n Object.defineProperty(child, symbol, {\n enumerable: false\n });\n }\n }\n }\n\n if (includeNonEnumerable) {\n var allPropertyNames = Object.getOwnPropertyNames(parent);\n for (var i = 0; i < allPropertyNames.length; i++) {\n var propertyName = allPropertyNames[i];\n var descriptor = Object.getOwnPropertyDescriptor(parent, propertyName);\n if (descriptor && descriptor.enumerable) {\n continue;\n }\n child[propertyName] = _clone(parent[propertyName], depth - 1);\n Object.defineProperty(child, propertyName, {\n enumerable: false\n });\n }\n }\n\n return child;\n }\n\n return _clone(parent, depth);\n}\n\n/**\n * Simple flat clone using prototype, accepts only objects, usefull for property\n * override on FLAT configuration object (no nested props).\n *\n * USE WITH CAUTION! This may not behave as you wish if you do not know how this\n * works.\n */\nclone.clonePrototype = function clonePrototype(parent) {\n if (parent === null)\n return null;\n\n var c = function () {};\n c.prototype = parent;\n return new c();\n};\n\n// private utility functions\n\nfunction __objToStr(o) {\n return Object.prototype.toString.call(o);\n}\nclone.__objToStr = __objToStr;\n\nfunction __isDate(o) {\n return typeof o === 'object' && __objToStr(o) === '[object Date]';\n}\nclone.__isDate = __isDate;\n\nfunction __isArray(o) {\n return typeof o === 'object' && __objToStr(o) === '[object Array]';\n}\nclone.__isArray = __isArray;\n\nfunction __isRegExp(o) {\n return typeof o === 'object' && __objToStr(o) === '[object RegExp]';\n}\nclone.__isRegExp = __isRegExp;\n\nfunction __getRegExpFlags(re) {\n var flags = '';\n if (re.global) flags += 'g';\n if (re.ignoreCase) flags += 'i';\n if (re.multiline) flags += 'm';\n return flags;\n}\nclone.__getRegExpFlags = __getRegExpFlags;\n\nreturn clone;\n})();\n\nif (typeof module === 'object' && module.exports) {\n module.exports = clone;\n}\n\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _emitter = __webpack_require__(8);\n\nvar _emitter2 = _interopRequireDefault(_emitter);\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _break = __webpack_require__(16);\n\nvar _break2 = _interopRequireDefault(_break);\n\nvar _code = __webpack_require__(13);\n\nvar _code2 = _interopRequireDefault(_code);\n\nvar _container = __webpack_require__(25);\n\nvar _container2 = _interopRequireDefault(_container);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction isLine(blot) {\n return blot instanceof _block2.default || blot instanceof _block.BlockEmbed;\n}\n\nvar Scroll = function (_Parchment$Scroll) {\n _inherits(Scroll, _Parchment$Scroll);\n\n function Scroll(domNode, config) {\n _classCallCheck(this, Scroll);\n\n var _this = _possibleConstructorReturn(this, (Scroll.__proto__ || Object.getPrototypeOf(Scroll)).call(this, domNode));\n\n _this.emitter = config.emitter;\n if (Array.isArray(config.whitelist)) {\n _this.whitelist = config.whitelist.reduce(function (whitelist, format) {\n whitelist[format] = true;\n return whitelist;\n }, {});\n }\n // Some reason fixes composition issues with character languages in Windows/Chrome, Safari\n _this.domNode.addEventListener('DOMNodeInserted', function () {});\n _this.optimize();\n _this.enable();\n return _this;\n }\n\n _createClass(Scroll, [{\n key: 'batchStart',\n value: function batchStart() {\n this.batch = true;\n }\n }, {\n key: 'batchEnd',\n value: function batchEnd() {\n this.batch = false;\n this.optimize();\n }\n }, {\n key: 'deleteAt',\n value: function deleteAt(index, length) {\n var _line = this.line(index),\n _line2 = _slicedToArray(_line, 2),\n first = _line2[0],\n offset = _line2[1];\n\n var _line3 = this.line(index + length),\n _line4 = _slicedToArray(_line3, 1),\n last = _line4[0];\n\n _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'deleteAt', this).call(this, index, length);\n if (last != null && first !== last && offset > 0) {\n if (first instanceof _block.BlockEmbed || last instanceof _block.BlockEmbed) {\n this.optimize();\n return;\n }\n if (first instanceof _code2.default) {\n var newlineIndex = first.newlineIndex(first.length(), true);\n if (newlineIndex > -1) {\n first = first.split(newlineIndex + 1);\n if (first === last) {\n this.optimize();\n return;\n }\n }\n } else if (last instanceof _code2.default) {\n var _newlineIndex = last.newlineIndex(0);\n if (_newlineIndex > -1) {\n last.split(_newlineIndex + 1);\n }\n }\n var ref = last.children.head instanceof _break2.default ? null : last.children.head;\n first.moveChildren(last, ref);\n first.remove();\n }\n this.optimize();\n }\n }, {\n key: 'enable',\n value: function enable() {\n var enabled = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n this.domNode.setAttribute('contenteditable', enabled);\n }\n }, {\n key: 'formatAt',\n value: function formatAt(index, length, format, value) {\n if (this.whitelist != null && !this.whitelist[format]) return;\n _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'formatAt', this).call(this, index, length, format, value);\n this.optimize();\n }\n }, {\n key: 'insertAt',\n value: function insertAt(index, value, def) {\n if (def != null && this.whitelist != null && !this.whitelist[value]) return;\n if (index >= this.length()) {\n if (def == null || _parchment2.default.query(value, _parchment2.default.Scope.BLOCK) == null) {\n var blot = _parchment2.default.create(this.statics.defaultChild);\n this.appendChild(blot);\n if (def == null && value.endsWith('\\n')) {\n value = value.slice(0, -1);\n }\n blot.insertAt(0, value, def);\n } else {\n var embed = _parchment2.default.create(value, def);\n this.appendChild(embed);\n }\n } else {\n _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'insertAt', this).call(this, index, value, def);\n }\n this.optimize();\n }\n }, {\n key: 'insertBefore',\n value: function insertBefore(blot, ref) {\n if (blot.statics.scope === _parchment2.default.Scope.INLINE_BLOT) {\n var wrapper = _parchment2.default.create(this.statics.defaultChild);\n wrapper.appendChild(blot);\n blot = wrapper;\n }\n _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'insertBefore', this).call(this, blot, ref);\n }\n }, {\n key: 'leaf',\n value: function leaf(index) {\n return this.path(index).pop() || [null, -1];\n }\n }, {\n key: 'line',\n value: function line(index) {\n if (index === this.length()) {\n return this.line(index - 1);\n }\n return this.descendant(isLine, index);\n }\n }, {\n key: 'lines',\n value: function lines() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Number.MAX_VALUE;\n\n var getLines = function getLines(blot, index, length) {\n var lines = [],\n lengthLeft = length;\n blot.children.forEachAt(index, length, function (child, index, length) {\n if (isLine(child)) {\n lines.push(child);\n } else if (child instanceof _parchment2.default.Container) {\n lines = lines.concat(getLines(child, index, lengthLeft));\n }\n lengthLeft -= length;\n });\n return lines;\n };\n return getLines(this, index, length);\n }\n }, {\n key: 'optimize',\n value: function optimize() {\n var mutations = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (this.batch === true) return;\n _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'optimize', this).call(this, mutations, context);\n if (mutations.length > 0) {\n this.emitter.emit(_emitter2.default.events.SCROLL_OPTIMIZE, mutations, context);\n }\n }\n }, {\n key: 'path',\n value: function path(index) {\n return _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'path', this).call(this, index).slice(1); // Exclude self\n }\n }, {\n key: 'update',\n value: function update(mutations) {\n if (this.batch === true) return;\n var source = _emitter2.default.sources.USER;\n if (typeof mutations === 'string') {\n source = mutations;\n }\n if (!Array.isArray(mutations)) {\n mutations = this.observer.takeRecords();\n }\n if (mutations.length > 0) {\n this.emitter.emit(_emitter2.default.events.SCROLL_BEFORE_UPDATE, source, mutations);\n }\n _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'update', this).call(this, mutations.concat([])); // pass copy\n if (mutations.length > 0) {\n this.emitter.emit(_emitter2.default.events.SCROLL_UPDATE, source, mutations);\n }\n }\n }]);\n\n return Scroll;\n}(_parchment2.default.Scroll);\n\nScroll.blotName = 'scroll';\nScroll.className = 'ql-editor';\nScroll.tagName = 'DIV';\nScroll.defaultChild = 'block';\nScroll.allowedChildren = [_block2.default, _block.BlockEmbed, _container2.default];\n\nexports.default = Scroll;\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SHORTKEY = exports.default = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _clone = __webpack_require__(21);\n\nvar _clone2 = _interopRequireDefault(_clone);\n\nvar _deepEqual = __webpack_require__(11);\n\nvar _deepEqual2 = _interopRequireDefault(_deepEqual);\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _op = __webpack_require__(20);\n\nvar _op2 = _interopRequireDefault(_op);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar debug = (0, _logger2.default)('quill:keyboard');\n\nvar SHORTKEY = /Mac/i.test(navigator.platform) ? 'metaKey' : 'ctrlKey';\n\nvar Keyboard = function (_Module) {\n _inherits(Keyboard, _Module);\n\n _createClass(Keyboard, null, [{\n key: 'match',\n value: function match(evt, binding) {\n binding = normalize(binding);\n if (['altKey', 'ctrlKey', 'metaKey', 'shiftKey'].some(function (key) {\n return !!binding[key] !== evt[key] && binding[key] !== null;\n })) {\n return false;\n }\n return binding.key === (evt.which || evt.keyCode);\n }\n }]);\n\n function Keyboard(quill, options) {\n _classCallCheck(this, Keyboard);\n\n var _this = _possibleConstructorReturn(this, (Keyboard.__proto__ || Object.getPrototypeOf(Keyboard)).call(this, quill, options));\n\n _this.bindings = {};\n Object.keys(_this.options.bindings).forEach(function (name) {\n if (name === 'list autofill' && quill.scroll.whitelist != null && !quill.scroll.whitelist['list']) {\n return;\n }\n if (_this.options.bindings[name]) {\n _this.addBinding(_this.options.bindings[name]);\n }\n });\n _this.addBinding({ key: Keyboard.keys.ENTER, shiftKey: null }, handleEnter);\n _this.addBinding({ key: Keyboard.keys.ENTER, metaKey: null, ctrlKey: null, altKey: null }, function () {});\n if (/Firefox/i.test(navigator.userAgent)) {\n // Need to handle delete and backspace for Firefox in the general case #1171\n _this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: true }, handleBackspace);\n _this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: true }, handleDelete);\n } else {\n _this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: true, prefix: /^.?$/ }, handleBackspace);\n _this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: true, suffix: /^.?$/ }, handleDelete);\n }\n _this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: false }, handleDeleteRange);\n _this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: false }, handleDeleteRange);\n _this.addBinding({ key: Keyboard.keys.BACKSPACE, altKey: null, ctrlKey: null, metaKey: null, shiftKey: null }, { collapsed: true, offset: 0 }, handleBackspace);\n _this.listen();\n return _this;\n }\n\n _createClass(Keyboard, [{\n key: 'addBinding',\n value: function addBinding(key) {\n var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var handler = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n var binding = normalize(key);\n if (binding == null || binding.key == null) {\n return debug.warn('Attempted to add invalid keyboard binding', binding);\n }\n if (typeof context === 'function') {\n context = { handler: context };\n }\n if (typeof handler === 'function') {\n handler = { handler: handler };\n }\n binding = (0, _extend2.default)(binding, context, handler);\n this.bindings[binding.key] = this.bindings[binding.key] || [];\n this.bindings[binding.key].push(binding);\n }\n }, {\n key: 'listen',\n value: function listen() {\n var _this2 = this;\n\n this.quill.root.addEventListener('keydown', function (evt) {\n if (evt.defaultPrevented) return;\n var which = evt.which || evt.keyCode;\n var bindings = (_this2.bindings[which] || []).filter(function (binding) {\n return Keyboard.match(evt, binding);\n });\n if (bindings.length === 0) return;\n var range = _this2.quill.getSelection();\n if (range == null || !_this2.quill.hasFocus()) return;\n\n var _quill$getLine = _this2.quill.getLine(range.index),\n _quill$getLine2 = _slicedToArray(_quill$getLine, 2),\n line = _quill$getLine2[0],\n offset = _quill$getLine2[1];\n\n var _quill$getLeaf = _this2.quill.getLeaf(range.index),\n _quill$getLeaf2 = _slicedToArray(_quill$getLeaf, 2),\n leafStart = _quill$getLeaf2[0],\n offsetStart = _quill$getLeaf2[1];\n\n var _ref = range.length === 0 ? [leafStart, offsetStart] : _this2.quill.getLeaf(range.index + range.length),\n _ref2 = _slicedToArray(_ref, 2),\n leafEnd = _ref2[0],\n offsetEnd = _ref2[1];\n\n var prefixText = leafStart instanceof _parchment2.default.Text ? leafStart.value().slice(0, offsetStart) : '';\n var suffixText = leafEnd instanceof _parchment2.default.Text ? leafEnd.value().slice(offsetEnd) : '';\n var curContext = {\n collapsed: range.length === 0,\n empty: range.length === 0 && line.length() <= 1,\n format: _this2.quill.getFormat(range),\n offset: offset,\n prefix: prefixText,\n suffix: suffixText\n };\n var prevented = bindings.some(function (binding) {\n if (binding.collapsed != null && binding.collapsed !== curContext.collapsed) return false;\n if (binding.empty != null && binding.empty !== curContext.empty) return false;\n if (binding.offset != null && binding.offset !== curContext.offset) return false;\n if (Array.isArray(binding.format)) {\n // any format is present\n if (binding.format.every(function (name) {\n return curContext.format[name] == null;\n })) {\n return false;\n }\n } else if (_typeof(binding.format) === 'object') {\n // all formats must match\n if (!Object.keys(binding.format).every(function (name) {\n if (binding.format[name] === true) return curContext.format[name] != null;\n if (binding.format[name] === false) return curContext.format[name] == null;\n return (0, _deepEqual2.default)(binding.format[name], curContext.format[name]);\n })) {\n return false;\n }\n }\n if (binding.prefix != null && !binding.prefix.test(curContext.prefix)) return false;\n if (binding.suffix != null && !binding.suffix.test(curContext.suffix)) return false;\n return binding.handler.call(_this2, range, curContext) !== true;\n });\n if (prevented) {\n evt.preventDefault();\n }\n });\n }\n }]);\n\n return Keyboard;\n}(_module2.default);\n\nKeyboard.keys = {\n BACKSPACE: 8,\n TAB: 9,\n ENTER: 13,\n ESCAPE: 27,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n DELETE: 46\n};\n\nKeyboard.DEFAULTS = {\n bindings: {\n 'bold': makeFormatHandler('bold'),\n 'italic': makeFormatHandler('italic'),\n 'underline': makeFormatHandler('underline'),\n 'indent': {\n // highlight tab or tab at beginning of list, indent or blockquote\n key: Keyboard.keys.TAB,\n format: ['blockquote', 'indent', 'list'],\n handler: function handler(range, context) {\n if (context.collapsed && context.offset !== 0) return true;\n this.quill.format('indent', '+1', _quill2.default.sources.USER);\n }\n },\n 'outdent': {\n key: Keyboard.keys.TAB,\n shiftKey: true,\n format: ['blockquote', 'indent', 'list'],\n // highlight tab or tab at beginning of list, indent or blockquote\n handler: function handler(range, context) {\n if (context.collapsed && context.offset !== 0) return true;\n this.quill.format('indent', '-1', _quill2.default.sources.USER);\n }\n },\n 'outdent backspace': {\n key: Keyboard.keys.BACKSPACE,\n collapsed: true,\n shiftKey: null,\n metaKey: null,\n ctrlKey: null,\n altKey: null,\n format: ['indent', 'list'],\n offset: 0,\n handler: function handler(range, context) {\n if (context.format.indent != null) {\n this.quill.format('indent', '-1', _quill2.default.sources.USER);\n } else if (context.format.list != null) {\n this.quill.format('list', false, _quill2.default.sources.USER);\n }\n }\n },\n 'indent code-block': makeCodeBlockHandler(true),\n 'outdent code-block': makeCodeBlockHandler(false),\n 'remove tab': {\n key: Keyboard.keys.TAB,\n shiftKey: true,\n collapsed: true,\n prefix: /\\t$/,\n handler: function handler(range) {\n this.quill.deleteText(range.index - 1, 1, _quill2.default.sources.USER);\n }\n },\n 'tab': {\n key: Keyboard.keys.TAB,\n handler: function handler(range) {\n this.quill.history.cutoff();\n var delta = new _quillDelta2.default().retain(range.index).delete(range.length).insert('\\t');\n this.quill.updateContents(delta, _quill2.default.sources.USER);\n this.quill.history.cutoff();\n this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n }\n },\n 'list empty enter': {\n key: Keyboard.keys.ENTER,\n collapsed: true,\n format: ['list'],\n empty: true,\n handler: function handler(range, context) {\n this.quill.format('list', false, _quill2.default.sources.USER);\n if (context.format.indent) {\n this.quill.format('indent', false, _quill2.default.sources.USER);\n }\n }\n },\n 'checklist enter': {\n key: Keyboard.keys.ENTER,\n collapsed: true,\n format: { list: 'checked' },\n handler: function handler(range) {\n var _quill$getLine3 = this.quill.getLine(range.index),\n _quill$getLine4 = _slicedToArray(_quill$getLine3, 2),\n line = _quill$getLine4[0],\n offset = _quill$getLine4[1];\n\n var formats = (0, _extend2.default)({}, line.formats(), { list: 'checked' });\n var delta = new _quillDelta2.default().retain(range.index).insert('\\n', formats).retain(line.length() - offset - 1).retain(1, { list: 'unchecked' });\n this.quill.updateContents(delta, _quill2.default.sources.USER);\n this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n this.quill.scrollIntoView();\n }\n },\n 'header enter': {\n key: Keyboard.keys.ENTER,\n collapsed: true,\n format: ['header'],\n suffix: /^$/,\n handler: function handler(range, context) {\n var _quill$getLine5 = this.quill.getLine(range.index),\n _quill$getLine6 = _slicedToArray(_quill$getLine5, 2),\n line = _quill$getLine6[0],\n offset = _quill$getLine6[1];\n\n var delta = new _quillDelta2.default().retain(range.index).insert('\\n', context.format).retain(line.length() - offset - 1).retain(1, { header: null });\n this.quill.updateContents(delta, _quill2.default.sources.USER);\n this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n this.quill.scrollIntoView();\n }\n },\n 'list autofill': {\n key: ' ',\n collapsed: true,\n format: { list: false },\n prefix: /^\\s*?(\\d+\\.|-|\\*|\\[ ?\\]|\\[x\\])$/,\n handler: function handler(range, context) {\n var length = context.prefix.length;\n\n var _quill$getLine7 = this.quill.getLine(range.index),\n _quill$getLine8 = _slicedToArray(_quill$getLine7, 2),\n line = _quill$getLine8[0],\n offset = _quill$getLine8[1];\n\n if (offset > length) return true;\n var value = void 0;\n switch (context.prefix.trim()) {\n case '[]':case '[ ]':\n value = 'unchecked';\n break;\n case '[x]':\n value = 'checked';\n break;\n case '-':case '*':\n value = 'bullet';\n break;\n default:\n value = 'ordered';\n }\n this.quill.insertText(range.index, ' ', _quill2.default.sources.USER);\n this.quill.history.cutoff();\n var delta = new _quillDelta2.default().retain(range.index - offset).delete(length + 1).retain(line.length() - 2 - offset).retain(1, { list: value });\n this.quill.updateContents(delta, _quill2.default.sources.USER);\n this.quill.history.cutoff();\n this.quill.setSelection(range.index - length, _quill2.default.sources.SILENT);\n }\n },\n 'code exit': {\n key: Keyboard.keys.ENTER,\n collapsed: true,\n format: ['code-block'],\n prefix: /\\n\\n$/,\n suffix: /^\\s+$/,\n handler: function handler(range) {\n var _quill$getLine9 = this.quill.getLine(range.index),\n _quill$getLine10 = _slicedToArray(_quill$getLine9, 2),\n line = _quill$getLine10[0],\n offset = _quill$getLine10[1];\n\n var delta = new _quillDelta2.default().retain(range.index + line.length() - offset - 2).retain(1, { 'code-block': null }).delete(1);\n this.quill.updateContents(delta, _quill2.default.sources.USER);\n }\n },\n 'embed left': makeEmbedArrowHandler(Keyboard.keys.LEFT, false),\n 'embed left shift': makeEmbedArrowHandler(Keyboard.keys.LEFT, true),\n 'embed right': makeEmbedArrowHandler(Keyboard.keys.RIGHT, false),\n 'embed right shift': makeEmbedArrowHandler(Keyboard.keys.RIGHT, true)\n }\n};\n\nfunction makeEmbedArrowHandler(key, shiftKey) {\n var _ref3;\n\n var where = key === Keyboard.keys.LEFT ? 'prefix' : 'suffix';\n return _ref3 = {\n key: key,\n shiftKey: shiftKey,\n altKey: null\n }, _defineProperty(_ref3, where, /^$/), _defineProperty(_ref3, 'handler', function handler(range) {\n var index = range.index;\n if (key === Keyboard.keys.RIGHT) {\n index += range.length + 1;\n }\n\n var _quill$getLeaf3 = this.quill.getLeaf(index),\n _quill$getLeaf4 = _slicedToArray(_quill$getLeaf3, 1),\n leaf = _quill$getLeaf4[0];\n\n if (!(leaf instanceof _parchment2.default.Embed)) return true;\n if (key === Keyboard.keys.LEFT) {\n if (shiftKey) {\n this.quill.setSelection(range.index - 1, range.length + 1, _quill2.default.sources.USER);\n } else {\n this.quill.setSelection(range.index - 1, _quill2.default.sources.USER);\n }\n } else {\n if (shiftKey) {\n this.quill.setSelection(range.index, range.length + 1, _quill2.default.sources.USER);\n } else {\n this.quill.setSelection(range.index + range.length + 1, _quill2.default.sources.USER);\n }\n }\n return false;\n }), _ref3;\n}\n\nfunction handleBackspace(range, context) {\n if (range.index === 0 || this.quill.getLength() <= 1) return;\n\n var _quill$getLine11 = this.quill.getLine(range.index),\n _quill$getLine12 = _slicedToArray(_quill$getLine11, 1),\n line = _quill$getLine12[0];\n\n var formats = {};\n if (context.offset === 0) {\n var _quill$getLine13 = this.quill.getLine(range.index - 1),\n _quill$getLine14 = _slicedToArray(_quill$getLine13, 1),\n prev = _quill$getLine14[0];\n\n if (prev != null && prev.length() > 1) {\n var curFormats = line.formats();\n var prevFormats = this.quill.getFormat(range.index - 1, 1);\n formats = _op2.default.attributes.diff(curFormats, prevFormats) || {};\n }\n }\n // Check for astral symbols\n var length = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]$/.test(context.prefix) ? 2 : 1;\n this.quill.deleteText(range.index - length, length, _quill2.default.sources.USER);\n if (Object.keys(formats).length > 0) {\n this.quill.formatLine(range.index - length, length, formats, _quill2.default.sources.USER);\n }\n this.quill.focus();\n}\n\nfunction handleDelete(range, context) {\n // Check for astral symbols\n var length = /^[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/.test(context.suffix) ? 2 : 1;\n if (range.index >= this.quill.getLength() - length) return;\n var formats = {},\n nextLength = 0;\n\n var _quill$getLine15 = this.quill.getLine(range.index),\n _quill$getLine16 = _slicedToArray(_quill$getLine15, 1),\n line = _quill$getLine16[0];\n\n if (context.offset >= line.length() - 1) {\n var _quill$getLine17 = this.quill.getLine(range.index + 1),\n _quill$getLine18 = _slicedToArray(_quill$getLine17, 1),\n next = _quill$getLine18[0];\n\n if (next) {\n var curFormats = line.formats();\n var nextFormats = this.quill.getFormat(range.index, 1);\n formats = _op2.default.attributes.diff(curFormats, nextFormats) || {};\n nextLength = next.length();\n }\n }\n this.quill.deleteText(range.index, length, _quill2.default.sources.USER);\n if (Object.keys(formats).length > 0) {\n this.quill.formatLine(range.index + nextLength - 1, length, formats, _quill2.default.sources.USER);\n }\n}\n\nfunction handleDeleteRange(range) {\n var lines = this.quill.getLines(range);\n var formats = {};\n if (lines.length > 1) {\n var firstFormats = lines[0].formats();\n var lastFormats = lines[lines.length - 1].formats();\n formats = _op2.default.attributes.diff(lastFormats, firstFormats) || {};\n }\n this.quill.deleteText(range, _quill2.default.sources.USER);\n if (Object.keys(formats).length > 0) {\n this.quill.formatLine(range.index, 1, formats, _quill2.default.sources.USER);\n }\n this.quill.setSelection(range.index, _quill2.default.sources.SILENT);\n this.quill.focus();\n}\n\nfunction handleEnter(range, context) {\n var _this3 = this;\n\n if (range.length > 0) {\n this.quill.scroll.deleteAt(range.index, range.length); // So we do not trigger text-change\n }\n var lineFormats = Object.keys(context.format).reduce(function (lineFormats, format) {\n if (_parchment2.default.query(format, _parchment2.default.Scope.BLOCK) && !Array.isArray(context.format[format])) {\n lineFormats[format] = context.format[format];\n }\n return lineFormats;\n }, {});\n this.quill.insertText(range.index, '\\n', lineFormats, _quill2.default.sources.USER);\n // Earlier scroll.deleteAt might have messed up our selection,\n // so insertText's built in selection preservation is not reliable\n this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n this.quill.focus();\n Object.keys(context.format).forEach(function (name) {\n if (lineFormats[name] != null) return;\n if (Array.isArray(context.format[name])) return;\n if (name === 'link') return;\n _this3.quill.format(name, context.format[name], _quill2.default.sources.USER);\n });\n}\n\nfunction makeCodeBlockHandler(indent) {\n return {\n key: Keyboard.keys.TAB,\n shiftKey: !indent,\n format: { 'code-block': true },\n handler: function handler(range) {\n var CodeBlock = _parchment2.default.query('code-block');\n var index = range.index,\n length = range.length;\n\n var _quill$scroll$descend = this.quill.scroll.descendant(CodeBlock, index),\n _quill$scroll$descend2 = _slicedToArray(_quill$scroll$descend, 2),\n block = _quill$scroll$descend2[0],\n offset = _quill$scroll$descend2[1];\n\n if (block == null) return;\n var scrollIndex = this.quill.getIndex(block);\n var start = block.newlineIndex(offset, true) + 1;\n var end = block.newlineIndex(scrollIndex + offset + length);\n var lines = block.domNode.textContent.slice(start, end).split('\\n');\n offset = 0;\n lines.forEach(function (line, i) {\n if (indent) {\n block.insertAt(start + offset, CodeBlock.TAB);\n offset += CodeBlock.TAB.length;\n if (i === 0) {\n index += CodeBlock.TAB.length;\n } else {\n length += CodeBlock.TAB.length;\n }\n } else if (line.startsWith(CodeBlock.TAB)) {\n block.deleteAt(start + offset, CodeBlock.TAB.length);\n offset -= CodeBlock.TAB.length;\n if (i === 0) {\n index -= CodeBlock.TAB.length;\n } else {\n length -= CodeBlock.TAB.length;\n }\n }\n offset += line.length + 1;\n });\n this.quill.update(_quill2.default.sources.USER);\n this.quill.setSelection(index, length, _quill2.default.sources.SILENT);\n }\n };\n}\n\nfunction makeFormatHandler(format) {\n return {\n key: format[0].toUpperCase(),\n shortKey: true,\n handler: function handler(range, context) {\n this.quill.format(format, !context.format[format], _quill2.default.sources.USER);\n }\n };\n}\n\nfunction normalize(binding) {\n if (typeof binding === 'string' || typeof binding === 'number') {\n return normalize({ key: binding });\n }\n if ((typeof binding === 'undefined' ? 'undefined' : _typeof(binding)) === 'object') {\n binding = (0, _clone2.default)(binding, false);\n }\n if (typeof binding.key === 'string') {\n if (Keyboard.keys[binding.key.toUpperCase()] != null) {\n binding.key = Keyboard.keys[binding.key.toUpperCase()];\n } else if (binding.key.length === 1) {\n binding.key = binding.key.toUpperCase().charCodeAt(0);\n } else {\n return null;\n }\n }\n if (binding.shortKey) {\n binding[SHORTKEY] = binding.shortKey;\n delete binding.shortKey;\n }\n return binding;\n}\n\nexports.default = Keyboard;\nexports.SHORTKEY = SHORTKEY;\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _text = __webpack_require__(7);\n\nvar _text2 = _interopRequireDefault(_text);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Cursor = function (_Parchment$Embed) {\n _inherits(Cursor, _Parchment$Embed);\n\n _createClass(Cursor, null, [{\n key: 'value',\n value: function value() {\n return undefined;\n }\n }]);\n\n function Cursor(domNode, selection) {\n _classCallCheck(this, Cursor);\n\n var _this = _possibleConstructorReturn(this, (Cursor.__proto__ || Object.getPrototypeOf(Cursor)).call(this, domNode));\n\n _this.selection = selection;\n _this.textNode = document.createTextNode(Cursor.CONTENTS);\n _this.domNode.appendChild(_this.textNode);\n _this._length = 0;\n return _this;\n }\n\n _createClass(Cursor, [{\n key: 'detach',\n value: function detach() {\n // super.detach() will also clear domNode.__blot\n if (this.parent != null) this.parent.removeChild(this);\n }\n }, {\n key: 'format',\n value: function format(name, value) {\n if (this._length !== 0) {\n return _get(Cursor.prototype.__proto__ || Object.getPrototypeOf(Cursor.prototype), 'format', this).call(this, name, value);\n }\n var target = this,\n index = 0;\n while (target != null && target.statics.scope !== _parchment2.default.Scope.BLOCK_BLOT) {\n index += target.offset(target.parent);\n target = target.parent;\n }\n if (target != null) {\n this._length = Cursor.CONTENTS.length;\n target.optimize();\n target.formatAt(index, Cursor.CONTENTS.length, name, value);\n this._length = 0;\n }\n }\n }, {\n key: 'index',\n value: function index(node, offset) {\n if (node === this.textNode) return 0;\n return _get(Cursor.prototype.__proto__ || Object.getPrototypeOf(Cursor.prototype), 'index', this).call(this, node, offset);\n }\n }, {\n key: 'length',\n value: function length() {\n return this._length;\n }\n }, {\n key: 'position',\n value: function position() {\n return [this.textNode, this.textNode.data.length];\n }\n }, {\n key: 'remove',\n value: function remove() {\n _get(Cursor.prototype.__proto__ || Object.getPrototypeOf(Cursor.prototype), 'remove', this).call(this);\n this.parent = null;\n }\n }, {\n key: 'restore',\n value: function restore() {\n if (this.selection.composing || this.parent == null) return;\n var textNode = this.textNode;\n var range = this.selection.getNativeRange();\n var restoreText = void 0,\n start = void 0,\n end = void 0;\n if (range != null && range.start.node === textNode && range.end.node === textNode) {\n var _ref = [textNode, range.start.offset, range.end.offset];\n restoreText = _ref[0];\n start = _ref[1];\n end = _ref[2];\n }\n // Link format will insert text outside of anchor tag\n while (this.domNode.lastChild != null && this.domNode.lastChild !== this.textNode) {\n this.domNode.parentNode.insertBefore(this.domNode.lastChild, this.domNode);\n }\n if (this.textNode.data !== Cursor.CONTENTS) {\n var text = this.textNode.data.split(Cursor.CONTENTS).join('');\n if (this.next instanceof _text2.default) {\n restoreText = this.next.domNode;\n this.next.insertAt(0, text);\n this.textNode.data = Cursor.CONTENTS;\n } else {\n this.textNode.data = text;\n this.parent.insertBefore(_parchment2.default.create(this.textNode), this);\n this.textNode = document.createTextNode(Cursor.CONTENTS);\n this.domNode.appendChild(this.textNode);\n }\n }\n this.remove();\n if (start != null) {\n var _map = [start, end].map(function (offset) {\n return Math.max(0, Math.min(restoreText.data.length, offset - 1));\n });\n\n var _map2 = _slicedToArray(_map, 2);\n\n start = _map2[0];\n end = _map2[1];\n\n return {\n startNode: restoreText,\n startOffset: start,\n endNode: restoreText,\n endOffset: end\n };\n }\n }\n }, {\n key: 'update',\n value: function update(mutations, context) {\n var _this2 = this;\n\n if (mutations.some(function (mutation) {\n return mutation.type === 'characterData' && mutation.target === _this2.textNode;\n })) {\n var range = this.restore();\n if (range) context.range = range;\n }\n }\n }, {\n key: 'value',\n value: function value() {\n return '';\n }\n }]);\n\n return Cursor;\n}(_parchment2.default.Embed);\n\nCursor.blotName = 'cursor';\nCursor.className = 'ql-cursor';\nCursor.tagName = 'span';\nCursor.CONTENTS = '\\uFEFF'; // Zero width no break space\n\n\nexports.default = Cursor;\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Container = function (_Parchment$Container) {\n _inherits(Container, _Parchment$Container);\n\n function Container() {\n _classCallCheck(this, Container);\n\n return _possibleConstructorReturn(this, (Container.__proto__ || Object.getPrototypeOf(Container)).apply(this, arguments));\n }\n\n return Container;\n}(_parchment2.default.Container);\n\nContainer.allowedChildren = [_block2.default, _block.BlockEmbed, Container];\n\nexports.default = Container;\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ColorStyle = exports.ColorClass = exports.ColorAttributor = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ColorAttributor = function (_Parchment$Attributor) {\n _inherits(ColorAttributor, _Parchment$Attributor);\n\n function ColorAttributor() {\n _classCallCheck(this, ColorAttributor);\n\n return _possibleConstructorReturn(this, (ColorAttributor.__proto__ || Object.getPrototypeOf(ColorAttributor)).apply(this, arguments));\n }\n\n _createClass(ColorAttributor, [{\n key: 'value',\n value: function value(domNode) {\n var value = _get(ColorAttributor.prototype.__proto__ || Object.getPrototypeOf(ColorAttributor.prototype), 'value', this).call(this, domNode);\n if (!value.startsWith('rgb(')) return value;\n value = value.replace(/^[^\\d]+/, '').replace(/[^\\d]+$/, '');\n return '#' + value.split(',').map(function (component) {\n return ('00' + parseInt(component).toString(16)).slice(-2);\n }).join('');\n }\n }]);\n\n return ColorAttributor;\n}(_parchment2.default.Attributor.Style);\n\nvar ColorClass = new _parchment2.default.Attributor.Class('color', 'ql-color', {\n scope: _parchment2.default.Scope.INLINE\n});\nvar ColorStyle = new ColorAttributor('color', 'color', {\n scope: _parchment2.default.Scope.INLINE\n});\n\nexports.ColorAttributor = ColorAttributor;\nexports.ColorClass = ColorClass;\nexports.ColorStyle = ColorStyle;\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.sanitize = exports.default = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Link = function (_Inline) {\n _inherits(Link, _Inline);\n\n function Link() {\n _classCallCheck(this, Link);\n\n return _possibleConstructorReturn(this, (Link.__proto__ || Object.getPrototypeOf(Link)).apply(this, arguments));\n }\n\n _createClass(Link, [{\n key: 'format',\n value: function format(name, value) {\n if (name !== this.statics.blotName || !value) return _get(Link.prototype.__proto__ || Object.getPrototypeOf(Link.prototype), 'format', this).call(this, name, value);\n value = this.constructor.sanitize(value);\n this.domNode.setAttribute('href', value);\n }\n }], [{\n key: 'create',\n value: function create(value) {\n var node = _get(Link.__proto__ || Object.getPrototypeOf(Link), 'create', this).call(this, value);\n value = this.sanitize(value);\n node.setAttribute('href', value);\n node.setAttribute('rel', 'noopener noreferrer');\n node.setAttribute('target', '_blank');\n return node;\n }\n }, {\n key: 'formats',\n value: function formats(domNode) {\n return domNode.getAttribute('href');\n }\n }, {\n key: 'sanitize',\n value: function sanitize(url) {\n return _sanitize(url, this.PROTOCOL_WHITELIST) ? url : this.SANITIZED_URL;\n }\n }]);\n\n return Link;\n}(_inline2.default);\n\nLink.blotName = 'link';\nLink.tagName = 'A';\nLink.SANITIZED_URL = 'about:blank';\nLink.PROTOCOL_WHITELIST = ['http', 'https', 'mailto', 'tel'];\n\nfunction _sanitize(url, protocols) {\n var anchor = document.createElement('a');\n anchor.href = url;\n var protocol = anchor.href.slice(0, anchor.href.indexOf(':'));\n return protocols.indexOf(protocol) > -1;\n}\n\nexports.default = Link;\nexports.sanitize = _sanitize;\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _keyboard = __webpack_require__(23);\n\nvar _keyboard2 = _interopRequireDefault(_keyboard);\n\nvar _dropdown = __webpack_require__(107);\n\nvar _dropdown2 = _interopRequireDefault(_dropdown);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar optionsCounter = 0;\n\nfunction toggleAriaAttribute(element, attribute) {\n element.setAttribute(attribute, !(element.getAttribute(attribute) === 'true'));\n}\n\nvar Picker = function () {\n function Picker(select) {\n var _this = this;\n\n _classCallCheck(this, Picker);\n\n this.select = select;\n this.container = document.createElement('span');\n this.buildPicker();\n this.select.style.display = 'none';\n this.select.parentNode.insertBefore(this.container, this.select);\n\n this.label.addEventListener('mousedown', function () {\n _this.togglePicker();\n });\n this.label.addEventListener('keydown', function (event) {\n switch (event.keyCode) {\n // Allows the \"Enter\" key to open the picker\n case _keyboard2.default.keys.ENTER:\n _this.togglePicker();\n break;\n\n // Allows the \"Escape\" key to close the picker\n case _keyboard2.default.keys.ESCAPE:\n _this.escape();\n event.preventDefault();\n break;\n default:\n }\n });\n this.select.addEventListener('change', this.update.bind(this));\n }\n\n _createClass(Picker, [{\n key: 'togglePicker',\n value: function togglePicker() {\n this.container.classList.toggle('ql-expanded');\n // Toggle aria-expanded and aria-hidden to make the picker accessible\n toggleAriaAttribute(this.label, 'aria-expanded');\n toggleAriaAttribute(this.options, 'aria-hidden');\n }\n }, {\n key: 'buildItem',\n value: function buildItem(option) {\n var _this2 = this;\n\n var item = document.createElement('span');\n item.tabIndex = '0';\n item.setAttribute('role', 'button');\n\n item.classList.add('ql-picker-item');\n if (option.hasAttribute('value')) {\n item.setAttribute('data-value', option.getAttribute('value'));\n }\n if (option.textContent) {\n item.setAttribute('data-label', option.textContent);\n }\n item.addEventListener('click', function () {\n _this2.selectItem(item, true);\n });\n item.addEventListener('keydown', function (event) {\n switch (event.keyCode) {\n // Allows the \"Enter\" key to select an item\n case _keyboard2.default.keys.ENTER:\n _this2.selectItem(item, true);\n event.preventDefault();\n break;\n\n // Allows the \"Escape\" key to close the picker\n case _keyboard2.default.keys.ESCAPE:\n _this2.escape();\n event.preventDefault();\n break;\n default:\n }\n });\n\n return item;\n }\n }, {\n key: 'buildLabel',\n value: function buildLabel() {\n var label = document.createElement('span');\n label.classList.add('ql-picker-label');\n label.innerHTML = _dropdown2.default;\n label.tabIndex = '0';\n label.setAttribute('role', 'button');\n label.setAttribute('aria-expanded', 'false');\n this.container.appendChild(label);\n return label;\n }\n }, {\n key: 'buildOptions',\n value: function buildOptions() {\n var _this3 = this;\n\n var options = document.createElement('span');\n options.classList.add('ql-picker-options');\n\n // Don't want screen readers to read this until options are visible\n options.setAttribute('aria-hidden', 'true');\n options.tabIndex = '-1';\n\n // Need a unique id for aria-controls\n options.id = 'ql-picker-options-' + optionsCounter;\n optionsCounter += 1;\n this.label.setAttribute('aria-controls', options.id);\n\n this.options = options;\n\n [].slice.call(this.select.options).forEach(function (option) {\n var item = _this3.buildItem(option);\n options.appendChild(item);\n if (option.selected === true) {\n _this3.selectItem(item);\n }\n });\n this.container.appendChild(options);\n }\n }, {\n key: 'buildPicker',\n value: function buildPicker() {\n var _this4 = this;\n\n [].slice.call(this.select.attributes).forEach(function (item) {\n _this4.container.setAttribute(item.name, item.value);\n });\n this.container.classList.add('ql-picker');\n this.label = this.buildLabel();\n this.buildOptions();\n }\n }, {\n key: 'escape',\n value: function escape() {\n var _this5 = this;\n\n // Close menu and return focus to trigger label\n this.close();\n // Need setTimeout for accessibility to ensure that the browser executes\n // focus on the next process thread and after any DOM content changes\n setTimeout(function () {\n return _this5.label.focus();\n }, 1);\n }\n }, {\n key: 'close',\n value: function close() {\n this.container.classList.remove('ql-expanded');\n this.label.setAttribute('aria-expanded', 'false');\n this.options.setAttribute('aria-hidden', 'true');\n }\n }, {\n key: 'selectItem',\n value: function selectItem(item) {\n var trigger = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var selected = this.container.querySelector('.ql-selected');\n if (item === selected) return;\n if (selected != null) {\n selected.classList.remove('ql-selected');\n }\n if (item == null) return;\n item.classList.add('ql-selected');\n this.select.selectedIndex = [].indexOf.call(item.parentNode.children, item);\n if (item.hasAttribute('data-value')) {\n this.label.setAttribute('data-value', item.getAttribute('data-value'));\n } else {\n this.label.removeAttribute('data-value');\n }\n if (item.hasAttribute('data-label')) {\n this.label.setAttribute('data-label', item.getAttribute('data-label'));\n } else {\n this.label.removeAttribute('data-label');\n }\n if (trigger) {\n if (typeof Event === 'function') {\n this.select.dispatchEvent(new Event('change'));\n } else if ((typeof Event === 'undefined' ? 'undefined' : _typeof(Event)) === 'object') {\n // IE11\n var event = document.createEvent('Event');\n event.initEvent('change', true, true);\n this.select.dispatchEvent(event);\n }\n this.close();\n }\n }\n }, {\n key: 'update',\n value: function update() {\n var option = void 0;\n if (this.select.selectedIndex > -1) {\n var item = this.container.querySelector('.ql-picker-options').children[this.select.selectedIndex];\n option = this.select.options[this.select.selectedIndex];\n this.selectItem(item);\n } else {\n this.selectItem(null);\n }\n var isActive = option != null && option !== this.select.querySelector('option[selected]');\n this.label.classList.toggle('ql-active', isActive);\n }\n }]);\n\n return Picker;\n}();\n\nexports.default = Picker;\n\n/***/ }),\n/* 29 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _break = __webpack_require__(16);\n\nvar _break2 = _interopRequireDefault(_break);\n\nvar _container = __webpack_require__(25);\n\nvar _container2 = _interopRequireDefault(_container);\n\nvar _cursor = __webpack_require__(24);\n\nvar _cursor2 = _interopRequireDefault(_cursor);\n\nvar _embed = __webpack_require__(35);\n\nvar _embed2 = _interopRequireDefault(_embed);\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nvar _scroll = __webpack_require__(22);\n\nvar _scroll2 = _interopRequireDefault(_scroll);\n\nvar _text = __webpack_require__(7);\n\nvar _text2 = _interopRequireDefault(_text);\n\nvar _clipboard = __webpack_require__(55);\n\nvar _clipboard2 = _interopRequireDefault(_clipboard);\n\nvar _history = __webpack_require__(42);\n\nvar _history2 = _interopRequireDefault(_history);\n\nvar _keyboard = __webpack_require__(23);\n\nvar _keyboard2 = _interopRequireDefault(_keyboard);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n_quill2.default.register({\n 'blots/block': _block2.default,\n 'blots/block/embed': _block.BlockEmbed,\n 'blots/break': _break2.default,\n 'blots/container': _container2.default,\n 'blots/cursor': _cursor2.default,\n 'blots/embed': _embed2.default,\n 'blots/inline': _inline2.default,\n 'blots/scroll': _scroll2.default,\n 'blots/text': _text2.default,\n\n 'modules/clipboard': _clipboard2.default,\n 'modules/history': _history2.default,\n 'modules/keyboard': _keyboard2.default\n});\n\n_parchment2.default.register(_block2.default, _break2.default, _cursor2.default, _inline2.default, _scroll2.default, _text2.default);\n\nexports.default = _quill2.default;\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Registry = __webpack_require__(1);\nvar ShadowBlot = /** @class */ (function () {\n function ShadowBlot(domNode) {\n this.domNode = domNode;\n // @ts-ignore\n this.domNode[Registry.DATA_KEY] = { blot: this };\n }\n Object.defineProperty(ShadowBlot.prototype, \"statics\", {\n // Hack for accessing inherited static methods\n get: function () {\n return this.constructor;\n },\n enumerable: true,\n configurable: true\n });\n ShadowBlot.create = function (value) {\n if (this.tagName == null) {\n throw new Registry.ParchmentError('Blot definition missing tagName');\n }\n var node;\n if (Array.isArray(this.tagName)) {\n if (typeof value === 'string') {\n value = value.toUpperCase();\n if (parseInt(value).toString() === value) {\n value = parseInt(value);\n }\n }\n if (typeof value === 'number') {\n node = document.createElement(this.tagName[value - 1]);\n }\n else if (this.tagName.indexOf(value) > -1) {\n node = document.createElement(value);\n }\n else {\n node = document.createElement(this.tagName[0]);\n }\n }\n else {\n node = document.createElement(this.tagName);\n }\n if (this.className) {\n node.classList.add(this.className);\n }\n return node;\n };\n ShadowBlot.prototype.attach = function () {\n if (this.parent != null) {\n this.scroll = this.parent.scroll;\n }\n };\n ShadowBlot.prototype.clone = function () {\n var domNode = this.domNode.cloneNode(false);\n return Registry.create(domNode);\n };\n ShadowBlot.prototype.detach = function () {\n if (this.parent != null)\n this.parent.removeChild(this);\n // @ts-ignore\n delete this.domNode[Registry.DATA_KEY];\n };\n ShadowBlot.prototype.deleteAt = function (index, length) {\n var blot = this.isolate(index, length);\n blot.remove();\n };\n ShadowBlot.prototype.formatAt = function (index, length, name, value) {\n var blot = this.isolate(index, length);\n if (Registry.query(name, Registry.Scope.BLOT) != null && value) {\n blot.wrap(name, value);\n }\n else if (Registry.query(name, Registry.Scope.ATTRIBUTE) != null) {\n var parent = Registry.create(this.statics.scope);\n blot.wrap(parent);\n parent.format(name, value);\n }\n };\n ShadowBlot.prototype.insertAt = function (index, value, def) {\n var blot = def == null ? Registry.create('text', value) : Registry.create(value, def);\n var ref = this.split(index);\n this.parent.insertBefore(blot, ref);\n };\n ShadowBlot.prototype.insertInto = function (parentBlot, refBlot) {\n if (refBlot === void 0) { refBlot = null; }\n if (this.parent != null) {\n this.parent.children.remove(this);\n }\n var refDomNode = null;\n parentBlot.children.insertBefore(this, refBlot);\n if (refBlot != null) {\n refDomNode = refBlot.domNode;\n }\n if (this.domNode.parentNode != parentBlot.domNode ||\n this.domNode.nextSibling != refDomNode) {\n parentBlot.domNode.insertBefore(this.domNode, refDomNode);\n }\n this.parent = parentBlot;\n this.attach();\n };\n ShadowBlot.prototype.isolate = function (index, length) {\n var target = this.split(index);\n target.split(length);\n return target;\n };\n ShadowBlot.prototype.length = function () {\n return 1;\n };\n ShadowBlot.prototype.offset = function (root) {\n if (root === void 0) { root = this.parent; }\n if (this.parent == null || this == root)\n return 0;\n return this.parent.children.offset(this) + this.parent.offset(root);\n };\n ShadowBlot.prototype.optimize = function (context) {\n // TODO clean up once we use WeakMap\n // @ts-ignore\n if (this.domNode[Registry.DATA_KEY] != null) {\n // @ts-ignore\n delete this.domNode[Registry.DATA_KEY].mutations;\n }\n };\n ShadowBlot.prototype.remove = function () {\n if (this.domNode.parentNode != null) {\n this.domNode.parentNode.removeChild(this.domNode);\n }\n this.detach();\n };\n ShadowBlot.prototype.replace = function (target) {\n if (target.parent == null)\n return;\n target.parent.insertBefore(this, target.next);\n target.remove();\n };\n ShadowBlot.prototype.replaceWith = function (name, value) {\n var replacement = typeof name === 'string' ? Registry.create(name, value) : name;\n replacement.replace(this);\n return replacement;\n };\n ShadowBlot.prototype.split = function (index, force) {\n return index === 0 ? this : this.next;\n };\n ShadowBlot.prototype.update = function (mutations, context) {\n // Nothing to do by default\n };\n ShadowBlot.prototype.wrap = function (name, value) {\n var wrapper = typeof name === 'string' ? Registry.create(name, value) : name;\n if (this.parent != null) {\n this.parent.insertBefore(wrapper, this.next);\n }\n wrapper.appendChild(this);\n return wrapper;\n };\n ShadowBlot.blotName = 'abstract';\n return ShadowBlot;\n}());\nexports.default = ShadowBlot;\n\n\n/***/ }),\n/* 31 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = __webpack_require__(12);\nvar class_1 = __webpack_require__(32);\nvar style_1 = __webpack_require__(33);\nvar Registry = __webpack_require__(1);\nvar AttributorStore = /** @class */ (function () {\n function AttributorStore(domNode) {\n this.attributes = {};\n this.domNode = domNode;\n this.build();\n }\n AttributorStore.prototype.attribute = function (attribute, value) {\n // verb\n if (value) {\n if (attribute.add(this.domNode, value)) {\n if (attribute.value(this.domNode) != null) {\n this.attributes[attribute.attrName] = attribute;\n }\n else {\n delete this.attributes[attribute.attrName];\n }\n }\n }\n else {\n attribute.remove(this.domNode);\n delete this.attributes[attribute.attrName];\n }\n };\n AttributorStore.prototype.build = function () {\n var _this = this;\n this.attributes = {};\n var attributes = attributor_1.default.keys(this.domNode);\n var classes = class_1.default.keys(this.domNode);\n var styles = style_1.default.keys(this.domNode);\n attributes\n .concat(classes)\n .concat(styles)\n .forEach(function (name) {\n var attr = Registry.query(name, Registry.Scope.ATTRIBUTE);\n if (attr instanceof attributor_1.default) {\n _this.attributes[attr.attrName] = attr;\n }\n });\n };\n AttributorStore.prototype.copy = function (target) {\n var _this = this;\n Object.keys(this.attributes).forEach(function (key) {\n var value = _this.attributes[key].value(_this.domNode);\n target.format(key, value);\n });\n };\n AttributorStore.prototype.move = function (target) {\n var _this = this;\n this.copy(target);\n Object.keys(this.attributes).forEach(function (key) {\n _this.attributes[key].remove(_this.domNode);\n });\n this.attributes = {};\n };\n AttributorStore.prototype.values = function () {\n var _this = this;\n return Object.keys(this.attributes).reduce(function (attributes, name) {\n attributes[name] = _this.attributes[name].value(_this.domNode);\n return attributes;\n }, {});\n };\n return AttributorStore;\n}());\nexports.default = AttributorStore;\n\n\n/***/ }),\n/* 32 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = __webpack_require__(12);\nfunction match(node, prefix) {\n var className = node.getAttribute('class') || '';\n return className.split(/\\s+/).filter(function (name) {\n return name.indexOf(prefix + \"-\") === 0;\n });\n}\nvar ClassAttributor = /** @class */ (function (_super) {\n __extends(ClassAttributor, _super);\n function ClassAttributor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ClassAttributor.keys = function (node) {\n return (node.getAttribute('class') || '').split(/\\s+/).map(function (name) {\n return name\n .split('-')\n .slice(0, -1)\n .join('-');\n });\n };\n ClassAttributor.prototype.add = function (node, value) {\n if (!this.canAdd(node, value))\n return false;\n this.remove(node);\n node.classList.add(this.keyName + \"-\" + value);\n return true;\n };\n ClassAttributor.prototype.remove = function (node) {\n var matches = match(node, this.keyName);\n matches.forEach(function (name) {\n node.classList.remove(name);\n });\n if (node.classList.length === 0) {\n node.removeAttribute('class');\n }\n };\n ClassAttributor.prototype.value = function (node) {\n var result = match(node, this.keyName)[0] || '';\n var value = result.slice(this.keyName.length + 1); // +1 for hyphen\n return this.canAdd(node, value) ? value : '';\n };\n return ClassAttributor;\n}(attributor_1.default));\nexports.default = ClassAttributor;\n\n\n/***/ }),\n/* 33 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = __webpack_require__(12);\nfunction camelize(name) {\n var parts = name.split('-');\n var rest = parts\n .slice(1)\n .map(function (part) {\n return part[0].toUpperCase() + part.slice(1);\n })\n .join('');\n return parts[0] + rest;\n}\nvar StyleAttributor = /** @class */ (function (_super) {\n __extends(StyleAttributor, _super);\n function StyleAttributor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n StyleAttributor.keys = function (node) {\n return (node.getAttribute('style') || '').split(';').map(function (value) {\n var arr = value.split(':');\n return arr[0].trim();\n });\n };\n StyleAttributor.prototype.add = function (node, value) {\n if (!this.canAdd(node, value))\n return false;\n // @ts-ignore\n node.style[camelize(this.keyName)] = value;\n return true;\n };\n StyleAttributor.prototype.remove = function (node) {\n // @ts-ignore\n node.style[camelize(this.keyName)] = '';\n if (!node.getAttribute('style')) {\n node.removeAttribute('style');\n }\n };\n StyleAttributor.prototype.value = function (node) {\n // @ts-ignore\n var value = node.style[camelize(this.keyName)];\n return this.canAdd(node, value) ? value : '';\n };\n return StyleAttributor;\n}(attributor_1.default));\nexports.default = StyleAttributor;\n\n\n/***/ }),\n/* 34 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Theme = function () {\n function Theme(quill, options) {\n _classCallCheck(this, Theme);\n\n this.quill = quill;\n this.options = options;\n this.modules = {};\n }\n\n _createClass(Theme, [{\n key: 'init',\n value: function init() {\n var _this = this;\n\n Object.keys(this.options.modules).forEach(function (name) {\n if (_this.modules[name] == null) {\n _this.addModule(name);\n }\n });\n }\n }, {\n key: 'addModule',\n value: function addModule(name) {\n var moduleClass = this.quill.constructor.import('modules/' + name);\n this.modules[name] = new moduleClass(this.quill, this.options.modules[name] || {});\n return this.modules[name];\n }\n }]);\n\n return Theme;\n}();\n\nTheme.DEFAULTS = {\n modules: {}\n};\nTheme.themes = {\n 'default': Theme\n};\n\nexports.default = Theme;\n\n/***/ }),\n/* 35 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _text = __webpack_require__(7);\n\nvar _text2 = _interopRequireDefault(_text);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar GUARD_TEXT = '\\uFEFF';\n\nvar Embed = function (_Parchment$Embed) {\n _inherits(Embed, _Parchment$Embed);\n\n function Embed(node) {\n _classCallCheck(this, Embed);\n\n var _this = _possibleConstructorReturn(this, (Embed.__proto__ || Object.getPrototypeOf(Embed)).call(this, node));\n\n _this.contentNode = document.createElement('span');\n _this.contentNode.setAttribute('contenteditable', false);\n [].slice.call(_this.domNode.childNodes).forEach(function (childNode) {\n _this.contentNode.appendChild(childNode);\n });\n _this.leftGuard = document.createTextNode(GUARD_TEXT);\n _this.rightGuard = document.createTextNode(GUARD_TEXT);\n _this.domNode.appendChild(_this.leftGuard);\n _this.domNode.appendChild(_this.contentNode);\n _this.domNode.appendChild(_this.rightGuard);\n return _this;\n }\n\n _createClass(Embed, [{\n key: 'index',\n value: function index(node, offset) {\n if (node === this.leftGuard) return 0;\n if (node === this.rightGuard) return 1;\n return _get(Embed.prototype.__proto__ || Object.getPrototypeOf(Embed.prototype), 'index', this).call(this, node, offset);\n }\n }, {\n key: 'restore',\n value: function restore(node) {\n var range = void 0,\n textNode = void 0;\n var text = node.data.split(GUARD_TEXT).join('');\n if (node === this.leftGuard) {\n if (this.prev instanceof _text2.default) {\n var prevLength = this.prev.length();\n this.prev.insertAt(prevLength, text);\n range = {\n startNode: this.prev.domNode,\n startOffset: prevLength + text.length\n };\n } else {\n textNode = document.createTextNode(text);\n this.parent.insertBefore(_parchment2.default.create(textNode), this);\n range = {\n startNode: textNode,\n startOffset: text.length\n };\n }\n } else if (node === this.rightGuard) {\n if (this.next instanceof _text2.default) {\n this.next.insertAt(0, text);\n range = {\n startNode: this.next.domNode,\n startOffset: text.length\n };\n } else {\n textNode = document.createTextNode(text);\n this.parent.insertBefore(_parchment2.default.create(textNode), this.next);\n range = {\n startNode: textNode,\n startOffset: text.length\n };\n }\n }\n node.data = GUARD_TEXT;\n return range;\n }\n }, {\n key: 'update',\n value: function update(mutations, context) {\n var _this2 = this;\n\n mutations.forEach(function (mutation) {\n if (mutation.type === 'characterData' && (mutation.target === _this2.leftGuard || mutation.target === _this2.rightGuard)) {\n var range = _this2.restore(mutation.target);\n if (range) context.range = range;\n }\n });\n }\n }]);\n\n return Embed;\n}(_parchment2.default.Embed);\n\nexports.default = Embed;\n\n/***/ }),\n/* 36 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.AlignStyle = exports.AlignClass = exports.AlignAttribute = undefined;\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar config = {\n scope: _parchment2.default.Scope.BLOCK,\n whitelist: ['right', 'center', 'justify']\n};\n\nvar AlignAttribute = new _parchment2.default.Attributor.Attribute('align', 'align', config);\nvar AlignClass = new _parchment2.default.Attributor.Class('align', 'ql-align', config);\nvar AlignStyle = new _parchment2.default.Attributor.Style('align', 'text-align', config);\n\nexports.AlignAttribute = AlignAttribute;\nexports.AlignClass = AlignClass;\nexports.AlignStyle = AlignStyle;\n\n/***/ }),\n/* 37 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.BackgroundStyle = exports.BackgroundClass = undefined;\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _color = __webpack_require__(26);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar BackgroundClass = new _parchment2.default.Attributor.Class('background', 'ql-bg', {\n scope: _parchment2.default.Scope.INLINE\n});\nvar BackgroundStyle = new _color.ColorAttributor('background', 'background-color', {\n scope: _parchment2.default.Scope.INLINE\n});\n\nexports.BackgroundClass = BackgroundClass;\nexports.BackgroundStyle = BackgroundStyle;\n\n/***/ }),\n/* 38 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.DirectionStyle = exports.DirectionClass = exports.DirectionAttribute = undefined;\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar config = {\n scope: _parchment2.default.Scope.BLOCK,\n whitelist: ['rtl']\n};\n\nvar DirectionAttribute = new _parchment2.default.Attributor.Attribute('direction', 'dir', config);\nvar DirectionClass = new _parchment2.default.Attributor.Class('direction', 'ql-direction', config);\nvar DirectionStyle = new _parchment2.default.Attributor.Style('direction', 'direction', config);\n\nexports.DirectionAttribute = DirectionAttribute;\nexports.DirectionClass = DirectionClass;\nexports.DirectionStyle = DirectionStyle;\n\n/***/ }),\n/* 39 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.FontClass = exports.FontStyle = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar config = {\n scope: _parchment2.default.Scope.INLINE,\n whitelist: ['serif', 'monospace']\n};\n\nvar FontClass = new _parchment2.default.Attributor.Class('font', 'ql-font', config);\n\nvar FontStyleAttributor = function (_Parchment$Attributor) {\n _inherits(FontStyleAttributor, _Parchment$Attributor);\n\n function FontStyleAttributor() {\n _classCallCheck(this, FontStyleAttributor);\n\n return _possibleConstructorReturn(this, (FontStyleAttributor.__proto__ || Object.getPrototypeOf(FontStyleAttributor)).apply(this, arguments));\n }\n\n _createClass(FontStyleAttributor, [{\n key: 'value',\n value: function value(node) {\n return _get(FontStyleAttributor.prototype.__proto__ || Object.getPrototypeOf(FontStyleAttributor.prototype), 'value', this).call(this, node).replace(/[\"']/g, '');\n }\n }]);\n\n return FontStyleAttributor;\n}(_parchment2.default.Attributor.Style);\n\nvar FontStyle = new FontStyleAttributor('font', 'font-family', config);\n\nexports.FontStyle = FontStyle;\nexports.FontClass = FontClass;\n\n/***/ }),\n/* 40 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SizeStyle = exports.SizeClass = undefined;\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar SizeClass = new _parchment2.default.Attributor.Class('size', 'ql-size', {\n scope: _parchment2.default.Scope.INLINE,\n whitelist: ['small', 'large', 'huge']\n});\nvar SizeStyle = new _parchment2.default.Attributor.Style('size', 'font-size', {\n scope: _parchment2.default.Scope.INLINE,\n whitelist: ['10px', '18px', '32px']\n});\n\nexports.SizeClass = SizeClass;\nexports.SizeStyle = SizeStyle;\n\n/***/ }),\n/* 41 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = {\n 'align': {\n '': __webpack_require__(76),\n 'center': __webpack_require__(77),\n 'right': __webpack_require__(78),\n 'justify': __webpack_require__(79)\n },\n 'background': __webpack_require__(80),\n 'blockquote': __webpack_require__(81),\n 'bold': __webpack_require__(82),\n 'clean': __webpack_require__(83),\n 'code': __webpack_require__(58),\n 'code-block': __webpack_require__(58),\n 'color': __webpack_require__(84),\n 'direction': {\n '': __webpack_require__(85),\n 'rtl': __webpack_require__(86)\n },\n 'float': {\n 'center': __webpack_require__(87),\n 'full': __webpack_require__(88),\n 'left': __webpack_require__(89),\n 'right': __webpack_require__(90)\n },\n 'formula': __webpack_require__(91),\n 'header': {\n '1': __webpack_require__(92),\n '2': __webpack_require__(93)\n },\n 'italic': __webpack_require__(94),\n 'image': __webpack_require__(95),\n 'indent': {\n '+1': __webpack_require__(96),\n '-1': __webpack_require__(97)\n },\n 'link': __webpack_require__(98),\n 'list': {\n 'ordered': __webpack_require__(99),\n 'bullet': __webpack_require__(100),\n 'check': __webpack_require__(101)\n },\n 'script': {\n 'sub': __webpack_require__(102),\n 'super': __webpack_require__(103)\n },\n 'strike': __webpack_require__(104),\n 'underline': __webpack_require__(105),\n 'video': __webpack_require__(106)\n};\n\n/***/ }),\n/* 42 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getLastChangeIndex = exports.default = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar History = function (_Module) {\n _inherits(History, _Module);\n\n function History(quill, options) {\n _classCallCheck(this, History);\n\n var _this = _possibleConstructorReturn(this, (History.__proto__ || Object.getPrototypeOf(History)).call(this, quill, options));\n\n _this.lastRecorded = 0;\n _this.ignoreChange = false;\n _this.clear();\n _this.quill.on(_quill2.default.events.EDITOR_CHANGE, function (eventName, delta, oldDelta, source) {\n if (eventName !== _quill2.default.events.TEXT_CHANGE || _this.ignoreChange) return;\n if (!_this.options.userOnly || source === _quill2.default.sources.USER) {\n _this.record(delta, oldDelta);\n } else {\n _this.transform(delta);\n }\n });\n _this.quill.keyboard.addBinding({ key: 'Z', shortKey: true }, _this.undo.bind(_this));\n _this.quill.keyboard.addBinding({ key: 'Z', shortKey: true, shiftKey: true }, _this.redo.bind(_this));\n if (/Win/i.test(navigator.platform)) {\n _this.quill.keyboard.addBinding({ key: 'Y', shortKey: true }, _this.redo.bind(_this));\n }\n return _this;\n }\n\n _createClass(History, [{\n key: 'change',\n value: function change(source, dest) {\n if (this.stack[source].length === 0) return;\n var delta = this.stack[source].pop();\n this.stack[dest].push(delta);\n this.lastRecorded = 0;\n this.ignoreChange = true;\n this.quill.updateContents(delta[source], _quill2.default.sources.USER);\n this.ignoreChange = false;\n var index = getLastChangeIndex(delta[source]);\n this.quill.setSelection(index);\n }\n }, {\n key: 'clear',\n value: function clear() {\n this.stack = { undo: [], redo: [] };\n }\n }, {\n key: 'cutoff',\n value: function cutoff() {\n this.lastRecorded = 0;\n }\n }, {\n key: 'record',\n value: function record(changeDelta, oldDelta) {\n if (changeDelta.ops.length === 0) return;\n this.stack.redo = [];\n var undoDelta = this.quill.getContents().diff(oldDelta);\n var timestamp = Date.now();\n if (this.lastRecorded + this.options.delay > timestamp && this.stack.undo.length > 0) {\n var delta = this.stack.undo.pop();\n undoDelta = undoDelta.compose(delta.undo);\n changeDelta = delta.redo.compose(changeDelta);\n } else {\n this.lastRecorded = timestamp;\n }\n this.stack.undo.push({\n redo: changeDelta,\n undo: undoDelta\n });\n if (this.stack.undo.length > this.options.maxStack) {\n this.stack.undo.shift();\n }\n }\n }, {\n key: 'redo',\n value: function redo() {\n this.change('redo', 'undo');\n }\n }, {\n key: 'transform',\n value: function transform(delta) {\n this.stack.undo.forEach(function (change) {\n change.undo = delta.transform(change.undo, true);\n change.redo = delta.transform(change.redo, true);\n });\n this.stack.redo.forEach(function (change) {\n change.undo = delta.transform(change.undo, true);\n change.redo = delta.transform(change.redo, true);\n });\n }\n }, {\n key: 'undo',\n value: function undo() {\n this.change('undo', 'redo');\n }\n }]);\n\n return History;\n}(_module2.default);\n\nHistory.DEFAULTS = {\n delay: 1000,\n maxStack: 100,\n userOnly: false\n};\n\nfunction endsWithNewlineChange(delta) {\n var lastOp = delta.ops[delta.ops.length - 1];\n if (lastOp == null) return false;\n if (lastOp.insert != null) {\n return typeof lastOp.insert === 'string' && lastOp.insert.endsWith('\\n');\n }\n if (lastOp.attributes != null) {\n return Object.keys(lastOp.attributes).some(function (attr) {\n return _parchment2.default.query(attr, _parchment2.default.Scope.BLOCK) != null;\n });\n }\n return false;\n}\n\nfunction getLastChangeIndex(delta) {\n var deleteLength = delta.reduce(function (length, op) {\n length += op.delete || 0;\n return length;\n }, 0);\n var changeIndex = delta.length() - deleteLength;\n if (endsWithNewlineChange(delta)) {\n changeIndex -= 1;\n }\n return changeIndex;\n}\n\nexports.default = History;\nexports.getLastChangeIndex = getLastChangeIndex;\n\n/***/ }),\n/* 43 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.BaseTooltip = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _emitter = __webpack_require__(8);\n\nvar _emitter2 = _interopRequireDefault(_emitter);\n\nvar _keyboard = __webpack_require__(23);\n\nvar _keyboard2 = _interopRequireDefault(_keyboard);\n\nvar _theme = __webpack_require__(34);\n\nvar _theme2 = _interopRequireDefault(_theme);\n\nvar _colorPicker = __webpack_require__(59);\n\nvar _colorPicker2 = _interopRequireDefault(_colorPicker);\n\nvar _iconPicker = __webpack_require__(60);\n\nvar _iconPicker2 = _interopRequireDefault(_iconPicker);\n\nvar _picker = __webpack_require__(28);\n\nvar _picker2 = _interopRequireDefault(_picker);\n\nvar _tooltip = __webpack_require__(61);\n\nvar _tooltip2 = _interopRequireDefault(_tooltip);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ALIGNS = [false, 'center', 'right', 'justify'];\n\nvar COLORS = [\"#000000\", \"#e60000\", \"#ff9900\", \"#ffff00\", \"#008a00\", \"#0066cc\", \"#9933ff\", \"#ffffff\", \"#facccc\", \"#ffebcc\", \"#ffffcc\", \"#cce8cc\", \"#cce0f5\", \"#ebd6ff\", \"#bbbbbb\", \"#f06666\", \"#ffc266\", \"#ffff66\", \"#66b966\", \"#66a3e0\", \"#c285ff\", \"#888888\", \"#a10000\", \"#b26b00\", \"#b2b200\", \"#006100\", \"#0047b2\", \"#6b24b2\", \"#444444\", \"#5c0000\", \"#663d00\", \"#666600\", \"#003700\", \"#002966\", \"#3d1466\"];\n\nvar FONTS = [false, 'serif', 'monospace'];\n\nvar HEADERS = ['1', '2', '3', false];\n\nvar SIZES = ['small', false, 'large', 'huge'];\n\nvar BaseTheme = function (_Theme) {\n _inherits(BaseTheme, _Theme);\n\n function BaseTheme(quill, options) {\n _classCallCheck(this, BaseTheme);\n\n var _this = _possibleConstructorReturn(this, (BaseTheme.__proto__ || Object.getPrototypeOf(BaseTheme)).call(this, quill, options));\n\n var listener = function listener(e) {\n if (!document.body.contains(quill.root)) {\n return document.body.removeEventListener('click', listener);\n }\n if (_this.tooltip != null && !_this.tooltip.root.contains(e.target) && document.activeElement !== _this.tooltip.textbox && !_this.quill.hasFocus()) {\n _this.tooltip.hide();\n }\n if (_this.pickers != null) {\n _this.pickers.forEach(function (picker) {\n if (!picker.container.contains(e.target)) {\n picker.close();\n }\n });\n }\n };\n quill.emitter.listenDOM('click', document.body, listener);\n return _this;\n }\n\n _createClass(BaseTheme, [{\n key: 'addModule',\n value: function addModule(name) {\n var module = _get(BaseTheme.prototype.__proto__ || Object.getPrototypeOf(BaseTheme.prototype), 'addModule', this).call(this, name);\n if (name === 'toolbar') {\n this.extendToolbar(module);\n }\n return module;\n }\n }, {\n key: 'buildButtons',\n value: function buildButtons(buttons, icons) {\n buttons.forEach(function (button) {\n var className = button.getAttribute('class') || '';\n className.split(/\\s+/).forEach(function (name) {\n if (!name.startsWith('ql-')) return;\n name = name.slice('ql-'.length);\n if (icons[name] == null) return;\n if (name === 'direction') {\n button.innerHTML = icons[name][''] + icons[name]['rtl'];\n } else if (typeof icons[name] === 'string') {\n button.innerHTML = icons[name];\n } else {\n var value = button.value || '';\n if (value != null && icons[name][value]) {\n button.innerHTML = icons[name][value];\n }\n }\n });\n });\n }\n }, {\n key: 'buildPickers',\n value: function buildPickers(selects, icons) {\n var _this2 = this;\n\n this.pickers = selects.map(function (select) {\n if (select.classList.contains('ql-align')) {\n if (select.querySelector('option') == null) {\n fillSelect(select, ALIGNS);\n }\n return new _iconPicker2.default(select, icons.align);\n } else if (select.classList.contains('ql-background') || select.classList.contains('ql-color')) {\n var format = select.classList.contains('ql-background') ? 'background' : 'color';\n if (select.querySelector('option') == null) {\n fillSelect(select, COLORS, format === 'background' ? '#ffffff' : '#000000');\n }\n return new _colorPicker2.default(select, icons[format]);\n } else {\n if (select.querySelector('option') == null) {\n if (select.classList.contains('ql-font')) {\n fillSelect(select, FONTS);\n } else if (select.classList.contains('ql-header')) {\n fillSelect(select, HEADERS);\n } else if (select.classList.contains('ql-size')) {\n fillSelect(select, SIZES);\n }\n }\n return new _picker2.default(select);\n }\n });\n var update = function update() {\n _this2.pickers.forEach(function (picker) {\n picker.update();\n });\n };\n this.quill.on(_emitter2.default.events.EDITOR_CHANGE, update);\n }\n }]);\n\n return BaseTheme;\n}(_theme2.default);\n\nBaseTheme.DEFAULTS = (0, _extend2.default)(true, {}, _theme2.default.DEFAULTS, {\n modules: {\n toolbar: {\n handlers: {\n formula: function formula() {\n this.quill.theme.tooltip.edit('formula');\n },\n image: function image() {\n var _this3 = this;\n\n var fileInput = this.container.querySelector('input.ql-image[type=file]');\n if (fileInput == null) {\n fileInput = document.createElement('input');\n fileInput.setAttribute('type', 'file');\n fileInput.setAttribute('accept', 'image/png, image/gif, image/jpeg, image/bmp, image/x-icon');\n fileInput.classList.add('ql-image');\n fileInput.addEventListener('change', function () {\n if (fileInput.files != null && fileInput.files[0] != null) {\n var reader = new FileReader();\n reader.onload = function (e) {\n var range = _this3.quill.getSelection(true);\n _this3.quill.updateContents(new _quillDelta2.default().retain(range.index).delete(range.length).insert({ image: e.target.result }), _emitter2.default.sources.USER);\n _this3.quill.setSelection(range.index + 1, _emitter2.default.sources.SILENT);\n fileInput.value = \"\";\n };\n reader.readAsDataURL(fileInput.files[0]);\n }\n });\n this.container.appendChild(fileInput);\n }\n fileInput.click();\n },\n video: function video() {\n this.quill.theme.tooltip.edit('video');\n }\n }\n }\n }\n});\n\nvar BaseTooltip = function (_Tooltip) {\n _inherits(BaseTooltip, _Tooltip);\n\n function BaseTooltip(quill, boundsContainer) {\n _classCallCheck(this, BaseTooltip);\n\n var _this4 = _possibleConstructorReturn(this, (BaseTooltip.__proto__ || Object.getPrototypeOf(BaseTooltip)).call(this, quill, boundsContainer));\n\n _this4.textbox = _this4.root.querySelector('input[type=\"text\"]');\n _this4.listen();\n return _this4;\n }\n\n _createClass(BaseTooltip, [{\n key: 'listen',\n value: function listen() {\n var _this5 = this;\n\n this.textbox.addEventListener('keydown', function (event) {\n if (_keyboard2.default.match(event, 'enter')) {\n _this5.save();\n event.preventDefault();\n } else if (_keyboard2.default.match(event, 'escape')) {\n _this5.cancel();\n event.preventDefault();\n }\n });\n }\n }, {\n key: 'cancel',\n value: function cancel() {\n this.hide();\n }\n }, {\n key: 'edit',\n value: function edit() {\n var mode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'link';\n var preview = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n this.root.classList.remove('ql-hidden');\n this.root.classList.add('ql-editing');\n if (preview != null) {\n this.textbox.value = preview;\n } else if (mode !== this.root.getAttribute('data-mode')) {\n this.textbox.value = '';\n }\n this.position(this.quill.getBounds(this.quill.selection.savedRange));\n this.textbox.select();\n this.textbox.setAttribute('placeholder', this.textbox.getAttribute('data-' + mode) || '');\n this.root.setAttribute('data-mode', mode);\n }\n }, {\n key: 'restoreFocus',\n value: function restoreFocus() {\n var scrollTop = this.quill.scrollingContainer.scrollTop;\n this.quill.focus();\n this.quill.scrollingContainer.scrollTop = scrollTop;\n }\n }, {\n key: 'save',\n value: function save() {\n var value = this.textbox.value;\n switch (this.root.getAttribute('data-mode')) {\n case 'link':\n {\n var scrollTop = this.quill.root.scrollTop;\n if (this.linkRange) {\n this.quill.formatText(this.linkRange, 'link', value, _emitter2.default.sources.USER);\n delete this.linkRange;\n } else {\n this.restoreFocus();\n this.quill.format('link', value, _emitter2.default.sources.USER);\n }\n this.quill.root.scrollTop = scrollTop;\n break;\n }\n case 'video':\n {\n value = extractVideoUrl(value);\n } // eslint-disable-next-line no-fallthrough\n case 'formula':\n {\n if (!value) break;\n var range = this.quill.getSelection(true);\n if (range != null) {\n var index = range.index + range.length;\n this.quill.insertEmbed(index, this.root.getAttribute('data-mode'), value, _emitter2.default.sources.USER);\n if (this.root.getAttribute('data-mode') === 'formula') {\n this.quill.insertText(index + 1, ' ', _emitter2.default.sources.USER);\n }\n this.quill.setSelection(index + 2, _emitter2.default.sources.USER);\n }\n break;\n }\n default:\n }\n this.textbox.value = '';\n this.hide();\n }\n }]);\n\n return BaseTooltip;\n}(_tooltip2.default);\n\nfunction extractVideoUrl(url) {\n var match = url.match(/^(?:(https?):\\/\\/)?(?:(?:www|m)\\.)?youtube\\.com\\/watch.*v=([a-zA-Z0-9_-]+)/) || url.match(/^(?:(https?):\\/\\/)?(?:(?:www|m)\\.)?youtu\\.be\\/([a-zA-Z0-9_-]+)/);\n if (match) {\n return (match[1] || 'https') + '://www.youtube.com/embed/' + match[2] + '?showinfo=0';\n }\n if (match = url.match(/^(?:(https?):\\/\\/)?(?:www\\.)?vimeo\\.com\\/(\\d+)/)) {\n // eslint-disable-line no-cond-assign\n return (match[1] || 'https') + '://player.vimeo.com/video/' + match[2] + '/';\n }\n return url;\n}\n\nfunction fillSelect(select, values) {\n var defaultValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n values.forEach(function (value) {\n var option = document.createElement('option');\n if (value === defaultValue) {\n option.setAttribute('selected', 'selected');\n } else {\n option.setAttribute('value', value);\n }\n select.appendChild(option);\n });\n}\n\nexports.BaseTooltip = BaseTooltip;\nexports.default = BaseTheme;\n\n/***/ }),\n/* 44 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar LinkedList = /** @class */ (function () {\n function LinkedList() {\n this.head = this.tail = null;\n this.length = 0;\n }\n LinkedList.prototype.append = function () {\n var nodes = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n nodes[_i] = arguments[_i];\n }\n this.insertBefore(nodes[0], null);\n if (nodes.length > 1) {\n this.append.apply(this, nodes.slice(1));\n }\n };\n LinkedList.prototype.contains = function (node) {\n var cur, next = this.iterator();\n while ((cur = next())) {\n if (cur === node)\n return true;\n }\n return false;\n };\n LinkedList.prototype.insertBefore = function (node, refNode) {\n if (!node)\n return;\n node.next = refNode;\n if (refNode != null) {\n node.prev = refNode.prev;\n if (refNode.prev != null) {\n refNode.prev.next = node;\n }\n refNode.prev = node;\n if (refNode === this.head) {\n this.head = node;\n }\n }\n else if (this.tail != null) {\n this.tail.next = node;\n node.prev = this.tail;\n this.tail = node;\n }\n else {\n node.prev = null;\n this.head = this.tail = node;\n }\n this.length += 1;\n };\n LinkedList.prototype.offset = function (target) {\n var index = 0, cur = this.head;\n while (cur != null) {\n if (cur === target)\n return index;\n index += cur.length();\n cur = cur.next;\n }\n return -1;\n };\n LinkedList.prototype.remove = function (node) {\n if (!this.contains(node))\n return;\n if (node.prev != null)\n node.prev.next = node.next;\n if (node.next != null)\n node.next.prev = node.prev;\n if (node === this.head)\n this.head = node.next;\n if (node === this.tail)\n this.tail = node.prev;\n this.length -= 1;\n };\n LinkedList.prototype.iterator = function (curNode) {\n if (curNode === void 0) { curNode = this.head; }\n // TODO use yield when we can\n return function () {\n var ret = curNode;\n if (curNode != null)\n curNode = curNode.next;\n return ret;\n };\n };\n LinkedList.prototype.find = function (index, inclusive) {\n if (inclusive === void 0) { inclusive = false; }\n var cur, next = this.iterator();\n while ((cur = next())) {\n var length = cur.length();\n if (index < length ||\n (inclusive && index === length && (cur.next == null || cur.next.length() !== 0))) {\n return [cur, index];\n }\n index -= length;\n }\n return [null, 0];\n };\n LinkedList.prototype.forEach = function (callback) {\n var cur, next = this.iterator();\n while ((cur = next())) {\n callback(cur);\n }\n };\n LinkedList.prototype.forEachAt = function (index, length, callback) {\n if (length <= 0)\n return;\n var _a = this.find(index), startNode = _a[0], offset = _a[1];\n var cur, curIndex = index - offset, next = this.iterator(startNode);\n while ((cur = next()) && curIndex < index + length) {\n var curLength = cur.length();\n if (index > curIndex) {\n callback(cur, index - curIndex, Math.min(length, curIndex + curLength - index));\n }\n else {\n callback(cur, 0, Math.min(curLength, index + length - curIndex));\n }\n curIndex += curLength;\n }\n };\n LinkedList.prototype.map = function (callback) {\n return this.reduce(function (memo, cur) {\n memo.push(callback(cur));\n return memo;\n }, []);\n };\n LinkedList.prototype.reduce = function (callback, memo) {\n var cur, next = this.iterator();\n while ((cur = next())) {\n memo = callback(memo, cur);\n }\n return memo;\n };\n return LinkedList;\n}());\nexports.default = LinkedList;\n\n\n/***/ }),\n/* 45 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar container_1 = __webpack_require__(17);\nvar Registry = __webpack_require__(1);\nvar OBSERVER_CONFIG = {\n attributes: true,\n characterData: true,\n characterDataOldValue: true,\n childList: true,\n subtree: true,\n};\nvar MAX_OPTIMIZE_ITERATIONS = 100;\nvar ScrollBlot = /** @class */ (function (_super) {\n __extends(ScrollBlot, _super);\n function ScrollBlot(node) {\n var _this = _super.call(this, node) || this;\n _this.scroll = _this;\n _this.observer = new MutationObserver(function (mutations) {\n _this.update(mutations);\n });\n _this.observer.observe(_this.domNode, OBSERVER_CONFIG);\n _this.attach();\n return _this;\n }\n ScrollBlot.prototype.detach = function () {\n _super.prototype.detach.call(this);\n this.observer.disconnect();\n };\n ScrollBlot.prototype.deleteAt = function (index, length) {\n this.update();\n if (index === 0 && length === this.length()) {\n this.children.forEach(function (child) {\n child.remove();\n });\n }\n else {\n _super.prototype.deleteAt.call(this, index, length);\n }\n };\n ScrollBlot.prototype.formatAt = function (index, length, name, value) {\n this.update();\n _super.prototype.formatAt.call(this, index, length, name, value);\n };\n ScrollBlot.prototype.insertAt = function (index, value, def) {\n this.update();\n _super.prototype.insertAt.call(this, index, value, def);\n };\n ScrollBlot.prototype.optimize = function (mutations, context) {\n var _this = this;\n if (mutations === void 0) { mutations = []; }\n if (context === void 0) { context = {}; }\n _super.prototype.optimize.call(this, context);\n // We must modify mutations directly, cannot make copy and then modify\n var records = [].slice.call(this.observer.takeRecords());\n // Array.push currently seems to be implemented by a non-tail recursive function\n // so we cannot just mutations.push.apply(mutations, this.observer.takeRecords());\n while (records.length > 0)\n mutations.push(records.pop());\n // TODO use WeakMap\n var mark = function (blot, markParent) {\n if (markParent === void 0) { markParent = true; }\n if (blot == null || blot === _this)\n return;\n if (blot.domNode.parentNode == null)\n return;\n // @ts-ignore\n if (blot.domNode[Registry.DATA_KEY].mutations == null) {\n // @ts-ignore\n blot.domNode[Registry.DATA_KEY].mutations = [];\n }\n if (markParent)\n mark(blot.parent);\n };\n var optimize = function (blot) {\n // Post-order traversal\n if (\n // @ts-ignore\n blot.domNode[Registry.DATA_KEY] == null ||\n // @ts-ignore\n blot.domNode[Registry.DATA_KEY].mutations == null) {\n return;\n }\n if (blot instanceof container_1.default) {\n blot.children.forEach(optimize);\n }\n blot.optimize(context);\n };\n var remaining = mutations;\n for (var i = 0; remaining.length > 0; i += 1) {\n if (i >= MAX_OPTIMIZE_ITERATIONS) {\n throw new Error('[Parchment] Maximum optimize iterations reached');\n }\n remaining.forEach(function (mutation) {\n var blot = Registry.find(mutation.target, true);\n if (blot == null)\n return;\n if (blot.domNode === mutation.target) {\n if (mutation.type === 'childList') {\n mark(Registry.find(mutation.previousSibling, false));\n [].forEach.call(mutation.addedNodes, function (node) {\n var child = Registry.find(node, false);\n mark(child, false);\n if (child instanceof container_1.default) {\n child.children.forEach(function (grandChild) {\n mark(grandChild, false);\n });\n }\n });\n }\n else if (mutation.type === 'attributes') {\n mark(blot.prev);\n }\n }\n mark(blot);\n });\n this.children.forEach(optimize);\n remaining = [].slice.call(this.observer.takeRecords());\n records = remaining.slice();\n while (records.length > 0)\n mutations.push(records.pop());\n }\n };\n ScrollBlot.prototype.update = function (mutations, context) {\n var _this = this;\n if (context === void 0) { context = {}; }\n mutations = mutations || this.observer.takeRecords();\n // TODO use WeakMap\n mutations\n .map(function (mutation) {\n var blot = Registry.find(mutation.target, true);\n if (blot == null)\n return null;\n // @ts-ignore\n if (blot.domNode[Registry.DATA_KEY].mutations == null) {\n // @ts-ignore\n blot.domNode[Registry.DATA_KEY].mutations = [mutation];\n return blot;\n }\n else {\n // @ts-ignore\n blot.domNode[Registry.DATA_KEY].mutations.push(mutation);\n return null;\n }\n })\n .forEach(function (blot) {\n if (blot == null ||\n blot === _this ||\n //@ts-ignore\n blot.domNode[Registry.DATA_KEY] == null)\n return;\n // @ts-ignore\n blot.update(blot.domNode[Registry.DATA_KEY].mutations || [], context);\n });\n // @ts-ignore\n if (this.domNode[Registry.DATA_KEY].mutations != null) {\n // @ts-ignore\n _super.prototype.update.call(this, this.domNode[Registry.DATA_KEY].mutations, context);\n }\n this.optimize(mutations, context);\n };\n ScrollBlot.blotName = 'scroll';\n ScrollBlot.defaultChild = 'block';\n ScrollBlot.scope = Registry.Scope.BLOCK_BLOT;\n ScrollBlot.tagName = 'DIV';\n return ScrollBlot;\n}(container_1.default));\nexports.default = ScrollBlot;\n\n\n/***/ }),\n/* 46 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar format_1 = __webpack_require__(18);\nvar Registry = __webpack_require__(1);\n// Shallow object comparison\nfunction isEqual(obj1, obj2) {\n if (Object.keys(obj1).length !== Object.keys(obj2).length)\n return false;\n // @ts-ignore\n for (var prop in obj1) {\n // @ts-ignore\n if (obj1[prop] !== obj2[prop])\n return false;\n }\n return true;\n}\nvar InlineBlot = /** @class */ (function (_super) {\n __extends(InlineBlot, _super);\n function InlineBlot() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n InlineBlot.formats = function (domNode) {\n if (domNode.tagName === InlineBlot.tagName)\n return undefined;\n return _super.formats.call(this, domNode);\n };\n InlineBlot.prototype.format = function (name, value) {\n var _this = this;\n if (name === this.statics.blotName && !value) {\n this.children.forEach(function (child) {\n if (!(child instanceof format_1.default)) {\n child = child.wrap(InlineBlot.blotName, true);\n }\n _this.attributes.copy(child);\n });\n this.unwrap();\n }\n else {\n _super.prototype.format.call(this, name, value);\n }\n };\n InlineBlot.prototype.formatAt = function (index, length, name, value) {\n if (this.formats()[name] != null || Registry.query(name, Registry.Scope.ATTRIBUTE)) {\n var blot = this.isolate(index, length);\n blot.format(name, value);\n }\n else {\n _super.prototype.formatAt.call(this, index, length, name, value);\n }\n };\n InlineBlot.prototype.optimize = function (context) {\n _super.prototype.optimize.call(this, context);\n var formats = this.formats();\n if (Object.keys(formats).length === 0) {\n return this.unwrap(); // unformatted span\n }\n var next = this.next;\n if (next instanceof InlineBlot && next.prev === this && isEqual(formats, next.formats())) {\n next.moveChildren(this);\n next.remove();\n }\n };\n InlineBlot.blotName = 'inline';\n InlineBlot.scope = Registry.Scope.INLINE_BLOT;\n InlineBlot.tagName = 'SPAN';\n return InlineBlot;\n}(format_1.default));\nexports.default = InlineBlot;\n\n\n/***/ }),\n/* 47 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar format_1 = __webpack_require__(18);\nvar Registry = __webpack_require__(1);\nvar BlockBlot = /** @class */ (function (_super) {\n __extends(BlockBlot, _super);\n function BlockBlot() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n BlockBlot.formats = function (domNode) {\n var tagName = Registry.query(BlockBlot.blotName).tagName;\n if (domNode.tagName === tagName)\n return undefined;\n return _super.formats.call(this, domNode);\n };\n BlockBlot.prototype.format = function (name, value) {\n if (Registry.query(name, Registry.Scope.BLOCK) == null) {\n return;\n }\n else if (name === this.statics.blotName && !value) {\n this.replaceWith(BlockBlot.blotName);\n }\n else {\n _super.prototype.format.call(this, name, value);\n }\n };\n BlockBlot.prototype.formatAt = function (index, length, name, value) {\n if (Registry.query(name, Registry.Scope.BLOCK) != null) {\n this.format(name, value);\n }\n else {\n _super.prototype.formatAt.call(this, index, length, name, value);\n }\n };\n BlockBlot.prototype.insertAt = function (index, value, def) {\n if (def == null || Registry.query(value, Registry.Scope.INLINE) != null) {\n // Insert text or inline\n _super.prototype.insertAt.call(this, index, value, def);\n }\n else {\n var after = this.split(index);\n var blot = Registry.create(value, def);\n after.parent.insertBefore(blot, after);\n }\n };\n BlockBlot.prototype.update = function (mutations, context) {\n if (navigator.userAgent.match(/Trident/)) {\n this.build();\n }\n else {\n _super.prototype.update.call(this, mutations, context);\n }\n };\n BlockBlot.blotName = 'block';\n BlockBlot.scope = Registry.Scope.BLOCK_BLOT;\n BlockBlot.tagName = 'P';\n return BlockBlot;\n}(format_1.default));\nexports.default = BlockBlot;\n\n\n/***/ }),\n/* 48 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar leaf_1 = __webpack_require__(19);\nvar EmbedBlot = /** @class */ (function (_super) {\n __extends(EmbedBlot, _super);\n function EmbedBlot() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n EmbedBlot.formats = function (domNode) {\n return undefined;\n };\n EmbedBlot.prototype.format = function (name, value) {\n // super.formatAt wraps, which is what we want in general,\n // but this allows subclasses to overwrite for formats\n // that just apply to particular embeds\n _super.prototype.formatAt.call(this, 0, this.length(), name, value);\n };\n EmbedBlot.prototype.formatAt = function (index, length, name, value) {\n if (index === 0 && length === this.length()) {\n this.format(name, value);\n }\n else {\n _super.prototype.formatAt.call(this, index, length, name, value);\n }\n };\n EmbedBlot.prototype.formats = function () {\n return this.statics.formats(this.domNode);\n };\n return EmbedBlot;\n}(leaf_1.default));\nexports.default = EmbedBlot;\n\n\n/***/ }),\n/* 49 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar leaf_1 = __webpack_require__(19);\nvar Registry = __webpack_require__(1);\nvar TextBlot = /** @class */ (function (_super) {\n __extends(TextBlot, _super);\n function TextBlot(node) {\n var _this = _super.call(this, node) || this;\n _this.text = _this.statics.value(_this.domNode);\n return _this;\n }\n TextBlot.create = function (value) {\n return document.createTextNode(value);\n };\n TextBlot.value = function (domNode) {\n var text = domNode.data;\n // @ts-ignore\n if (text['normalize'])\n text = text['normalize']();\n return text;\n };\n TextBlot.prototype.deleteAt = function (index, length) {\n this.domNode.data = this.text = this.text.slice(0, index) + this.text.slice(index + length);\n };\n TextBlot.prototype.index = function (node, offset) {\n if (this.domNode === node) {\n return offset;\n }\n return -1;\n };\n TextBlot.prototype.insertAt = function (index, value, def) {\n if (def == null) {\n this.text = this.text.slice(0, index) + value + this.text.slice(index);\n this.domNode.data = this.text;\n }\n else {\n _super.prototype.insertAt.call(this, index, value, def);\n }\n };\n TextBlot.prototype.length = function () {\n return this.text.length;\n };\n TextBlot.prototype.optimize = function (context) {\n _super.prototype.optimize.call(this, context);\n this.text = this.statics.value(this.domNode);\n if (this.text.length === 0) {\n this.remove();\n }\n else if (this.next instanceof TextBlot && this.next.prev === this) {\n this.insertAt(this.length(), this.next.value());\n this.next.remove();\n }\n };\n TextBlot.prototype.position = function (index, inclusive) {\n if (inclusive === void 0) { inclusive = false; }\n return [this.domNode, index];\n };\n TextBlot.prototype.split = function (index, force) {\n if (force === void 0) { force = false; }\n if (!force) {\n if (index === 0)\n return this;\n if (index === this.length())\n return this.next;\n }\n var after = Registry.create(this.domNode.splitText(index));\n this.parent.insertBefore(after, this.next);\n this.text = this.statics.value(this.domNode);\n return after;\n };\n TextBlot.prototype.update = function (mutations, context) {\n var _this = this;\n if (mutations.some(function (mutation) {\n return mutation.type === 'characterData' && mutation.target === _this.domNode;\n })) {\n this.text = this.statics.value(this.domNode);\n }\n };\n TextBlot.prototype.value = function () {\n return this.text;\n };\n TextBlot.blotName = 'text';\n TextBlot.scope = Registry.Scope.INLINE_BLOT;\n return TextBlot;\n}(leaf_1.default));\nexports.default = TextBlot;\n\n\n/***/ }),\n/* 50 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar elem = document.createElement('div');\nelem.classList.toggle('test-class', false);\nif (elem.classList.contains('test-class')) {\n var _toggle = DOMTokenList.prototype.toggle;\n DOMTokenList.prototype.toggle = function (token, force) {\n if (arguments.length > 1 && !this.contains(token) === !force) {\n return force;\n } else {\n return _toggle.call(this, token);\n }\n };\n}\n\nif (!String.prototype.startsWith) {\n String.prototype.startsWith = function (searchString, position) {\n position = position || 0;\n return this.substr(position, searchString.length) === searchString;\n };\n}\n\nif (!String.prototype.endsWith) {\n String.prototype.endsWith = function (searchString, position) {\n var subjectString = this.toString();\n if (typeof position !== 'number' || !isFinite(position) || Math.floor(position) !== position || position > subjectString.length) {\n position = subjectString.length;\n }\n position -= searchString.length;\n var lastIndex = subjectString.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n };\n}\n\nif (!Array.prototype.find) {\n Object.defineProperty(Array.prototype, \"find\", {\n value: function value(predicate) {\n if (this === null) {\n throw new TypeError('Array.prototype.find called on null or undefined');\n }\n if (typeof predicate !== 'function') {\n throw new TypeError('predicate must be a function');\n }\n var list = Object(this);\n var length = list.length >>> 0;\n var thisArg = arguments[1];\n var value;\n\n for (var i = 0; i < length; i++) {\n value = list[i];\n if (predicate.call(thisArg, value, i, list)) {\n return value;\n }\n }\n return undefined;\n }\n });\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n // Disable resizing in Firefox\n document.execCommand(\"enableObjectResizing\", false, false);\n // Disable automatic linkifying in IE11\n document.execCommand(\"autoUrlDetect\", false, false);\n});\n\n/***/ }),\n/* 51 */\n/***/ (function(module, exports) {\n\n/**\n * This library modifies the diff-patch-match library by Neil Fraser\n * by removing the patch and match functionality and certain advanced\n * options in the diff function. The original license is as follows:\n *\n * ===\n *\n * Diff Match and Patch\n *\n * Copyright 2006 Google Inc.\n * http://code.google.com/p/google-diff-match-patch/\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n/**\n * The data structure representing a diff is an array of tuples:\n * [[DIFF_DELETE, 'Hello'], [DIFF_INSERT, 'Goodbye'], [DIFF_EQUAL, ' world.']]\n * which means: delete 'Hello', add 'Goodbye' and keep ' world.'\n */\nvar DIFF_DELETE = -1;\nvar DIFF_INSERT = 1;\nvar DIFF_EQUAL = 0;\n\n\n/**\n * Find the differences between two texts. Simplifies the problem by stripping\n * any common prefix or suffix off the texts before diffing.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {Int} cursor_pos Expected edit position in text1 (optional)\n * @return {Array} Array of diff tuples.\n */\nfunction diff_main(text1, text2, cursor_pos) {\n // Check for equality (speedup).\n if (text1 == text2) {\n if (text1) {\n return [[DIFF_EQUAL, text1]];\n }\n return [];\n }\n\n // Check cursor_pos within bounds\n if (cursor_pos < 0 || text1.length < cursor_pos) {\n cursor_pos = null;\n }\n\n // Trim off common prefix (speedup).\n var commonlength = diff_commonPrefix(text1, text2);\n var commonprefix = text1.substring(0, commonlength);\n text1 = text1.substring(commonlength);\n text2 = text2.substring(commonlength);\n\n // Trim off common suffix (speedup).\n commonlength = diff_commonSuffix(text1, text2);\n var commonsuffix = text1.substring(text1.length - commonlength);\n text1 = text1.substring(0, text1.length - commonlength);\n text2 = text2.substring(0, text2.length - commonlength);\n\n // Compute the diff on the middle block.\n var diffs = diff_compute_(text1, text2);\n\n // Restore the prefix and suffix.\n if (commonprefix) {\n diffs.unshift([DIFF_EQUAL, commonprefix]);\n }\n if (commonsuffix) {\n diffs.push([DIFF_EQUAL, commonsuffix]);\n }\n diff_cleanupMerge(diffs);\n if (cursor_pos != null) {\n diffs = fix_cursor(diffs, cursor_pos);\n }\n diffs = fix_emoji(diffs);\n return diffs;\n};\n\n\n/**\n * Find the differences between two texts. Assumes that the texts do not\n * have any common prefix or suffix.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @return {Array} Array of diff tuples.\n */\nfunction diff_compute_(text1, text2) {\n var diffs;\n\n if (!text1) {\n // Just add some text (speedup).\n return [[DIFF_INSERT, text2]];\n }\n\n if (!text2) {\n // Just delete some text (speedup).\n return [[DIFF_DELETE, text1]];\n }\n\n var longtext = text1.length > text2.length ? text1 : text2;\n var shorttext = text1.length > text2.length ? text2 : text1;\n var i = longtext.indexOf(shorttext);\n if (i != -1) {\n // Shorter text is inside the longer text (speedup).\n diffs = [[DIFF_INSERT, longtext.substring(0, i)],\n [DIFF_EQUAL, shorttext],\n [DIFF_INSERT, longtext.substring(i + shorttext.length)]];\n // Swap insertions for deletions if diff is reversed.\n if (text1.length > text2.length) {\n diffs[0][0] = diffs[2][0] = DIFF_DELETE;\n }\n return diffs;\n }\n\n if (shorttext.length == 1) {\n // Single character string.\n // After the previous speedup, the character can't be an equality.\n return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]];\n }\n\n // Check to see if the problem can be split in two.\n var hm = diff_halfMatch_(text1, text2);\n if (hm) {\n // A half-match was found, sort out the return data.\n var text1_a = hm[0];\n var text1_b = hm[1];\n var text2_a = hm[2];\n var text2_b = hm[3];\n var mid_common = hm[4];\n // Send both pairs off for separate processing.\n var diffs_a = diff_main(text1_a, text2_a);\n var diffs_b = diff_main(text1_b, text2_b);\n // Merge the results.\n return diffs_a.concat([[DIFF_EQUAL, mid_common]], diffs_b);\n }\n\n return diff_bisect_(text1, text2);\n};\n\n\n/**\n * Find the 'middle snake' of a diff, split the problem in two\n * and return the recursively constructed diff.\n * See Myers 1986 paper: An O(ND) Difference Algorithm and Its Variations.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @return {Array} Array of diff tuples.\n * @private\n */\nfunction diff_bisect_(text1, text2) {\n // Cache the text lengths to prevent multiple calls.\n var text1_length = text1.length;\n var text2_length = text2.length;\n var max_d = Math.ceil((text1_length + text2_length) / 2);\n var v_offset = max_d;\n var v_length = 2 * max_d;\n var v1 = new Array(v_length);\n var v2 = new Array(v_length);\n // Setting all elements to -1 is faster in Chrome & Firefox than mixing\n // integers and undefined.\n for (var x = 0; x < v_length; x++) {\n v1[x] = -1;\n v2[x] = -1;\n }\n v1[v_offset + 1] = 0;\n v2[v_offset + 1] = 0;\n var delta = text1_length - text2_length;\n // If the total number of characters is odd, then the front path will collide\n // with the reverse path.\n var front = (delta % 2 != 0);\n // Offsets for start and end of k loop.\n // Prevents mapping of space beyond the grid.\n var k1start = 0;\n var k1end = 0;\n var k2start = 0;\n var k2end = 0;\n for (var d = 0; d < max_d; d++) {\n // Walk the front path one step.\n for (var k1 = -d + k1start; k1 <= d - k1end; k1 += 2) {\n var k1_offset = v_offset + k1;\n var x1;\n if (k1 == -d || (k1 != d && v1[k1_offset - 1] < v1[k1_offset + 1])) {\n x1 = v1[k1_offset + 1];\n } else {\n x1 = v1[k1_offset - 1] + 1;\n }\n var y1 = x1 - k1;\n while (x1 < text1_length && y1 < text2_length &&\n text1.charAt(x1) == text2.charAt(y1)) {\n x1++;\n y1++;\n }\n v1[k1_offset] = x1;\n if (x1 > text1_length) {\n // Ran off the right of the graph.\n k1end += 2;\n } else if (y1 > text2_length) {\n // Ran off the bottom of the graph.\n k1start += 2;\n } else if (front) {\n var k2_offset = v_offset + delta - k1;\n if (k2_offset >= 0 && k2_offset < v_length && v2[k2_offset] != -1) {\n // Mirror x2 onto top-left coordinate system.\n var x2 = text1_length - v2[k2_offset];\n if (x1 >= x2) {\n // Overlap detected.\n return diff_bisectSplit_(text1, text2, x1, y1);\n }\n }\n }\n }\n\n // Walk the reverse path one step.\n for (var k2 = -d + k2start; k2 <= d - k2end; k2 += 2) {\n var k2_offset = v_offset + k2;\n var x2;\n if (k2 == -d || (k2 != d && v2[k2_offset - 1] < v2[k2_offset + 1])) {\n x2 = v2[k2_offset + 1];\n } else {\n x2 = v2[k2_offset - 1] + 1;\n }\n var y2 = x2 - k2;\n while (x2 < text1_length && y2 < text2_length &&\n text1.charAt(text1_length - x2 - 1) ==\n text2.charAt(text2_length - y2 - 1)) {\n x2++;\n y2++;\n }\n v2[k2_offset] = x2;\n if (x2 > text1_length) {\n // Ran off the left of the graph.\n k2end += 2;\n } else if (y2 > text2_length) {\n // Ran off the top of the graph.\n k2start += 2;\n } else if (!front) {\n var k1_offset = v_offset + delta - k2;\n if (k1_offset >= 0 && k1_offset < v_length && v1[k1_offset] != -1) {\n var x1 = v1[k1_offset];\n var y1 = v_offset + x1 - k1_offset;\n // Mirror x2 onto top-left coordinate system.\n x2 = text1_length - x2;\n if (x1 >= x2) {\n // Overlap detected.\n return diff_bisectSplit_(text1, text2, x1, y1);\n }\n }\n }\n }\n }\n // Diff took too long and hit the deadline or\n // number of diffs equals number of characters, no commonality at all.\n return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]];\n};\n\n\n/**\n * Given the location of the 'middle snake', split the diff in two parts\n * and recurse.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {number} x Index of split point in text1.\n * @param {number} y Index of split point in text2.\n * @return {Array} Array of diff tuples.\n */\nfunction diff_bisectSplit_(text1, text2, x, y) {\n var text1a = text1.substring(0, x);\n var text2a = text2.substring(0, y);\n var text1b = text1.substring(x);\n var text2b = text2.substring(y);\n\n // Compute both diffs serially.\n var diffs = diff_main(text1a, text2a);\n var diffsb = diff_main(text1b, text2b);\n\n return diffs.concat(diffsb);\n};\n\n\n/**\n * Determine the common prefix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the start of each\n * string.\n */\nfunction diff_commonPrefix(text1, text2) {\n // Quick check for common null cases.\n if (!text1 || !text2 || text1.charAt(0) != text2.charAt(0)) {\n return 0;\n }\n // Binary search.\n // Performance analysis: http://neil.fraser.name/news/2007/10/09/\n var pointermin = 0;\n var pointermax = Math.min(text1.length, text2.length);\n var pointermid = pointermax;\n var pointerstart = 0;\n while (pointermin < pointermid) {\n if (text1.substring(pointerstart, pointermid) ==\n text2.substring(pointerstart, pointermid)) {\n pointermin = pointermid;\n pointerstart = pointermin;\n } else {\n pointermax = pointermid;\n }\n pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n }\n return pointermid;\n};\n\n\n/**\n * Determine the common suffix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the end of each string.\n */\nfunction diff_commonSuffix(text1, text2) {\n // Quick check for common null cases.\n if (!text1 || !text2 ||\n text1.charAt(text1.length - 1) != text2.charAt(text2.length - 1)) {\n return 0;\n }\n // Binary search.\n // Performance analysis: http://neil.fraser.name/news/2007/10/09/\n var pointermin = 0;\n var pointermax = Math.min(text1.length, text2.length);\n var pointermid = pointermax;\n var pointerend = 0;\n while (pointermin < pointermid) {\n if (text1.substring(text1.length - pointermid, text1.length - pointerend) ==\n text2.substring(text2.length - pointermid, text2.length - pointerend)) {\n pointermin = pointermid;\n pointerend = pointermin;\n } else {\n pointermax = pointermid;\n }\n pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n }\n return pointermid;\n};\n\n\n/**\n * Do the two texts share a substring which is at least half the length of the\n * longer text?\n * This speedup can produce non-minimal diffs.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {Array.} Five element Array, containing the prefix of\n * text1, the suffix of text1, the prefix of text2, the suffix of\n * text2 and the common middle. Or null if there was no match.\n */\nfunction diff_halfMatch_(text1, text2) {\n var longtext = text1.length > text2.length ? text1 : text2;\n var shorttext = text1.length > text2.length ? text2 : text1;\n if (longtext.length < 4 || shorttext.length * 2 < longtext.length) {\n return null; // Pointless.\n }\n\n /**\n * Does a substring of shorttext exist within longtext such that the substring\n * is at least half the length of longtext?\n * Closure, but does not reference any external variables.\n * @param {string} longtext Longer string.\n * @param {string} shorttext Shorter string.\n * @param {number} i Start index of quarter length substring within longtext.\n * @return {Array.} Five element Array, containing the prefix of\n * longtext, the suffix of longtext, the prefix of shorttext, the suffix\n * of shorttext and the common middle. Or null if there was no match.\n * @private\n */\n function diff_halfMatchI_(longtext, shorttext, i) {\n // Start with a 1/4 length substring at position i as a seed.\n var seed = longtext.substring(i, i + Math.floor(longtext.length / 4));\n var j = -1;\n var best_common = '';\n var best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b;\n while ((j = shorttext.indexOf(seed, j + 1)) != -1) {\n var prefixLength = diff_commonPrefix(longtext.substring(i),\n shorttext.substring(j));\n var suffixLength = diff_commonSuffix(longtext.substring(0, i),\n shorttext.substring(0, j));\n if (best_common.length < suffixLength + prefixLength) {\n best_common = shorttext.substring(j - suffixLength, j) +\n shorttext.substring(j, j + prefixLength);\n best_longtext_a = longtext.substring(0, i - suffixLength);\n best_longtext_b = longtext.substring(i + prefixLength);\n best_shorttext_a = shorttext.substring(0, j - suffixLength);\n best_shorttext_b = shorttext.substring(j + prefixLength);\n }\n }\n if (best_common.length * 2 >= longtext.length) {\n return [best_longtext_a, best_longtext_b,\n best_shorttext_a, best_shorttext_b, best_common];\n } else {\n return null;\n }\n }\n\n // First check if the second quarter is the seed for a half-match.\n var hm1 = diff_halfMatchI_(longtext, shorttext,\n Math.ceil(longtext.length / 4));\n // Check again based on the third quarter.\n var hm2 = diff_halfMatchI_(longtext, shorttext,\n Math.ceil(longtext.length / 2));\n var hm;\n if (!hm1 && !hm2) {\n return null;\n } else if (!hm2) {\n hm = hm1;\n } else if (!hm1) {\n hm = hm2;\n } else {\n // Both matched. Select the longest.\n hm = hm1[4].length > hm2[4].length ? hm1 : hm2;\n }\n\n // A half-match was found, sort out the return data.\n var text1_a, text1_b, text2_a, text2_b;\n if (text1.length > text2.length) {\n text1_a = hm[0];\n text1_b = hm[1];\n text2_a = hm[2];\n text2_b = hm[3];\n } else {\n text2_a = hm[0];\n text2_b = hm[1];\n text1_a = hm[2];\n text1_b = hm[3];\n }\n var mid_common = hm[4];\n return [text1_a, text1_b, text2_a, text2_b, mid_common];\n};\n\n\n/**\n * Reorder and merge like edit sections. Merge equalities.\n * Any edit section can move as long as it doesn't cross an equality.\n * @param {Array} diffs Array of diff tuples.\n */\nfunction diff_cleanupMerge(diffs) {\n diffs.push([DIFF_EQUAL, '']); // Add a dummy entry at the end.\n var pointer = 0;\n var count_delete = 0;\n var count_insert = 0;\n var text_delete = '';\n var text_insert = '';\n var commonlength;\n while (pointer < diffs.length) {\n switch (diffs[pointer][0]) {\n case DIFF_INSERT:\n count_insert++;\n text_insert += diffs[pointer][1];\n pointer++;\n break;\n case DIFF_DELETE:\n count_delete++;\n text_delete += diffs[pointer][1];\n pointer++;\n break;\n case DIFF_EQUAL:\n // Upon reaching an equality, check for prior redundancies.\n if (count_delete + count_insert > 1) {\n if (count_delete !== 0 && count_insert !== 0) {\n // Factor out any common prefixies.\n commonlength = diff_commonPrefix(text_insert, text_delete);\n if (commonlength !== 0) {\n if ((pointer - count_delete - count_insert) > 0 &&\n diffs[pointer - count_delete - count_insert - 1][0] ==\n DIFF_EQUAL) {\n diffs[pointer - count_delete - count_insert - 1][1] +=\n text_insert.substring(0, commonlength);\n } else {\n diffs.splice(0, 0, [DIFF_EQUAL,\n text_insert.substring(0, commonlength)]);\n pointer++;\n }\n text_insert = text_insert.substring(commonlength);\n text_delete = text_delete.substring(commonlength);\n }\n // Factor out any common suffixies.\n commonlength = diff_commonSuffix(text_insert, text_delete);\n if (commonlength !== 0) {\n diffs[pointer][1] = text_insert.substring(text_insert.length -\n commonlength) + diffs[pointer][1];\n text_insert = text_insert.substring(0, text_insert.length -\n commonlength);\n text_delete = text_delete.substring(0, text_delete.length -\n commonlength);\n }\n }\n // Delete the offending records and add the merged ones.\n if (count_delete === 0) {\n diffs.splice(pointer - count_insert,\n count_delete + count_insert, [DIFF_INSERT, text_insert]);\n } else if (count_insert === 0) {\n diffs.splice(pointer - count_delete,\n count_delete + count_insert, [DIFF_DELETE, text_delete]);\n } else {\n diffs.splice(pointer - count_delete - count_insert,\n count_delete + count_insert, [DIFF_DELETE, text_delete],\n [DIFF_INSERT, text_insert]);\n }\n pointer = pointer - count_delete - count_insert +\n (count_delete ? 1 : 0) + (count_insert ? 1 : 0) + 1;\n } else if (pointer !== 0 && diffs[pointer - 1][0] == DIFF_EQUAL) {\n // Merge this equality with the previous one.\n diffs[pointer - 1][1] += diffs[pointer][1];\n diffs.splice(pointer, 1);\n } else {\n pointer++;\n }\n count_insert = 0;\n count_delete = 0;\n text_delete = '';\n text_insert = '';\n break;\n }\n }\n if (diffs[diffs.length - 1][1] === '') {\n diffs.pop(); // Remove the dummy entry at the end.\n }\n\n // Second pass: look for single edits surrounded on both sides by equalities\n // which can be shifted sideways to eliminate an equality.\n // e.g: ABAC -> ABAC\n var changes = false;\n pointer = 1;\n // Intentionally ignore the first and last element (don't need checking).\n while (pointer < diffs.length - 1) {\n if (diffs[pointer - 1][0] == DIFF_EQUAL &&\n diffs[pointer + 1][0] == DIFF_EQUAL) {\n // This is a single edit surrounded by equalities.\n if (diffs[pointer][1].substring(diffs[pointer][1].length -\n diffs[pointer - 1][1].length) == diffs[pointer - 1][1]) {\n // Shift the edit over the previous equality.\n diffs[pointer][1] = diffs[pointer - 1][1] +\n diffs[pointer][1].substring(0, diffs[pointer][1].length -\n diffs[pointer - 1][1].length);\n diffs[pointer + 1][1] = diffs[pointer - 1][1] + diffs[pointer + 1][1];\n diffs.splice(pointer - 1, 1);\n changes = true;\n } else if (diffs[pointer][1].substring(0, diffs[pointer + 1][1].length) ==\n diffs[pointer + 1][1]) {\n // Shift the edit over the next equality.\n diffs[pointer - 1][1] += diffs[pointer + 1][1];\n diffs[pointer][1] =\n diffs[pointer][1].substring(diffs[pointer + 1][1].length) +\n diffs[pointer + 1][1];\n diffs.splice(pointer + 1, 1);\n changes = true;\n }\n }\n pointer++;\n }\n // If shifts were made, the diff needs reordering and another shift sweep.\n if (changes) {\n diff_cleanupMerge(diffs);\n }\n};\n\n\nvar diff = diff_main;\ndiff.INSERT = DIFF_INSERT;\ndiff.DELETE = DIFF_DELETE;\ndiff.EQUAL = DIFF_EQUAL;\n\nmodule.exports = diff;\n\n/*\n * Modify a diff such that the cursor position points to the start of a change:\n * E.g.\n * cursor_normalize_diff([[DIFF_EQUAL, 'abc']], 1)\n * => [1, [[DIFF_EQUAL, 'a'], [DIFF_EQUAL, 'bc']]]\n * cursor_normalize_diff([[DIFF_INSERT, 'new'], [DIFF_DELETE, 'xyz']], 2)\n * => [2, [[DIFF_INSERT, 'new'], [DIFF_DELETE, 'xy'], [DIFF_DELETE, 'z']]]\n *\n * @param {Array} diffs Array of diff tuples\n * @param {Int} cursor_pos Suggested edit position. Must not be out of bounds!\n * @return {Array} A tuple [cursor location in the modified diff, modified diff]\n */\nfunction cursor_normalize_diff (diffs, cursor_pos) {\n if (cursor_pos === 0) {\n return [DIFF_EQUAL, diffs];\n }\n for (var current_pos = 0, i = 0; i < diffs.length; i++) {\n var d = diffs[i];\n if (d[0] === DIFF_DELETE || d[0] === DIFF_EQUAL) {\n var next_pos = current_pos + d[1].length;\n if (cursor_pos === next_pos) {\n return [i + 1, diffs];\n } else if (cursor_pos < next_pos) {\n // copy to prevent side effects\n diffs = diffs.slice();\n // split d into two diff changes\n var split_pos = cursor_pos - current_pos;\n var d_left = [d[0], d[1].slice(0, split_pos)];\n var d_right = [d[0], d[1].slice(split_pos)];\n diffs.splice(i, 1, d_left, d_right);\n return [i + 1, diffs];\n } else {\n current_pos = next_pos;\n }\n }\n }\n throw new Error('cursor_pos is out of bounds!')\n}\n\n/*\n * Modify a diff such that the edit position is \"shifted\" to the proposed edit location (cursor_position).\n *\n * Case 1)\n * Check if a naive shift is possible:\n * [0, X], [ 1, Y] -> [ 1, Y], [0, X] (if X + Y === Y + X)\n * [0, X], [-1, Y] -> [-1, Y], [0, X] (if X + Y === Y + X) - holds same result\n * Case 2)\n * Check if the following shifts are possible:\n * [0, 'pre'], [ 1, 'prefix'] -> [ 1, 'pre'], [0, 'pre'], [ 1, 'fix']\n * [0, 'pre'], [-1, 'prefix'] -> [-1, 'pre'], [0, 'pre'], [-1, 'fix']\n * ^ ^\n * d d_next\n *\n * @param {Array} diffs Array of diff tuples\n * @param {Int} cursor_pos Suggested edit position. Must not be out of bounds!\n * @return {Array} Array of diff tuples\n */\nfunction fix_cursor (diffs, cursor_pos) {\n var norm = cursor_normalize_diff(diffs, cursor_pos);\n var ndiffs = norm[1];\n var cursor_pointer = norm[0];\n var d = ndiffs[cursor_pointer];\n var d_next = ndiffs[cursor_pointer + 1];\n\n if (d == null) {\n // Text was deleted from end of original string,\n // cursor is now out of bounds in new string\n return diffs;\n } else if (d[0] !== DIFF_EQUAL) {\n // A modification happened at the cursor location.\n // This is the expected outcome, so we can return the original diff.\n return diffs;\n } else {\n if (d_next != null && d[1] + d_next[1] === d_next[1] + d[1]) {\n // Case 1)\n // It is possible to perform a naive shift\n ndiffs.splice(cursor_pointer, 2, d_next, d)\n return merge_tuples(ndiffs, cursor_pointer, 2)\n } else if (d_next != null && d_next[1].indexOf(d[1]) === 0) {\n // Case 2)\n // d[1] is a prefix of d_next[1]\n // We can assume that d_next[0] !== 0, since d[0] === 0\n // Shift edit locations..\n ndiffs.splice(cursor_pointer, 2, [d_next[0], d[1]], [0, d[1]]);\n var suffix = d_next[1].slice(d[1].length);\n if (suffix.length > 0) {\n ndiffs.splice(cursor_pointer + 2, 0, [d_next[0], suffix]);\n }\n return merge_tuples(ndiffs, cursor_pointer, 3)\n } else {\n // Not possible to perform any modification\n return diffs;\n }\n }\n}\n\n/*\n * Check diff did not split surrogate pairs.\n * Ex. [0, '\\uD83D'], [-1, '\\uDC36'], [1, '\\uDC2F'] -> [-1, '\\uD83D\\uDC36'], [1, '\\uD83D\\uDC2F']\n * '\\uD83D\\uDC36' === '🐶', '\\uD83D\\uDC2F' === '🐯'\n *\n * @param {Array} diffs Array of diff tuples\n * @return {Array} Array of diff tuples\n */\nfunction fix_emoji (diffs) {\n var compact = false;\n var starts_with_pair_end = function(str) {\n return str.charCodeAt(0) >= 0xDC00 && str.charCodeAt(0) <= 0xDFFF;\n }\n var ends_with_pair_start = function(str) {\n return str.charCodeAt(str.length-1) >= 0xD800 && str.charCodeAt(str.length-1) <= 0xDBFF;\n }\n for (var i = 2; i < diffs.length; i += 1) {\n if (diffs[i-2][0] === DIFF_EQUAL && ends_with_pair_start(diffs[i-2][1]) &&\n diffs[i-1][0] === DIFF_DELETE && starts_with_pair_end(diffs[i-1][1]) &&\n diffs[i][0] === DIFF_INSERT && starts_with_pair_end(diffs[i][1])) {\n compact = true;\n\n diffs[i-1][1] = diffs[i-2][1].slice(-1) + diffs[i-1][1];\n diffs[i][1] = diffs[i-2][1].slice(-1) + diffs[i][1];\n\n diffs[i-2][1] = diffs[i-2][1].slice(0, -1);\n }\n }\n if (!compact) {\n return diffs;\n }\n var fixed_diffs = [];\n for (var i = 0; i < diffs.length; i += 1) {\n if (diffs[i][1].length > 0) {\n fixed_diffs.push(diffs[i]);\n }\n }\n return fixed_diffs;\n}\n\n/*\n * Try to merge tuples with their neigbors in a given range.\n * E.g. [0, 'a'], [0, 'b'] -> [0, 'ab']\n *\n * @param {Array} diffs Array of diff tuples.\n * @param {Int} start Position of the first element to merge (diffs[start] is also merged with diffs[start - 1]).\n * @param {Int} length Number of consecutive elements to check.\n * @return {Array} Array of merged diff tuples.\n */\nfunction merge_tuples (diffs, start, length) {\n // Check from (start-1) to (start+length).\n for (var i = start + length - 1; i >= 0 && i >= start - 1; i--) {\n if (i + 1 < diffs.length) {\n var left_d = diffs[i];\n var right_d = diffs[i+1];\n if (left_d[0] === right_d[1]) {\n diffs.splice(i, 2, [left_d[0], left_d[1] + right_d[1]]);\n }\n }\n }\n return diffs;\n}\n\n\n/***/ }),\n/* 52 */\n/***/ (function(module, exports) {\n\nexports = module.exports = typeof Object.keys === 'function'\n ? Object.keys : shim;\n\nexports.shim = shim;\nfunction shim (obj) {\n var keys = [];\n for (var key in obj) keys.push(key);\n return keys;\n}\n\n\n/***/ }),\n/* 53 */\n/***/ (function(module, exports) {\n\nvar supportsArgumentsClass = (function(){\n return Object.prototype.toString.call(arguments)\n})() == '[object Arguments]';\n\nexports = module.exports = supportsArgumentsClass ? supported : unsupported;\n\nexports.supported = supported;\nfunction supported(object) {\n return Object.prototype.toString.call(object) == '[object Arguments]';\n};\n\nexports.unsupported = unsupported;\nfunction unsupported(object){\n return object &&\n typeof object == 'object' &&\n typeof object.length == 'number' &&\n Object.prototype.hasOwnProperty.call(object, 'callee') &&\n !Object.prototype.propertyIsEnumerable.call(object, 'callee') ||\n false;\n};\n\n\n/***/ }),\n/* 54 */\n/***/ (function(module, exports) {\n\n'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @api private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {Mixed} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @api private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @api public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @api public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Boolean} exists Only check if there are listeners.\n * @returns {Array|Boolean}\n * @api public\n */\nEventEmitter.prototype.listeners = function listeners(event, exists) {\n var evt = prefix ? prefix + event : event\n , available = this._events[evt];\n\n if (exists) return !!available;\n if (!available) return [];\n if (available.fn) return [available.fn];\n\n for (var i = 0, l = available.length, ee = new Array(l); i < l; i++) {\n ee[i] = available[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @api public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn The listener function.\n * @param {Mixed} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n var listener = new EE(fn, context || this)\n , evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;\n else if (!this._events[evt].fn) this._events[evt].push(listener);\n else this._events[evt] = [this._events[evt], listener];\n\n return this;\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn The listener function.\n * @param {Mixed} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n var listener = new EE(fn, context || this, true)\n , evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;\n else if (!this._events[evt].fn) this._events[evt].push(listener);\n else this._events[evt] = [this._events[evt], listener];\n\n return this;\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {Mixed} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn\n && (!once || listeners.once)\n && (!context || listeners.context === context)\n ) {\n if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn\n || (once && !listeners[i].once)\n || (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {String|Symbol} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) {\n if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n }\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// This function doesn't apply anymore.\n//\nEventEmitter.prototype.setMaxListeners = function setMaxListeners() {\n return this;\n};\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n\n\n/***/ }),\n/* 55 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.matchText = exports.matchSpacing = exports.matchNewline = exports.matchBlot = exports.matchAttributor = exports.default = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _extend2 = __webpack_require__(3);\n\nvar _extend3 = _interopRequireDefault(_extend2);\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nvar _align = __webpack_require__(36);\n\nvar _background = __webpack_require__(37);\n\nvar _code = __webpack_require__(13);\n\nvar _code2 = _interopRequireDefault(_code);\n\nvar _color = __webpack_require__(26);\n\nvar _direction = __webpack_require__(38);\n\nvar _font = __webpack_require__(39);\n\nvar _size = __webpack_require__(40);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar debug = (0, _logger2.default)('quill:clipboard');\n\nvar DOM_KEY = '__ql-matcher';\n\nvar CLIPBOARD_CONFIG = [[Node.TEXT_NODE, matchText], [Node.TEXT_NODE, matchNewline], ['br', matchBreak], [Node.ELEMENT_NODE, matchNewline], [Node.ELEMENT_NODE, matchBlot], [Node.ELEMENT_NODE, matchSpacing], [Node.ELEMENT_NODE, matchAttributor], [Node.ELEMENT_NODE, matchStyles], ['li', matchIndent], ['b', matchAlias.bind(matchAlias, 'bold')], ['i', matchAlias.bind(matchAlias, 'italic')], ['style', matchIgnore]];\n\nvar ATTRIBUTE_ATTRIBUTORS = [_align.AlignAttribute, _direction.DirectionAttribute].reduce(function (memo, attr) {\n memo[attr.keyName] = attr;\n return memo;\n}, {});\n\nvar STYLE_ATTRIBUTORS = [_align.AlignStyle, _background.BackgroundStyle, _color.ColorStyle, _direction.DirectionStyle, _font.FontStyle, _size.SizeStyle].reduce(function (memo, attr) {\n memo[attr.keyName] = attr;\n return memo;\n}, {});\n\nvar Clipboard = function (_Module) {\n _inherits(Clipboard, _Module);\n\n function Clipboard(quill, options) {\n _classCallCheck(this, Clipboard);\n\n var _this = _possibleConstructorReturn(this, (Clipboard.__proto__ || Object.getPrototypeOf(Clipboard)).call(this, quill, options));\n\n _this.quill.root.addEventListener('paste', _this.onPaste.bind(_this));\n _this.container = _this.quill.addContainer('ql-clipboard');\n _this.container.setAttribute('contenteditable', true);\n _this.container.setAttribute('tabindex', -1);\n _this.matchers = [];\n CLIPBOARD_CONFIG.concat(_this.options.matchers).forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n selector = _ref2[0],\n matcher = _ref2[1];\n\n if (!options.matchVisual && matcher === matchSpacing) return;\n _this.addMatcher(selector, matcher);\n });\n return _this;\n }\n\n _createClass(Clipboard, [{\n key: 'addMatcher',\n value: function addMatcher(selector, matcher) {\n this.matchers.push([selector, matcher]);\n }\n }, {\n key: 'convert',\n value: function convert(html) {\n if (typeof html === 'string') {\n this.container.innerHTML = html.replace(/\\>\\r?\\n +\\<'); // Remove spaces between tags\n return this.convert();\n }\n var formats = this.quill.getFormat(this.quill.selection.savedRange.index);\n if (formats[_code2.default.blotName]) {\n var text = this.container.innerText;\n this.container.innerHTML = '';\n return new _quillDelta2.default().insert(text, _defineProperty({}, _code2.default.blotName, formats[_code2.default.blotName]));\n }\n\n var _prepareMatching = this.prepareMatching(),\n _prepareMatching2 = _slicedToArray(_prepareMatching, 2),\n elementMatchers = _prepareMatching2[0],\n textMatchers = _prepareMatching2[1];\n\n var delta = traverse(this.container, elementMatchers, textMatchers);\n // Remove trailing newline\n if (deltaEndsWith(delta, '\\n') && delta.ops[delta.ops.length - 1].attributes == null) {\n delta = delta.compose(new _quillDelta2.default().retain(delta.length() - 1).delete(1));\n }\n debug.log('convert', this.container.innerHTML, delta);\n this.container.innerHTML = '';\n return delta;\n }\n }, {\n key: 'dangerouslyPasteHTML',\n value: function dangerouslyPasteHTML(index, html) {\n var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _quill2.default.sources.API;\n\n if (typeof index === 'string') {\n this.quill.setContents(this.convert(index), html);\n this.quill.setSelection(0, _quill2.default.sources.SILENT);\n } else {\n var paste = this.convert(html);\n this.quill.updateContents(new _quillDelta2.default().retain(index).concat(paste), source);\n this.quill.setSelection(index + paste.length(), _quill2.default.sources.SILENT);\n }\n }\n }, {\n key: 'onPaste',\n value: function onPaste(e) {\n var _this2 = this;\n\n if (e.defaultPrevented || !this.quill.isEnabled()) return;\n var range = this.quill.getSelection();\n var delta = new _quillDelta2.default().retain(range.index);\n var scrollTop = this.quill.scrollingContainer.scrollTop;\n this.container.focus();\n this.quill.selection.update(_quill2.default.sources.SILENT);\n setTimeout(function () {\n delta = delta.concat(_this2.convert()).delete(range.length);\n _this2.quill.updateContents(delta, _quill2.default.sources.USER);\n // range.length contributes to delta.length()\n _this2.quill.setSelection(delta.length() - range.length, _quill2.default.sources.SILENT);\n _this2.quill.scrollingContainer.scrollTop = scrollTop;\n _this2.quill.focus();\n }, 1);\n }\n }, {\n key: 'prepareMatching',\n value: function prepareMatching() {\n var _this3 = this;\n\n var elementMatchers = [],\n textMatchers = [];\n this.matchers.forEach(function (pair) {\n var _pair = _slicedToArray(pair, 2),\n selector = _pair[0],\n matcher = _pair[1];\n\n switch (selector) {\n case Node.TEXT_NODE:\n textMatchers.push(matcher);\n break;\n case Node.ELEMENT_NODE:\n elementMatchers.push(matcher);\n break;\n default:\n [].forEach.call(_this3.container.querySelectorAll(selector), function (node) {\n // TODO use weakmap\n node[DOM_KEY] = node[DOM_KEY] || [];\n node[DOM_KEY].push(matcher);\n });\n break;\n }\n });\n return [elementMatchers, textMatchers];\n }\n }]);\n\n return Clipboard;\n}(_module2.default);\n\nClipboard.DEFAULTS = {\n matchers: [],\n matchVisual: true\n};\n\nfunction applyFormat(delta, format, value) {\n if ((typeof format === 'undefined' ? 'undefined' : _typeof(format)) === 'object') {\n return Object.keys(format).reduce(function (delta, key) {\n return applyFormat(delta, key, format[key]);\n }, delta);\n } else {\n return delta.reduce(function (delta, op) {\n if (op.attributes && op.attributes[format]) {\n return delta.push(op);\n } else {\n return delta.insert(op.insert, (0, _extend3.default)({}, _defineProperty({}, format, value), op.attributes));\n }\n }, new _quillDelta2.default());\n }\n}\n\nfunction computeStyle(node) {\n if (node.nodeType !== Node.ELEMENT_NODE) return {};\n var DOM_KEY = '__ql-computed-style';\n return node[DOM_KEY] || (node[DOM_KEY] = window.getComputedStyle(node));\n}\n\nfunction deltaEndsWith(delta, text) {\n var endText = \"\";\n for (var i = delta.ops.length - 1; i >= 0 && endText.length < text.length; --i) {\n var op = delta.ops[i];\n if (typeof op.insert !== 'string') break;\n endText = op.insert + endText;\n }\n return endText.slice(-1 * text.length) === text;\n}\n\nfunction isLine(node) {\n if (node.childNodes.length === 0) return false; // Exclude embed blocks\n var style = computeStyle(node);\n return ['block', 'list-item'].indexOf(style.display) > -1;\n}\n\nfunction traverse(node, elementMatchers, textMatchers) {\n // Post-order\n if (node.nodeType === node.TEXT_NODE) {\n return textMatchers.reduce(function (delta, matcher) {\n return matcher(node, delta);\n }, new _quillDelta2.default());\n } else if (node.nodeType === node.ELEMENT_NODE) {\n return [].reduce.call(node.childNodes || [], function (delta, childNode) {\n var childrenDelta = traverse(childNode, elementMatchers, textMatchers);\n if (childNode.nodeType === node.ELEMENT_NODE) {\n childrenDelta = elementMatchers.reduce(function (childrenDelta, matcher) {\n return matcher(childNode, childrenDelta);\n }, childrenDelta);\n childrenDelta = (childNode[DOM_KEY] || []).reduce(function (childrenDelta, matcher) {\n return matcher(childNode, childrenDelta);\n }, childrenDelta);\n }\n return delta.concat(childrenDelta);\n }, new _quillDelta2.default());\n } else {\n return new _quillDelta2.default();\n }\n}\n\nfunction matchAlias(format, node, delta) {\n return applyFormat(delta, format, true);\n}\n\nfunction matchAttributor(node, delta) {\n var attributes = _parchment2.default.Attributor.Attribute.keys(node);\n var classes = _parchment2.default.Attributor.Class.keys(node);\n var styles = _parchment2.default.Attributor.Style.keys(node);\n var formats = {};\n attributes.concat(classes).concat(styles).forEach(function (name) {\n var attr = _parchment2.default.query(name, _parchment2.default.Scope.ATTRIBUTE);\n if (attr != null) {\n formats[attr.attrName] = attr.value(node);\n if (formats[attr.attrName]) return;\n }\n attr = ATTRIBUTE_ATTRIBUTORS[name];\n if (attr != null && (attr.attrName === name || attr.keyName === name)) {\n formats[attr.attrName] = attr.value(node) || undefined;\n }\n attr = STYLE_ATTRIBUTORS[name];\n if (attr != null && (attr.attrName === name || attr.keyName === name)) {\n attr = STYLE_ATTRIBUTORS[name];\n formats[attr.attrName] = attr.value(node) || undefined;\n }\n });\n if (Object.keys(formats).length > 0) {\n delta = applyFormat(delta, formats);\n }\n return delta;\n}\n\nfunction matchBlot(node, delta) {\n var match = _parchment2.default.query(node);\n if (match == null) return delta;\n if (match.prototype instanceof _parchment2.default.Embed) {\n var embed = {};\n var value = match.value(node);\n if (value != null) {\n embed[match.blotName] = value;\n delta = new _quillDelta2.default().insert(embed, match.formats(node));\n }\n } else if (typeof match.formats === 'function') {\n delta = applyFormat(delta, match.blotName, match.formats(node));\n }\n return delta;\n}\n\nfunction matchBreak(node, delta) {\n if (!deltaEndsWith(delta, '\\n')) {\n delta.insert('\\n');\n }\n return delta;\n}\n\nfunction matchIgnore() {\n return new _quillDelta2.default();\n}\n\nfunction matchIndent(node, delta) {\n var match = _parchment2.default.query(node);\n if (match == null || match.blotName !== 'list-item' || !deltaEndsWith(delta, '\\n')) {\n return delta;\n }\n var indent = -1,\n parent = node.parentNode;\n while (!parent.classList.contains('ql-clipboard')) {\n if ((_parchment2.default.query(parent) || {}).blotName === 'list') {\n indent += 1;\n }\n parent = parent.parentNode;\n }\n if (indent <= 0) return delta;\n return delta.compose(new _quillDelta2.default().retain(delta.length() - 1).retain(1, { indent: indent }));\n}\n\nfunction matchNewline(node, delta) {\n if (!deltaEndsWith(delta, '\\n')) {\n if (isLine(node) || delta.length() > 0 && node.nextSibling && isLine(node.nextSibling)) {\n delta.insert('\\n');\n }\n }\n return delta;\n}\n\nfunction matchSpacing(node, delta) {\n if (isLine(node) && node.nextElementSibling != null && !deltaEndsWith(delta, '\\n\\n')) {\n var nodeHeight = node.offsetHeight + parseFloat(computeStyle(node).marginTop) + parseFloat(computeStyle(node).marginBottom);\n if (node.nextElementSibling.offsetTop > node.offsetTop + nodeHeight * 1.5) {\n delta.insert('\\n');\n }\n }\n return delta;\n}\n\nfunction matchStyles(node, delta) {\n var formats = {};\n var style = node.style || {};\n if (style.fontStyle && computeStyle(node).fontStyle === 'italic') {\n formats.italic = true;\n }\n if (style.fontWeight && (computeStyle(node).fontWeight.startsWith('bold') || parseInt(computeStyle(node).fontWeight) >= 700)) {\n formats.bold = true;\n }\n if (Object.keys(formats).length > 0) {\n delta = applyFormat(delta, formats);\n }\n if (parseFloat(style.textIndent || 0) > 0) {\n // Could be 0.5in\n delta = new _quillDelta2.default().insert('\\t').concat(delta);\n }\n return delta;\n}\n\nfunction matchText(node, delta) {\n var text = node.data;\n // Word represents empty line with  \n if (node.parentNode.tagName === 'O:P') {\n return delta.insert(text.trim());\n }\n if (text.trim().length === 0 && node.parentNode.classList.contains('ql-clipboard')) {\n return delta;\n }\n if (!computeStyle(node.parentNode).whiteSpace.startsWith('pre')) {\n // eslint-disable-next-line func-style\n var replacer = function replacer(collapse, match) {\n match = match.replace(/[^\\u00a0]/g, ''); // \\u00a0 is nbsp;\n return match.length < 1 && collapse ? ' ' : match;\n };\n text = text.replace(/\\r\\n/g, ' ').replace(/\\n/g, ' ');\n text = text.replace(/\\s\\s+/g, replacer.bind(replacer, true)); // collapse whitespace\n if (node.previousSibling == null && isLine(node.parentNode) || node.previousSibling != null && isLine(node.previousSibling)) {\n text = text.replace(/^\\s+/, replacer.bind(replacer, false));\n }\n if (node.nextSibling == null && isLine(node.parentNode) || node.nextSibling != null && isLine(node.nextSibling)) {\n text = text.replace(/\\s+$/, replacer.bind(replacer, false));\n }\n }\n return delta.insert(text);\n}\n\nexports.default = Clipboard;\nexports.matchAttributor = matchAttributor;\nexports.matchBlot = matchBlot;\nexports.matchNewline = matchNewline;\nexports.matchSpacing = matchSpacing;\nexports.matchText = matchText;\n\n/***/ }),\n/* 56 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Bold = function (_Inline) {\n _inherits(Bold, _Inline);\n\n function Bold() {\n _classCallCheck(this, Bold);\n\n return _possibleConstructorReturn(this, (Bold.__proto__ || Object.getPrototypeOf(Bold)).apply(this, arguments));\n }\n\n _createClass(Bold, [{\n key: 'optimize',\n value: function optimize(context) {\n _get(Bold.prototype.__proto__ || Object.getPrototypeOf(Bold.prototype), 'optimize', this).call(this, context);\n if (this.domNode.tagName !== this.statics.tagName[0]) {\n this.replaceWith(this.statics.blotName);\n }\n }\n }], [{\n key: 'create',\n value: function create() {\n return _get(Bold.__proto__ || Object.getPrototypeOf(Bold), 'create', this).call(this);\n }\n }, {\n key: 'formats',\n value: function formats() {\n return true;\n }\n }]);\n\n return Bold;\n}(_inline2.default);\n\nBold.blotName = 'bold';\nBold.tagName = ['STRONG', 'B'];\n\nexports.default = Bold;\n\n/***/ }),\n/* 57 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.addControls = exports.default = undefined;\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar debug = (0, _logger2.default)('quill:toolbar');\n\nvar Toolbar = function (_Module) {\n _inherits(Toolbar, _Module);\n\n function Toolbar(quill, options) {\n _classCallCheck(this, Toolbar);\n\n var _this = _possibleConstructorReturn(this, (Toolbar.__proto__ || Object.getPrototypeOf(Toolbar)).call(this, quill, options));\n\n if (Array.isArray(_this.options.container)) {\n var container = document.createElement('div');\n addControls(container, _this.options.container);\n quill.container.parentNode.insertBefore(container, quill.container);\n _this.container = container;\n } else if (typeof _this.options.container === 'string') {\n _this.container = document.querySelector(_this.options.container);\n } else {\n _this.container = _this.options.container;\n }\n if (!(_this.container instanceof HTMLElement)) {\n var _ret;\n\n return _ret = debug.error('Container required for toolbar', _this.options), _possibleConstructorReturn(_this, _ret);\n }\n _this.container.classList.add('ql-toolbar');\n _this.controls = [];\n _this.handlers = {};\n Object.keys(_this.options.handlers).forEach(function (format) {\n _this.addHandler(format, _this.options.handlers[format]);\n });\n [].forEach.call(_this.container.querySelectorAll('button, select'), function (input) {\n _this.attach(input);\n });\n _this.quill.on(_quill2.default.events.EDITOR_CHANGE, function (type, range) {\n if (type === _quill2.default.events.SELECTION_CHANGE) {\n _this.update(range);\n }\n });\n _this.quill.on(_quill2.default.events.SCROLL_OPTIMIZE, function () {\n var _this$quill$selection = _this.quill.selection.getRange(),\n _this$quill$selection2 = _slicedToArray(_this$quill$selection, 1),\n range = _this$quill$selection2[0]; // quill.getSelection triggers update\n\n\n _this.update(range);\n });\n return _this;\n }\n\n _createClass(Toolbar, [{\n key: 'addHandler',\n value: function addHandler(format, handler) {\n this.handlers[format] = handler;\n }\n }, {\n key: 'attach',\n value: function attach(input) {\n var _this2 = this;\n\n var format = [].find.call(input.classList, function (className) {\n return className.indexOf('ql-') === 0;\n });\n if (!format) return;\n format = format.slice('ql-'.length);\n if (input.tagName === 'BUTTON') {\n input.setAttribute('type', 'button');\n }\n if (this.handlers[format] == null) {\n if (this.quill.scroll.whitelist != null && this.quill.scroll.whitelist[format] == null) {\n debug.warn('ignoring attaching to disabled format', format, input);\n return;\n }\n if (_parchment2.default.query(format) == null) {\n debug.warn('ignoring attaching to nonexistent format', format, input);\n return;\n }\n }\n var eventName = input.tagName === 'SELECT' ? 'change' : 'click';\n input.addEventListener(eventName, function (e) {\n var value = void 0;\n if (input.tagName === 'SELECT') {\n if (input.selectedIndex < 0) return;\n var selected = input.options[input.selectedIndex];\n if (selected.hasAttribute('selected')) {\n value = false;\n } else {\n value = selected.value || false;\n }\n } else {\n if (input.classList.contains('ql-active')) {\n value = false;\n } else {\n value = input.value || !input.hasAttribute('value');\n }\n e.preventDefault();\n }\n _this2.quill.focus();\n\n var _quill$selection$getR = _this2.quill.selection.getRange(),\n _quill$selection$getR2 = _slicedToArray(_quill$selection$getR, 1),\n range = _quill$selection$getR2[0];\n\n if (_this2.handlers[format] != null) {\n _this2.handlers[format].call(_this2, value);\n } else if (_parchment2.default.query(format).prototype instanceof _parchment2.default.Embed) {\n value = prompt('Enter ' + format);\n if (!value) return;\n _this2.quill.updateContents(new _quillDelta2.default().retain(range.index).delete(range.length).insert(_defineProperty({}, format, value)), _quill2.default.sources.USER);\n } else {\n _this2.quill.format(format, value, _quill2.default.sources.USER);\n }\n _this2.update(range);\n });\n // TODO use weakmap\n this.controls.push([format, input]);\n }\n }, {\n key: 'update',\n value: function update(range) {\n var formats = range == null ? {} : this.quill.getFormat(range);\n this.controls.forEach(function (pair) {\n var _pair = _slicedToArray(pair, 2),\n format = _pair[0],\n input = _pair[1];\n\n if (input.tagName === 'SELECT') {\n var option = void 0;\n if (range == null) {\n option = null;\n } else if (formats[format] == null) {\n option = input.querySelector('option[selected]');\n } else if (!Array.isArray(formats[format])) {\n var value = formats[format];\n if (typeof value === 'string') {\n value = value.replace(/\\\"/g, '\\\\\"');\n }\n option = input.querySelector('option[value=\"' + value + '\"]');\n }\n if (option == null) {\n input.value = ''; // TODO make configurable?\n input.selectedIndex = -1;\n } else {\n option.selected = true;\n }\n } else {\n if (range == null) {\n input.classList.remove('ql-active');\n } else if (input.hasAttribute('value')) {\n // both being null should match (default values)\n // '1' should match with 1 (headers)\n var isActive = formats[format] === input.getAttribute('value') || formats[format] != null && formats[format].toString() === input.getAttribute('value') || formats[format] == null && !input.getAttribute('value');\n input.classList.toggle('ql-active', isActive);\n } else {\n input.classList.toggle('ql-active', formats[format] != null);\n }\n }\n });\n }\n }]);\n\n return Toolbar;\n}(_module2.default);\n\nToolbar.DEFAULTS = {};\n\nfunction addButton(container, format, value) {\n var input = document.createElement('button');\n input.setAttribute('type', 'button');\n input.classList.add('ql-' + format);\n if (value != null) {\n input.value = value;\n }\n container.appendChild(input);\n}\n\nfunction addControls(container, groups) {\n if (!Array.isArray(groups[0])) {\n groups = [groups];\n }\n groups.forEach(function (controls) {\n var group = document.createElement('span');\n group.classList.add('ql-formats');\n controls.forEach(function (control) {\n if (typeof control === 'string') {\n addButton(group, control);\n } else {\n var format = Object.keys(control)[0];\n var value = control[format];\n if (Array.isArray(value)) {\n addSelect(group, format, value);\n } else {\n addButton(group, format, value);\n }\n }\n });\n container.appendChild(group);\n });\n}\n\nfunction addSelect(container, format, values) {\n var input = document.createElement('select');\n input.classList.add('ql-' + format);\n values.forEach(function (value) {\n var option = document.createElement('option');\n if (value !== false) {\n option.setAttribute('value', value);\n } else {\n option.setAttribute('selected', 'selected');\n }\n input.appendChild(option);\n });\n container.appendChild(input);\n}\n\nToolbar.DEFAULTS = {\n container: null,\n handlers: {\n clean: function clean() {\n var _this3 = this;\n\n var range = this.quill.getSelection();\n if (range == null) return;\n if (range.length == 0) {\n var formats = this.quill.getFormat();\n Object.keys(formats).forEach(function (name) {\n // Clean functionality in existing apps only clean inline formats\n if (_parchment2.default.query(name, _parchment2.default.Scope.INLINE) != null) {\n _this3.quill.format(name, false);\n }\n });\n } else {\n this.quill.removeFormat(range, _quill2.default.sources.USER);\n }\n },\n direction: function direction(value) {\n var align = this.quill.getFormat()['align'];\n if (value === 'rtl' && align == null) {\n this.quill.format('align', 'right', _quill2.default.sources.USER);\n } else if (!value && align === 'right') {\n this.quill.format('align', false, _quill2.default.sources.USER);\n }\n this.quill.format('direction', value, _quill2.default.sources.USER);\n },\n indent: function indent(value) {\n var range = this.quill.getSelection();\n var formats = this.quill.getFormat(range);\n var indent = parseInt(formats.indent || 0);\n if (value === '+1' || value === '-1') {\n var modifier = value === '+1' ? 1 : -1;\n if (formats.direction === 'rtl') modifier *= -1;\n this.quill.format('indent', indent + modifier, _quill2.default.sources.USER);\n }\n },\n link: function link(value) {\n if (value === true) {\n value = prompt('Enter link URL:');\n }\n this.quill.format('link', value, _quill2.default.sources.USER);\n },\n list: function list(value) {\n var range = this.quill.getSelection();\n var formats = this.quill.getFormat(range);\n if (value === 'check') {\n if (formats['list'] === 'checked' || formats['list'] === 'unchecked') {\n this.quill.format('list', false, _quill2.default.sources.USER);\n } else {\n this.quill.format('list', 'unchecked', _quill2.default.sources.USER);\n }\n } else {\n this.quill.format('list', value, _quill2.default.sources.USER);\n }\n }\n }\n};\n\nexports.default = Toolbar;\nexports.addControls = addControls;\n\n/***/ }),\n/* 58 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 59 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _picker = __webpack_require__(28);\n\nvar _picker2 = _interopRequireDefault(_picker);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ColorPicker = function (_Picker) {\n _inherits(ColorPicker, _Picker);\n\n function ColorPicker(select, label) {\n _classCallCheck(this, ColorPicker);\n\n var _this = _possibleConstructorReturn(this, (ColorPicker.__proto__ || Object.getPrototypeOf(ColorPicker)).call(this, select));\n\n _this.label.innerHTML = label;\n _this.container.classList.add('ql-color-picker');\n [].slice.call(_this.container.querySelectorAll('.ql-picker-item'), 0, 7).forEach(function (item) {\n item.classList.add('ql-primary');\n });\n return _this;\n }\n\n _createClass(ColorPicker, [{\n key: 'buildItem',\n value: function buildItem(option) {\n var item = _get(ColorPicker.prototype.__proto__ || Object.getPrototypeOf(ColorPicker.prototype), 'buildItem', this).call(this, option);\n item.style.backgroundColor = option.getAttribute('value') || '';\n return item;\n }\n }, {\n key: 'selectItem',\n value: function selectItem(item, trigger) {\n _get(ColorPicker.prototype.__proto__ || Object.getPrototypeOf(ColorPicker.prototype), 'selectItem', this).call(this, item, trigger);\n var colorLabel = this.label.querySelector('.ql-color-label');\n var value = item ? item.getAttribute('data-value') || '' : '';\n if (colorLabel) {\n if (colorLabel.tagName === 'line') {\n colorLabel.style.stroke = value;\n } else {\n colorLabel.style.fill = value;\n }\n }\n }\n }]);\n\n return ColorPicker;\n}(_picker2.default);\n\nexports.default = ColorPicker;\n\n/***/ }),\n/* 60 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _picker = __webpack_require__(28);\n\nvar _picker2 = _interopRequireDefault(_picker);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar IconPicker = function (_Picker) {\n _inherits(IconPicker, _Picker);\n\n function IconPicker(select, icons) {\n _classCallCheck(this, IconPicker);\n\n var _this = _possibleConstructorReturn(this, (IconPicker.__proto__ || Object.getPrototypeOf(IconPicker)).call(this, select));\n\n _this.container.classList.add('ql-icon-picker');\n [].forEach.call(_this.container.querySelectorAll('.ql-picker-item'), function (item) {\n item.innerHTML = icons[item.getAttribute('data-value') || ''];\n });\n _this.defaultItem = _this.container.querySelector('.ql-selected');\n _this.selectItem(_this.defaultItem);\n return _this;\n }\n\n _createClass(IconPicker, [{\n key: 'selectItem',\n value: function selectItem(item, trigger) {\n _get(IconPicker.prototype.__proto__ || Object.getPrototypeOf(IconPicker.prototype), 'selectItem', this).call(this, item, trigger);\n item = item || this.defaultItem;\n this.label.innerHTML = item.innerHTML;\n }\n }]);\n\n return IconPicker;\n}(_picker2.default);\n\nexports.default = IconPicker;\n\n/***/ }),\n/* 61 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Tooltip = function () {\n function Tooltip(quill, boundsContainer) {\n var _this = this;\n\n _classCallCheck(this, Tooltip);\n\n this.quill = quill;\n this.boundsContainer = boundsContainer || document.body;\n this.root = quill.addContainer('ql-tooltip');\n this.root.innerHTML = this.constructor.TEMPLATE;\n if (this.quill.root === this.quill.scrollingContainer) {\n this.quill.root.addEventListener('scroll', function () {\n _this.root.style.marginTop = -1 * _this.quill.root.scrollTop + 'px';\n });\n }\n this.hide();\n }\n\n _createClass(Tooltip, [{\n key: 'hide',\n value: function hide() {\n this.root.classList.add('ql-hidden');\n }\n }, {\n key: 'position',\n value: function position(reference) {\n var left = reference.left + reference.width / 2 - this.root.offsetWidth / 2;\n // root.scrollTop should be 0 if scrollContainer !== root\n var top = reference.bottom + this.quill.root.scrollTop;\n this.root.style.left = left + 'px';\n this.root.style.top = top + 'px';\n this.root.classList.remove('ql-flip');\n var containerBounds = this.boundsContainer.getBoundingClientRect();\n var rootBounds = this.root.getBoundingClientRect();\n var shift = 0;\n if (rootBounds.right > containerBounds.right) {\n shift = containerBounds.right - rootBounds.right;\n this.root.style.left = left + shift + 'px';\n }\n if (rootBounds.left < containerBounds.left) {\n shift = containerBounds.left - rootBounds.left;\n this.root.style.left = left + shift + 'px';\n }\n if (rootBounds.bottom > containerBounds.bottom) {\n var height = rootBounds.bottom - rootBounds.top;\n var verticalShift = reference.bottom - reference.top + height;\n this.root.style.top = top - verticalShift + 'px';\n this.root.classList.add('ql-flip');\n }\n return shift;\n }\n }, {\n key: 'show',\n value: function show() {\n this.root.classList.remove('ql-editing');\n this.root.classList.remove('ql-hidden');\n }\n }]);\n\n return Tooltip;\n}();\n\nexports.default = Tooltip;\n\n/***/ }),\n/* 62 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _emitter = __webpack_require__(8);\n\nvar _emitter2 = _interopRequireDefault(_emitter);\n\nvar _base = __webpack_require__(43);\n\nvar _base2 = _interopRequireDefault(_base);\n\nvar _link = __webpack_require__(27);\n\nvar _link2 = _interopRequireDefault(_link);\n\nvar _selection = __webpack_require__(15);\n\nvar _icons = __webpack_require__(41);\n\nvar _icons2 = _interopRequireDefault(_icons);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar TOOLBAR_CONFIG = [[{ header: ['1', '2', '3', false] }], ['bold', 'italic', 'underline', 'link'], [{ list: 'ordered' }, { list: 'bullet' }], ['clean']];\n\nvar SnowTheme = function (_BaseTheme) {\n _inherits(SnowTheme, _BaseTheme);\n\n function SnowTheme(quill, options) {\n _classCallCheck(this, SnowTheme);\n\n if (options.modules.toolbar != null && options.modules.toolbar.container == null) {\n options.modules.toolbar.container = TOOLBAR_CONFIG;\n }\n\n var _this = _possibleConstructorReturn(this, (SnowTheme.__proto__ || Object.getPrototypeOf(SnowTheme)).call(this, quill, options));\n\n _this.quill.container.classList.add('ql-snow');\n return _this;\n }\n\n _createClass(SnowTheme, [{\n key: 'extendToolbar',\n value: function extendToolbar(toolbar) {\n toolbar.container.classList.add('ql-snow');\n this.buildButtons([].slice.call(toolbar.container.querySelectorAll('button')), _icons2.default);\n this.buildPickers([].slice.call(toolbar.container.querySelectorAll('select')), _icons2.default);\n this.tooltip = new SnowTooltip(this.quill, this.options.bounds);\n if (toolbar.container.querySelector('.ql-link')) {\n this.quill.keyboard.addBinding({ key: 'K', shortKey: true }, function (range, context) {\n toolbar.handlers['link'].call(toolbar, !context.format.link);\n });\n }\n }\n }]);\n\n return SnowTheme;\n}(_base2.default);\n\nSnowTheme.DEFAULTS = (0, _extend2.default)(true, {}, _base2.default.DEFAULTS, {\n modules: {\n toolbar: {\n handlers: {\n link: function link(value) {\n if (value) {\n var range = this.quill.getSelection();\n if (range == null || range.length == 0) return;\n var preview = this.quill.getText(range);\n if (/^\\S+@\\S+\\.\\S+$/.test(preview) && preview.indexOf('mailto:') !== 0) {\n preview = 'mailto:' + preview;\n }\n var tooltip = this.quill.theme.tooltip;\n tooltip.edit('link', preview);\n } else {\n this.quill.format('link', false);\n }\n }\n }\n }\n }\n});\n\nvar SnowTooltip = function (_BaseTooltip) {\n _inherits(SnowTooltip, _BaseTooltip);\n\n function SnowTooltip(quill, bounds) {\n _classCallCheck(this, SnowTooltip);\n\n var _this2 = _possibleConstructorReturn(this, (SnowTooltip.__proto__ || Object.getPrototypeOf(SnowTooltip)).call(this, quill, bounds));\n\n _this2.preview = _this2.root.querySelector('a.ql-preview');\n return _this2;\n }\n\n _createClass(SnowTooltip, [{\n key: 'listen',\n value: function listen() {\n var _this3 = this;\n\n _get(SnowTooltip.prototype.__proto__ || Object.getPrototypeOf(SnowTooltip.prototype), 'listen', this).call(this);\n this.root.querySelector('a.ql-action').addEventListener('click', function (event) {\n if (_this3.root.classList.contains('ql-editing')) {\n _this3.save();\n } else {\n _this3.edit('link', _this3.preview.textContent);\n }\n event.preventDefault();\n });\n this.root.querySelector('a.ql-remove').addEventListener('click', function (event) {\n if (_this3.linkRange != null) {\n var range = _this3.linkRange;\n _this3.restoreFocus();\n _this3.quill.formatText(range, 'link', false, _emitter2.default.sources.USER);\n delete _this3.linkRange;\n }\n event.preventDefault();\n _this3.hide();\n });\n this.quill.on(_emitter2.default.events.SELECTION_CHANGE, function (range, oldRange, source) {\n if (range == null) return;\n if (range.length === 0 && source === _emitter2.default.sources.USER) {\n var _quill$scroll$descend = _this3.quill.scroll.descendant(_link2.default, range.index),\n _quill$scroll$descend2 = _slicedToArray(_quill$scroll$descend, 2),\n link = _quill$scroll$descend2[0],\n offset = _quill$scroll$descend2[1];\n\n if (link != null) {\n _this3.linkRange = new _selection.Range(range.index - offset, link.length());\n var preview = _link2.default.formats(link.domNode);\n _this3.preview.textContent = preview;\n _this3.preview.setAttribute('href', preview);\n _this3.show();\n _this3.position(_this3.quill.getBounds(_this3.linkRange));\n return;\n }\n } else {\n delete _this3.linkRange;\n }\n _this3.hide();\n });\n }\n }, {\n key: 'show',\n value: function show() {\n _get(SnowTooltip.prototype.__proto__ || Object.getPrototypeOf(SnowTooltip.prototype), 'show', this).call(this);\n this.root.removeAttribute('data-mode');\n }\n }]);\n\n return SnowTooltip;\n}(_base.BaseTooltip);\n\nSnowTooltip.TEMPLATE = ['', '', '', ''].join('');\n\nexports.default = SnowTheme;\n\n/***/ }),\n/* 63 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _core = __webpack_require__(29);\n\nvar _core2 = _interopRequireDefault(_core);\n\nvar _align = __webpack_require__(36);\n\nvar _direction = __webpack_require__(38);\n\nvar _indent = __webpack_require__(64);\n\nvar _blockquote = __webpack_require__(65);\n\nvar _blockquote2 = _interopRequireDefault(_blockquote);\n\nvar _header = __webpack_require__(66);\n\nvar _header2 = _interopRequireDefault(_header);\n\nvar _list = __webpack_require__(67);\n\nvar _list2 = _interopRequireDefault(_list);\n\nvar _background = __webpack_require__(37);\n\nvar _color = __webpack_require__(26);\n\nvar _font = __webpack_require__(39);\n\nvar _size = __webpack_require__(40);\n\nvar _bold = __webpack_require__(56);\n\nvar _bold2 = _interopRequireDefault(_bold);\n\nvar _italic = __webpack_require__(68);\n\nvar _italic2 = _interopRequireDefault(_italic);\n\nvar _link = __webpack_require__(27);\n\nvar _link2 = _interopRequireDefault(_link);\n\nvar _script = __webpack_require__(69);\n\nvar _script2 = _interopRequireDefault(_script);\n\nvar _strike = __webpack_require__(70);\n\nvar _strike2 = _interopRequireDefault(_strike);\n\nvar _underline = __webpack_require__(71);\n\nvar _underline2 = _interopRequireDefault(_underline);\n\nvar _image = __webpack_require__(72);\n\nvar _image2 = _interopRequireDefault(_image);\n\nvar _video = __webpack_require__(73);\n\nvar _video2 = _interopRequireDefault(_video);\n\nvar _code = __webpack_require__(13);\n\nvar _code2 = _interopRequireDefault(_code);\n\nvar _formula = __webpack_require__(74);\n\nvar _formula2 = _interopRequireDefault(_formula);\n\nvar _syntax = __webpack_require__(75);\n\nvar _syntax2 = _interopRequireDefault(_syntax);\n\nvar _toolbar = __webpack_require__(57);\n\nvar _toolbar2 = _interopRequireDefault(_toolbar);\n\nvar _icons = __webpack_require__(41);\n\nvar _icons2 = _interopRequireDefault(_icons);\n\nvar _picker = __webpack_require__(28);\n\nvar _picker2 = _interopRequireDefault(_picker);\n\nvar _colorPicker = __webpack_require__(59);\n\nvar _colorPicker2 = _interopRequireDefault(_colorPicker);\n\nvar _iconPicker = __webpack_require__(60);\n\nvar _iconPicker2 = _interopRequireDefault(_iconPicker);\n\nvar _tooltip = __webpack_require__(61);\n\nvar _tooltip2 = _interopRequireDefault(_tooltip);\n\nvar _bubble = __webpack_require__(108);\n\nvar _bubble2 = _interopRequireDefault(_bubble);\n\nvar _snow = __webpack_require__(62);\n\nvar _snow2 = _interopRequireDefault(_snow);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n_core2.default.register({\n 'attributors/attribute/direction': _direction.DirectionAttribute,\n\n 'attributors/class/align': _align.AlignClass,\n 'attributors/class/background': _background.BackgroundClass,\n 'attributors/class/color': _color.ColorClass,\n 'attributors/class/direction': _direction.DirectionClass,\n 'attributors/class/font': _font.FontClass,\n 'attributors/class/size': _size.SizeClass,\n\n 'attributors/style/align': _align.AlignStyle,\n 'attributors/style/background': _background.BackgroundStyle,\n 'attributors/style/color': _color.ColorStyle,\n 'attributors/style/direction': _direction.DirectionStyle,\n 'attributors/style/font': _font.FontStyle,\n 'attributors/style/size': _size.SizeStyle\n}, true);\n\n_core2.default.register({\n 'formats/align': _align.AlignClass,\n 'formats/direction': _direction.DirectionClass,\n 'formats/indent': _indent.IndentClass,\n\n 'formats/background': _background.BackgroundStyle,\n 'formats/color': _color.ColorStyle,\n 'formats/font': _font.FontClass,\n 'formats/size': _size.SizeClass,\n\n 'formats/blockquote': _blockquote2.default,\n 'formats/code-block': _code2.default,\n 'formats/header': _header2.default,\n 'formats/list': _list2.default,\n\n 'formats/bold': _bold2.default,\n 'formats/code': _code.Code,\n 'formats/italic': _italic2.default,\n 'formats/link': _link2.default,\n 'formats/script': _script2.default,\n 'formats/strike': _strike2.default,\n 'formats/underline': _underline2.default,\n\n 'formats/image': _image2.default,\n 'formats/video': _video2.default,\n\n 'formats/list/item': _list.ListItem,\n\n 'modules/formula': _formula2.default,\n 'modules/syntax': _syntax2.default,\n 'modules/toolbar': _toolbar2.default,\n\n 'themes/bubble': _bubble2.default,\n 'themes/snow': _snow2.default,\n\n 'ui/icons': _icons2.default,\n 'ui/picker': _picker2.default,\n 'ui/icon-picker': _iconPicker2.default,\n 'ui/color-picker': _colorPicker2.default,\n 'ui/tooltip': _tooltip2.default\n}, true);\n\nexports.default = _core2.default;\n\n/***/ }),\n/* 64 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.IndentClass = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar IdentAttributor = function (_Parchment$Attributor) {\n _inherits(IdentAttributor, _Parchment$Attributor);\n\n function IdentAttributor() {\n _classCallCheck(this, IdentAttributor);\n\n return _possibleConstructorReturn(this, (IdentAttributor.__proto__ || Object.getPrototypeOf(IdentAttributor)).apply(this, arguments));\n }\n\n _createClass(IdentAttributor, [{\n key: 'add',\n value: function add(node, value) {\n if (value === '+1' || value === '-1') {\n var indent = this.value(node) || 0;\n value = value === '+1' ? indent + 1 : indent - 1;\n }\n if (value === 0) {\n this.remove(node);\n return true;\n } else {\n return _get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'add', this).call(this, node, value);\n }\n }\n }, {\n key: 'canAdd',\n value: function canAdd(node, value) {\n return _get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'canAdd', this).call(this, node, value) || _get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'canAdd', this).call(this, node, parseInt(value));\n }\n }, {\n key: 'value',\n value: function value(node) {\n return parseInt(_get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'value', this).call(this, node)) || undefined; // Don't return NaN\n }\n }]);\n\n return IdentAttributor;\n}(_parchment2.default.Attributor.Class);\n\nvar IndentClass = new IdentAttributor('indent', 'ql-indent', {\n scope: _parchment2.default.Scope.BLOCK,\n whitelist: [1, 2, 3, 4, 5, 6, 7, 8]\n});\n\nexports.IndentClass = IndentClass;\n\n/***/ }),\n/* 65 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Blockquote = function (_Block) {\n _inherits(Blockquote, _Block);\n\n function Blockquote() {\n _classCallCheck(this, Blockquote);\n\n return _possibleConstructorReturn(this, (Blockquote.__proto__ || Object.getPrototypeOf(Blockquote)).apply(this, arguments));\n }\n\n return Blockquote;\n}(_block2.default);\n\nBlockquote.blotName = 'blockquote';\nBlockquote.tagName = 'blockquote';\n\nexports.default = Blockquote;\n\n/***/ }),\n/* 66 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Header = function (_Block) {\n _inherits(Header, _Block);\n\n function Header() {\n _classCallCheck(this, Header);\n\n return _possibleConstructorReturn(this, (Header.__proto__ || Object.getPrototypeOf(Header)).apply(this, arguments));\n }\n\n _createClass(Header, null, [{\n key: 'formats',\n value: function formats(domNode) {\n return this.tagName.indexOf(domNode.tagName) + 1;\n }\n }]);\n\n return Header;\n}(_block2.default);\n\nHeader.blotName = 'header';\nHeader.tagName = ['H1', 'H2', 'H3', 'H4', 'H5', 'H6'];\n\nexports.default = Header;\n\n/***/ }),\n/* 67 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.ListItem = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _container = __webpack_require__(25);\n\nvar _container2 = _interopRequireDefault(_container);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ListItem = function (_Block) {\n _inherits(ListItem, _Block);\n\n function ListItem() {\n _classCallCheck(this, ListItem);\n\n return _possibleConstructorReturn(this, (ListItem.__proto__ || Object.getPrototypeOf(ListItem)).apply(this, arguments));\n }\n\n _createClass(ListItem, [{\n key: 'format',\n value: function format(name, value) {\n if (name === List.blotName && !value) {\n this.replaceWith(_parchment2.default.create(this.statics.scope));\n } else {\n _get(ListItem.prototype.__proto__ || Object.getPrototypeOf(ListItem.prototype), 'format', this).call(this, name, value);\n }\n }\n }, {\n key: 'remove',\n value: function remove() {\n if (this.prev == null && this.next == null) {\n this.parent.remove();\n } else {\n _get(ListItem.prototype.__proto__ || Object.getPrototypeOf(ListItem.prototype), 'remove', this).call(this);\n }\n }\n }, {\n key: 'replaceWith',\n value: function replaceWith(name, value) {\n this.parent.isolate(this.offset(this.parent), this.length());\n if (name === this.parent.statics.blotName) {\n this.parent.replaceWith(name, value);\n return this;\n } else {\n this.parent.unwrap();\n return _get(ListItem.prototype.__proto__ || Object.getPrototypeOf(ListItem.prototype), 'replaceWith', this).call(this, name, value);\n }\n }\n }], [{\n key: 'formats',\n value: function formats(domNode) {\n return domNode.tagName === this.tagName ? undefined : _get(ListItem.__proto__ || Object.getPrototypeOf(ListItem), 'formats', this).call(this, domNode);\n }\n }]);\n\n return ListItem;\n}(_block2.default);\n\nListItem.blotName = 'list-item';\nListItem.tagName = 'LI';\n\nvar List = function (_Container) {\n _inherits(List, _Container);\n\n _createClass(List, null, [{\n key: 'create',\n value: function create(value) {\n var tagName = value === 'ordered' ? 'OL' : 'UL';\n var node = _get(List.__proto__ || Object.getPrototypeOf(List), 'create', this).call(this, tagName);\n if (value === 'checked' || value === 'unchecked') {\n node.setAttribute('data-checked', value === 'checked');\n }\n return node;\n }\n }, {\n key: 'formats',\n value: function formats(domNode) {\n if (domNode.tagName === 'OL') return 'ordered';\n if (domNode.tagName === 'UL') {\n if (domNode.hasAttribute('data-checked')) {\n return domNode.getAttribute('data-checked') === 'true' ? 'checked' : 'unchecked';\n } else {\n return 'bullet';\n }\n }\n return undefined;\n }\n }]);\n\n function List(domNode) {\n _classCallCheck(this, List);\n\n var _this2 = _possibleConstructorReturn(this, (List.__proto__ || Object.getPrototypeOf(List)).call(this, domNode));\n\n var listEventHandler = function listEventHandler(e) {\n if (e.target.parentNode !== domNode) return;\n var format = _this2.statics.formats(domNode);\n var blot = _parchment2.default.find(e.target);\n if (format === 'checked') {\n blot.format('list', 'unchecked');\n } else if (format === 'unchecked') {\n blot.format('list', 'checked');\n }\n };\n\n domNode.addEventListener('touchstart', listEventHandler);\n domNode.addEventListener('mousedown', listEventHandler);\n return _this2;\n }\n\n _createClass(List, [{\n key: 'format',\n value: function format(name, value) {\n if (this.children.length > 0) {\n this.children.tail.format(name, value);\n }\n }\n }, {\n key: 'formats',\n value: function formats() {\n // We don't inherit from FormatBlot\n return _defineProperty({}, this.statics.blotName, this.statics.formats(this.domNode));\n }\n }, {\n key: 'insertBefore',\n value: function insertBefore(blot, ref) {\n if (blot instanceof ListItem) {\n _get(List.prototype.__proto__ || Object.getPrototypeOf(List.prototype), 'insertBefore', this).call(this, blot, ref);\n } else {\n var index = ref == null ? this.length() : ref.offset(this);\n var after = this.split(index);\n after.parent.insertBefore(blot, after);\n }\n }\n }, {\n key: 'optimize',\n value: function optimize(context) {\n _get(List.prototype.__proto__ || Object.getPrototypeOf(List.prototype), 'optimize', this).call(this, context);\n var next = this.next;\n if (next != null && next.prev === this && next.statics.blotName === this.statics.blotName && next.domNode.tagName === this.domNode.tagName && next.domNode.getAttribute('data-checked') === this.domNode.getAttribute('data-checked')) {\n next.moveChildren(this);\n next.remove();\n }\n }\n }, {\n key: 'replace',\n value: function replace(target) {\n if (target.statics.blotName !== this.statics.blotName) {\n var item = _parchment2.default.create(this.statics.defaultChild);\n target.moveChildren(item);\n this.appendChild(item);\n }\n _get(List.prototype.__proto__ || Object.getPrototypeOf(List.prototype), 'replace', this).call(this, target);\n }\n }]);\n\n return List;\n}(_container2.default);\n\nList.blotName = 'list';\nList.scope = _parchment2.default.Scope.BLOCK_BLOT;\nList.tagName = ['OL', 'UL'];\nList.defaultChild = 'list-item';\nList.allowedChildren = [ListItem];\n\nexports.ListItem = ListItem;\nexports.default = List;\n\n/***/ }),\n/* 68 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _bold = __webpack_require__(56);\n\nvar _bold2 = _interopRequireDefault(_bold);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Italic = function (_Bold) {\n _inherits(Italic, _Bold);\n\n function Italic() {\n _classCallCheck(this, Italic);\n\n return _possibleConstructorReturn(this, (Italic.__proto__ || Object.getPrototypeOf(Italic)).apply(this, arguments));\n }\n\n return Italic;\n}(_bold2.default);\n\nItalic.blotName = 'italic';\nItalic.tagName = ['EM', 'I'];\n\nexports.default = Italic;\n\n/***/ }),\n/* 69 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Script = function (_Inline) {\n _inherits(Script, _Inline);\n\n function Script() {\n _classCallCheck(this, Script);\n\n return _possibleConstructorReturn(this, (Script.__proto__ || Object.getPrototypeOf(Script)).apply(this, arguments));\n }\n\n _createClass(Script, null, [{\n key: 'create',\n value: function create(value) {\n if (value === 'super') {\n return document.createElement('sup');\n } else if (value === 'sub') {\n return document.createElement('sub');\n } else {\n return _get(Script.__proto__ || Object.getPrototypeOf(Script), 'create', this).call(this, value);\n }\n }\n }, {\n key: 'formats',\n value: function formats(domNode) {\n if (domNode.tagName === 'SUB') return 'sub';\n if (domNode.tagName === 'SUP') return 'super';\n return undefined;\n }\n }]);\n\n return Script;\n}(_inline2.default);\n\nScript.blotName = 'script';\nScript.tagName = ['SUB', 'SUP'];\n\nexports.default = Script;\n\n/***/ }),\n/* 70 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Strike = function (_Inline) {\n _inherits(Strike, _Inline);\n\n function Strike() {\n _classCallCheck(this, Strike);\n\n return _possibleConstructorReturn(this, (Strike.__proto__ || Object.getPrototypeOf(Strike)).apply(this, arguments));\n }\n\n return Strike;\n}(_inline2.default);\n\nStrike.blotName = 'strike';\nStrike.tagName = 'S';\n\nexports.default = Strike;\n\n/***/ }),\n/* 71 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Underline = function (_Inline) {\n _inherits(Underline, _Inline);\n\n function Underline() {\n _classCallCheck(this, Underline);\n\n return _possibleConstructorReturn(this, (Underline.__proto__ || Object.getPrototypeOf(Underline)).apply(this, arguments));\n }\n\n return Underline;\n}(_inline2.default);\n\nUnderline.blotName = 'underline';\nUnderline.tagName = 'U';\n\nexports.default = Underline;\n\n/***/ }),\n/* 72 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _link = __webpack_require__(27);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ATTRIBUTES = ['alt', 'height', 'width'];\n\nvar Image = function (_Parchment$Embed) {\n _inherits(Image, _Parchment$Embed);\n\n function Image() {\n _classCallCheck(this, Image);\n\n return _possibleConstructorReturn(this, (Image.__proto__ || Object.getPrototypeOf(Image)).apply(this, arguments));\n }\n\n _createClass(Image, [{\n key: 'format',\n value: function format(name, value) {\n if (ATTRIBUTES.indexOf(name) > -1) {\n if (value) {\n this.domNode.setAttribute(name, value);\n } else {\n this.domNode.removeAttribute(name);\n }\n } else {\n _get(Image.prototype.__proto__ || Object.getPrototypeOf(Image.prototype), 'format', this).call(this, name, value);\n }\n }\n }], [{\n key: 'create',\n value: function create(value) {\n var node = _get(Image.__proto__ || Object.getPrototypeOf(Image), 'create', this).call(this, value);\n if (typeof value === 'string') {\n node.setAttribute('src', this.sanitize(value));\n }\n return node;\n }\n }, {\n key: 'formats',\n value: function formats(domNode) {\n return ATTRIBUTES.reduce(function (formats, attribute) {\n if (domNode.hasAttribute(attribute)) {\n formats[attribute] = domNode.getAttribute(attribute);\n }\n return formats;\n }, {});\n }\n }, {\n key: 'match',\n value: function match(url) {\n return (/\\.(jpe?g|gif|png)$/.test(url) || /^data:image\\/.+;base64/.test(url)\n );\n }\n }, {\n key: 'sanitize',\n value: function sanitize(url) {\n return (0, _link.sanitize)(url, ['http', 'https', 'data']) ? url : '//:0';\n }\n }, {\n key: 'value',\n value: function value(domNode) {\n return domNode.getAttribute('src');\n }\n }]);\n\n return Image;\n}(_parchment2.default.Embed);\n\nImage.blotName = 'image';\nImage.tagName = 'IMG';\n\nexports.default = Image;\n\n/***/ }),\n/* 73 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _block = __webpack_require__(4);\n\nvar _link = __webpack_require__(27);\n\nvar _link2 = _interopRequireDefault(_link);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ATTRIBUTES = ['height', 'width'];\n\nvar Video = function (_BlockEmbed) {\n _inherits(Video, _BlockEmbed);\n\n function Video() {\n _classCallCheck(this, Video);\n\n return _possibleConstructorReturn(this, (Video.__proto__ || Object.getPrototypeOf(Video)).apply(this, arguments));\n }\n\n _createClass(Video, [{\n key: 'format',\n value: function format(name, value) {\n if (ATTRIBUTES.indexOf(name) > -1) {\n if (value) {\n this.domNode.setAttribute(name, value);\n } else {\n this.domNode.removeAttribute(name);\n }\n } else {\n _get(Video.prototype.__proto__ || Object.getPrototypeOf(Video.prototype), 'format', this).call(this, name, value);\n }\n }\n }], [{\n key: 'create',\n value: function create(value) {\n var node = _get(Video.__proto__ || Object.getPrototypeOf(Video), 'create', this).call(this, value);\n node.setAttribute('frameborder', '0');\n node.setAttribute('allowfullscreen', true);\n node.setAttribute('src', this.sanitize(value));\n return node;\n }\n }, {\n key: 'formats',\n value: function formats(domNode) {\n return ATTRIBUTES.reduce(function (formats, attribute) {\n if (domNode.hasAttribute(attribute)) {\n formats[attribute] = domNode.getAttribute(attribute);\n }\n return formats;\n }, {});\n }\n }, {\n key: 'sanitize',\n value: function sanitize(url) {\n return _link2.default.sanitize(url);\n }\n }, {\n key: 'value',\n value: function value(domNode) {\n return domNode.getAttribute('src');\n }\n }]);\n\n return Video;\n}(_block.BlockEmbed);\n\nVideo.blotName = 'video';\nVideo.className = 'ql-video';\nVideo.tagName = 'IFRAME';\n\nexports.default = Video;\n\n/***/ }),\n/* 74 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.FormulaBlot = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _embed = __webpack_require__(35);\n\nvar _embed2 = _interopRequireDefault(_embed);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar FormulaBlot = function (_Embed) {\n _inherits(FormulaBlot, _Embed);\n\n function FormulaBlot() {\n _classCallCheck(this, FormulaBlot);\n\n return _possibleConstructorReturn(this, (FormulaBlot.__proto__ || Object.getPrototypeOf(FormulaBlot)).apply(this, arguments));\n }\n\n _createClass(FormulaBlot, null, [{\n key: 'create',\n value: function create(value) {\n var node = _get(FormulaBlot.__proto__ || Object.getPrototypeOf(FormulaBlot), 'create', this).call(this, value);\n if (typeof value === 'string') {\n window.katex.render(value, node, {\n throwOnError: false,\n errorColor: '#f00'\n });\n node.setAttribute('data-value', value);\n }\n return node;\n }\n }, {\n key: 'value',\n value: function value(domNode) {\n return domNode.getAttribute('data-value');\n }\n }]);\n\n return FormulaBlot;\n}(_embed2.default);\n\nFormulaBlot.blotName = 'formula';\nFormulaBlot.className = 'ql-formula';\nFormulaBlot.tagName = 'SPAN';\n\nvar Formula = function (_Module) {\n _inherits(Formula, _Module);\n\n _createClass(Formula, null, [{\n key: 'register',\n value: function register() {\n _quill2.default.register(FormulaBlot, true);\n }\n }]);\n\n function Formula() {\n _classCallCheck(this, Formula);\n\n var _this2 = _possibleConstructorReturn(this, (Formula.__proto__ || Object.getPrototypeOf(Formula)).call(this));\n\n if (window.katex == null) {\n throw new Error('Formula module requires KaTeX.');\n }\n return _this2;\n }\n\n return Formula;\n}(_module2.default);\n\nexports.FormulaBlot = FormulaBlot;\nexports.default = Formula;\n\n/***/ }),\n/* 75 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.CodeToken = exports.CodeBlock = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nvar _code = __webpack_require__(13);\n\nvar _code2 = _interopRequireDefault(_code);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar SyntaxCodeBlock = function (_CodeBlock) {\n _inherits(SyntaxCodeBlock, _CodeBlock);\n\n function SyntaxCodeBlock() {\n _classCallCheck(this, SyntaxCodeBlock);\n\n return _possibleConstructorReturn(this, (SyntaxCodeBlock.__proto__ || Object.getPrototypeOf(SyntaxCodeBlock)).apply(this, arguments));\n }\n\n _createClass(SyntaxCodeBlock, [{\n key: 'replaceWith',\n value: function replaceWith(block) {\n this.domNode.textContent = this.domNode.textContent;\n this.attach();\n _get(SyntaxCodeBlock.prototype.__proto__ || Object.getPrototypeOf(SyntaxCodeBlock.prototype), 'replaceWith', this).call(this, block);\n }\n }, {\n key: 'highlight',\n value: function highlight(_highlight) {\n var text = this.domNode.textContent;\n if (this.cachedText !== text) {\n if (text.trim().length > 0 || this.cachedText == null) {\n this.domNode.innerHTML = _highlight(text);\n this.domNode.normalize();\n this.attach();\n }\n this.cachedText = text;\n }\n }\n }]);\n\n return SyntaxCodeBlock;\n}(_code2.default);\n\nSyntaxCodeBlock.className = 'ql-syntax';\n\nvar CodeToken = new _parchment2.default.Attributor.Class('token', 'hljs', {\n scope: _parchment2.default.Scope.INLINE\n});\n\nvar Syntax = function (_Module) {\n _inherits(Syntax, _Module);\n\n _createClass(Syntax, null, [{\n key: 'register',\n value: function register() {\n _quill2.default.register(CodeToken, true);\n _quill2.default.register(SyntaxCodeBlock, true);\n }\n }]);\n\n function Syntax(quill, options) {\n _classCallCheck(this, Syntax);\n\n var _this2 = _possibleConstructorReturn(this, (Syntax.__proto__ || Object.getPrototypeOf(Syntax)).call(this, quill, options));\n\n if (typeof _this2.options.highlight !== 'function') {\n throw new Error('Syntax module requires highlight.js. Please include the library on the page before Quill.');\n }\n var timer = null;\n _this2.quill.on(_quill2.default.events.SCROLL_OPTIMIZE, function () {\n clearTimeout(timer);\n timer = setTimeout(function () {\n _this2.highlight();\n timer = null;\n }, _this2.options.interval);\n });\n _this2.highlight();\n return _this2;\n }\n\n _createClass(Syntax, [{\n key: 'highlight',\n value: function highlight() {\n var _this3 = this;\n\n if (this.quill.selection.composing) return;\n this.quill.update(_quill2.default.sources.USER);\n var range = this.quill.getSelection();\n this.quill.scroll.descendants(SyntaxCodeBlock).forEach(function (code) {\n code.highlight(_this3.options.highlight);\n });\n this.quill.update(_quill2.default.sources.SILENT);\n if (range != null) {\n this.quill.setSelection(range, _quill2.default.sources.SILENT);\n }\n }\n }]);\n\n return Syntax;\n}(_module2.default);\n\nSyntax.DEFAULTS = {\n highlight: function () {\n if (window.hljs == null) return null;\n return function (text) {\n var result = window.hljs.highlightAuto(text);\n return result.value;\n };\n }(),\n interval: 1000\n};\n\nexports.CodeBlock = SyntaxCodeBlock;\nexports.CodeToken = CodeToken;\nexports.default = Syntax;\n\n/***/ }),\n/* 76 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 77 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 78 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 79 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 80 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 81 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 82 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 83 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 84 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 85 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 86 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 87 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 88 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 89 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 90 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 91 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 92 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 93 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 94 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 95 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 96 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 97 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 98 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 99 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 100 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 101 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 102 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 103 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 104 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 105 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 106 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 107 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 108 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.BubbleTooltip = undefined;\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _emitter = __webpack_require__(8);\n\nvar _emitter2 = _interopRequireDefault(_emitter);\n\nvar _base = __webpack_require__(43);\n\nvar _base2 = _interopRequireDefault(_base);\n\nvar _selection = __webpack_require__(15);\n\nvar _icons = __webpack_require__(41);\n\nvar _icons2 = _interopRequireDefault(_icons);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar TOOLBAR_CONFIG = [['bold', 'italic', 'link'], [{ header: 1 }, { header: 2 }, 'blockquote']];\n\nvar BubbleTheme = function (_BaseTheme) {\n _inherits(BubbleTheme, _BaseTheme);\n\n function BubbleTheme(quill, options) {\n _classCallCheck(this, BubbleTheme);\n\n if (options.modules.toolbar != null && options.modules.toolbar.container == null) {\n options.modules.toolbar.container = TOOLBAR_CONFIG;\n }\n\n var _this = _possibleConstructorReturn(this, (BubbleTheme.__proto__ || Object.getPrototypeOf(BubbleTheme)).call(this, quill, options));\n\n _this.quill.container.classList.add('ql-bubble');\n return _this;\n }\n\n _createClass(BubbleTheme, [{\n key: 'extendToolbar',\n value: function extendToolbar(toolbar) {\n this.tooltip = new BubbleTooltip(this.quill, this.options.bounds);\n this.tooltip.root.appendChild(toolbar.container);\n this.buildButtons([].slice.call(toolbar.container.querySelectorAll('button')), _icons2.default);\n this.buildPickers([].slice.call(toolbar.container.querySelectorAll('select')), _icons2.default);\n }\n }]);\n\n return BubbleTheme;\n}(_base2.default);\n\nBubbleTheme.DEFAULTS = (0, _extend2.default)(true, {}, _base2.default.DEFAULTS, {\n modules: {\n toolbar: {\n handlers: {\n link: function link(value) {\n if (!value) {\n this.quill.format('link', false);\n } else {\n this.quill.theme.tooltip.edit();\n }\n }\n }\n }\n }\n});\n\nvar BubbleTooltip = function (_BaseTooltip) {\n _inherits(BubbleTooltip, _BaseTooltip);\n\n function BubbleTooltip(quill, bounds) {\n _classCallCheck(this, BubbleTooltip);\n\n var _this2 = _possibleConstructorReturn(this, (BubbleTooltip.__proto__ || Object.getPrototypeOf(BubbleTooltip)).call(this, quill, bounds));\n\n _this2.quill.on(_emitter2.default.events.EDITOR_CHANGE, function (type, range, oldRange, source) {\n if (type !== _emitter2.default.events.SELECTION_CHANGE) return;\n if (range != null && range.length > 0 && source === _emitter2.default.sources.USER) {\n _this2.show();\n // Lock our width so we will expand beyond our offsetParent boundaries\n _this2.root.style.left = '0px';\n _this2.root.style.width = '';\n _this2.root.style.width = _this2.root.offsetWidth + 'px';\n var lines = _this2.quill.getLines(range.index, range.length);\n if (lines.length === 1) {\n _this2.position(_this2.quill.getBounds(range));\n } else {\n var lastLine = lines[lines.length - 1];\n var index = _this2.quill.getIndex(lastLine);\n var length = Math.min(lastLine.length() - 1, range.index + range.length - index);\n var _bounds = _this2.quill.getBounds(new _selection.Range(index, length));\n _this2.position(_bounds);\n }\n } else if (document.activeElement !== _this2.textbox && _this2.quill.hasFocus()) {\n _this2.hide();\n }\n });\n return _this2;\n }\n\n _createClass(BubbleTooltip, [{\n key: 'listen',\n value: function listen() {\n var _this3 = this;\n\n _get(BubbleTooltip.prototype.__proto__ || Object.getPrototypeOf(BubbleTooltip.prototype), 'listen', this).call(this);\n this.root.querySelector('.ql-close').addEventListener('click', function () {\n _this3.root.classList.remove('ql-editing');\n });\n this.quill.on(_emitter2.default.events.SCROLL_OPTIMIZE, function () {\n // Let selection be restored by toolbar handlers before repositioning\n setTimeout(function () {\n if (_this3.root.classList.contains('ql-hidden')) return;\n var range = _this3.quill.getSelection();\n if (range != null) {\n _this3.position(_this3.quill.getBounds(range));\n }\n }, 1);\n });\n }\n }, {\n key: 'cancel',\n value: function cancel() {\n this.show();\n }\n }, {\n key: 'position',\n value: function position(reference) {\n var shift = _get(BubbleTooltip.prototype.__proto__ || Object.getPrototypeOf(BubbleTooltip.prototype), 'position', this).call(this, reference);\n var arrow = this.root.querySelector('.ql-tooltip-arrow');\n arrow.style.marginLeft = '';\n if (shift === 0) return shift;\n arrow.style.marginLeft = -1 * shift - arrow.offsetWidth / 2 + 'px';\n }\n }]);\n\n return BubbleTooltip;\n}(_base.BaseTooltip);\n\nBubbleTooltip.TEMPLATE = ['', '
', '', '', '
'].join('');\n\nexports.BubbleTooltip = BubbleTooltip;\nexports.default = BubbleTheme;\n\n/***/ }),\n/* 109 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(63);\n\n\n/***/ })\n/******/ ])[\"default\"];\n});","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// Avoid typo.\nvar SOURCE_FORMAT_ORIGINAL = 'original';\nvar SOURCE_FORMAT_ARRAY_ROWS = 'arrayRows';\nvar SOURCE_FORMAT_OBJECT_ROWS = 'objectRows';\nvar SOURCE_FORMAT_KEYED_COLUMNS = 'keyedColumns';\nvar SOURCE_FORMAT_UNKNOWN = 'unknown'; // ??? CHANGE A NAME\n\nvar SOURCE_FORMAT_TYPED_ARRAY = 'typedArray';\nvar SERIES_LAYOUT_BY_COLUMN = 'column';\nvar SERIES_LAYOUT_BY_ROW = 'row';\nexports.SOURCE_FORMAT_ORIGINAL = SOURCE_FORMAT_ORIGINAL;\nexports.SOURCE_FORMAT_ARRAY_ROWS = SOURCE_FORMAT_ARRAY_ROWS;\nexports.SOURCE_FORMAT_OBJECT_ROWS = SOURCE_FORMAT_OBJECT_ROWS;\nexports.SOURCE_FORMAT_KEYED_COLUMNS = SOURCE_FORMAT_KEYED_COLUMNS;\nexports.SOURCE_FORMAT_UNKNOWN = SOURCE_FORMAT_UNKNOWN;\nexports.SOURCE_FORMAT_TYPED_ARRAY = SOURCE_FORMAT_TYPED_ARRAY;\nexports.SERIES_LAYOUT_BY_COLUMN = SERIES_LAYOUT_BY_COLUMN;\nexports.SERIES_LAYOUT_BY_ROW = SERIES_LAYOUT_BY_ROW;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar numberUtil = require(\"../util/number\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * For testable.\n */\nvar roundNumber = numberUtil.round;\n/**\n * @param {Array.} extent Both extent[0] and extent[1] should be valid number.\n * Should be extent[0] < extent[1].\n * @param {number} splitNumber splitNumber should be >= 1.\n * @param {number} [minInterval]\n * @param {number} [maxInterval]\n * @return {Object} {interval, intervalPrecision, niceTickExtent}\n */\n\nfunction intervalScaleNiceTicks(extent, splitNumber, minInterval, maxInterval) {\n var result = {};\n var span = extent[1] - extent[0];\n var interval = result.interval = numberUtil.nice(span / splitNumber, true);\n\n if (minInterval != null && interval < minInterval) {\n interval = result.interval = minInterval;\n }\n\n if (maxInterval != null && interval > maxInterval) {\n interval = result.interval = maxInterval;\n } // Tow more digital for tick.\n\n\n var precision = result.intervalPrecision = getIntervalPrecision(interval); // Niced extent inside original extent\n\n var niceTickExtent = result.niceTickExtent = [roundNumber(Math.ceil(extent[0] / interval) * interval, precision), roundNumber(Math.floor(extent[1] / interval) * interval, precision)];\n fixExtent(niceTickExtent, extent);\n return result;\n}\n/**\n * @param {number} interval\n * @return {number} interval precision\n */\n\n\nfunction getIntervalPrecision(interval) {\n // Tow more digital for tick.\n return numberUtil.getPrecisionSafe(interval) + 2;\n}\n\nfunction clamp(niceTickExtent, idx, extent) {\n niceTickExtent[idx] = Math.max(Math.min(niceTickExtent[idx], extent[1]), extent[0]);\n} // In some cases (e.g., splitNumber is 1), niceTickExtent may be out of extent.\n\n\nfunction fixExtent(niceTickExtent, extent) {\n !isFinite(niceTickExtent[0]) && (niceTickExtent[0] = extent[0]);\n !isFinite(niceTickExtent[1]) && (niceTickExtent[1] = extent[1]);\n clamp(niceTickExtent, 0, extent);\n clamp(niceTickExtent, 1, extent);\n\n if (niceTickExtent[0] > niceTickExtent[1]) {\n niceTickExtent[0] = niceTickExtent[1];\n }\n}\n\nexports.intervalScaleNiceTicks = intervalScaleNiceTicks;\nexports.getIntervalPrecision = getIntervalPrecision;\nexports.fixExtent = fixExtent;","!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e(require(\"quill\")):\"function\"==typeof define&&define.amd?define([\"quill\"],e):\"object\"==typeof exports?exports.VueQuillEditor=e(require(\"quill\")):t.VueQuillEditor=e(t.Quill)}(this,function(t){return function(t){function e(i){if(n[i])return n[i].exports;var l=n[i]={i:i,l:!1,exports:{}};return t[i].call(l.exports,l,l.exports,e),l.l=!0,l.exports}var n={};return e.m=t,e.c=n,e.i=function(t){return t},e.d=function(t,n,i){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:i})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,\"a\",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p=\"/\",e(e.s=2)}([function(e,n){e.exports=t},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var i=n(4),l=n.n(i),o=n(6),r=n(5),u=r(l.a,o.a,!1,null,null,null);e.default=u.exports},function(t,e,n){\"use strict\";function i(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,\"__esModule\",{value:!0}),e.install=e.quillEditor=e.Quill=void 0;var l=n(0),o=i(l),r=n(1),u=i(r),s=window.Quill||o.default,a=function(t,e){e&&(u.default.props.globalOptions.default=function(){return e}),t.component(u.default.name,u.default)},c={Quill:s,quillEditor:u.default,install:a};e.default=c,e.Quill=s,e.quillEditor=u.default,e.install=a},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default={theme:\"snow\",boundary:document.body,modules:{toolbar:[[\"bold\",\"italic\",\"underline\",\"strike\"],[\"blockquote\",\"code-block\"],[{header:1},{header:2}],[{list:\"ordered\"},{list:\"bullet\"}],[{script:\"sub\"},{script:\"super\"}],[{indent:\"-1\"},{indent:\"+1\"}],[{direction:\"rtl\"}],[{size:[\"small\",!1,\"large\",\"huge\"]}],[{header:[1,2,3,4,5,6,!1]}],[{color:[]},{background:[]}],[{font:[]}],[{align:[]}],[\"clean\"],[\"link\",\"image\",\"video\"]]},placeholder:\"Insert text here ...\",readOnly:!1}},function(t,e,n){\"use strict\";function i(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,\"__esModule\",{value:!0});var l=n(0),o=i(l),r=n(3),u=i(r),s=window.Quill||o.default;\"function\"!=typeof Object.assign&&Object.defineProperty(Object,\"assign\",{value:function(t,e){if(null==t)throw new TypeError(\"Cannot convert undefined or null to object\");for(var n=Object(t),i=1;i

\"===l&&(l=\"\"),t._content=l,t.$emit(\"input\",t._content),t.$emit(\"change\",{html:l,text:r,quill:o})}),this.$emit(\"ready\",this.quill))}},watch:{content:function(t,e){this.quill&&(t&&t!==this._content?(this._content=t,this.quill.pasteHTML(t)):t||this.quill.setText(\"\"))},value:function(t,e){this.quill&&(t&&t!==this._content?(this._content=t,this.quill.pasteHTML(t)):t||this.quill.setText(\"\"))},disabled:function(t,e){this.quill&&this.quill.enable(!t)}}}},function(t,e){t.exports=function(t,e,n,i,l,o){var r,u=t=t||{},s=typeof t.default;\"object\"!==s&&\"function\"!==s||(r=t,u=t.default);var a=\"function\"==typeof u?u.options:u;e&&(a.render=e.render,a.staticRenderFns=e.staticRenderFns,a._compiled=!0),n&&(a.functional=!0),l&&(a._scopeId=l);var c;if(o?(c=function(t){t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,t||\"undefined\"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),i&&i.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(o)},a._ssrRegister=c):i&&(c=i),c){var d=a.functional,f=d?a.render:a.beforeCreate;d?(a._injectStyles=c,a.render=function(t,e){return c.call(e),f(t,e)}):a.beforeCreate=f?[].concat(f,c):[c]}return{esModule:r,exports:u,options:a}}},function(t,e,n){\"use strict\";var i=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"div\",{staticClass:\"quill-editor\"},[t._t(\"toolbar\"),t._v(\" \"),n(\"div\",{ref:\"editor\"})],2)},l=[],o={render:i,staticRenderFns:l};e.a=o}])});","/**\n * 线段包含判断\n * @param {number} x0\n * @param {number} y0\n * @param {number} x1\n * @param {number} y1\n * @param {number} lineWidth\n * @param {number} x\n * @param {number} y\n * @return {boolean}\n */\nfunction containStroke(x0, y0, x1, y1, lineWidth, x, y) {\n if (lineWidth === 0) {\n return false;\n }\n\n var _l = lineWidth;\n var _a = 0;\n var _b = x0; // Quick reject\n\n if (y > y0 + _l && y > y1 + _l || y < y0 - _l && y < y1 - _l || x > x0 + _l && x > x1 + _l || x < x0 - _l && x < x1 - _l) {\n return false;\n }\n\n if (x0 !== x1) {\n _a = (y0 - y1) / (x0 - x1);\n _b = (x0 * y1 - x1 * y0) / (x0 - x1);\n } else {\n return Math.abs(x - x0) <= _l / 2;\n }\n\n var tmp = _a * x - y + _b;\n\n var _s = tmp * tmp / (_a * _a + 1);\n\n return _s <= _l / 2 * _l / 2;\n}\n\nexports.containStroke = containStroke;","var vec2 = require(\"./vector\");\n\nvar matrix = require(\"./matrix\");\n\n/**\n * @module echarts/core/BoundingRect\n */\nvar v2ApplyTransform = vec2.applyTransform;\nvar mathMin = Math.min;\nvar mathMax = Math.max;\n/**\n * @alias module:echarts/core/BoundingRect\n */\n\nfunction BoundingRect(x, y, width, height) {\n if (width < 0) {\n x = x + width;\n width = -width;\n }\n\n if (height < 0) {\n y = y + height;\n height = -height;\n }\n /**\n * @type {number}\n */\n\n\n this.x = x;\n /**\n * @type {number}\n */\n\n this.y = y;\n /**\n * @type {number}\n */\n\n this.width = width;\n /**\n * @type {number}\n */\n\n this.height = height;\n}\n\nBoundingRect.prototype = {\n constructor: BoundingRect,\n\n /**\n * @param {module:echarts/core/BoundingRect} other\n */\n union: function (other) {\n var x = mathMin(other.x, this.x);\n var y = mathMin(other.y, this.y);\n this.width = mathMax(other.x + other.width, this.x + this.width) - x;\n this.height = mathMax(other.y + other.height, this.y + this.height) - y;\n this.x = x;\n this.y = y;\n },\n\n /**\n * @param {Array.} m\n * @methods\n */\n applyTransform: function () {\n var lt = [];\n var rb = [];\n var lb = [];\n var rt = [];\n return function (m) {\n // In case usage like this\n // el.getBoundingRect().applyTransform(el.transform)\n // And element has no transform\n if (!m) {\n return;\n }\n\n lt[0] = lb[0] = this.x;\n lt[1] = rt[1] = this.y;\n rb[0] = rt[0] = this.x + this.width;\n rb[1] = lb[1] = this.y + this.height;\n v2ApplyTransform(lt, lt, m);\n v2ApplyTransform(rb, rb, m);\n v2ApplyTransform(lb, lb, m);\n v2ApplyTransform(rt, rt, m);\n this.x = mathMin(lt[0], rb[0], lb[0], rt[0]);\n this.y = mathMin(lt[1], rb[1], lb[1], rt[1]);\n var maxX = mathMax(lt[0], rb[0], lb[0], rt[0]);\n var maxY = mathMax(lt[1], rb[1], lb[1], rt[1]);\n this.width = maxX - this.x;\n this.height = maxY - this.y;\n };\n }(),\n\n /**\n * Calculate matrix of transforming from self to target rect\n * @param {module:zrender/core/BoundingRect} b\n * @return {Array.}\n */\n calculateTransform: function (b) {\n var a = this;\n var sx = b.width / a.width;\n var sy = b.height / a.height;\n var m = matrix.create(); // 矩阵右乘\n\n matrix.translate(m, m, [-a.x, -a.y]);\n matrix.scale(m, m, [sx, sy]);\n matrix.translate(m, m, [b.x, b.y]);\n return m;\n },\n\n /**\n * @param {(module:echarts/core/BoundingRect|Object)} b\n * @return {boolean}\n */\n intersect: function (b) {\n if (!b) {\n return false;\n }\n\n if (!(b instanceof BoundingRect)) {\n // Normalize negative width/height.\n b = BoundingRect.create(b);\n }\n\n var a = this;\n var ax0 = a.x;\n var ax1 = a.x + a.width;\n var ay0 = a.y;\n var ay1 = a.y + a.height;\n var bx0 = b.x;\n var bx1 = b.x + b.width;\n var by0 = b.y;\n var by1 = b.y + b.height;\n return !(ax1 < bx0 || bx1 < ax0 || ay1 < by0 || by1 < ay0);\n },\n contain: function (x, y) {\n var rect = this;\n return x >= rect.x && x <= rect.x + rect.width && y >= rect.y && y <= rect.y + rect.height;\n },\n\n /**\n * @return {module:echarts/core/BoundingRect}\n */\n clone: function () {\n return new BoundingRect(this.x, this.y, this.width, this.height);\n },\n\n /**\n * Copy from another rect\n */\n copy: function (other) {\n this.x = other.x;\n this.y = other.y;\n this.width = other.width;\n this.height = other.height;\n },\n plain: function () {\n return {\n x: this.x,\n y: this.y,\n width: this.width,\n height: this.height\n };\n }\n};\n/**\n * @param {Object|module:zrender/core/BoundingRect} rect\n * @param {number} rect.x\n * @param {number} rect.y\n * @param {number} rect.width\n * @param {number} rect.height\n * @return {module:zrender/core/BoundingRect}\n */\n\nBoundingRect.create = function (rect) {\n return new BoundingRect(rect.x, rect.y, rect.width, rect.height);\n};\n\nvar _default = BoundingRect;\nmodule.exports = _default;","var _default = typeof window !== 'undefined' && (window.requestAnimationFrame && window.requestAnimationFrame.bind(window) || // https://github.com/ecomfe/zrender/issues/189#issuecomment-224919809\nwindow.msRequestAnimationFrame && window.msRequestAnimationFrame.bind(window) || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame) || function (func) {\n setTimeout(func, 16);\n};\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar graphic = require(\"../util/graphic\");\n\nvar textContain = require(\"zrender/lib/contain/text\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar PI = Math.PI;\n/**\n * @param {module:echarts/ExtensionAPI} api\n * @param {Object} [opts]\n * @param {string} [opts.text]\n * @param {string} [opts.color]\n * @param {string} [opts.textColor]\n * @return {module:zrender/Element}\n */\n\nfunction _default(api, opts) {\n opts = opts || {};\n zrUtil.defaults(opts, {\n text: 'loading',\n textColor: '#000',\n fontSize: '12px',\n maskColor: 'rgba(255, 255, 255, 0.8)',\n showSpinner: true,\n color: '#c23531',\n spinnerRadius: 10,\n lineWidth: 5,\n zlevel: 0\n });\n var group = new graphic.Group();\n var mask = new graphic.Rect({\n style: {\n fill: opts.maskColor\n },\n zlevel: opts.zlevel,\n z: 10000\n });\n group.add(mask);\n var font = opts.fontSize + ' sans-serif';\n var labelRect = new graphic.Rect({\n style: {\n fill: 'none',\n text: opts.text,\n font: font,\n textPosition: 'right',\n textDistance: 10,\n textFill: opts.textColor\n },\n zlevel: opts.zlevel,\n z: 10001\n });\n group.add(labelRect);\n\n if (opts.showSpinner) {\n var arc = new graphic.Arc({\n shape: {\n startAngle: -PI / 2,\n endAngle: -PI / 2 + 0.1,\n r: opts.spinnerRadius\n },\n style: {\n stroke: opts.color,\n lineCap: 'round',\n lineWidth: opts.lineWidth\n },\n zlevel: opts.zlevel,\n z: 10001\n });\n arc.animateShape(true).when(1000, {\n endAngle: PI * 3 / 2\n }).start('circularInOut');\n arc.animateShape(true).when(1000, {\n startAngle: PI * 3 / 2\n }).delay(300).start('circularInOut');\n group.add(arc);\n } // Inject resize\n\n\n group.resize = function () {\n var textWidth = textContain.getWidth(opts.text, font);\n var r = opts.showSpinner ? opts.spinnerRadius : 0; // cx = (containerWidth - arcDiameter - textDistance - textWidth) / 2\n // textDistance needs to be calculated when both animation and text exist\n\n var cx = (api.getWidth() - r * 2 - (opts.showSpinner && textWidth ? 10 : 0) - textWidth) / 2 // only show the text\n - (opts.showSpinner ? 0 : textWidth / 2);\n var cy = api.getHeight() / 2;\n opts.showSpinner && arc.setShape({\n cx: cx,\n cy: cy\n });\n labelRect.setShape({\n x: cx - r,\n y: cy - r,\n width: r * 2,\n height: r * 2\n });\n mask.setShape({\n x: 0,\n y: 0,\n width: api.getWidth(),\n height: api.getHeight()\n });\n };\n\n group.resize();\n return group;\n}\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar makeStyleMapper = require(\"./makeStyleMapper\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar getAreaStyle = makeStyleMapper([['fill', 'color'], ['shadowBlur'], ['shadowOffsetX'], ['shadowOffsetY'], ['opacity'], ['shadowColor']]);\nvar _default = {\n getAreaStyle: function (excludes, includes) {\n return getAreaStyle(this, excludes, includes);\n }\n};\nmodule.exports = _default;","var _vector = require(\"../../core/vector\");\n\nvar v2Min = _vector.min;\nvar v2Max = _vector.max;\nvar v2Scale = _vector.scale;\nvar v2Distance = _vector.distance;\nvar v2Add = _vector.add;\nvar v2Clone = _vector.clone;\nvar v2Sub = _vector.sub;\n\n/**\n * 贝塞尔平滑曲线\n * @module zrender/shape/util/smoothBezier\n * @author pissang (https://www.github.com/pissang)\n * Kener (@Kener-林峰, kener.linfeng@gmail.com)\n * errorrik (errorrik@gmail.com)\n */\n\n/**\n * 贝塞尔平滑曲线\n * @alias module:zrender/shape/util/smoothBezier\n * @param {Array} points 线段顶点数组\n * @param {number} smooth 平滑等级, 0-1\n * @param {boolean} isLoop\n * @param {Array} constraint 将计算出来的控制点约束在一个包围盒内\n * 比如 [[0, 0], [100, 100]], 这个包围盒会与\n * 整个折线的包围盒做一个并集用来约束控制点。\n * @param {Array} 计算出来的控制点数组\n */\nfunction _default(points, smooth, isLoop, constraint) {\n var cps = [];\n var v = [];\n var v1 = [];\n var v2 = [];\n var prevPoint;\n var nextPoint;\n var min;\n var max;\n\n if (constraint) {\n min = [Infinity, Infinity];\n max = [-Infinity, -Infinity];\n\n for (var i = 0, len = points.length; i < len; i++) {\n v2Min(min, min, points[i]);\n v2Max(max, max, points[i]);\n } // 与指定的包围盒做并集\n\n\n v2Min(min, min, constraint[0]);\n v2Max(max, max, constraint[1]);\n }\n\n for (var i = 0, len = points.length; i < len; i++) {\n var point = points[i];\n\n if (isLoop) {\n prevPoint = points[i ? i - 1 : len - 1];\n nextPoint = points[(i + 1) % len];\n } else {\n if (i === 0 || i === len - 1) {\n cps.push(v2Clone(points[i]));\n continue;\n } else {\n prevPoint = points[i - 1];\n nextPoint = points[i + 1];\n }\n }\n\n v2Sub(v, nextPoint, prevPoint); // use degree to scale the handle length\n\n v2Scale(v, v, smooth);\n var d0 = v2Distance(point, prevPoint);\n var d1 = v2Distance(point, nextPoint);\n var sum = d0 + d1;\n\n if (sum !== 0) {\n d0 /= sum;\n d1 /= sum;\n }\n\n v2Scale(v1, v, -d0);\n v2Scale(v2, v, d1);\n var cp0 = v2Add([], point, v1);\n var cp1 = v2Add([], point, v2);\n\n if (constraint) {\n v2Max(cp0, cp0, min);\n v2Min(cp0, cp0, max);\n v2Max(cp1, cp1, min);\n v2Min(cp1, cp1, max);\n }\n\n cps.push(cp0);\n cps.push(cp1);\n }\n\n if (isLoop) {\n cps.push(cps.shift());\n }\n\n return cps;\n}\n\nmodule.exports = _default;","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n// v-b-visible\n// Private visibility check directive\n// Based on IntersectionObserver\n//\n// Usage:\n// v-b-visibility..=\"\"\n//\n// Value:\n// : method to be called when visibility state changes, receives one arg:\n// true: element is visible\n// false: element is not visible\n// null: IntersectionObserver not supported\n//\n// Modifiers:\n// : a positive decimal value of pixels away from viewport edge\n// before being considered \"visible\". default is 0\n// : keyword 'once', meaning when the element becomes visible and\n// callback is called observation/notification will stop.\n//\n// When used in a render function:\n// export default {\n// directives: { 'b-visible': VBVisible },\n// render(h) {\n// h(\n// 'div',\n// {\n// directives: [\n// { name: 'b-visible', value=this.callback, modifiers: { '123':true, 'once':true } }\n// ]\n// }\n// )\n// }\nimport { RX_DIGITS } from '../../constants/regex';\nimport { requestAF } from '../../utils/dom';\nimport { isFunction } from '../../utils/inspect';\nimport { looseEqual } from '../../utils/loose-equal';\nimport { clone, keys } from '../../utils/object';\nvar OBSERVER_PROP_NAME = '__bv__visibility_observer';\n\nvar VisibilityObserver = /*#__PURE__*/function () {\n function VisibilityObserver(el, options, vnode) {\n _classCallCheck(this, VisibilityObserver);\n\n this.el = el;\n this.callback = options.callback;\n this.margin = options.margin || 0;\n this.once = options.once || false;\n this.observer = null;\n this.visible = undefined;\n this.doneOnce = false; // Create the observer instance (if possible)\n\n this.createObserver(vnode);\n }\n\n _createClass(VisibilityObserver, [{\n key: \"createObserver\",\n value: function createObserver(vnode) {\n var _this = this;\n\n // Remove any previous observer\n if (this.observer) {\n /* istanbul ignore next */\n this.stop();\n } // Should only be called once and `callback` prop should be a function\n\n\n if (this.doneOnce || !isFunction(this.callback)) {\n /* istanbul ignore next */\n return;\n } // Create the observer instance\n\n\n try {\n // Future: Possibly add in other modifiers for left/right/top/bottom\n // offsets, root element reference, and thresholds\n this.observer = new IntersectionObserver(this.handler.bind(this), {\n // `null` = 'viewport'\n root: null,\n // Pixels away from view port to consider \"visible\"\n rootMargin: this.margin,\n // Intersection ratio of el and root (as a value from 0 to 1)\n threshold: 0\n });\n } catch (_unused) {\n // No IntersectionObserver support, so just stop trying to observe\n this.doneOnce = true;\n this.observer = undefined;\n this.callback(null);\n return;\n } // Start observing in a `$nextTick()` (to allow DOM to complete rendering)\n\n /* istanbul ignore next: IntersectionObserver not supported in JSDOM */\n\n\n vnode.context.$nextTick(function () {\n requestAF(function () {\n // Placed in an `if` just in case we were destroyed before\n // this `requestAnimationFrame` runs\n if (_this.observer) {\n _this.observer.observe(_this.el);\n }\n });\n });\n }\n /* istanbul ignore next */\n\n }, {\n key: \"handler\",\n value: function handler(entries) {\n var entry = entries ? entries[0] : {};\n var isIntersecting = Boolean(entry.isIntersecting || entry.intersectionRatio > 0.0);\n\n if (isIntersecting !== this.visible) {\n this.visible = isIntersecting;\n this.callback(isIntersecting);\n\n if (this.once && this.visible) {\n this.doneOnce = true;\n this.stop();\n }\n }\n }\n }, {\n key: \"stop\",\n value: function stop() {\n /* istanbul ignore next */\n this.observer && this.observer.disconnect();\n this.observer = null;\n }\n }]);\n\n return VisibilityObserver;\n}();\n\nvar destroy = function destroy(el) {\n var observer = el[OBSERVER_PROP_NAME];\n\n if (observer && observer.stop) {\n observer.stop();\n }\n\n delete el[OBSERVER_PROP_NAME];\n};\n\nvar bind = function bind(el, _ref, vnode) {\n var value = _ref.value,\n modifiers = _ref.modifiers;\n // `value` is the callback function\n var options = {\n margin: '0px',\n once: false,\n callback: value\n }; // Parse modifiers\n\n keys(modifiers).forEach(function (mod) {\n /* istanbul ignore else: Until is switched to use this directive */\n if (RX_DIGITS.test(mod)) {\n options.margin = \"\".concat(mod, \"px\");\n } else if (mod.toLowerCase() === 'once') {\n options.once = true;\n }\n }); // Destroy any previous observer\n\n destroy(el); // Create new observer\n\n el[OBSERVER_PROP_NAME] = new VisibilityObserver(el, options, vnode); // Store the current modifiers on the object (cloned)\n\n el[OBSERVER_PROP_NAME]._prevModifiers = clone(modifiers);\n}; // When the directive options may have been updated (or element)\n\n\nvar componentUpdated = function componentUpdated(el, _ref2, vnode) {\n var value = _ref2.value,\n oldValue = _ref2.oldValue,\n modifiers = _ref2.modifiers;\n // Compare value/oldValue and modifiers to see if anything has changed\n // and if so, destroy old observer and create new observer\n\n /* istanbul ignore next */\n modifiers = clone(modifiers);\n /* istanbul ignore next */\n\n if (el && (value !== oldValue || !el[OBSERVER_PROP_NAME] || !looseEqual(modifiers, el[OBSERVER_PROP_NAME]._prevModifiers))) {\n // Re-bind on element\n bind(el, {\n value: value,\n modifiers: modifiers\n }, vnode);\n }\n}; // When directive un-binds from element\n\n\nvar unbind = function unbind(el) {\n // Remove the observer\n destroy(el);\n}; // Export the directive\n\n\nexport var VBVisible = {\n bind: bind,\n componentUpdated: componentUpdated,\n unbind: unbind\n};","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../vue';\nimport { NAME_FORM_TEXTAREA } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { getCS, getStyle, isVisible, requestAF, setStyle } from '../../utils/dom';\nimport { isNull } from '../../utils/inspect';\nimport { mathCeil, mathMax, mathMin } from '../../utils/math';\nimport { toInteger, toFloat } from '../../utils/number';\nimport { sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { formControlMixin, props as formControlProps } from '../../mixins/form-control';\nimport { formSelectionMixin } from '../../mixins/form-selection';\nimport { formSizeMixin, props as formSizeProps } from '../../mixins/form-size';\nimport { formStateMixin, props as formStateProps } from '../../mixins/form-state';\nimport { formTextMixin, props as formTextProps } from '../../mixins/form-text';\nimport { formValidityMixin } from '../../mixins/form-validity';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { listenOnRootMixin } from '../../mixins/listen-on-root';\nimport { listenersMixin } from '../../mixins/listeners';\nimport { VBVisible } from '../../directives/visible/visible'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, idProps), formControlProps), formSizeProps), formStateProps), formTextProps), {}, {\n maxRows: makeProp(PROP_TYPE_NUMBER_STRING),\n // When in auto resize mode, disable shrinking to content height\n noAutoShrink: makeProp(PROP_TYPE_BOOLEAN, false),\n // Disable the resize handle of textarea\n noResize: makeProp(PROP_TYPE_BOOLEAN, false),\n rows: makeProp(PROP_TYPE_NUMBER_STRING, 2),\n // 'soft', 'hard' or 'off'\n // Browser default is 'soft'\n wrap: makeProp(PROP_TYPE_STRING, 'soft')\n})), NAME_FORM_TEXTAREA); // --- Main component ---\n// @vue/component\n\nexport var BFormTextarea = /*#__PURE__*/Vue.extend({\n name: NAME_FORM_TEXTAREA,\n directives: {\n 'b-visible': VBVisible\n },\n // Mixin order is important!\n mixins: [listenersMixin, idMixin, listenOnRootMixin, formControlMixin, formSizeMixin, formStateMixin, formTextMixin, formSelectionMixin, formValidityMixin],\n props: props,\n data: function data() {\n return {\n heightInPx: null\n };\n },\n computed: {\n computedStyle: function computedStyle() {\n var styles = {\n // Setting `noResize` to true will disable the ability for the user to\n // manually resize the textarea. We also disable when in auto height mode\n resize: !this.computedRows || this.noResize ? 'none' : null\n };\n\n if (!this.computedRows) {\n // Conditionally set the computed CSS height when auto rows/height is enabled\n // We avoid setting the style to `null`, which can override user manual resize handle\n styles.height = this.heightInPx; // We always add a vertical scrollbar to the textarea when auto-height is\n // enabled so that the computed height calculation returns a stable value\n\n styles.overflowY = 'scroll';\n }\n\n return styles;\n },\n computedMinRows: function computedMinRows() {\n // Ensure rows is at least 2 and positive (2 is the native textarea value)\n // A value of 1 can cause issues in some browsers, and most browsers\n // only support 2 as the smallest value\n return mathMax(toInteger(this.rows, 2), 2);\n },\n computedMaxRows: function computedMaxRows() {\n return mathMax(this.computedMinRows, toInteger(this.maxRows, 0));\n },\n computedRows: function computedRows() {\n // This is used to set the attribute 'rows' on the textarea\n // If auto-height is enabled, then we return `null` as we use CSS to control height\n return this.computedMinRows === this.computedMaxRows ? this.computedMinRows : null;\n },\n computedAttrs: function computedAttrs() {\n var disabled = this.disabled,\n required = this.required;\n return {\n id: this.safeId(),\n name: this.name || null,\n form: this.form || null,\n disabled: disabled,\n placeholder: this.placeholder || null,\n required: required,\n autocomplete: this.autocomplete || null,\n readonly: this.readonly || this.plaintext,\n rows: this.computedRows,\n wrap: this.wrap || null,\n 'aria-required': this.required ? 'true' : null,\n 'aria-invalid': this.computedAriaInvalid\n };\n },\n computedListeners: function computedListeners() {\n return _objectSpread(_objectSpread({}, this.bvListeners), {}, {\n input: this.onInput,\n change: this.onChange,\n blur: this.onBlur\n });\n }\n },\n watch: {\n localValue: function localValue() {\n this.setHeight();\n }\n },\n mounted: function mounted() {\n this.setHeight();\n },\n methods: {\n // Called by intersection observer directive\n\n /* istanbul ignore next */\n visibleCallback: function visibleCallback(visible) {\n if (visible) {\n // We use a `$nextTick()` here just to make sure any\n // transitions or portalling have completed\n this.$nextTick(this.setHeight);\n }\n },\n setHeight: function setHeight() {\n var _this = this;\n\n this.$nextTick(function () {\n requestAF(function () {\n _this.heightInPx = _this.computeHeight();\n });\n });\n },\n\n /* istanbul ignore next: can't test getComputedStyle in JSDOM */\n computeHeight: function computeHeight() {\n if (this.$isServer || !isNull(this.computedRows)) {\n return null;\n }\n\n var el = this.$el; // Element must be visible (not hidden) and in document\n // Must be checked after above checks\n\n if (!isVisible(el)) {\n return null;\n } // Get current computed styles\n\n\n var computedStyle = getCS(el); // Height of one line of text in px\n\n var lineHeight = toFloat(computedStyle.lineHeight, 1); // Calculate height of border and padding\n\n var border = toFloat(computedStyle.borderTopWidth, 0) + toFloat(computedStyle.borderBottomWidth, 0);\n var padding = toFloat(computedStyle.paddingTop, 0) + toFloat(computedStyle.paddingBottom, 0); // Calculate offset\n\n var offset = border + padding; // Minimum height for min rows (which must be 2 rows or greater for cross-browser support)\n\n var minHeight = lineHeight * this.computedMinRows + offset; // Get the current style height (with `px` units)\n\n var oldHeight = getStyle(el, 'height') || computedStyle.height; // Probe scrollHeight by temporarily changing the height to `auto`\n\n setStyle(el, 'height', 'auto');\n var scrollHeight = el.scrollHeight; // Place the original old height back on the element, just in case `computedProp`\n // returns the same value as before\n\n setStyle(el, 'height', oldHeight); // Calculate content height in 'rows' (scrollHeight includes padding but not border)\n\n var contentRows = mathMax((scrollHeight - padding) / lineHeight, 2); // Calculate number of rows to display (limited within min/max rows)\n\n var rows = mathMin(mathMax(contentRows, this.computedMinRows), this.computedMaxRows); // Calculate the required height of the textarea including border and padding (in pixels)\n\n var height = mathMax(mathCeil(rows * lineHeight + offset), minHeight); // Computed height remains the larger of `oldHeight` and new `height`,\n // when height is in `sticky` mode (prop `no-auto-shrink` is true)\n\n if (this.noAutoShrink && toFloat(oldHeight, 0) > height) {\n return oldHeight;\n } // Return the new computed CSS height in px units\n\n\n return \"\".concat(height, \"px\");\n }\n },\n render: function render(h) {\n return h('textarea', {\n class: this.computedClass,\n style: this.computedStyle,\n directives: [{\n name: 'b-visible',\n value: this.visibleCallback,\n // If textarea is within 640px of viewport, consider it visible\n modifiers: {\n '640': true\n }\n }],\n attrs: this.computedAttrs,\n domProps: {\n value: this.localValue\n },\n on: this.computedListeners,\n ref: 'input'\n });\n }\n});","/**\n * Sub-pixel optimize for canvas rendering, prevent from blur\n * when rendering a thin vertical/horizontal line.\n */\nvar round = Math.round;\n/**\n * Sub pixel optimize line for canvas\n *\n * @param {Object} outputShape The modification will be performed on `outputShape`.\n * `outputShape` and `inputShape` can be the same object.\n * `outputShape` object can be used repeatly, because all of\n * the `x1`, `x2`, `y1`, `y2` will be assigned in this method.\n * @param {Object} [inputShape]\n * @param {number} [inputShape.x1]\n * @param {number} [inputShape.y1]\n * @param {number} [inputShape.x2]\n * @param {number} [inputShape.y2]\n * @param {Object} [style]\n * @param {number} [style.lineWidth] If `null`/`undefined`/`0`, do not optimize.\n */\n\nfunction subPixelOptimizeLine(outputShape, inputShape, style) {\n if (!inputShape) {\n return;\n }\n\n var x1 = inputShape.x1;\n var x2 = inputShape.x2;\n var y1 = inputShape.y1;\n var y2 = inputShape.y2;\n outputShape.x1 = x1;\n outputShape.x2 = x2;\n outputShape.y1 = y1;\n outputShape.y2 = y2;\n var lineWidth = style && style.lineWidth;\n\n if (!lineWidth) {\n return;\n }\n\n if (round(x1 * 2) === round(x2 * 2)) {\n outputShape.x1 = outputShape.x2 = subPixelOptimize(x1, lineWidth, true);\n }\n\n if (round(y1 * 2) === round(y2 * 2)) {\n outputShape.y1 = outputShape.y2 = subPixelOptimize(y1, lineWidth, true);\n }\n}\n/**\n * Sub pixel optimize rect for canvas\n *\n * @param {Object} outputShape The modification will be performed on `outputShape`.\n * `outputShape` and `inputShape` can be the same object.\n * `outputShape` object can be used repeatly, because all of\n * the `x`, `y`, `width`, `height` will be assigned in this method.\n * @param {Object} [inputShape]\n * @param {number} [inputShape.x]\n * @param {number} [inputShape.y]\n * @param {number} [inputShape.width]\n * @param {number} [inputShape.height]\n * @param {Object} [style]\n * @param {number} [style.lineWidth] If `null`/`undefined`/`0`, do not optimize.\n */\n\n\nfunction subPixelOptimizeRect(outputShape, inputShape, style) {\n if (!inputShape) {\n return;\n }\n\n var originX = inputShape.x;\n var originY = inputShape.y;\n var originWidth = inputShape.width;\n var originHeight = inputShape.height;\n outputShape.x = originX;\n outputShape.y = originY;\n outputShape.width = originWidth;\n outputShape.height = originHeight;\n var lineWidth = style && style.lineWidth;\n\n if (!lineWidth) {\n return;\n }\n\n outputShape.x = subPixelOptimize(originX, lineWidth, true);\n outputShape.y = subPixelOptimize(originY, lineWidth, true);\n outputShape.width = Math.max(subPixelOptimize(originX + originWidth, lineWidth, false) - outputShape.x, originWidth === 0 ? 0 : 1);\n outputShape.height = Math.max(subPixelOptimize(originY + originHeight, lineWidth, false) - outputShape.y, originHeight === 0 ? 0 : 1);\n}\n/**\n * Sub pixel optimize for canvas\n *\n * @param {number} position Coordinate, such as x, y\n * @param {number} lineWidth If `null`/`undefined`/`0`, do not optimize.\n * @param {boolean=} positiveOrNegative Default false (negative).\n * @return {number} Optimized position.\n */\n\n\nfunction subPixelOptimize(position, lineWidth, positiveOrNegative) {\n if (!lineWidth) {\n return position;\n } // Assure that (position + lineWidth / 2) is near integer edge,\n // otherwise line will be fuzzy in canvas.\n\n\n var doubledPosition = round(position * 2);\n return (doubledPosition + round(lineWidth)) % 2 === 0 ? doubledPosition / 2 : (doubledPosition + (positiveOrNegative ? 1 : -1)) / 2;\n}\n\nexports.subPixelOptimizeLine = subPixelOptimizeLine;\nexports.subPixelOptimizeRect = subPixelOptimizeRect;\nexports.subPixelOptimize = subPixelOptimize;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar _number = require(\"../util/number\");\n\nvar parsePercent = _number.parsePercent;\n\nvar _dataStackHelper = require(\"../data/helper/dataStackHelper\");\n\nvar isDimensionStacked = _dataStackHelper.isDimensionStacked;\n\nvar createRenderPlanner = require(\"../chart/helper/createRenderPlanner\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/* global Float32Array */\nvar STACK_PREFIX = '__ec_stack_';\nvar LARGE_BAR_MIN_WIDTH = 0.5;\nvar LargeArr = typeof Float32Array !== 'undefined' ? Float32Array : Array;\n\nfunction getSeriesStackId(seriesModel) {\n return seriesModel.get('stack') || STACK_PREFIX + seriesModel.seriesIndex;\n}\n\nfunction getAxisKey(axis) {\n return axis.dim + axis.index;\n}\n/**\n * @param {Object} opt\n * @param {module:echarts/coord/Axis} opt.axis Only support category axis currently.\n * @param {number} opt.count Positive interger.\n * @param {number} [opt.barWidth]\n * @param {number} [opt.barMaxWidth]\n * @param {number} [opt.barMinWidth]\n * @param {number} [opt.barGap]\n * @param {number} [opt.barCategoryGap]\n * @return {Object} {width, offset, offsetCenter} If axis.type is not 'category', return undefined.\n */\n\n\nfunction getLayoutOnAxis(opt) {\n var params = [];\n var baseAxis = opt.axis;\n var axisKey = 'axis0';\n\n if (baseAxis.type !== 'category') {\n return;\n }\n\n var bandWidth = baseAxis.getBandWidth();\n\n for (var i = 0; i < opt.count || 0; i++) {\n params.push(zrUtil.defaults({\n bandWidth: bandWidth,\n axisKey: axisKey,\n stackId: STACK_PREFIX + i\n }, opt));\n }\n\n var widthAndOffsets = doCalBarWidthAndOffset(params);\n var result = [];\n\n for (var i = 0; i < opt.count; i++) {\n var item = widthAndOffsets[axisKey][STACK_PREFIX + i];\n item.offsetCenter = item.offset + item.width / 2;\n result.push(item);\n }\n\n return result;\n}\n\nfunction prepareLayoutBarSeries(seriesType, ecModel) {\n var seriesModels = [];\n ecModel.eachSeriesByType(seriesType, function (seriesModel) {\n // Check series coordinate, do layout for cartesian2d only\n if (isOnCartesian(seriesModel) && !isInLargeMode(seriesModel)) {\n seriesModels.push(seriesModel);\n }\n });\n return seriesModels;\n}\n/**\n * Map from (baseAxis.dim + '_' + baseAxis.index) to min gap of two adjacent\n * values.\n * This works for time axes, value axes, and log axes.\n * For a single time axis, return value is in the form like\n * {'x_0': [1000000]}.\n * The value of 1000000 is in milliseconds.\n */\n\n\nfunction getValueAxesMinGaps(barSeries) {\n /**\n * Map from axis.index to values.\n * For a single time axis, axisValues is in the form like\n * {'x_0': [1495555200000, 1495641600000, 1495728000000]}.\n * Items in axisValues[x], e.g. 1495555200000, are time values of all\n * series.\n */\n var axisValues = {};\n zrUtil.each(barSeries, function (seriesModel) {\n var cartesian = seriesModel.coordinateSystem;\n var baseAxis = cartesian.getBaseAxis();\n\n if (baseAxis.type !== 'time' && baseAxis.type !== 'value') {\n return;\n }\n\n var data = seriesModel.getData();\n var key = baseAxis.dim + '_' + baseAxis.index;\n var dim = data.mapDimension(baseAxis.dim);\n\n for (var i = 0, cnt = data.count(); i < cnt; ++i) {\n var value = data.get(dim, i);\n\n if (!axisValues[key]) {\n // No previous data for the axis\n axisValues[key] = [value];\n } else {\n // No value in previous series\n axisValues[key].push(value);\n } // Ignore duplicated time values in the same axis\n\n }\n });\n var axisMinGaps = [];\n\n for (var key in axisValues) {\n if (axisValues.hasOwnProperty(key)) {\n var valuesInAxis = axisValues[key];\n\n if (valuesInAxis) {\n // Sort axis values into ascending order to calculate gaps\n valuesInAxis.sort(function (a, b) {\n return a - b;\n });\n var min = null;\n\n for (var j = 1; j < valuesInAxis.length; ++j) {\n var delta = valuesInAxis[j] - valuesInAxis[j - 1];\n\n if (delta > 0) {\n // Ignore 0 delta because they are of the same axis value\n min = min === null ? delta : Math.min(min, delta);\n }\n } // Set to null if only have one data\n\n\n axisMinGaps[key] = min;\n }\n }\n }\n\n return axisMinGaps;\n}\n\nfunction makeColumnLayout(barSeries) {\n var axisMinGaps = getValueAxesMinGaps(barSeries);\n var seriesInfoList = [];\n zrUtil.each(barSeries, function (seriesModel) {\n var cartesian = seriesModel.coordinateSystem;\n var baseAxis = cartesian.getBaseAxis();\n var axisExtent = baseAxis.getExtent();\n var bandWidth;\n\n if (baseAxis.type === 'category') {\n bandWidth = baseAxis.getBandWidth();\n } else if (baseAxis.type === 'value' || baseAxis.type === 'time') {\n var key = baseAxis.dim + '_' + baseAxis.index;\n var minGap = axisMinGaps[key];\n var extentSpan = Math.abs(axisExtent[1] - axisExtent[0]);\n var scale = baseAxis.scale.getExtent();\n var scaleSpan = Math.abs(scale[1] - scale[0]);\n bandWidth = minGap ? extentSpan / scaleSpan * minGap : extentSpan; // When there is only one data value\n } else {\n var data = seriesModel.getData();\n bandWidth = Math.abs(axisExtent[1] - axisExtent[0]) / data.count();\n }\n\n var barWidth = parsePercent(seriesModel.get('barWidth'), bandWidth);\n var barMaxWidth = parsePercent(seriesModel.get('barMaxWidth'), bandWidth);\n var barMinWidth = parsePercent( // barMinWidth by default is 1 in cartesian. Because in value axis,\n // the auto-calculated bar width might be less than 1.\n seriesModel.get('barMinWidth') || 1, bandWidth);\n var barGap = seriesModel.get('barGap');\n var barCategoryGap = seriesModel.get('barCategoryGap');\n seriesInfoList.push({\n bandWidth: bandWidth,\n barWidth: barWidth,\n barMaxWidth: barMaxWidth,\n barMinWidth: barMinWidth,\n barGap: barGap,\n barCategoryGap: barCategoryGap,\n axisKey: getAxisKey(baseAxis),\n stackId: getSeriesStackId(seriesModel)\n });\n });\n return doCalBarWidthAndOffset(seriesInfoList);\n}\n\nfunction doCalBarWidthAndOffset(seriesInfoList) {\n // Columns info on each category axis. Key is cartesian name\n var columnsMap = {};\n zrUtil.each(seriesInfoList, function (seriesInfo, idx) {\n var axisKey = seriesInfo.axisKey;\n var bandWidth = seriesInfo.bandWidth;\n var columnsOnAxis = columnsMap[axisKey] || {\n bandWidth: bandWidth,\n remainedWidth: bandWidth,\n autoWidthCount: 0,\n categoryGap: '20%',\n gap: '30%',\n stacks: {}\n };\n var stacks = columnsOnAxis.stacks;\n columnsMap[axisKey] = columnsOnAxis;\n var stackId = seriesInfo.stackId;\n\n if (!stacks[stackId]) {\n columnsOnAxis.autoWidthCount++;\n }\n\n stacks[stackId] = stacks[stackId] || {\n width: 0,\n maxWidth: 0\n }; // Caution: In a single coordinate system, these barGrid attributes\n // will be shared by series. Consider that they have default values,\n // only the attributes set on the last series will work.\n // Do not change this fact unless there will be a break change.\n\n var barWidth = seriesInfo.barWidth;\n\n if (barWidth && !stacks[stackId].width) {\n // See #6312, do not restrict width.\n stacks[stackId].width = barWidth;\n barWidth = Math.min(columnsOnAxis.remainedWidth, barWidth);\n columnsOnAxis.remainedWidth -= barWidth;\n }\n\n var barMaxWidth = seriesInfo.barMaxWidth;\n barMaxWidth && (stacks[stackId].maxWidth = barMaxWidth);\n var barMinWidth = seriesInfo.barMinWidth;\n barMinWidth && (stacks[stackId].minWidth = barMinWidth);\n var barGap = seriesInfo.barGap;\n barGap != null && (columnsOnAxis.gap = barGap);\n var barCategoryGap = seriesInfo.barCategoryGap;\n barCategoryGap != null && (columnsOnAxis.categoryGap = barCategoryGap);\n });\n var result = {};\n zrUtil.each(columnsMap, function (columnsOnAxis, coordSysName) {\n result[coordSysName] = {};\n var stacks = columnsOnAxis.stacks;\n var bandWidth = columnsOnAxis.bandWidth;\n var categoryGap = parsePercent(columnsOnAxis.categoryGap, bandWidth);\n var barGapPercent = parsePercent(columnsOnAxis.gap, 1);\n var remainedWidth = columnsOnAxis.remainedWidth;\n var autoWidthCount = columnsOnAxis.autoWidthCount;\n var autoWidth = (remainedWidth - categoryGap) / (autoWidthCount + (autoWidthCount - 1) * barGapPercent);\n autoWidth = Math.max(autoWidth, 0); // Find if any auto calculated bar exceeded maxBarWidth\n\n zrUtil.each(stacks, function (column) {\n var maxWidth = column.maxWidth;\n var minWidth = column.minWidth;\n\n if (!column.width) {\n var finalWidth = autoWidth;\n\n if (maxWidth && maxWidth < finalWidth) {\n finalWidth = Math.min(maxWidth, remainedWidth);\n } // `minWidth` has higher priority. `minWidth` decide that wheter the\n // bar is able to be visible. So `minWidth` should not be restricted\n // by `maxWidth` or `remainedWidth` (which is from `bandWidth`). In\n // the extreme cases for `value` axis, bars are allowed to overlap\n // with each other if `minWidth` specified.\n\n\n if (minWidth && minWidth > finalWidth) {\n finalWidth = minWidth;\n }\n\n if (finalWidth !== autoWidth) {\n column.width = finalWidth;\n remainedWidth -= finalWidth + barGapPercent * finalWidth;\n autoWidthCount--;\n }\n } else {\n // `barMinWidth/barMaxWidth` has higher priority than `barWidth`, as\n // CSS does. Becuase barWidth can be a percent value, where\n // `barMaxWidth` can be used to restrict the final width.\n var finalWidth = column.width;\n\n if (maxWidth) {\n finalWidth = Math.min(finalWidth, maxWidth);\n } // `minWidth` has higher priority, as described above\n\n\n if (minWidth) {\n finalWidth = Math.max(finalWidth, minWidth);\n }\n\n column.width = finalWidth;\n remainedWidth -= finalWidth + barGapPercent * finalWidth;\n autoWidthCount--;\n }\n }); // Recalculate width again\n\n autoWidth = (remainedWidth - categoryGap) / (autoWidthCount + (autoWidthCount - 1) * barGapPercent);\n autoWidth = Math.max(autoWidth, 0);\n var widthSum = 0;\n var lastColumn;\n zrUtil.each(stacks, function (column, idx) {\n if (!column.width) {\n column.width = autoWidth;\n }\n\n lastColumn = column;\n widthSum += column.width * (1 + barGapPercent);\n });\n\n if (lastColumn) {\n widthSum -= lastColumn.width * barGapPercent;\n }\n\n var offset = -widthSum / 2;\n zrUtil.each(stacks, function (column, stackId) {\n result[coordSysName][stackId] = result[coordSysName][stackId] || {\n bandWidth: bandWidth,\n offset: offset,\n width: column.width\n };\n offset += column.width * (1 + barGapPercent);\n });\n });\n return result;\n}\n/**\n * @param {Object} barWidthAndOffset The result of makeColumnLayout\n * @param {module:echarts/coord/Axis} axis\n * @param {module:echarts/model/Series} [seriesModel] If not provided, return all.\n * @return {Object} {stackId: {offset, width}} or {offset, width} if seriesModel provided.\n */\n\n\nfunction retrieveColumnLayout(barWidthAndOffset, axis, seriesModel) {\n if (barWidthAndOffset && axis) {\n var result = barWidthAndOffset[getAxisKey(axis)];\n\n if (result != null && seriesModel != null) {\n result = result[getSeriesStackId(seriesModel)];\n }\n\n return result;\n }\n}\n/**\n * @param {string} seriesType\n * @param {module:echarts/model/Global} ecModel\n */\n\n\nfunction layout(seriesType, ecModel) {\n var seriesModels = prepareLayoutBarSeries(seriesType, ecModel);\n var barWidthAndOffset = makeColumnLayout(seriesModels);\n var lastStackCoords = {};\n var lastStackCoordsOrigin = {};\n zrUtil.each(seriesModels, function (seriesModel) {\n var data = seriesModel.getData();\n var cartesian = seriesModel.coordinateSystem;\n var baseAxis = cartesian.getBaseAxis();\n var stackId = getSeriesStackId(seriesModel);\n var columnLayoutInfo = barWidthAndOffset[getAxisKey(baseAxis)][stackId];\n var columnOffset = columnLayoutInfo.offset;\n var columnWidth = columnLayoutInfo.width;\n var valueAxis = cartesian.getOtherAxis(baseAxis);\n var barMinHeight = seriesModel.get('barMinHeight') || 0;\n lastStackCoords[stackId] = lastStackCoords[stackId] || [];\n lastStackCoordsOrigin[stackId] = lastStackCoordsOrigin[stackId] || []; // Fix #4243\n\n data.setLayout({\n bandWidth: columnLayoutInfo.bandWidth,\n offset: columnOffset,\n size: columnWidth\n });\n var valueDim = data.mapDimension(valueAxis.dim);\n var baseDim = data.mapDimension(baseAxis.dim);\n var stacked = isDimensionStacked(data, valueDim\n /*, baseDim*/\n );\n var isValueAxisH = valueAxis.isHorizontal();\n var valueAxisStart = getValueAxisStart(baseAxis, valueAxis, stacked);\n\n for (var idx = 0, len = data.count(); idx < len; idx++) {\n var value = data.get(valueDim, idx);\n var baseValue = data.get(baseDim, idx);\n var sign = value >= 0 ? 'p' : 'n';\n var baseCoord = valueAxisStart; // Because of the barMinHeight, we can not use the value in\n // stackResultDimension directly.\n\n if (stacked) {\n // Only ordinal axis can be stacked.\n if (!lastStackCoords[stackId][baseValue]) {\n lastStackCoords[stackId][baseValue] = {\n p: valueAxisStart,\n // Positive stack\n n: valueAxisStart // Negative stack\n\n };\n } // Should also consider #4243\n\n\n baseCoord = lastStackCoords[stackId][baseValue][sign];\n }\n\n var x;\n var y;\n var width;\n var height;\n\n if (isValueAxisH) {\n var coord = cartesian.dataToPoint([value, baseValue]);\n x = baseCoord;\n y = coord[1] + columnOffset;\n width = coord[0] - valueAxisStart;\n height = columnWidth;\n\n if (Math.abs(width) < barMinHeight) {\n width = (width < 0 ? -1 : 1) * barMinHeight;\n } // Ignore stack from NaN value\n\n\n if (!isNaN(width)) {\n stacked && (lastStackCoords[stackId][baseValue][sign] += width);\n }\n } else {\n var coord = cartesian.dataToPoint([baseValue, value]);\n x = coord[0] + columnOffset;\n y = baseCoord;\n width = columnWidth;\n height = coord[1] - valueAxisStart;\n\n if (Math.abs(height) < barMinHeight) {\n // Include zero to has a positive bar\n height = (height <= 0 ? -1 : 1) * barMinHeight;\n } // Ignore stack from NaN value\n\n\n if (!isNaN(height)) {\n stacked && (lastStackCoords[stackId][baseValue][sign] += height);\n }\n }\n\n data.setItemLayout(idx, {\n x: x,\n y: y,\n width: width,\n height: height\n });\n }\n }, this);\n} // TODO: Do not support stack in large mode yet.\n\n\nvar largeLayout = {\n seriesType: 'bar',\n plan: createRenderPlanner(),\n reset: function (seriesModel) {\n if (!isOnCartesian(seriesModel) || !isInLargeMode(seriesModel)) {\n return;\n }\n\n var data = seriesModel.getData();\n var cartesian = seriesModel.coordinateSystem;\n var coordLayout = cartesian.grid.getRect();\n var baseAxis = cartesian.getBaseAxis();\n var valueAxis = cartesian.getOtherAxis(baseAxis);\n var valueDim = data.mapDimension(valueAxis.dim);\n var baseDim = data.mapDimension(baseAxis.dim);\n var valueAxisHorizontal = valueAxis.isHorizontal();\n var valueDimIdx = valueAxisHorizontal ? 0 : 1;\n var barWidth = retrieveColumnLayout(makeColumnLayout([seriesModel]), baseAxis, seriesModel).width;\n\n if (!(barWidth > LARGE_BAR_MIN_WIDTH)) {\n // jshint ignore:line\n barWidth = LARGE_BAR_MIN_WIDTH;\n }\n\n return {\n progress: progress\n };\n\n function progress(params, data) {\n var count = params.count;\n var largePoints = new LargeArr(count * 2);\n var largeBackgroundPoints = new LargeArr(count * 2);\n var largeDataIndices = new LargeArr(count);\n var dataIndex;\n var coord = [];\n var valuePair = [];\n var pointsOffset = 0;\n var idxOffset = 0;\n\n while ((dataIndex = params.next()) != null) {\n valuePair[valueDimIdx] = data.get(valueDim, dataIndex);\n valuePair[1 - valueDimIdx] = data.get(baseDim, dataIndex);\n coord = cartesian.dataToPoint(valuePair, null, coord); // Data index might not be in order, depends on `progressiveChunkMode`.\n\n largeBackgroundPoints[pointsOffset] = valueAxisHorizontal ? coordLayout.x + coordLayout.width : coord[0];\n largePoints[pointsOffset++] = coord[0];\n largeBackgroundPoints[pointsOffset] = valueAxisHorizontal ? coord[1] : coordLayout.y + coordLayout.height;\n largePoints[pointsOffset++] = coord[1];\n largeDataIndices[idxOffset++] = dataIndex;\n }\n\n data.setLayout({\n largePoints: largePoints,\n largeDataIndices: largeDataIndices,\n largeBackgroundPoints: largeBackgroundPoints,\n barWidth: barWidth,\n valueAxisStart: getValueAxisStart(baseAxis, valueAxis, false),\n backgroundStart: valueAxisHorizontal ? coordLayout.x : coordLayout.y,\n valueAxisHorizontal: valueAxisHorizontal\n });\n }\n }\n};\n\nfunction isOnCartesian(seriesModel) {\n return seriesModel.coordinateSystem && seriesModel.coordinateSystem.type === 'cartesian2d';\n}\n\nfunction isInLargeMode(seriesModel) {\n return seriesModel.pipelineContext && seriesModel.pipelineContext.large;\n} // See cases in `test/bar-start.html` and `#7412`, `#8747`.\n\n\nfunction getValueAxisStart(baseAxis, valueAxis, stacked) {\n return valueAxis.toGlobalCoord(valueAxis.dataToCoord(valueAxis.type === 'log' ? 1 : 0));\n}\n\nexports.getLayoutOnAxis = getLayoutOnAxis;\nexports.prepareLayoutBarSeries = prepareLayoutBarSeries;\nexports.makeColumnLayout = makeColumnLayout;\nexports.retrieveColumnLayout = retrieveColumnLayout;\nexports.layout = layout;\nexports.largeLayout = largeLayout;","module.exports=function(t){function e(i){if(r[i])return r[i].exports;var n=r[i]={i:i,l:!1,exports:{}};return t[i].call(n.exports,n,n.exports,e),n.l=!0,n.exports}var r={};return e.m=t,e.c=r,e.i=function(t){return t},e.d=function(t,r,i){e.o(t,r)||Object.defineProperty(t,r,{configurable:!1,enumerable:!0,get:i})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,\"a\",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p=\"/dist/\",e(e.s=2)}([function(t,e){t.exports=function(){var t=[];return t.toString=function(){for(var t=[],e=0;e.ps__rail-x,.ps--active-y>.ps__rail-y{display:block;background-color:transparent}.ps--focus>.ps__rail-x,.ps--focus>.ps__rail-y,.ps--scrolling-x>.ps__rail-x,.ps--scrolling-y>.ps__rail-y,.ps:hover>.ps__rail-x,.ps:hover>.ps__rail-y{opacity:.6}.ps .ps__rail-x.ps--clicking,.ps .ps__rail-x:focus,.ps .ps__rail-x:hover,.ps .ps__rail-y.ps--clicking,.ps .ps__rail-y:focus,.ps .ps__rail-y:hover{background-color:#eee;opacity:.9}.ps__thumb-x{transition:background-color .2s linear,height .2s ease-in-out;-webkit-transition:background-color .2s linear,height .2s ease-in-out;height:6px;bottom:2px}.ps__thumb-x,.ps__thumb-y{background-color:#aaa;border-radius:6px;position:absolute}.ps__thumb-y{transition:background-color .2s linear,width .2s ease-in-out;-webkit-transition:background-color .2s linear,width .2s ease-in-out;width:6px;right:2px}.ps__rail-x.ps--clicking .ps__thumb-x,.ps__rail-x:focus>.ps__thumb-x,.ps__rail-x:hover>.ps__thumb-x{background-color:#999;height:11px}.ps__rail-y.ps--clicking .ps__thumb-y,.ps__rail-y:focus>.ps__thumb-y,.ps__rail-y:hover>.ps__thumb-y{background-color:#999;width:11px}@supports (-ms-overflow-style:none){.ps{overflow:auto!important}}@media (-ms-high-contrast:none),screen and (-ms-high-contrast:active){.ps{overflow:auto!important}}\",\"\"])},function(t,e,r){e=t.exports=r(0)(),e.i(r(4),\"\"),e.push([t.i,\".ps-container{position:relative}\",\"\"])},function(t,e,r){\"use strict\";/*!\n * perfect-scrollbar v1.4.0\n * (c) 2018 Hyunje Jun\n * @license MIT\n */\nfunction i(t){return getComputedStyle(t)}function n(t,e){for(var r in e){var i=e[r];\"number\"==typeof i&&(i+=\"px\"),t.style[r]=i}return t}function o(t){var e=document.createElement(\"div\");return e.className=t,e}function l(t,e){if(!w)throw new Error(\"No element matching method supported\");return w.call(t,e)}function s(t){t.remove?t.remove():t.parentNode&&t.parentNode.removeChild(t)}function a(t,e){return Array.prototype.filter.call(t.children,function(t){return l(t,e)})}function c(t,e){var r=t.element.classList,i=Y.state.scrolling(e);r.contains(i)?clearTimeout(_[e]):r.add(i)}function h(t,e){_[e]=setTimeout(function(){return t.isAlive&&t.element.classList.remove(Y.state.scrolling(e))},t.settings.scrollingThreshold)}function u(t,e){c(t,e),h(t,e)}function p(t){if(\"function\"==typeof window.CustomEvent)return new CustomEvent(t);var e=document.createEvent(\"CustomEvent\");return e.initCustomEvent(t,!1,!1,void 0),e}function d(t,e,r,i,n){var o=r[0],l=r[1],s=r[2],a=r[3],c=r[4],h=r[5];void 0===i&&(i=!0),void 0===n&&(n=!1);var d=t.element;t.reach[a]=null,d[s]<1&&(t.reach[a]=\"start\"),d[s]>t[o]-t[l]-1&&(t.reach[a]=\"end\"),e&&(d.dispatchEvent(p(\"ps-scroll-\"+a)),e<0?d.dispatchEvent(p(\"ps-scroll-\"+c)):e>0&&d.dispatchEvent(p(\"ps-scroll-\"+h)),i&&u(t,a)),t.reach[a]&&(e||n)&&d.dispatchEvent(p(\"ps-\"+a+\"-reach-\"+t.reach[a]))}function f(t){return parseInt(t,10)||0}function b(t){return l(t,\"input,[contenteditable]\")||l(t,\"select,[contenteditable]\")||l(t,\"textarea,[contenteditable]\")||l(t,\"button,[contenteditable]\")}function v(t){var e=i(t);return f(e.width)+f(e.paddingLeft)+f(e.paddingRight)+f(e.borderLeftWidth)+f(e.borderRightWidth)}function g(t,e){return t.settings.minScrollbarLength&&(e=Math.max(e,t.settings.minScrollbarLength)),t.settings.maxScrollbarLength&&(e=Math.min(e,t.settings.maxScrollbarLength)),e}function m(t,e){var r={width:e.railXWidth},i=Math.floor(t.scrollTop);e.isRtl?r.left=e.negativeScrollAdjustment+t.scrollLeft+e.containerWidth-e.contentWidth:r.left=t.scrollLeft,e.isScrollbarXUsingBottom?r.bottom=e.scrollbarXBottom-i:r.top=e.scrollbarXTop+i,n(e.scrollbarXRail,r);var o={top:i,height:e.railYHeight};e.isScrollbarYUsingRight?e.isRtl?o.right=e.contentWidth-(e.negativeScrollAdjustment+t.scrollLeft)-e.scrollbarYRight-e.scrollbarYOuterWidth:o.right=e.scrollbarYRight-t.scrollLeft:e.isRtl?o.left=e.negativeScrollAdjustment+t.scrollLeft+2*e.containerWidth-e.contentWidth-e.scrollbarYLeft-e.scrollbarYOuterWidth:o.left=e.scrollbarYLeft+t.scrollLeft,n(e.scrollbarYRail,o),n(e.scrollbarX,{left:e.scrollbarXLeft,width:e.scrollbarXWidth-e.railBorderXWidth}),n(e.scrollbarY,{top:e.scrollbarYTop,height:e.scrollbarYHeight-e.railBorderYWidth})}function y(t,e){function r(e){b[p]=v+m*(e[l]-g),c(t,d),T(t),e.stopPropagation(),e.preventDefault()}function i(){h(t,d),t[f].classList.remove(Y.state.clicking),t.event.unbind(t.ownerDocument,\"mousemove\",r)}var n=e[0],o=e[1],l=e[2],s=e[3],a=e[4],u=e[5],p=e[6],d=e[7],f=e[8],b=t.element,v=null,g=null,m=null;t.event.bind(t[a],\"mousedown\",function(e){v=b[p],g=e[l],m=(t[o]-t[n])/(t[s]-t[u]),t.event.bind(t.ownerDocument,\"mousemove\",r),t.event.once(t.ownerDocument,\"mouseup\",i),t[f].classList.add(Y.state.clicking),e.stopPropagation(),e.preventDefault()})}var w=\"undefined\"!=typeof Element&&(Element.prototype.matches||Element.prototype.webkitMatchesSelector||Element.prototype.mozMatchesSelector||Element.prototype.msMatchesSelector),Y={main:\"ps\",element:{thumb:function(t){return\"ps__thumb-\"+t},rail:function(t){return\"ps__rail-\"+t},consuming:\"ps__child--consume\"},state:{focus:\"ps--focus\",clicking:\"ps--clicking\",active:function(t){return\"ps--active-\"+t},scrolling:function(t){return\"ps--scrolling-\"+t}}},_={x:null,y:null},X=function(t){this.element=t,this.handlers={}},W={isEmpty:{configurable:!0}};X.prototype.bind=function(t,e){void 0===this.handlers[t]&&(this.handlers[t]=[]),this.handlers[t].push(e),this.element.addEventListener(t,e,!1)},X.prototype.unbind=function(t,e){var r=this;this.handlers[t]=this.handlers[t].filter(function(i){return!(!e||i===e)||(r.element.removeEventListener(t,i,!1),!1)})},X.prototype.unbindAll=function(){var t=this;for(var e in t.handlers)t.unbind(e)},W.isEmpty.get=function(){var t=this;return Object.keys(this.handlers).every(function(e){return 0===t.handlers[e].length})},Object.defineProperties(X.prototype,W);var x=function(){this.eventElements=[]};x.prototype.eventElement=function(t){var e=this.eventElements.filter(function(e){return e.element===t})[0];return e||(e=new X(t),this.eventElements.push(e)),e},x.prototype.bind=function(t,e,r){this.eventElement(t).bind(e,r)},x.prototype.unbind=function(t,e,r){var i=this.eventElement(t);i.unbind(e,r),i.isEmpty&&this.eventElements.splice(this.eventElements.indexOf(i),1)},x.prototype.unbindAll=function(){this.eventElements.forEach(function(t){return t.unbindAll()}),this.eventElements=[]},x.prototype.once=function(t,e,r){var i=this.eventElement(t),n=function(t){i.unbind(e,n),r(t)};i.bind(e,n)};var L=function(t,e,r,i,n){void 0===i&&(i=!0),void 0===n&&(n=!1);var o;if(\"top\"===e)o=[\"contentHeight\",\"containerHeight\",\"scrollTop\",\"y\",\"up\",\"down\"];else{if(\"left\"!==e)throw new Error(\"A proper axis should be provided\");o=[\"contentWidth\",\"containerWidth\",\"scrollLeft\",\"x\",\"left\",\"right\"]}d(t,r,o,i,n)},R={isWebKit:\"undefined\"!=typeof document&&\"WebkitAppearance\"in document.documentElement.style,supportsTouch:\"undefined\"!=typeof window&&(\"ontouchstart\"in window||window.DocumentTouch&&document instanceof window.DocumentTouch),supportsIePointer:\"undefined\"!=typeof navigator&&navigator.msMaxTouchPoints,isChrome:\"undefined\"!=typeof navigator&&/Chrome/i.test(navigator&&navigator.userAgent)},T=function(t){var e=t.element,r=Math.floor(e.scrollTop);t.containerWidth=e.clientWidth,t.containerHeight=e.clientHeight,t.contentWidth=e.scrollWidth,t.contentHeight=e.scrollHeight,e.contains(t.scrollbarXRail)||(a(e,Y.element.rail(\"x\")).forEach(function(t){return s(t)}),e.appendChild(t.scrollbarXRail)),e.contains(t.scrollbarYRail)||(a(e,Y.element.rail(\"y\")).forEach(function(t){return s(t)}),e.appendChild(t.scrollbarYRail)),!t.settings.suppressScrollX&&t.containerWidth+t.settings.scrollXMarginOffset=t.railXWidth-t.scrollbarXWidth&&(t.scrollbarXLeft=t.railXWidth-t.scrollbarXWidth),t.scrollbarYTop>=t.railYHeight-t.scrollbarYHeight&&(t.scrollbarYTop=t.railYHeight-t.scrollbarYHeight),m(e,t),t.scrollbarXActive?e.classList.add(Y.state.active(\"x\")):(e.classList.remove(Y.state.active(\"x\")),t.scrollbarXWidth=0,t.scrollbarXLeft=0,e.scrollLeft=0),t.scrollbarYActive?e.classList.add(Y.state.active(\"y\")):(e.classList.remove(Y.state.active(\"y\")),t.scrollbarYHeight=0,t.scrollbarYTop=0,e.scrollTop=0)},S=function(t){t.event.bind(t.scrollbarY,\"mousedown\",function(t){return t.stopPropagation()}),t.event.bind(t.scrollbarYRail,\"mousedown\",function(e){var r=e.pageY-window.pageYOffset-t.scrollbarYRail.getBoundingClientRect().top,i=r>t.scrollbarYTop?1:-1;t.element.scrollTop+=i*t.containerHeight,T(t),e.stopPropagation()}),t.event.bind(t.scrollbarX,\"mousedown\",function(t){return t.stopPropagation()}),t.event.bind(t.scrollbarXRail,\"mousedown\",function(e){var r=e.pageX-window.pageXOffset-t.scrollbarXRail.getBoundingClientRect().left,i=r>t.scrollbarXLeft?1:-1;t.element.scrollLeft+=i*t.containerWidth,T(t),e.stopPropagation()})},H=function(t){y(t,[\"containerWidth\",\"contentWidth\",\"pageX\",\"railXWidth\",\"scrollbarX\",\"scrollbarXWidth\",\"scrollLeft\",\"x\",\"scrollbarXRail\"]),y(t,[\"containerHeight\",\"contentHeight\",\"pageY\",\"railYHeight\",\"scrollbarY\",\"scrollbarYHeight\",\"scrollTop\",\"y\",\"scrollbarYRail\"])},E=function(t){function e(e,i){var n=Math.floor(r.scrollTop);if(0===e){if(!t.scrollbarYActive)return!1;if(0===n&&i>0||n>=t.contentHeight-t.containerHeight&&i<0)return!t.settings.wheelPropagation}var o=r.scrollLeft;if(0===i){if(!t.scrollbarXActive)return!1;if(0===o&&e<0||o>=t.contentWidth-t.containerWidth&&e>0)return!t.settings.wheelPropagation}return!0}var r=t.element,i=function(){return l(r,\":hover\")},n=function(){return l(t.scrollbarX,\":focus\")||l(t.scrollbarY,\":focus\")};t.event.bind(t.ownerDocument,\"keydown\",function(o){if(!(o.isDefaultPrevented&&o.isDefaultPrevented()||o.defaultPrevented)&&(i()||n())){var l=document.activeElement?document.activeElement:t.ownerDocument.activeElement;if(l){if(\"IFRAME\"===l.tagName)l=l.contentDocument.activeElement;else for(;l.shadowRoot;)l=l.shadowRoot.activeElement;if(b(l))return}var s=0,a=0;switch(o.which){case 37:s=o.metaKey?-t.contentWidth:o.altKey?-t.containerWidth:-30;break;case 38:a=o.metaKey?t.contentHeight:o.altKey?t.containerHeight:30;break;case 39:s=o.metaKey?t.contentWidth:o.altKey?t.containerWidth:30;break;case 40:a=o.metaKey?-t.contentHeight:o.altKey?-t.containerHeight:-30;break;case 32:a=o.shiftKey?t.containerHeight:-t.containerHeight;break;case 33:a=t.containerHeight;break;case 34:a=-t.containerHeight;break;case 36:a=t.contentHeight;break;case 35:a=-t.contentHeight;break;default:return}t.settings.suppressScrollX&&0!==s||t.settings.suppressScrollY&&0!==a||(r.scrollTop-=a,r.scrollLeft+=s,T(t),e(s,a)&&o.preventDefault())}})},M=function(t){function e(e,r){var i=Math.floor(l.scrollTop),n=0===l.scrollTop,o=i+l.offsetHeight===l.scrollHeight,s=0===l.scrollLeft,a=l.scrollLeft+l.offsetWidth===l.scrollWidth;return!(Math.abs(r)>Math.abs(e)?n||o:s||a)||!t.settings.wheelPropagation}function r(t){var e=t.deltaX,r=-1*t.deltaY;return void 0!==e&&void 0!==r||(e=-1*t.wheelDeltaX/6,r=t.wheelDeltaY/6),t.deltaMode&&1===t.deltaMode&&(e*=10,r*=10),e!==e&&r!==r&&(e=0,r=t.wheelDelta),t.shiftKey?[-r,-e]:[e,r]}function n(t,e,r){if(!R.isWebKit&&l.querySelector(\"select:focus\"))return!0;if(!l.contains(t))return!1;for(var n=t;n&&n!==l;){if(n.classList.contains(Y.element.consuming))return!0;var o=i(n);if([o.overflow,o.overflowX,o.overflowY].join(\"\").match(/(scroll|auto)/)){var s=n.scrollHeight-n.clientHeight;if(s>0&&!(0===n.scrollTop&&r>0||n.scrollTop===s&&r<0))return!0;var a=n.scrollWidth-n.clientWidth;if(a>0&&!(0===n.scrollLeft&&e<0||n.scrollLeft===a&&e>0))return!0}n=n.parentNode}return!1}function o(i){var o=r(i),s=o[0],a=o[1];if(!n(i.target,s,a)){var c=!1;t.settings.useBothWheelAxes?t.scrollbarYActive&&!t.scrollbarXActive?(a?l.scrollTop-=a*t.settings.wheelSpeed:l.scrollTop+=s*t.settings.wheelSpeed,c=!0):t.scrollbarXActive&&!t.scrollbarYActive&&(s?l.scrollLeft+=s*t.settings.wheelSpeed:l.scrollLeft-=a*t.settings.wheelSpeed,c=!0):(l.scrollTop-=a*t.settings.wheelSpeed,l.scrollLeft+=s*t.settings.wheelSpeed),T(t),c=c||e(s,a),c&&!i.ctrlKey&&(i.stopPropagation(),i.preventDefault())}}var l=t.element;void 0!==window.onwheel?t.event.bind(l,\"wheel\",o):void 0!==window.onmousewheel&&t.event.bind(l,\"mousewheel\",o)},k=function(t){function e(e,r){var i=Math.floor(h.scrollTop),n=h.scrollLeft,o=Math.abs(e),l=Math.abs(r);if(l>o){if(r<0&&i===t.contentHeight-t.containerHeight||r>0&&0===i)return 0===window.scrollY&&r>0&&R.isChrome}else if(o>l&&(e<0&&n===t.contentWidth-t.containerWidth||e>0&&0===n))return!0;return!0}function r(e,r){h.scrollTop-=r,h.scrollLeft-=e,T(t)}function n(t){return t.targetTouches?t.targetTouches[0]:t}function o(t){return(!t.pointerType||\"pen\"!==t.pointerType||0!==t.buttons)&&(!(!t.targetTouches||1!==t.targetTouches.length)||!(!t.pointerType||\"mouse\"===t.pointerType||t.pointerType===t.MSPOINTER_TYPE_MOUSE))}function l(t){if(o(t)){var e=n(t);u.pageX=e.pageX,u.pageY=e.pageY,p=(new Date).getTime(),null!==f&&clearInterval(f)}}function s(t,e,r){if(!h.contains(t))return!1;for(var n=t;n&&n!==h;){if(n.classList.contains(Y.element.consuming))return!0;var o=i(n);if([o.overflow,o.overflowX,o.overflowY].join(\"\").match(/(scroll|auto)/)){var l=n.scrollHeight-n.clientHeight;if(l>0&&!(0===n.scrollTop&&r>0||n.scrollTop===l&&r<0))return!0;var s=n.scrollLeft-n.clientWidth;if(s>0&&!(0===n.scrollLeft&&e<0||n.scrollLeft===s&&e>0))return!0}n=n.parentNode}return!1}function a(t){if(o(t)){var i=n(t),l={pageX:i.pageX,pageY:i.pageY},a=l.pageX-u.pageX,c=l.pageY-u.pageY;if(s(t.target,a,c))return;r(a,c),u=l;var h=(new Date).getTime(),f=h-p;f>0&&(d.x=a/f,d.y=c/f,p=h),e(a,c)&&t.preventDefault()}}function c(){t.settings.swipeEasing&&(clearInterval(f),f=setInterval(function(){return t.isInitialized?void clearInterval(f):d.x||d.y?Math.abs(d.x)<.01&&Math.abs(d.y)<.01?void clearInterval(f):(r(30*d.x,30*d.y),d.x*=.8,void(d.y*=.8)):void clearInterval(f)},10))}if(R.supportsTouch||R.supportsIePointer){var h=t.element,u={},p=0,d={},f=null;R.supportsTouch?(t.event.bind(h,\"touchstart\",l),t.event.bind(h,\"touchmove\",a),t.event.bind(h,\"touchend\",c)):R.supportsIePointer&&(window.PointerEvent?(t.event.bind(h,\"pointerdown\",l),t.event.bind(h,\"pointermove\",a),t.event.bind(h,\"pointerup\",c)):window.MSPointerEvent&&(t.event.bind(h,\"MSPointerDown\",l),t.event.bind(h,\"MSPointerMove\",a),t.event.bind(h,\"MSPointerUp\",c)))}},A=function(){return{handlers:[\"click-rail\",\"drag-thumb\",\"keyboard\",\"wheel\",\"touch\"],maxScrollbarLength:null,minScrollbarLength:null,scrollingThreshold:1e3,scrollXMarginOffset:0,scrollYMarginOffset:0,suppressScrollX:!1,suppressScrollY:!1,swipeEasing:!0,useBothWheelAxes:!1,wheelPropagation:!0,wheelSpeed:1}},P={\"click-rail\":S,\"drag-thumb\":H,keyboard:E,wheel:M,touch:k},C=function(t,e){var r=this;if(void 0===e&&(e={}),\"string\"==typeof t&&(t=document.querySelector(t)),!t||!t.nodeName)throw new Error(\"no element is specified to initialize PerfectScrollbar\");this.element=t,t.classList.add(Y.main),this.settings=A();for(var l in e)r.settings[l]=e[l];this.containerWidth=null,this.containerHeight=null,this.contentWidth=null,this.contentHeight=null;var s=function(){return t.classList.add(Y.state.focus)},a=function(){return t.classList.remove(Y.state.focus)};this.isRtl=\"rtl\"===i(t).direction,this.isNegativeScroll=function(){var e=t.scrollLeft,r=null;return t.scrollLeft=-1,r=t.scrollLeft<0,t.scrollLeft=e,r}(),this.negativeScrollAdjustment=this.isNegativeScroll?t.scrollWidth-t.clientWidth:0,this.event=new x,this.ownerDocument=t.ownerDocument||document,this.scrollbarXRail=o(Y.element.rail(\"x\")),t.appendChild(this.scrollbarXRail),this.scrollbarX=o(Y.element.thumb(\"x\")),this.scrollbarXRail.appendChild(this.scrollbarX),this.scrollbarX.setAttribute(\"tabindex\",0),this.event.bind(this.scrollbarX,\"focus\",s),this.event.bind(this.scrollbarX,\"blur\",a),this.scrollbarXActive=null,this.scrollbarXWidth=null,this.scrollbarXLeft=null;var c=i(this.scrollbarXRail);this.scrollbarXBottom=parseInt(c.bottom,10),isNaN(this.scrollbarXBottom)?(this.isScrollbarXUsingBottom=!1,this.scrollbarXTop=f(c.top)):this.isScrollbarXUsingBottom=!0,this.railBorderXWidth=f(c.borderLeftWidth)+f(c.borderRightWidth),n(this.scrollbarXRail,{display:\"block\"}),this.railXMarginWidth=f(c.marginLeft)+f(c.marginRight),n(this.scrollbarXRail,{display:\"\"}),this.railXWidth=null,this.railXRatio=null,this.scrollbarYRail=o(Y.element.rail(\"y\")),t.appendChild(this.scrollbarYRail),this.scrollbarY=o(Y.element.thumb(\"y\")),this.scrollbarYRail.appendChild(this.scrollbarY),this.scrollbarY.setAttribute(\"tabindex\",0),this.event.bind(this.scrollbarY,\"focus\",s),this.event.bind(this.scrollbarY,\"blur\",a),this.scrollbarYActive=null,this.scrollbarYHeight=null,this.scrollbarYTop=null;var h=i(this.scrollbarYRail);this.scrollbarYRight=parseInt(h.right,10),isNaN(this.scrollbarYRight)?(this.isScrollbarYUsingRight=!1,this.scrollbarYLeft=f(h.left)):this.isScrollbarYUsingRight=!0,this.scrollbarYOuterWidth=this.isRtl?v(this.scrollbarY):null,this.railBorderYWidth=f(h.borderTopWidth)+f(h.borderBottomWidth),n(this.scrollbarYRail,{display:\"block\"}),this.railYMarginHeight=f(h.marginTop)+f(h.marginBottom),n(this.scrollbarYRail,{display:\"\"}),this.railYHeight=null,this.railYRatio=null,this.reach={x:t.scrollLeft<=0?\"start\":t.scrollLeft>=this.contentWidth-this.containerWidth?\"end\":null,y:t.scrollTop<=0?\"start\":t.scrollTop>=this.contentHeight-this.containerHeight?\"end\":null},this.isAlive=!0,this.settings.handlers.forEach(function(t){return P[t](r)}),this.lastScrollTop=Math.floor(t.scrollTop),this.lastScrollLeft=t.scrollLeft,this.event.bind(this.element,\"scroll\",function(t){return r.onScroll(t)}),T(this)};C.prototype.update=function(){this.isAlive&&(this.negativeScrollAdjustment=this.isNegativeScroll?this.element.scrollWidth-this.element.clientWidth:0,n(this.scrollbarXRail,{display:\"block\"}),n(this.scrollbarYRail,{display:\"block\"}),this.railXMarginWidth=f(i(this.scrollbarXRail).marginLeft)+f(i(this.scrollbarXRail).marginRight),this.railYMarginHeight=f(i(this.scrollbarYRail).marginTop)+f(i(this.scrollbarYRail).marginBottom),n(this.scrollbarXRail,{display:\"none\"}),n(this.scrollbarYRail,{display:\"none\"}),T(this),L(this,\"top\",0,!1,!0),L(this,\"left\",0,!1,!0),n(this.scrollbarXRail,{display:\"\"}),n(this.scrollbarYRail,{display:\"\"}))},C.prototype.onScroll=function(t){this.isAlive&&(T(this),L(this,\"top\",this.element.scrollTop-this.lastScrollTop),L(this,\"left\",this.element.scrollLeft-this.lastScrollLeft),this.lastScrollTop=Math.floor(this.element.scrollTop),this.lastScrollLeft=this.element.scrollLeft)},C.prototype.destroy=function(){this.isAlive&&(this.event.unbindAll(),s(this.scrollbarX),s(this.scrollbarY),s(this.scrollbarXRail),s(this.scrollbarYRail),this.removePsClasses(),this.element=null,this.scrollbarX=null,this.scrollbarY=null,this.scrollbarXRail=null,this.scrollbarYRail=null,this.isAlive=!1)},C.prototype.removePsClasses=function(){this.element.className=this.element.className.split(\" \").filter(function(t){return!t.match(/^ps([-_].+|)$/)}).join(\" \")},e.a=C},function(t,e){t.exports=function(t,e,r,i){var n,o=t=t||{},l=typeof t.default;\"object\"!==l&&\"function\"!==l||(n=t,o=t.default);var s=\"function\"==typeof o?o.options:o;if(e&&(s.render=e.render,s.staticRenderFns=e.staticRenderFns),r&&(s._scopeId=r),i){var a=s.computed||(s.computed={});Object.keys(i).forEach(function(t){var e=i[t];a[t]=function(){return e}})}return{esModule:n,exports:o,options:s}}},function(t,e){t.exports={render:function(){var t=this,e=t.$createElement;return(t._self._c||e)(t.$props.tagname,t._g({tag:\"section\",staticClass:\"ps-container\",on:{\"~mouseover\":function(e){return t.update(e)}}},t.$listeners),[t._t(\"default\")],2)},staticRenderFns:[]}},function(t,e){function r(t,e){for(var r=0;r=0&&v.splice(e,1)}function l(t){var e=document.createElement(\"style\");return e.type=\"text/css\",n(t,e),e}function s(t,e){var r,i,n;if(e.singleton){var s=b++;r=f||(f=l(e)),i=a.bind(null,r,s,!1),n=a.bind(null,r,s,!0)}else r=l(e),i=c.bind(null,r),n=function(){o(r)};return i(t),function(e){if(e){if(e.css===t.css&&e.media===t.media&&e.sourceMap===t.sourceMap)return;i(t=e)}else n()}}function a(t,e,r,i){var n=r?\"\":i.css;if(t.styleSheet)t.styleSheet.cssText=g(e,n);else{var o=document.createTextNode(n),l=t.childNodes;l[e]&&t.removeChild(l[e]),l.length?t.insertBefore(o,l[e]):t.appendChild(o)}}function c(t,e){var r=e.css,i=e.media,n=e.sourceMap;if(i&&t.setAttribute(\"media\",i),n&&(r+=\"\\n/*# sourceURL=\"+n.sources[0]+\" */\",r+=\"\\n/*# sourceMappingURL=data:application/json;base64,\"+btoa(unescape(encodeURIComponent(JSON.stringify(n))))+\" */\"),t.styleSheet)t.styleSheet.cssText=r;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(r))}}var h={},u=function(t){var e;return function(){return void 0===e&&(e=t.apply(this,arguments)),e}},p=u(function(){return/msie [6-9]\\b/.test(window.navigator.userAgent.toLowerCase())}),d=u(function(){return document.head||document.getElementsByTagName(\"head\")[0]}),f=null,b=0,v=[];t.exports=function(t,e){if(\"undefined\"!=typeof DEBUG&&DEBUG&&\"object\"!=typeof document)throw new Error(\"The style-loader cannot be used in a non-browser environment\");e=e||{},void 0===e.singleton&&(e.singleton=p()),void 0===e.insertAt&&(e.insertAt=\"bottom\");var n=i(t);return r(n,e),function(t){for(var o=[],l=0;l r || d + _l < r) {\n return false;\n }\n\n if (Math.abs(startAngle - endAngle) % PI2 < 1e-4) {\n // Is a circle\n return true;\n }\n\n if (anticlockwise) {\n var tmp = startAngle;\n startAngle = normalizeRadian(endAngle);\n endAngle = normalizeRadian(tmp);\n } else {\n startAngle = normalizeRadian(startAngle);\n endAngle = normalizeRadian(endAngle);\n }\n\n if (startAngle > endAngle) {\n endAngle += PI2;\n }\n\n var angle = Math.atan2(y, x);\n\n if (angle < 0) {\n angle += PI2;\n }\n\n return angle >= startAngle && angle <= endAngle || angle + PI2 >= startAngle && angle + PI2 <= endAngle;\n}\n\nexports.containStroke = containStroke;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar graphic = require(\"./graphic\");\n\nvar BoundingRect = require(\"zrender/lib/core/BoundingRect\");\n\nvar _text = require(\"zrender/lib/contain/text\");\n\nvar calculateTextPosition = _text.calculateTextPosition;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// Symbol factory\n\n/**\n * Triangle shape\n * @inner\n */\nvar Triangle = graphic.extendShape({\n type: 'triangle',\n shape: {\n cx: 0,\n cy: 0,\n width: 0,\n height: 0\n },\n buildPath: function (path, shape) {\n var cx = shape.cx;\n var cy = shape.cy;\n var width = shape.width / 2;\n var height = shape.height / 2;\n path.moveTo(cx, cy - height);\n path.lineTo(cx + width, cy + height);\n path.lineTo(cx - width, cy + height);\n path.closePath();\n }\n});\n/**\n * Diamond shape\n * @inner\n */\n\nvar Diamond = graphic.extendShape({\n type: 'diamond',\n shape: {\n cx: 0,\n cy: 0,\n width: 0,\n height: 0\n },\n buildPath: function (path, shape) {\n var cx = shape.cx;\n var cy = shape.cy;\n var width = shape.width / 2;\n var height = shape.height / 2;\n path.moveTo(cx, cy - height);\n path.lineTo(cx + width, cy);\n path.lineTo(cx, cy + height);\n path.lineTo(cx - width, cy);\n path.closePath();\n }\n});\n/**\n * Pin shape\n * @inner\n */\n\nvar Pin = graphic.extendShape({\n type: 'pin',\n shape: {\n // x, y on the cusp\n x: 0,\n y: 0,\n width: 0,\n height: 0\n },\n buildPath: function (path, shape) {\n var x = shape.x;\n var y = shape.y;\n var w = shape.width / 5 * 3; // Height must be larger than width\n\n var h = Math.max(w, shape.height);\n var r = w / 2; // Dist on y with tangent point and circle center\n\n var dy = r * r / (h - r);\n var cy = y - h + r + dy;\n var angle = Math.asin(dy / r); // Dist on x with tangent point and circle center\n\n var dx = Math.cos(angle) * r;\n var tanX = Math.sin(angle);\n var tanY = Math.cos(angle);\n var cpLen = r * 0.6;\n var cpLen2 = r * 0.7;\n path.moveTo(x - dx, cy + dy);\n path.arc(x, cy, r, Math.PI - angle, Math.PI * 2 + angle);\n path.bezierCurveTo(x + dx - tanX * cpLen, cy + dy + tanY * cpLen, x, y - cpLen2, x, y);\n path.bezierCurveTo(x, y - cpLen2, x - dx + tanX * cpLen, cy + dy + tanY * cpLen, x - dx, cy + dy);\n path.closePath();\n }\n});\n/**\n * Arrow shape\n * @inner\n */\n\nvar Arrow = graphic.extendShape({\n type: 'arrow',\n shape: {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n },\n buildPath: function (ctx, shape) {\n var height = shape.height;\n var width = shape.width;\n var x = shape.x;\n var y = shape.y;\n var dx = width / 3 * 2;\n ctx.moveTo(x, y);\n ctx.lineTo(x + dx, y + height);\n ctx.lineTo(x, y + height / 4 * 3);\n ctx.lineTo(x - dx, y + height);\n ctx.lineTo(x, y);\n ctx.closePath();\n }\n});\n/**\n * Map of path contructors\n * @type {Object.}\n */\n\nvar symbolCtors = {\n line: graphic.Line,\n rect: graphic.Rect,\n roundRect: graphic.Rect,\n square: graphic.Rect,\n circle: graphic.Circle,\n diamond: Diamond,\n pin: Pin,\n arrow: Arrow,\n triangle: Triangle\n};\nvar symbolShapeMakers = {\n line: function (x, y, w, h, shape) {\n // FIXME\n shape.x1 = x;\n shape.y1 = y + h / 2;\n shape.x2 = x + w;\n shape.y2 = y + h / 2;\n },\n rect: function (x, y, w, h, shape) {\n shape.x = x;\n shape.y = y;\n shape.width = w;\n shape.height = h;\n },\n roundRect: function (x, y, w, h, shape) {\n shape.x = x;\n shape.y = y;\n shape.width = w;\n shape.height = h;\n shape.r = Math.min(w, h) / 4;\n },\n square: function (x, y, w, h, shape) {\n var size = Math.min(w, h);\n shape.x = x;\n shape.y = y;\n shape.width = size;\n shape.height = size;\n },\n circle: function (x, y, w, h, shape) {\n // Put circle in the center of square\n shape.cx = x + w / 2;\n shape.cy = y + h / 2;\n shape.r = Math.min(w, h) / 2;\n },\n diamond: function (x, y, w, h, shape) {\n shape.cx = x + w / 2;\n shape.cy = y + h / 2;\n shape.width = w;\n shape.height = h;\n },\n pin: function (x, y, w, h, shape) {\n shape.x = x + w / 2;\n shape.y = y + h / 2;\n shape.width = w;\n shape.height = h;\n },\n arrow: function (x, y, w, h, shape) {\n shape.x = x + w / 2;\n shape.y = y + h / 2;\n shape.width = w;\n shape.height = h;\n },\n triangle: function (x, y, w, h, shape) {\n shape.cx = x + w / 2;\n shape.cy = y + h / 2;\n shape.width = w;\n shape.height = h;\n }\n};\nvar symbolBuildProxies = {};\nzrUtil.each(symbolCtors, function (Ctor, name) {\n symbolBuildProxies[name] = new Ctor();\n});\nvar SymbolClz = graphic.extendShape({\n type: 'symbol',\n shape: {\n symbolType: '',\n x: 0,\n y: 0,\n width: 0,\n height: 0\n },\n calculateTextPosition: function (out, style, rect) {\n var res = calculateTextPosition(out, style, rect);\n var shape = this.shape;\n\n if (shape && shape.symbolType === 'pin' && style.textPosition === 'inside') {\n res.y = rect.y + rect.height * 0.4;\n }\n\n return res;\n },\n buildPath: function (ctx, shape, inBundle) {\n var symbolType = shape.symbolType;\n\n if (symbolType !== 'none') {\n var proxySymbol = symbolBuildProxies[symbolType];\n\n if (!proxySymbol) {\n // Default rect\n symbolType = 'rect';\n proxySymbol = symbolBuildProxies[symbolType];\n }\n\n symbolShapeMakers[symbolType](shape.x, shape.y, shape.width, shape.height, proxySymbol.shape);\n proxySymbol.buildPath(ctx, proxySymbol.shape, inBundle);\n }\n }\n}); // Provide setColor helper method to avoid determine if set the fill or stroke outside\n\nfunction symbolPathSetColor(color, innerColor) {\n if (this.type !== 'image') {\n var symbolStyle = this.style;\n var symbolShape = this.shape;\n\n if (symbolShape && symbolShape.symbolType === 'line') {\n symbolStyle.stroke = color;\n } else if (this.__isEmptyBrush) {\n symbolStyle.stroke = color;\n symbolStyle.fill = innerColor || '#fff';\n } else {\n // FIXME 判断图形默认是填充还是描边,使用 onlyStroke ?\n symbolStyle.fill && (symbolStyle.fill = color);\n symbolStyle.stroke && (symbolStyle.stroke = color);\n }\n\n this.dirty(false);\n }\n}\n/**\n * Create a symbol element with given symbol configuration: shape, x, y, width, height, color\n * @param {string} symbolType\n * @param {number} x\n * @param {number} y\n * @param {number} w\n * @param {number} h\n * @param {string} color\n * @param {boolean} [keepAspect=false] whether to keep the ratio of w/h,\n * for path and image only.\n */\n\n\nfunction createSymbol(symbolType, x, y, w, h, color, keepAspect) {\n // TODO Support image object, DynamicImage.\n var isEmpty = symbolType.indexOf('empty') === 0;\n\n if (isEmpty) {\n symbolType = symbolType.substr(5, 1).toLowerCase() + symbolType.substr(6);\n }\n\n var symbolPath;\n\n if (symbolType.indexOf('image://') === 0) {\n symbolPath = graphic.makeImage(symbolType.slice(8), new BoundingRect(x, y, w, h), keepAspect ? 'center' : 'cover');\n } else if (symbolType.indexOf('path://') === 0) {\n symbolPath = graphic.makePath(symbolType.slice(7), {}, new BoundingRect(x, y, w, h), keepAspect ? 'center' : 'cover');\n } else {\n symbolPath = new SymbolClz({\n shape: {\n symbolType: symbolType,\n x: x,\n y: y,\n width: w,\n height: h\n }\n });\n }\n\n symbolPath.__isEmptyBrush = isEmpty;\n symbolPath.setColor = symbolPathSetColor;\n symbolPath.setColor(color);\n return symbolPath;\n}\n\nexports.createSymbol = createSymbol;","'use strict';\nvar $ = require('../internals/export');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\nvar toObject = require('../internals/to-object');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar createProperty = require('../internals/create-property');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('splice', { ACCESSORS: true, 0: 0, 1: 2 });\n\nvar max = Math.max;\nvar min = Math.min;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded';\n\n// `Array.prototype.splice` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.splice\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {\n splice: function splice(start, deleteCount /* , ...items */) {\n var O = toObject(this);\n var len = toLength(O.length);\n var actualStart = toAbsoluteIndex(start, len);\n var argumentsLength = arguments.length;\n var insertCount, actualDeleteCount, A, k, from, to;\n if (argumentsLength === 0) {\n insertCount = actualDeleteCount = 0;\n } else if (argumentsLength === 1) {\n insertCount = 0;\n actualDeleteCount = len - actualStart;\n } else {\n insertCount = argumentsLength - 2;\n actualDeleteCount = min(max(toInteger(deleteCount), 0), len - actualStart);\n }\n if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER) {\n throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED);\n }\n A = arraySpeciesCreate(O, actualDeleteCount);\n for (k = 0; k < actualDeleteCount; k++) {\n from = actualStart + k;\n if (from in O) createProperty(A, k, O[from]);\n }\n A.length = actualDeleteCount;\n if (insertCount < actualDeleteCount) {\n for (k = actualStart; k < len - actualDeleteCount; k++) {\n from = k + actualDeleteCount;\n to = k + insertCount;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n for (k = len; k > len - actualDeleteCount + insertCount; k--) delete O[k - 1];\n } else if (insertCount > actualDeleteCount) {\n for (k = len - actualDeleteCount; k > actualStart; k--) {\n from = k + actualDeleteCount - 1;\n to = k + insertCount - 1;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n }\n for (k = 0; k < insertCount; k++) {\n O[k + actualStart] = arguments[k + 2];\n }\n O.length = len - actualDeleteCount + insertCount;\n return A;\n }\n});\n","var _util = require(\"../../core/util\");\n\nvar retrieve2 = _util.retrieve2;\nvar retrieve3 = _util.retrieve3;\nvar each = _util.each;\nvar normalizeCssArray = _util.normalizeCssArray;\nvar isString = _util.isString;\nvar isObject = _util.isObject;\n\nvar textContain = require(\"../../contain/text\");\n\nvar roundRectHelper = require(\"./roundRect\");\n\nvar imageHelper = require(\"./image\");\n\nvar fixShadow = require(\"./fixShadow\");\n\nvar _constant = require(\"../constant\");\n\nvar ContextCachedBy = _constant.ContextCachedBy;\nvar WILL_BE_RESTORED = _constant.WILL_BE_RESTORED;\nvar DEFAULT_FONT = textContain.DEFAULT_FONT; // TODO: Have not support 'start', 'end' yet.\n\nvar VALID_TEXT_ALIGN = {\n left: 1,\n right: 1,\n center: 1\n};\nvar VALID_TEXT_VERTICAL_ALIGN = {\n top: 1,\n bottom: 1,\n middle: 1\n}; // Different from `STYLE_COMMON_PROPS` of `graphic/Style`,\n// the default value of shadowColor is `'transparent'`.\n\nvar SHADOW_STYLE_COMMON_PROPS = [['textShadowBlur', 'shadowBlur', 0], ['textShadowOffsetX', 'shadowOffsetX', 0], ['textShadowOffsetY', 'shadowOffsetY', 0], ['textShadowColor', 'shadowColor', 'transparent']];\nvar _tmpTextPositionResult = {};\nvar _tmpBoxPositionResult = {};\n/**\n * @param {module:zrender/graphic/Style} style\n * @return {module:zrender/graphic/Style} The input style.\n */\n\nfunction normalizeTextStyle(style) {\n normalizeStyle(style);\n each(style.rich, normalizeStyle);\n return style;\n}\n\nfunction normalizeStyle(style) {\n if (style) {\n style.font = textContain.makeFont(style);\n var textAlign = style.textAlign;\n textAlign === 'middle' && (textAlign = 'center');\n style.textAlign = textAlign == null || VALID_TEXT_ALIGN[textAlign] ? textAlign : 'left'; // Compatible with textBaseline.\n\n var textVerticalAlign = style.textVerticalAlign || style.textBaseline;\n textVerticalAlign === 'center' && (textVerticalAlign = 'middle');\n style.textVerticalAlign = textVerticalAlign == null || VALID_TEXT_VERTICAL_ALIGN[textVerticalAlign] ? textVerticalAlign : 'top';\n var textPadding = style.textPadding;\n\n if (textPadding) {\n style.textPadding = normalizeCssArray(style.textPadding);\n }\n }\n}\n/**\n * @param {CanvasRenderingContext2D} ctx\n * @param {string} text\n * @param {module:zrender/graphic/Style} style\n * @param {Object|boolean} [rect] {x, y, width, height}\n * If set false, rect text is not used.\n * @param {Element|module:zrender/graphic/helper/constant.WILL_BE_RESTORED} [prevEl] For ctx prop cache.\n */\n\n\nfunction renderText(hostEl, ctx, text, style, rect, prevEl) {\n style.rich ? renderRichText(hostEl, ctx, text, style, rect, prevEl) : renderPlainText(hostEl, ctx, text, style, rect, prevEl);\n} // Avoid setting to ctx according to prevEl if possible for\n// performance in scenarios of large amount text.\n\n\nfunction renderPlainText(hostEl, ctx, text, style, rect, prevEl) {\n 'use strict';\n\n var needDrawBg = needDrawBackground(style);\n var prevStyle;\n var checkCache = false;\n var cachedByMe = ctx.__attrCachedBy === ContextCachedBy.PLAIN_TEXT; // Only take and check cache for `Text` el, but not RectText.\n\n if (prevEl !== WILL_BE_RESTORED) {\n if (prevEl) {\n prevStyle = prevEl.style;\n checkCache = !needDrawBg && cachedByMe && prevStyle;\n } // Prevent from using cache in `Style::bind`, because of the case:\n // ctx property is modified by other properties than `Style::bind`\n // used, and Style::bind is called next.\n\n\n ctx.__attrCachedBy = needDrawBg ? ContextCachedBy.NONE : ContextCachedBy.PLAIN_TEXT;\n } // Since this will be restored, prevent from using these props to check cache in the next\n // entering of this method. But do not need to clear other cache like `Style::bind`.\n else if (cachedByMe) {\n ctx.__attrCachedBy = ContextCachedBy.NONE;\n }\n\n var styleFont = style.font || DEFAULT_FONT; // PENDING\n // Only `Text` el set `font` and keep it (`RectText` will restore). So theoretically\n // we can make font cache on ctx, which can cache for text el that are discontinuous.\n // But layer save/restore needed to be considered.\n // if (styleFont !== ctx.__fontCache) {\n // ctx.font = styleFont;\n // if (prevEl !== WILL_BE_RESTORED) {\n // ctx.__fontCache = styleFont;\n // }\n // }\n\n if (!checkCache || styleFont !== (prevStyle.font || DEFAULT_FONT)) {\n ctx.font = styleFont;\n } // Use the final font from context-2d, because the final\n // font might not be the style.font when it is illegal.\n // But get `ctx.font` might be time consuming.\n\n\n var computedFont = hostEl.__computedFont;\n\n if (hostEl.__styleFont !== styleFont) {\n hostEl.__styleFont = styleFont;\n computedFont = hostEl.__computedFont = ctx.font;\n }\n\n var textPadding = style.textPadding;\n var textLineHeight = style.textLineHeight;\n var contentBlock = hostEl.__textCotentBlock;\n\n if (!contentBlock || hostEl.__dirtyText) {\n contentBlock = hostEl.__textCotentBlock = textContain.parsePlainText(text, computedFont, textPadding, textLineHeight, style.truncate);\n }\n\n var outerHeight = contentBlock.outerHeight;\n var textLines = contentBlock.lines;\n var lineHeight = contentBlock.lineHeight;\n var boxPos = getBoxPosition(_tmpBoxPositionResult, hostEl, style, rect);\n var baseX = boxPos.baseX;\n var baseY = boxPos.baseY;\n var textAlign = boxPos.textAlign || 'left';\n var textVerticalAlign = boxPos.textVerticalAlign; // Origin of textRotation should be the base point of text drawing.\n\n applyTextRotation(ctx, style, rect, baseX, baseY);\n var boxY = textContain.adjustTextY(baseY, outerHeight, textVerticalAlign);\n var textX = baseX;\n var textY = boxY;\n\n if (needDrawBg || textPadding) {\n // Consider performance, do not call getTextWidth util necessary.\n var textWidth = textContain.getWidth(text, computedFont);\n var outerWidth = textWidth;\n textPadding && (outerWidth += textPadding[1] + textPadding[3]);\n var boxX = textContain.adjustTextX(baseX, outerWidth, textAlign);\n needDrawBg && drawBackground(hostEl, ctx, style, boxX, boxY, outerWidth, outerHeight);\n\n if (textPadding) {\n textX = getTextXForPadding(baseX, textAlign, textPadding);\n textY += textPadding[0];\n }\n } // Always set textAlign and textBase line, because it is difficute to calculate\n // textAlign from prevEl, and we dont sure whether textAlign will be reset if\n // font set happened.\n\n\n ctx.textAlign = textAlign; // Force baseline to be \"middle\". Otherwise, if using \"top\", the\n // text will offset downward a little bit in font \"Microsoft YaHei\".\n\n ctx.textBaseline = 'middle'; // Set text opacity\n\n ctx.globalAlpha = style.opacity || 1; // Always set shadowBlur and shadowOffset to avoid leak from displayable.\n\n for (var i = 0; i < SHADOW_STYLE_COMMON_PROPS.length; i++) {\n var propItem = SHADOW_STYLE_COMMON_PROPS[i];\n var styleProp = propItem[0];\n var ctxProp = propItem[1];\n var val = style[styleProp];\n\n if (!checkCache || val !== prevStyle[styleProp]) {\n ctx[ctxProp] = fixShadow(ctx, ctxProp, val || propItem[2]);\n }\n } // `textBaseline` is set as 'middle'.\n\n\n textY += lineHeight / 2;\n var textStrokeWidth = style.textStrokeWidth;\n var textStrokeWidthPrev = checkCache ? prevStyle.textStrokeWidth : null;\n var strokeWidthChanged = !checkCache || textStrokeWidth !== textStrokeWidthPrev;\n var strokeChanged = !checkCache || strokeWidthChanged || style.textStroke !== prevStyle.textStroke;\n var textStroke = getStroke(style.textStroke, textStrokeWidth);\n var textFill = getFill(style.textFill);\n\n if (textStroke) {\n if (strokeWidthChanged) {\n ctx.lineWidth = textStrokeWidth;\n }\n\n if (strokeChanged) {\n ctx.strokeStyle = textStroke;\n }\n }\n\n if (textFill) {\n if (!checkCache || style.textFill !== prevStyle.textFill) {\n ctx.fillStyle = textFill;\n }\n } // Optimize simply, in most cases only one line exists.\n\n\n if (textLines.length === 1) {\n // Fill after stroke so the outline will not cover the main part.\n textStroke && ctx.strokeText(textLines[0], textX, textY);\n textFill && ctx.fillText(textLines[0], textX, textY);\n } else {\n for (var i = 0; i < textLines.length; i++) {\n // Fill after stroke so the outline will not cover the main part.\n textStroke && ctx.strokeText(textLines[i], textX, textY);\n textFill && ctx.fillText(textLines[i], textX, textY);\n textY += lineHeight;\n }\n }\n}\n\nfunction renderRichText(hostEl, ctx, text, style, rect, prevEl) {\n // Do not do cache for rich text because of the complexity.\n // But `RectText` this will be restored, do not need to clear other cache like `Style::bind`.\n if (prevEl !== WILL_BE_RESTORED) {\n ctx.__attrCachedBy = ContextCachedBy.NONE;\n }\n\n var contentBlock = hostEl.__textCotentBlock;\n\n if (!contentBlock || hostEl.__dirtyText) {\n contentBlock = hostEl.__textCotentBlock = textContain.parseRichText(text, style);\n }\n\n drawRichText(hostEl, ctx, contentBlock, style, rect);\n}\n\nfunction drawRichText(hostEl, ctx, contentBlock, style, rect) {\n var contentWidth = contentBlock.width;\n var outerWidth = contentBlock.outerWidth;\n var outerHeight = contentBlock.outerHeight;\n var textPadding = style.textPadding;\n var boxPos = getBoxPosition(_tmpBoxPositionResult, hostEl, style, rect);\n var baseX = boxPos.baseX;\n var baseY = boxPos.baseY;\n var textAlign = boxPos.textAlign;\n var textVerticalAlign = boxPos.textVerticalAlign; // Origin of textRotation should be the base point of text drawing.\n\n applyTextRotation(ctx, style, rect, baseX, baseY);\n var boxX = textContain.adjustTextX(baseX, outerWidth, textAlign);\n var boxY = textContain.adjustTextY(baseY, outerHeight, textVerticalAlign);\n var xLeft = boxX;\n var lineTop = boxY;\n\n if (textPadding) {\n xLeft += textPadding[3];\n lineTop += textPadding[0];\n }\n\n var xRight = xLeft + contentWidth;\n needDrawBackground(style) && drawBackground(hostEl, ctx, style, boxX, boxY, outerWidth, outerHeight);\n\n for (var i = 0; i < contentBlock.lines.length; i++) {\n var line = contentBlock.lines[i];\n var tokens = line.tokens;\n var tokenCount = tokens.length;\n var lineHeight = line.lineHeight;\n var usedWidth = line.width;\n var leftIndex = 0;\n var lineXLeft = xLeft;\n var lineXRight = xRight;\n var rightIndex = tokenCount - 1;\n var token;\n\n while (leftIndex < tokenCount && (token = tokens[leftIndex], !token.textAlign || token.textAlign === 'left')) {\n placeToken(hostEl, ctx, token, style, lineHeight, lineTop, lineXLeft, 'left');\n usedWidth -= token.width;\n lineXLeft += token.width;\n leftIndex++;\n }\n\n while (rightIndex >= 0 && (token = tokens[rightIndex], token.textAlign === 'right')) {\n placeToken(hostEl, ctx, token, style, lineHeight, lineTop, lineXRight, 'right');\n usedWidth -= token.width;\n lineXRight -= token.width;\n rightIndex--;\n } // The other tokens are placed as textAlign 'center' if there is enough space.\n\n\n lineXLeft += (contentWidth - (lineXLeft - xLeft) - (xRight - lineXRight) - usedWidth) / 2;\n\n while (leftIndex <= rightIndex) {\n token = tokens[leftIndex]; // Consider width specified by user, use 'center' rather than 'left'.\n\n placeToken(hostEl, ctx, token, style, lineHeight, lineTop, lineXLeft + token.width / 2, 'center');\n lineXLeft += token.width;\n leftIndex++;\n }\n\n lineTop += lineHeight;\n }\n}\n\nfunction applyTextRotation(ctx, style, rect, x, y) {\n // textRotation only apply in RectText.\n if (rect && style.textRotation) {\n var origin = style.textOrigin;\n\n if (origin === 'center') {\n x = rect.width / 2 + rect.x;\n y = rect.height / 2 + rect.y;\n } else if (origin) {\n x = origin[0] + rect.x;\n y = origin[1] + rect.y;\n }\n\n ctx.translate(x, y); // Positive: anticlockwise\n\n ctx.rotate(-style.textRotation);\n ctx.translate(-x, -y);\n }\n}\n\nfunction placeToken(hostEl, ctx, token, style, lineHeight, lineTop, x, textAlign) {\n var tokenStyle = style.rich[token.styleName] || {};\n tokenStyle.text = token.text; // 'ctx.textBaseline' is always set as 'middle', for sake of\n // the bias of \"Microsoft YaHei\".\n\n var textVerticalAlign = token.textVerticalAlign;\n var y = lineTop + lineHeight / 2;\n\n if (textVerticalAlign === 'top') {\n y = lineTop + token.height / 2;\n } else if (textVerticalAlign === 'bottom') {\n y = lineTop + lineHeight - token.height / 2;\n }\n\n !token.isLineHolder && needDrawBackground(tokenStyle) && drawBackground(hostEl, ctx, tokenStyle, textAlign === 'right' ? x - token.width : textAlign === 'center' ? x - token.width / 2 : x, y - token.height / 2, token.width, token.height);\n var textPadding = token.textPadding;\n\n if (textPadding) {\n x = getTextXForPadding(x, textAlign, textPadding);\n y -= token.height / 2 - textPadding[2] - token.textHeight / 2;\n }\n\n setCtx(ctx, 'shadowBlur', retrieve3(tokenStyle.textShadowBlur, style.textShadowBlur, 0));\n setCtx(ctx, 'shadowColor', tokenStyle.textShadowColor || style.textShadowColor || 'transparent');\n setCtx(ctx, 'shadowOffsetX', retrieve3(tokenStyle.textShadowOffsetX, style.textShadowOffsetX, 0));\n setCtx(ctx, 'shadowOffsetY', retrieve3(tokenStyle.textShadowOffsetY, style.textShadowOffsetY, 0));\n setCtx(ctx, 'textAlign', textAlign); // Force baseline to be \"middle\". Otherwise, if using \"top\", the\n // text will offset downward a little bit in font \"Microsoft YaHei\".\n\n setCtx(ctx, 'textBaseline', 'middle');\n setCtx(ctx, 'font', token.font || DEFAULT_FONT);\n var textStroke = getStroke(tokenStyle.textStroke || style.textStroke, textStrokeWidth);\n var textFill = getFill(tokenStyle.textFill || style.textFill);\n var textStrokeWidth = retrieve2(tokenStyle.textStrokeWidth, style.textStrokeWidth); // Fill after stroke so the outline will not cover the main part.\n\n if (textStroke) {\n setCtx(ctx, 'lineWidth', textStrokeWidth);\n setCtx(ctx, 'strokeStyle', textStroke);\n ctx.strokeText(token.text, x, y);\n }\n\n if (textFill) {\n setCtx(ctx, 'fillStyle', textFill);\n ctx.fillText(token.text, x, y);\n }\n}\n\nfunction needDrawBackground(style) {\n return !!(style.textBackgroundColor || style.textBorderWidth && style.textBorderColor);\n} // style: {textBackgroundColor, textBorderWidth, textBorderColor, textBorderRadius, text}\n// shape: {x, y, width, height}\n\n\nfunction drawBackground(hostEl, ctx, style, x, y, width, height) {\n var textBackgroundColor = style.textBackgroundColor;\n var textBorderWidth = style.textBorderWidth;\n var textBorderColor = style.textBorderColor;\n var isPlainBg = isString(textBackgroundColor);\n setCtx(ctx, 'shadowBlur', style.textBoxShadowBlur || 0);\n setCtx(ctx, 'shadowColor', style.textBoxShadowColor || 'transparent');\n setCtx(ctx, 'shadowOffsetX', style.textBoxShadowOffsetX || 0);\n setCtx(ctx, 'shadowOffsetY', style.textBoxShadowOffsetY || 0);\n\n if (isPlainBg || textBorderWidth && textBorderColor) {\n ctx.beginPath();\n var textBorderRadius = style.textBorderRadius;\n\n if (!textBorderRadius) {\n ctx.rect(x, y, width, height);\n } else {\n roundRectHelper.buildPath(ctx, {\n x: x,\n y: y,\n width: width,\n height: height,\n r: textBorderRadius\n });\n }\n\n ctx.closePath();\n }\n\n if (isPlainBg) {\n setCtx(ctx, 'fillStyle', textBackgroundColor);\n\n if (style.fillOpacity != null) {\n var originalGlobalAlpha = ctx.globalAlpha;\n ctx.globalAlpha = style.fillOpacity * style.opacity;\n ctx.fill();\n ctx.globalAlpha = originalGlobalAlpha;\n } else {\n ctx.fill();\n }\n } else if (isObject(textBackgroundColor)) {\n var image = textBackgroundColor.image;\n image = imageHelper.createOrUpdateImage(image, null, hostEl, onBgImageLoaded, textBackgroundColor);\n\n if (image && imageHelper.isImageReady(image)) {\n ctx.drawImage(image, x, y, width, height);\n }\n }\n\n if (textBorderWidth && textBorderColor) {\n setCtx(ctx, 'lineWidth', textBorderWidth);\n setCtx(ctx, 'strokeStyle', textBorderColor);\n\n if (style.strokeOpacity != null) {\n var originalGlobalAlpha = ctx.globalAlpha;\n ctx.globalAlpha = style.strokeOpacity * style.opacity;\n ctx.stroke();\n ctx.globalAlpha = originalGlobalAlpha;\n } else {\n ctx.stroke();\n }\n }\n}\n\nfunction onBgImageLoaded(image, textBackgroundColor) {\n // Replace image, so that `contain/text.js#parseRichText`\n // will get correct result in next tick.\n textBackgroundColor.image = image;\n}\n\nfunction getBoxPosition(out, hostEl, style, rect) {\n var baseX = style.x || 0;\n var baseY = style.y || 0;\n var textAlign = style.textAlign;\n var textVerticalAlign = style.textVerticalAlign; // Text position represented by coord\n\n if (rect) {\n var textPosition = style.textPosition;\n\n if (textPosition instanceof Array) {\n // Percent\n baseX = rect.x + parsePercent(textPosition[0], rect.width);\n baseY = rect.y + parsePercent(textPosition[1], rect.height);\n } else {\n var res = hostEl && hostEl.calculateTextPosition ? hostEl.calculateTextPosition(_tmpTextPositionResult, style, rect) : textContain.calculateTextPosition(_tmpTextPositionResult, style, rect);\n baseX = res.x;\n baseY = res.y; // Default align and baseline when has textPosition\n\n textAlign = textAlign || res.textAlign;\n textVerticalAlign = textVerticalAlign || res.textVerticalAlign;\n } // textOffset is only support in RectText, otherwise\n // we have to adjust boundingRect for textOffset.\n\n\n var textOffset = style.textOffset;\n\n if (textOffset) {\n baseX += textOffset[0];\n baseY += textOffset[1];\n }\n }\n\n out = out || {};\n out.baseX = baseX;\n out.baseY = baseY;\n out.textAlign = textAlign;\n out.textVerticalAlign = textVerticalAlign;\n return out;\n}\n\nfunction setCtx(ctx, prop, value) {\n ctx[prop] = fixShadow(ctx, prop, value);\n return ctx[prop];\n}\n/**\n * @param {string} [stroke] If specified, do not check style.textStroke.\n * @param {string} [lineWidth] If specified, do not check style.textStroke.\n * @param {number} style\n */\n\n\nfunction getStroke(stroke, lineWidth) {\n return stroke == null || lineWidth <= 0 || stroke === 'transparent' || stroke === 'none' ? null // TODO pattern and gradient?\n : stroke.image || stroke.colorStops ? '#000' : stroke;\n}\n\nfunction getFill(fill) {\n return fill == null || fill === 'none' ? null // TODO pattern and gradient?\n : fill.image || fill.colorStops ? '#000' : fill;\n}\n\nfunction parsePercent(value, maxValue) {\n if (typeof value === 'string') {\n if (value.lastIndexOf('%') >= 0) {\n return parseFloat(value) / 100 * maxValue;\n }\n\n return parseFloat(value);\n }\n\n return value;\n}\n\nfunction getTextXForPadding(x, textAlign, textPadding) {\n return textAlign === 'right' ? x - textPadding[1] : textAlign === 'center' ? x + textPadding[3] / 2 - textPadding[1] / 2 : x + textPadding[3];\n}\n/**\n * @param {string} text\n * @param {module:zrender/Style} style\n * @return {boolean}\n */\n\n\nfunction needDrawText(text, style) {\n return text != null && (text || style.textBackgroundColor || style.textBorderWidth && style.textBorderColor || style.textPadding);\n}\n\nexports.normalizeTextStyle = normalizeTextStyle;\nexports.renderText = renderText;\nexports.getBoxPosition = getBoxPosition;\nexports.getStroke = getStroke;\nexports.getFill = getFill;\nexports.parsePercent = parsePercent;\nexports.needDrawText = needDrawText;","module.exports = __webpack_public_path__ + \"img/3-small.33d29f56.png\";","import { Vue } from '../vue';\nimport { PROP_TYPE_BOOLEAN } from '../constants/props';\nimport { makeProp, makePropsConfigurable } from '../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n plain: makeProp(PROP_TYPE_BOOLEAN, false)\n}, 'formControls'); // --- Mixin ---\n// @vue/component\n\nexport var formCustomMixin = Vue.extend({\n props: props,\n computed: {\n custom: function custom() {\n return !this.plain;\n }\n }\n});","/**!\n * Sortable 1.10.2\n * @author\tRubaXa \n * @author\towenm \n * @license MIT\n */\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n}\n\nfunction _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nvar version = \"1.10.2\";\n\nfunction userAgent(pattern) {\n if (typeof window !== 'undefined' && window.navigator) {\n return !!\n /*@__PURE__*/\n navigator.userAgent.match(pattern);\n }\n}\n\nvar IE11OrLess = userAgent(/(?:Trident.*rv[ :]?11\\.|msie|iemobile|Windows Phone)/i);\nvar Edge = userAgent(/Edge/i);\nvar FireFox = userAgent(/firefox/i);\nvar Safari = userAgent(/safari/i) && !userAgent(/chrome/i) && !userAgent(/android/i);\nvar IOS = userAgent(/iP(ad|od|hone)/i);\nvar ChromeForAndroid = userAgent(/chrome/i) && userAgent(/android/i);\n\nvar captureMode = {\n capture: false,\n passive: false\n};\n\nfunction on(el, event, fn) {\n el.addEventListener(event, fn, !IE11OrLess && captureMode);\n}\n\nfunction off(el, event, fn) {\n el.removeEventListener(event, fn, !IE11OrLess && captureMode);\n}\n\nfunction matches(\n/**HTMLElement*/\nel,\n/**String*/\nselector) {\n if (!selector) return;\n selector[0] === '>' && (selector = selector.substring(1));\n\n if (el) {\n try {\n if (el.matches) {\n return el.matches(selector);\n } else if (el.msMatchesSelector) {\n return el.msMatchesSelector(selector);\n } else if (el.webkitMatchesSelector) {\n return el.webkitMatchesSelector(selector);\n }\n } catch (_) {\n return false;\n }\n }\n\n return false;\n}\n\nfunction getParentOrHost(el) {\n return el.host && el !== document && el.host.nodeType ? el.host : el.parentNode;\n}\n\nfunction closest(\n/**HTMLElement*/\nel,\n/**String*/\nselector,\n/**HTMLElement*/\nctx, includeCTX) {\n if (el) {\n ctx = ctx || document;\n\n do {\n if (selector != null && (selector[0] === '>' ? el.parentNode === ctx && matches(el, selector) : matches(el, selector)) || includeCTX && el === ctx) {\n return el;\n }\n\n if (el === ctx) break;\n /* jshint boss:true */\n } while (el = getParentOrHost(el));\n }\n\n return null;\n}\n\nvar R_SPACE = /\\s+/g;\n\nfunction toggleClass(el, name, state) {\n if (el && name) {\n if (el.classList) {\n el.classList[state ? 'add' : 'remove'](name);\n } else {\n var className = (' ' + el.className + ' ').replace(R_SPACE, ' ').replace(' ' + name + ' ', ' ');\n el.className = (className + (state ? ' ' + name : '')).replace(R_SPACE, ' ');\n }\n }\n}\n\nfunction css(el, prop, val) {\n var style = el && el.style;\n\n if (style) {\n if (val === void 0) {\n if (document.defaultView && document.defaultView.getComputedStyle) {\n val = document.defaultView.getComputedStyle(el, '');\n } else if (el.currentStyle) {\n val = el.currentStyle;\n }\n\n return prop === void 0 ? val : val[prop];\n } else {\n if (!(prop in style) && prop.indexOf('webkit') === -1) {\n prop = '-webkit-' + prop;\n }\n\n style[prop] = val + (typeof val === 'string' ? '' : 'px');\n }\n }\n}\n\nfunction matrix(el, selfOnly) {\n var appliedTransforms = '';\n\n if (typeof el === 'string') {\n appliedTransforms = el;\n } else {\n do {\n var transform = css(el, 'transform');\n\n if (transform && transform !== 'none') {\n appliedTransforms = transform + ' ' + appliedTransforms;\n }\n /* jshint boss:true */\n\n } while (!selfOnly && (el = el.parentNode));\n }\n\n var matrixFn = window.DOMMatrix || window.WebKitCSSMatrix || window.CSSMatrix || window.MSCSSMatrix;\n /*jshint -W056 */\n\n return matrixFn && new matrixFn(appliedTransforms);\n}\n\nfunction find(ctx, tagName, iterator) {\n if (ctx) {\n var list = ctx.getElementsByTagName(tagName),\n i = 0,\n n = list.length;\n\n if (iterator) {\n for (; i < n; i++) {\n iterator(list[i], i);\n }\n }\n\n return list;\n }\n\n return [];\n}\n\nfunction getWindowScrollingElement() {\n var scrollingElement = document.scrollingElement;\n\n if (scrollingElement) {\n return scrollingElement;\n } else {\n return document.documentElement;\n }\n}\n/**\r\n * Returns the \"bounding client rect\" of given element\r\n * @param {HTMLElement} el The element whose boundingClientRect is wanted\r\n * @param {[Boolean]} relativeToContainingBlock Whether the rect should be relative to the containing block of (including) the container\r\n * @param {[Boolean]} relativeToNonStaticParent Whether the rect should be relative to the relative parent of (including) the contaienr\r\n * @param {[Boolean]} undoScale Whether the container's scale() should be undone\r\n * @param {[HTMLElement]} container The parent the element will be placed in\r\n * @return {Object} The boundingClientRect of el, with specified adjustments\r\n */\n\n\nfunction getRect(el, relativeToContainingBlock, relativeToNonStaticParent, undoScale, container) {\n if (!el.getBoundingClientRect && el !== window) return;\n var elRect, top, left, bottom, right, height, width;\n\n if (el !== window && el !== getWindowScrollingElement()) {\n elRect = el.getBoundingClientRect();\n top = elRect.top;\n left = elRect.left;\n bottom = elRect.bottom;\n right = elRect.right;\n height = elRect.height;\n width = elRect.width;\n } else {\n top = 0;\n left = 0;\n bottom = window.innerHeight;\n right = window.innerWidth;\n height = window.innerHeight;\n width = window.innerWidth;\n }\n\n if ((relativeToContainingBlock || relativeToNonStaticParent) && el !== window) {\n // Adjust for translate()\n container = container || el.parentNode; // solves #1123 (see: https://stackoverflow.com/a/37953806/6088312)\n // Not needed on <= IE11\n\n if (!IE11OrLess) {\n do {\n if (container && container.getBoundingClientRect && (css(container, 'transform') !== 'none' || relativeToNonStaticParent && css(container, 'position') !== 'static')) {\n var containerRect = container.getBoundingClientRect(); // Set relative to edges of padding box of container\n\n top -= containerRect.top + parseInt(css(container, 'border-top-width'));\n left -= containerRect.left + parseInt(css(container, 'border-left-width'));\n bottom = top + elRect.height;\n right = left + elRect.width;\n break;\n }\n /* jshint boss:true */\n\n } while (container = container.parentNode);\n }\n }\n\n if (undoScale && el !== window) {\n // Adjust for scale()\n var elMatrix = matrix(container || el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d;\n\n if (elMatrix) {\n top /= scaleY;\n left /= scaleX;\n width /= scaleX;\n height /= scaleY;\n bottom = top + height;\n right = left + width;\n }\n }\n\n return {\n top: top,\n left: left,\n bottom: bottom,\n right: right,\n width: width,\n height: height\n };\n}\n/**\r\n * Checks if a side of an element is scrolled past a side of its parents\r\n * @param {HTMLElement} el The element who's side being scrolled out of view is in question\r\n * @param {String} elSide Side of the element in question ('top', 'left', 'right', 'bottom')\r\n * @param {String} parentSide Side of the parent in question ('top', 'left', 'right', 'bottom')\r\n * @return {HTMLElement} The parent scroll element that the el's side is scrolled past, or null if there is no such element\r\n */\n\n\nfunction isScrolledPast(el, elSide, parentSide) {\n var parent = getParentAutoScrollElement(el, true),\n elSideVal = getRect(el)[elSide];\n /* jshint boss:true */\n\n while (parent) {\n var parentSideVal = getRect(parent)[parentSide],\n visible = void 0;\n\n if (parentSide === 'top' || parentSide === 'left') {\n visible = elSideVal >= parentSideVal;\n } else {\n visible = elSideVal <= parentSideVal;\n }\n\n if (!visible) return parent;\n if (parent === getWindowScrollingElement()) break;\n parent = getParentAutoScrollElement(parent, false);\n }\n\n return false;\n}\n/**\r\n * Gets nth child of el, ignoring hidden children, sortable's elements (does not ignore clone if it's visible)\r\n * and non-draggable elements\r\n * @param {HTMLElement} el The parent element\r\n * @param {Number} childNum The index of the child\r\n * @param {Object} options Parent Sortable's options\r\n * @return {HTMLElement} The child at index childNum, or null if not found\r\n */\n\n\nfunction getChild(el, childNum, options) {\n var currentChild = 0,\n i = 0,\n children = el.children;\n\n while (i < children.length) {\n if (children[i].style.display !== 'none' && children[i] !== Sortable.ghost && children[i] !== Sortable.dragged && closest(children[i], options.draggable, el, false)) {\n if (currentChild === childNum) {\n return children[i];\n }\n\n currentChild++;\n }\n\n i++;\n }\n\n return null;\n}\n/**\r\n * Gets the last child in the el, ignoring ghostEl or invisible elements (clones)\r\n * @param {HTMLElement} el Parent element\r\n * @param {selector} selector Any other elements that should be ignored\r\n * @return {HTMLElement} The last child, ignoring ghostEl\r\n */\n\n\nfunction lastChild(el, selector) {\n var last = el.lastElementChild;\n\n while (last && (last === Sortable.ghost || css(last, 'display') === 'none' || selector && !matches(last, selector))) {\n last = last.previousElementSibling;\n }\n\n return last || null;\n}\n/**\r\n * Returns the index of an element within its parent for a selected set of\r\n * elements\r\n * @param {HTMLElement} el\r\n * @param {selector} selector\r\n * @return {number}\r\n */\n\n\nfunction index(el, selector) {\n var index = 0;\n\n if (!el || !el.parentNode) {\n return -1;\n }\n /* jshint boss:true */\n\n\n while (el = el.previousElementSibling) {\n if (el.nodeName.toUpperCase() !== 'TEMPLATE' && el !== Sortable.clone && (!selector || matches(el, selector))) {\n index++;\n }\n }\n\n return index;\n}\n/**\r\n * Returns the scroll offset of the given element, added with all the scroll offsets of parent elements.\r\n * The value is returned in real pixels.\r\n * @param {HTMLElement} el\r\n * @return {Array} Offsets in the format of [left, top]\r\n */\n\n\nfunction getRelativeScrollOffset(el) {\n var offsetLeft = 0,\n offsetTop = 0,\n winScroller = getWindowScrollingElement();\n\n if (el) {\n do {\n var elMatrix = matrix(el),\n scaleX = elMatrix.a,\n scaleY = elMatrix.d;\n offsetLeft += el.scrollLeft * scaleX;\n offsetTop += el.scrollTop * scaleY;\n } while (el !== winScroller && (el = el.parentNode));\n }\n\n return [offsetLeft, offsetTop];\n}\n/**\r\n * Returns the index of the object within the given array\r\n * @param {Array} arr Array that may or may not hold the object\r\n * @param {Object} obj An object that has a key-value pair unique to and identical to a key-value pair in the object you want to find\r\n * @return {Number} The index of the object in the array, or -1\r\n */\n\n\nfunction indexOfObject(arr, obj) {\n for (var i in arr) {\n if (!arr.hasOwnProperty(i)) continue;\n\n for (var key in obj) {\n if (obj.hasOwnProperty(key) && obj[key] === arr[i][key]) return Number(i);\n }\n }\n\n return -1;\n}\n\nfunction getParentAutoScrollElement(el, includeSelf) {\n // skip to window\n if (!el || !el.getBoundingClientRect) return getWindowScrollingElement();\n var elem = el;\n var gotSelf = false;\n\n do {\n // we don't need to get elem css if it isn't even overflowing in the first place (performance)\n if (elem.clientWidth < elem.scrollWidth || elem.clientHeight < elem.scrollHeight) {\n var elemCSS = css(elem);\n\n if (elem.clientWidth < elem.scrollWidth && (elemCSS.overflowX == 'auto' || elemCSS.overflowX == 'scroll') || elem.clientHeight < elem.scrollHeight && (elemCSS.overflowY == 'auto' || elemCSS.overflowY == 'scroll')) {\n if (!elem.getBoundingClientRect || elem === document.body) return getWindowScrollingElement();\n if (gotSelf || includeSelf) return elem;\n gotSelf = true;\n }\n }\n /* jshint boss:true */\n\n } while (elem = elem.parentNode);\n\n return getWindowScrollingElement();\n}\n\nfunction extend(dst, src) {\n if (dst && src) {\n for (var key in src) {\n if (src.hasOwnProperty(key)) {\n dst[key] = src[key];\n }\n }\n }\n\n return dst;\n}\n\nfunction isRectEqual(rect1, rect2) {\n return Math.round(rect1.top) === Math.round(rect2.top) && Math.round(rect1.left) === Math.round(rect2.left) && Math.round(rect1.height) === Math.round(rect2.height) && Math.round(rect1.width) === Math.round(rect2.width);\n}\n\nvar _throttleTimeout;\n\nfunction throttle(callback, ms) {\n return function () {\n if (!_throttleTimeout) {\n var args = arguments,\n _this = this;\n\n if (args.length === 1) {\n callback.call(_this, args[0]);\n } else {\n callback.apply(_this, args);\n }\n\n _throttleTimeout = setTimeout(function () {\n _throttleTimeout = void 0;\n }, ms);\n }\n };\n}\n\nfunction cancelThrottle() {\n clearTimeout(_throttleTimeout);\n _throttleTimeout = void 0;\n}\n\nfunction scrollBy(el, x, y) {\n el.scrollLeft += x;\n el.scrollTop += y;\n}\n\nfunction clone(el) {\n var Polymer = window.Polymer;\n var $ = window.jQuery || window.Zepto;\n\n if (Polymer && Polymer.dom) {\n return Polymer.dom(el).cloneNode(true);\n } else if ($) {\n return $(el).clone(true)[0];\n } else {\n return el.cloneNode(true);\n }\n}\n\nfunction setRect(el, rect) {\n css(el, 'position', 'absolute');\n css(el, 'top', rect.top);\n css(el, 'left', rect.left);\n css(el, 'width', rect.width);\n css(el, 'height', rect.height);\n}\n\nfunction unsetRect(el) {\n css(el, 'position', '');\n css(el, 'top', '');\n css(el, 'left', '');\n css(el, 'width', '');\n css(el, 'height', '');\n}\n\nvar expando = 'Sortable' + new Date().getTime();\n\nfunction AnimationStateManager() {\n var animationStates = [],\n animationCallbackId;\n return {\n captureAnimationState: function captureAnimationState() {\n animationStates = [];\n if (!this.options.animation) return;\n var children = [].slice.call(this.el.children);\n children.forEach(function (child) {\n if (css(child, 'display') === 'none' || child === Sortable.ghost) return;\n animationStates.push({\n target: child,\n rect: getRect(child)\n });\n\n var fromRect = _objectSpread({}, animationStates[animationStates.length - 1].rect); // If animating: compensate for current animation\n\n\n if (child.thisAnimationDuration) {\n var childMatrix = matrix(child, true);\n\n if (childMatrix) {\n fromRect.top -= childMatrix.f;\n fromRect.left -= childMatrix.e;\n }\n }\n\n child.fromRect = fromRect;\n });\n },\n addAnimationState: function addAnimationState(state) {\n animationStates.push(state);\n },\n removeAnimationState: function removeAnimationState(target) {\n animationStates.splice(indexOfObject(animationStates, {\n target: target\n }), 1);\n },\n animateAll: function animateAll(callback) {\n var _this = this;\n\n if (!this.options.animation) {\n clearTimeout(animationCallbackId);\n if (typeof callback === 'function') callback();\n return;\n }\n\n var animating = false,\n animationTime = 0;\n animationStates.forEach(function (state) {\n var time = 0,\n target = state.target,\n fromRect = target.fromRect,\n toRect = getRect(target),\n prevFromRect = target.prevFromRect,\n prevToRect = target.prevToRect,\n animatingRect = state.rect,\n targetMatrix = matrix(target, true);\n\n if (targetMatrix) {\n // Compensate for current animation\n toRect.top -= targetMatrix.f;\n toRect.left -= targetMatrix.e;\n }\n\n target.toRect = toRect;\n\n if (target.thisAnimationDuration) {\n // Could also check if animatingRect is between fromRect and toRect\n if (isRectEqual(prevFromRect, toRect) && !isRectEqual(fromRect, toRect) && // Make sure animatingRect is on line between toRect & fromRect\n (animatingRect.top - toRect.top) / (animatingRect.left - toRect.left) === (fromRect.top - toRect.top) / (fromRect.left - toRect.left)) {\n // If returning to same place as started from animation and on same axis\n time = calculateRealTime(animatingRect, prevFromRect, prevToRect, _this.options);\n }\n } // if fromRect != toRect: animate\n\n\n if (!isRectEqual(toRect, fromRect)) {\n target.prevFromRect = fromRect;\n target.prevToRect = toRect;\n\n if (!time) {\n time = _this.options.animation;\n }\n\n _this.animate(target, animatingRect, toRect, time);\n }\n\n if (time) {\n animating = true;\n animationTime = Math.max(animationTime, time);\n clearTimeout(target.animationResetTimer);\n target.animationResetTimer = setTimeout(function () {\n target.animationTime = 0;\n target.prevFromRect = null;\n target.fromRect = null;\n target.prevToRect = null;\n target.thisAnimationDuration = null;\n }, time);\n target.thisAnimationDuration = time;\n }\n });\n clearTimeout(animationCallbackId);\n\n if (!animating) {\n if (typeof callback === 'function') callback();\n } else {\n animationCallbackId = setTimeout(function () {\n if (typeof callback === 'function') callback();\n }, animationTime);\n }\n\n animationStates = [];\n },\n animate: function animate(target, currentRect, toRect, duration) {\n if (duration) {\n css(target, 'transition', '');\n css(target, 'transform', '');\n var elMatrix = matrix(this.el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d,\n translateX = (currentRect.left - toRect.left) / (scaleX || 1),\n translateY = (currentRect.top - toRect.top) / (scaleY || 1);\n target.animatingX = !!translateX;\n target.animatingY = !!translateY;\n css(target, 'transform', 'translate3d(' + translateX + 'px,' + translateY + 'px,0)');\n repaint(target); // repaint\n\n css(target, 'transition', 'transform ' + duration + 'ms' + (this.options.easing ? ' ' + this.options.easing : ''));\n css(target, 'transform', 'translate3d(0,0,0)');\n typeof target.animated === 'number' && clearTimeout(target.animated);\n target.animated = setTimeout(function () {\n css(target, 'transition', '');\n css(target, 'transform', '');\n target.animated = false;\n target.animatingX = false;\n target.animatingY = false;\n }, duration);\n }\n }\n };\n}\n\nfunction repaint(target) {\n return target.offsetWidth;\n}\n\nfunction calculateRealTime(animatingRect, fromRect, toRect, options) {\n return Math.sqrt(Math.pow(fromRect.top - animatingRect.top, 2) + Math.pow(fromRect.left - animatingRect.left, 2)) / Math.sqrt(Math.pow(fromRect.top - toRect.top, 2) + Math.pow(fromRect.left - toRect.left, 2)) * options.animation;\n}\n\nvar plugins = [];\nvar defaults = {\n initializeByDefault: true\n};\nvar PluginManager = {\n mount: function mount(plugin) {\n // Set default static properties\n for (var option in defaults) {\n if (defaults.hasOwnProperty(option) && !(option in plugin)) {\n plugin[option] = defaults[option];\n }\n }\n\n plugins.push(plugin);\n },\n pluginEvent: function pluginEvent(eventName, sortable, evt) {\n var _this = this;\n\n this.eventCanceled = false;\n\n evt.cancel = function () {\n _this.eventCanceled = true;\n };\n\n var eventNameGlobal = eventName + 'Global';\n plugins.forEach(function (plugin) {\n if (!sortable[plugin.pluginName]) return; // Fire global events if it exists in this sortable\n\n if (sortable[plugin.pluginName][eventNameGlobal]) {\n sortable[plugin.pluginName][eventNameGlobal](_objectSpread({\n sortable: sortable\n }, evt));\n } // Only fire plugin event if plugin is enabled in this sortable,\n // and plugin has event defined\n\n\n if (sortable.options[plugin.pluginName] && sortable[plugin.pluginName][eventName]) {\n sortable[plugin.pluginName][eventName](_objectSpread({\n sortable: sortable\n }, evt));\n }\n });\n },\n initializePlugins: function initializePlugins(sortable, el, defaults, options) {\n plugins.forEach(function (plugin) {\n var pluginName = plugin.pluginName;\n if (!sortable.options[pluginName] && !plugin.initializeByDefault) return;\n var initialized = new plugin(sortable, el, sortable.options);\n initialized.sortable = sortable;\n initialized.options = sortable.options;\n sortable[pluginName] = initialized; // Add default options from plugin\n\n _extends(defaults, initialized.defaults);\n });\n\n for (var option in sortable.options) {\n if (!sortable.options.hasOwnProperty(option)) continue;\n var modified = this.modifyOption(sortable, option, sortable.options[option]);\n\n if (typeof modified !== 'undefined') {\n sortable.options[option] = modified;\n }\n }\n },\n getEventProperties: function getEventProperties(name, sortable) {\n var eventProperties = {};\n plugins.forEach(function (plugin) {\n if (typeof plugin.eventProperties !== 'function') return;\n\n _extends(eventProperties, plugin.eventProperties.call(sortable[plugin.pluginName], name));\n });\n return eventProperties;\n },\n modifyOption: function modifyOption(sortable, name, value) {\n var modifiedValue;\n plugins.forEach(function (plugin) {\n // Plugin must exist on the Sortable\n if (!sortable[plugin.pluginName]) return; // If static option listener exists for this option, call in the context of the Sortable's instance of this plugin\n\n if (plugin.optionListeners && typeof plugin.optionListeners[name] === 'function') {\n modifiedValue = plugin.optionListeners[name].call(sortable[plugin.pluginName], value);\n }\n });\n return modifiedValue;\n }\n};\n\nfunction dispatchEvent(_ref) {\n var sortable = _ref.sortable,\n rootEl = _ref.rootEl,\n name = _ref.name,\n targetEl = _ref.targetEl,\n cloneEl = _ref.cloneEl,\n toEl = _ref.toEl,\n fromEl = _ref.fromEl,\n oldIndex = _ref.oldIndex,\n newIndex = _ref.newIndex,\n oldDraggableIndex = _ref.oldDraggableIndex,\n newDraggableIndex = _ref.newDraggableIndex,\n originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n extraEventProperties = _ref.extraEventProperties;\n sortable = sortable || rootEl && rootEl[expando];\n if (!sortable) return;\n var evt,\n options = sortable.options,\n onName = 'on' + name.charAt(0).toUpperCase() + name.substr(1); // Support for new CustomEvent feature\n\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent(name, {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent(name, true, true);\n }\n\n evt.to = toEl || rootEl;\n evt.from = fromEl || rootEl;\n evt.item = targetEl || rootEl;\n evt.clone = cloneEl;\n evt.oldIndex = oldIndex;\n evt.newIndex = newIndex;\n evt.oldDraggableIndex = oldDraggableIndex;\n evt.newDraggableIndex = newDraggableIndex;\n evt.originalEvent = originalEvent;\n evt.pullMode = putSortable ? putSortable.lastPutMode : undefined;\n\n var allEventProperties = _objectSpread({}, extraEventProperties, PluginManager.getEventProperties(name, sortable));\n\n for (var option in allEventProperties) {\n evt[option] = allEventProperties[option];\n }\n\n if (rootEl) {\n rootEl.dispatchEvent(evt);\n }\n\n if (options[onName]) {\n options[onName].call(sortable, evt);\n }\n}\n\nvar pluginEvent = function pluginEvent(eventName, sortable) {\n var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n originalEvent = _ref.evt,\n data = _objectWithoutProperties(_ref, [\"evt\"]);\n\n PluginManager.pluginEvent.bind(Sortable)(eventName, sortable, _objectSpread({\n dragEl: dragEl,\n parentEl: parentEl,\n ghostEl: ghostEl,\n rootEl: rootEl,\n nextEl: nextEl,\n lastDownEl: lastDownEl,\n cloneEl: cloneEl,\n cloneHidden: cloneHidden,\n dragStarted: moved,\n putSortable: putSortable,\n activeSortable: Sortable.active,\n originalEvent: originalEvent,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n hideGhostForTarget: _hideGhostForTarget,\n unhideGhostForTarget: _unhideGhostForTarget,\n cloneNowHidden: function cloneNowHidden() {\n cloneHidden = true;\n },\n cloneNowShown: function cloneNowShown() {\n cloneHidden = false;\n },\n dispatchSortableEvent: function dispatchSortableEvent(name) {\n _dispatchEvent({\n sortable: sortable,\n name: name,\n originalEvent: originalEvent\n });\n }\n }, data));\n};\n\nfunction _dispatchEvent(info) {\n dispatchEvent(_objectSpread({\n putSortable: putSortable,\n cloneEl: cloneEl,\n targetEl: dragEl,\n rootEl: rootEl,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex\n }, info));\n}\n\nvar dragEl,\n parentEl,\n ghostEl,\n rootEl,\n nextEl,\n lastDownEl,\n cloneEl,\n cloneHidden,\n oldIndex,\n newIndex,\n oldDraggableIndex,\n newDraggableIndex,\n activeGroup,\n putSortable,\n awaitingDragStarted = false,\n ignoreNextClick = false,\n sortables = [],\n tapEvt,\n touchEvt,\n lastDx,\n lastDy,\n tapDistanceLeft,\n tapDistanceTop,\n moved,\n lastTarget,\n lastDirection,\n pastFirstInvertThresh = false,\n isCircumstantialInvert = false,\n targetMoveDistance,\n // For positioning ghost absolutely\nghostRelativeParent,\n ghostRelativeParentInitialScroll = [],\n // (left, top)\n_silent = false,\n savedInputChecked = [];\n/** @const */\n\nvar documentExists = typeof document !== 'undefined',\n PositionGhostAbsolutely = IOS,\n CSSFloatProperty = Edge || IE11OrLess ? 'cssFloat' : 'float',\n // This will not pass for IE9, because IE9 DnD only works on anchors\nsupportDraggable = documentExists && !ChromeForAndroid && !IOS && 'draggable' in document.createElement('div'),\n supportCssPointerEvents = function () {\n if (!documentExists) return; // false when <= IE11\n\n if (IE11OrLess) {\n return false;\n }\n\n var el = document.createElement('x');\n el.style.cssText = 'pointer-events:auto';\n return el.style.pointerEvents === 'auto';\n}(),\n _detectDirection = function _detectDirection(el, options) {\n var elCSS = css(el),\n elWidth = parseInt(elCSS.width) - parseInt(elCSS.paddingLeft) - parseInt(elCSS.paddingRight) - parseInt(elCSS.borderLeftWidth) - parseInt(elCSS.borderRightWidth),\n child1 = getChild(el, 0, options),\n child2 = getChild(el, 1, options),\n firstChildCSS = child1 && css(child1),\n secondChildCSS = child2 && css(child2),\n firstChildWidth = firstChildCSS && parseInt(firstChildCSS.marginLeft) + parseInt(firstChildCSS.marginRight) + getRect(child1).width,\n secondChildWidth = secondChildCSS && parseInt(secondChildCSS.marginLeft) + parseInt(secondChildCSS.marginRight) + getRect(child2).width;\n\n if (elCSS.display === 'flex') {\n return elCSS.flexDirection === 'column' || elCSS.flexDirection === 'column-reverse' ? 'vertical' : 'horizontal';\n }\n\n if (elCSS.display === 'grid') {\n return elCSS.gridTemplateColumns.split(' ').length <= 1 ? 'vertical' : 'horizontal';\n }\n\n if (child1 && firstChildCSS[\"float\"] && firstChildCSS[\"float\"] !== 'none') {\n var touchingSideChild2 = firstChildCSS[\"float\"] === 'left' ? 'left' : 'right';\n return child2 && (secondChildCSS.clear === 'both' || secondChildCSS.clear === touchingSideChild2) ? 'vertical' : 'horizontal';\n }\n\n return child1 && (firstChildCSS.display === 'block' || firstChildCSS.display === 'flex' || firstChildCSS.display === 'table' || firstChildCSS.display === 'grid' || firstChildWidth >= elWidth && elCSS[CSSFloatProperty] === 'none' || child2 && elCSS[CSSFloatProperty] === 'none' && firstChildWidth + secondChildWidth > elWidth) ? 'vertical' : 'horizontal';\n},\n _dragElInRowColumn = function _dragElInRowColumn(dragRect, targetRect, vertical) {\n var dragElS1Opp = vertical ? dragRect.left : dragRect.top,\n dragElS2Opp = vertical ? dragRect.right : dragRect.bottom,\n dragElOppLength = vertical ? dragRect.width : dragRect.height,\n targetS1Opp = vertical ? targetRect.left : targetRect.top,\n targetS2Opp = vertical ? targetRect.right : targetRect.bottom,\n targetOppLength = vertical ? targetRect.width : targetRect.height;\n return dragElS1Opp === targetS1Opp || dragElS2Opp === targetS2Opp || dragElS1Opp + dragElOppLength / 2 === targetS1Opp + targetOppLength / 2;\n},\n\n/**\n * Detects first nearest empty sortable to X and Y position using emptyInsertThreshold.\n * @param {Number} x X position\n * @param {Number} y Y position\n * @return {HTMLElement} Element of the first found nearest Sortable\n */\n_detectNearestEmptySortable = function _detectNearestEmptySortable(x, y) {\n var ret;\n sortables.some(function (sortable) {\n if (lastChild(sortable)) return;\n var rect = getRect(sortable),\n threshold = sortable[expando].options.emptyInsertThreshold,\n insideHorizontally = x >= rect.left - threshold && x <= rect.right + threshold,\n insideVertically = y >= rect.top - threshold && y <= rect.bottom + threshold;\n\n if (threshold && insideHorizontally && insideVertically) {\n return ret = sortable;\n }\n });\n return ret;\n},\n _prepareGroup = function _prepareGroup(options) {\n function toFn(value, pull) {\n return function (to, from, dragEl, evt) {\n var sameGroup = to.options.group.name && from.options.group.name && to.options.group.name === from.options.group.name;\n\n if (value == null && (pull || sameGroup)) {\n // Default pull value\n // Default pull and put value if same group\n return true;\n } else if (value == null || value === false) {\n return false;\n } else if (pull && value === 'clone') {\n return value;\n } else if (typeof value === 'function') {\n return toFn(value(to, from, dragEl, evt), pull)(to, from, dragEl, evt);\n } else {\n var otherGroup = (pull ? to : from).options.group.name;\n return value === true || typeof value === 'string' && value === otherGroup || value.join && value.indexOf(otherGroup) > -1;\n }\n };\n }\n\n var group = {};\n var originalGroup = options.group;\n\n if (!originalGroup || _typeof(originalGroup) != 'object') {\n originalGroup = {\n name: originalGroup\n };\n }\n\n group.name = originalGroup.name;\n group.checkPull = toFn(originalGroup.pull, true);\n group.checkPut = toFn(originalGroup.put);\n group.revertClone = originalGroup.revertClone;\n options.group = group;\n},\n _hideGhostForTarget = function _hideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', 'none');\n }\n},\n _unhideGhostForTarget = function _unhideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', '');\n }\n}; // #1184 fix - Prevent click event on fallback if dragged but item not changed position\n\n\nif (documentExists) {\n document.addEventListener('click', function (evt) {\n if (ignoreNextClick) {\n evt.preventDefault();\n evt.stopPropagation && evt.stopPropagation();\n evt.stopImmediatePropagation && evt.stopImmediatePropagation();\n ignoreNextClick = false;\n return false;\n }\n }, true);\n}\n\nvar nearestEmptyInsertDetectEvent = function nearestEmptyInsertDetectEvent(evt) {\n if (dragEl) {\n evt = evt.touches ? evt.touches[0] : evt;\n\n var nearest = _detectNearestEmptySortable(evt.clientX, evt.clientY);\n\n if (nearest) {\n // Create imitation event\n var event = {};\n\n for (var i in evt) {\n if (evt.hasOwnProperty(i)) {\n event[i] = evt[i];\n }\n }\n\n event.target = event.rootEl = nearest;\n event.preventDefault = void 0;\n event.stopPropagation = void 0;\n\n nearest[expando]._onDragOver(event);\n }\n }\n};\n\nvar _checkOutsideTargetEl = function _checkOutsideTargetEl(evt) {\n if (dragEl) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target);\n }\n};\n/**\n * @class Sortable\n * @param {HTMLElement} el\n * @param {Object} [options]\n */\n\n\nfunction Sortable(el, options) {\n if (!(el && el.nodeType && el.nodeType === 1)) {\n throw \"Sortable: `el` must be an HTMLElement, not \".concat({}.toString.call(el));\n }\n\n this.el = el; // root element\n\n this.options = options = _extends({}, options); // Export instance\n\n el[expando] = this;\n var defaults = {\n group: null,\n sort: true,\n disabled: false,\n store: null,\n handle: null,\n draggable: /^[uo]l$/i.test(el.nodeName) ? '>li' : '>*',\n swapThreshold: 1,\n // percentage; 0 <= x <= 1\n invertSwap: false,\n // invert always\n invertedSwapThreshold: null,\n // will be set to same as swapThreshold if default\n removeCloneOnHide: true,\n direction: function direction() {\n return _detectDirection(el, this.options);\n },\n ghostClass: 'sortable-ghost',\n chosenClass: 'sortable-chosen',\n dragClass: 'sortable-drag',\n ignore: 'a, img',\n filter: null,\n preventOnFilter: true,\n animation: 0,\n easing: null,\n setData: function setData(dataTransfer, dragEl) {\n dataTransfer.setData('Text', dragEl.textContent);\n },\n dropBubble: false,\n dragoverBubble: false,\n dataIdAttr: 'data-id',\n delay: 0,\n delayOnTouchOnly: false,\n touchStartThreshold: (Number.parseInt ? Number : window).parseInt(window.devicePixelRatio, 10) || 1,\n forceFallback: false,\n fallbackClass: 'sortable-fallback',\n fallbackOnBody: false,\n fallbackTolerance: 0,\n fallbackOffset: {\n x: 0,\n y: 0\n },\n supportPointer: Sortable.supportPointer !== false && 'PointerEvent' in window,\n emptyInsertThreshold: 5\n };\n PluginManager.initializePlugins(this, el, defaults); // Set default options\n\n for (var name in defaults) {\n !(name in options) && (options[name] = defaults[name]);\n }\n\n _prepareGroup(options); // Bind all private methods\n\n\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n } // Setup drag mode\n\n\n this.nativeDraggable = options.forceFallback ? false : supportDraggable;\n\n if (this.nativeDraggable) {\n // Touch start threshold cannot be greater than the native dragstart threshold\n this.options.touchStartThreshold = 1;\n } // Bind events\n\n\n if (options.supportPointer) {\n on(el, 'pointerdown', this._onTapStart);\n } else {\n on(el, 'mousedown', this._onTapStart);\n on(el, 'touchstart', this._onTapStart);\n }\n\n if (this.nativeDraggable) {\n on(el, 'dragover', this);\n on(el, 'dragenter', this);\n }\n\n sortables.push(this.el); // Restore sorting\n\n options.store && options.store.get && this.sort(options.store.get(this) || []); // Add animation state manager\n\n _extends(this, AnimationStateManager());\n}\n\nSortable.prototype =\n/** @lends Sortable.prototype */\n{\n constructor: Sortable,\n _isOutsideThisEl: function _isOutsideThisEl(target) {\n if (!this.el.contains(target) && target !== this.el) {\n lastTarget = null;\n }\n },\n _getDirection: function _getDirection(evt, target) {\n return typeof this.options.direction === 'function' ? this.options.direction.call(this, evt, target, dragEl) : this.options.direction;\n },\n _onTapStart: function _onTapStart(\n /** Event|TouchEvent */\n evt) {\n if (!evt.cancelable) return;\n\n var _this = this,\n el = this.el,\n options = this.options,\n preventOnFilter = options.preventOnFilter,\n type = evt.type,\n touch = evt.touches && evt.touches[0] || evt.pointerType && evt.pointerType === 'touch' && evt,\n target = (touch || evt).target,\n originalTarget = evt.target.shadowRoot && (evt.path && evt.path[0] || evt.composedPath && evt.composedPath()[0]) || target,\n filter = options.filter;\n\n _saveInputCheckedState(el); // Don't trigger start event when an element is been dragged, otherwise the evt.oldindex always wrong when set option.group.\n\n\n if (dragEl) {\n return;\n }\n\n if (/mousedown|pointerdown/.test(type) && evt.button !== 0 || options.disabled) {\n return; // only left button and enabled\n } // cancel dnd if original target is content editable\n\n\n if (originalTarget.isContentEditable) {\n return;\n }\n\n target = closest(target, options.draggable, el, false);\n\n if (target && target.animated) {\n return;\n }\n\n if (lastDownEl === target) {\n // Ignoring duplicate `down`\n return;\n } // Get the index of the dragged element within its parent\n\n\n oldIndex = index(target);\n oldDraggableIndex = index(target, options.draggable); // Check filter\n\n if (typeof filter === 'function') {\n if (filter.call(this, evt, target, this)) {\n _dispatchEvent({\n sortable: _this,\n rootEl: originalTarget,\n name: 'filter',\n targetEl: target,\n toEl: el,\n fromEl: el\n });\n\n pluginEvent('filter', _this, {\n evt: evt\n });\n preventOnFilter && evt.cancelable && evt.preventDefault();\n return; // cancel dnd\n }\n } else if (filter) {\n filter = filter.split(',').some(function (criteria) {\n criteria = closest(originalTarget, criteria.trim(), el, false);\n\n if (criteria) {\n _dispatchEvent({\n sortable: _this,\n rootEl: criteria,\n name: 'filter',\n targetEl: target,\n fromEl: el,\n toEl: el\n });\n\n pluginEvent('filter', _this, {\n evt: evt\n });\n return true;\n }\n });\n\n if (filter) {\n preventOnFilter && evt.cancelable && evt.preventDefault();\n return; // cancel dnd\n }\n }\n\n if (options.handle && !closest(originalTarget, options.handle, el, false)) {\n return;\n } // Prepare `dragstart`\n\n\n this._prepareDragStart(evt, touch, target);\n },\n _prepareDragStart: function _prepareDragStart(\n /** Event */\n evt,\n /** Touch */\n touch,\n /** HTMLElement */\n target) {\n var _this = this,\n el = _this.el,\n options = _this.options,\n ownerDocument = el.ownerDocument,\n dragStartFn;\n\n if (target && !dragEl && target.parentNode === el) {\n var dragRect = getRect(target);\n rootEl = el;\n dragEl = target;\n parentEl = dragEl.parentNode;\n nextEl = dragEl.nextSibling;\n lastDownEl = target;\n activeGroup = options.group;\n Sortable.dragged = dragEl;\n tapEvt = {\n target: dragEl,\n clientX: (touch || evt).clientX,\n clientY: (touch || evt).clientY\n };\n tapDistanceLeft = tapEvt.clientX - dragRect.left;\n tapDistanceTop = tapEvt.clientY - dragRect.top;\n this._lastX = (touch || evt).clientX;\n this._lastY = (touch || evt).clientY;\n dragEl.style['will-change'] = 'all';\n\n dragStartFn = function dragStartFn() {\n pluginEvent('delayEnded', _this, {\n evt: evt\n });\n\n if (Sortable.eventCanceled) {\n _this._onDrop();\n\n return;\n } // Delayed drag has been triggered\n // we can re-enable the events: touchmove/mousemove\n\n\n _this._disableDelayedDragEvents();\n\n if (!FireFox && _this.nativeDraggable) {\n dragEl.draggable = true;\n } // Bind the events: dragstart/dragend\n\n\n _this._triggerDragStart(evt, touch); // Drag start event\n\n\n _dispatchEvent({\n sortable: _this,\n name: 'choose',\n originalEvent: evt\n }); // Chosen item\n\n\n toggleClass(dragEl, options.chosenClass, true);\n }; // Disable \"draggable\"\n\n\n options.ignore.split(',').forEach(function (criteria) {\n find(dragEl, criteria.trim(), _disableDraggable);\n });\n on(ownerDocument, 'dragover', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mousemove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'touchmove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mouseup', _this._onDrop);\n on(ownerDocument, 'touchend', _this._onDrop);\n on(ownerDocument, 'touchcancel', _this._onDrop); // Make dragEl draggable (must be before delay for FireFox)\n\n if (FireFox && this.nativeDraggable) {\n this.options.touchStartThreshold = 4;\n dragEl.draggable = true;\n }\n\n pluginEvent('delayStart', this, {\n evt: evt\n }); // Delay is impossible for native DnD in Edge or IE\n\n if (options.delay && (!options.delayOnTouchOnly || touch) && (!this.nativeDraggable || !(Edge || IE11OrLess))) {\n if (Sortable.eventCanceled) {\n this._onDrop();\n\n return;\n } // If the user moves the pointer or let go the click or touch\n // before the delay has been reached:\n // disable the delayed drag\n\n\n on(ownerDocument, 'mouseup', _this._disableDelayedDrag);\n on(ownerDocument, 'touchend', _this._disableDelayedDrag);\n on(ownerDocument, 'touchcancel', _this._disableDelayedDrag);\n on(ownerDocument, 'mousemove', _this._delayedDragTouchMoveHandler);\n on(ownerDocument, 'touchmove', _this._delayedDragTouchMoveHandler);\n options.supportPointer && on(ownerDocument, 'pointermove', _this._delayedDragTouchMoveHandler);\n _this._dragStartTimer = setTimeout(dragStartFn, options.delay);\n } else {\n dragStartFn();\n }\n }\n },\n _delayedDragTouchMoveHandler: function _delayedDragTouchMoveHandler(\n /** TouchEvent|PointerEvent **/\n e) {\n var touch = e.touches ? e.touches[0] : e;\n\n if (Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) >= Math.floor(this.options.touchStartThreshold / (this.nativeDraggable && window.devicePixelRatio || 1))) {\n this._disableDelayedDrag();\n }\n },\n _disableDelayedDrag: function _disableDelayedDrag() {\n dragEl && _disableDraggable(dragEl);\n clearTimeout(this._dragStartTimer);\n\n this._disableDelayedDragEvents();\n },\n _disableDelayedDragEvents: function _disableDelayedDragEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._disableDelayedDrag);\n off(ownerDocument, 'touchend', this._disableDelayedDrag);\n off(ownerDocument, 'touchcancel', this._disableDelayedDrag);\n off(ownerDocument, 'mousemove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'touchmove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'pointermove', this._delayedDragTouchMoveHandler);\n },\n _triggerDragStart: function _triggerDragStart(\n /** Event */\n evt,\n /** Touch */\n touch) {\n touch = touch || evt.pointerType == 'touch' && evt;\n\n if (!this.nativeDraggable || touch) {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._onTouchMove);\n } else if (touch) {\n on(document, 'touchmove', this._onTouchMove);\n } else {\n on(document, 'mousemove', this._onTouchMove);\n }\n } else {\n on(dragEl, 'dragend', this);\n on(rootEl, 'dragstart', this._onDragStart);\n }\n\n try {\n if (document.selection) {\n // Timeout neccessary for IE9\n _nextTick(function () {\n document.selection.empty();\n });\n } else {\n window.getSelection().removeAllRanges();\n }\n } catch (err) {}\n },\n _dragStarted: function _dragStarted(fallback, evt) {\n\n awaitingDragStarted = false;\n\n if (rootEl && dragEl) {\n pluginEvent('dragStarted', this, {\n evt: evt\n });\n\n if (this.nativeDraggable) {\n on(document, 'dragover', _checkOutsideTargetEl);\n }\n\n var options = this.options; // Apply effect\n\n !fallback && toggleClass(dragEl, options.dragClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n Sortable.active = this;\n fallback && this._appendGhost(); // Drag start event\n\n _dispatchEvent({\n sortable: this,\n name: 'start',\n originalEvent: evt\n });\n } else {\n this._nulling();\n }\n },\n _emulateDragOver: function _emulateDragOver() {\n if (touchEvt) {\n this._lastX = touchEvt.clientX;\n this._lastY = touchEvt.clientY;\n\n _hideGhostForTarget();\n\n var target = document.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n var parent = target;\n\n while (target && target.shadowRoot) {\n target = target.shadowRoot.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n if (target === parent) break;\n parent = target;\n }\n\n dragEl.parentNode[expando]._isOutsideThisEl(target);\n\n if (parent) {\n do {\n if (parent[expando]) {\n var inserted = void 0;\n inserted = parent[expando]._onDragOver({\n clientX: touchEvt.clientX,\n clientY: touchEvt.clientY,\n target: target,\n rootEl: parent\n });\n\n if (inserted && !this.options.dragoverBubble) {\n break;\n }\n }\n\n target = parent; // store last element\n }\n /* jshint boss:true */\n while (parent = parent.parentNode);\n }\n\n _unhideGhostForTarget();\n }\n },\n _onTouchMove: function _onTouchMove(\n /**TouchEvent*/\n evt) {\n if (tapEvt) {\n var options = this.options,\n fallbackTolerance = options.fallbackTolerance,\n fallbackOffset = options.fallbackOffset,\n touch = evt.touches ? evt.touches[0] : evt,\n ghostMatrix = ghostEl && matrix(ghostEl, true),\n scaleX = ghostEl && ghostMatrix && ghostMatrix.a,\n scaleY = ghostEl && ghostMatrix && ghostMatrix.d,\n relativeScrollOffset = PositionGhostAbsolutely && ghostRelativeParent && getRelativeScrollOffset(ghostRelativeParent),\n dx = (touch.clientX - tapEvt.clientX + fallbackOffset.x) / (scaleX || 1) + (relativeScrollOffset ? relativeScrollOffset[0] - ghostRelativeParentInitialScroll[0] : 0) / (scaleX || 1),\n dy = (touch.clientY - tapEvt.clientY + fallbackOffset.y) / (scaleY || 1) + (relativeScrollOffset ? relativeScrollOffset[1] - ghostRelativeParentInitialScroll[1] : 0) / (scaleY || 1); // only set the status to dragging, when we are actually dragging\n\n if (!Sortable.active && !awaitingDragStarted) {\n if (fallbackTolerance && Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) < fallbackTolerance) {\n return;\n }\n\n this._onDragStart(evt, true);\n }\n\n if (ghostEl) {\n if (ghostMatrix) {\n ghostMatrix.e += dx - (lastDx || 0);\n ghostMatrix.f += dy - (lastDy || 0);\n } else {\n ghostMatrix = {\n a: 1,\n b: 0,\n c: 0,\n d: 1,\n e: dx,\n f: dy\n };\n }\n\n var cssMatrix = \"matrix(\".concat(ghostMatrix.a, \",\").concat(ghostMatrix.b, \",\").concat(ghostMatrix.c, \",\").concat(ghostMatrix.d, \",\").concat(ghostMatrix.e, \",\").concat(ghostMatrix.f, \")\");\n css(ghostEl, 'webkitTransform', cssMatrix);\n css(ghostEl, 'mozTransform', cssMatrix);\n css(ghostEl, 'msTransform', cssMatrix);\n css(ghostEl, 'transform', cssMatrix);\n lastDx = dx;\n lastDy = dy;\n touchEvt = touch;\n }\n\n evt.cancelable && evt.preventDefault();\n }\n },\n _appendGhost: function _appendGhost() {\n // Bug if using scale(): https://stackoverflow.com/questions/2637058\n // Not being adjusted for\n if (!ghostEl) {\n var container = this.options.fallbackOnBody ? document.body : rootEl,\n rect = getRect(dragEl, true, PositionGhostAbsolutely, true, container),\n options = this.options; // Position absolutely\n\n if (PositionGhostAbsolutely) {\n // Get relatively positioned parent\n ghostRelativeParent = container;\n\n while (css(ghostRelativeParent, 'position') === 'static' && css(ghostRelativeParent, 'transform') === 'none' && ghostRelativeParent !== document) {\n ghostRelativeParent = ghostRelativeParent.parentNode;\n }\n\n if (ghostRelativeParent !== document.body && ghostRelativeParent !== document.documentElement) {\n if (ghostRelativeParent === document) ghostRelativeParent = getWindowScrollingElement();\n rect.top += ghostRelativeParent.scrollTop;\n rect.left += ghostRelativeParent.scrollLeft;\n } else {\n ghostRelativeParent = getWindowScrollingElement();\n }\n\n ghostRelativeParentInitialScroll = getRelativeScrollOffset(ghostRelativeParent);\n }\n\n ghostEl = dragEl.cloneNode(true);\n toggleClass(ghostEl, options.ghostClass, false);\n toggleClass(ghostEl, options.fallbackClass, true);\n toggleClass(ghostEl, options.dragClass, true);\n css(ghostEl, 'transition', '');\n css(ghostEl, 'transform', '');\n css(ghostEl, 'box-sizing', 'border-box');\n css(ghostEl, 'margin', 0);\n css(ghostEl, 'top', rect.top);\n css(ghostEl, 'left', rect.left);\n css(ghostEl, 'width', rect.width);\n css(ghostEl, 'height', rect.height);\n css(ghostEl, 'opacity', '0.8');\n css(ghostEl, 'position', PositionGhostAbsolutely ? 'absolute' : 'fixed');\n css(ghostEl, 'zIndex', '100000');\n css(ghostEl, 'pointerEvents', 'none');\n Sortable.ghost = ghostEl;\n container.appendChild(ghostEl); // Set transform-origin\n\n css(ghostEl, 'transform-origin', tapDistanceLeft / parseInt(ghostEl.style.width) * 100 + '% ' + tapDistanceTop / parseInt(ghostEl.style.height) * 100 + '%');\n }\n },\n _onDragStart: function _onDragStart(\n /**Event*/\n evt,\n /**boolean*/\n fallback) {\n var _this = this;\n\n var dataTransfer = evt.dataTransfer;\n var options = _this.options;\n pluginEvent('dragStart', this, {\n evt: evt\n });\n\n if (Sortable.eventCanceled) {\n this._onDrop();\n\n return;\n }\n\n pluginEvent('setupClone', this);\n\n if (!Sortable.eventCanceled) {\n cloneEl = clone(dragEl);\n cloneEl.draggable = false;\n cloneEl.style['will-change'] = '';\n\n this._hideClone();\n\n toggleClass(cloneEl, this.options.chosenClass, false);\n Sortable.clone = cloneEl;\n } // #1143: IFrame support workaround\n\n\n _this.cloneId = _nextTick(function () {\n pluginEvent('clone', _this);\n if (Sortable.eventCanceled) return;\n\n if (!_this.options.removeCloneOnHide) {\n rootEl.insertBefore(cloneEl, dragEl);\n }\n\n _this._hideClone();\n\n _dispatchEvent({\n sortable: _this,\n name: 'clone'\n });\n });\n !fallback && toggleClass(dragEl, options.dragClass, true); // Set proper drop events\n\n if (fallback) {\n ignoreNextClick = true;\n _this._loopId = setInterval(_this._emulateDragOver, 50);\n } else {\n // Undo what was set in _prepareDragStart before drag started\n off(document, 'mouseup', _this._onDrop);\n off(document, 'touchend', _this._onDrop);\n off(document, 'touchcancel', _this._onDrop);\n\n if (dataTransfer) {\n dataTransfer.effectAllowed = 'move';\n options.setData && options.setData.call(_this, dataTransfer, dragEl);\n }\n\n on(document, 'drop', _this); // #1276 fix:\n\n css(dragEl, 'transform', 'translateZ(0)');\n }\n\n awaitingDragStarted = true;\n _this._dragStartId = _nextTick(_this._dragStarted.bind(_this, fallback, evt));\n on(document, 'selectstart', _this);\n moved = true;\n\n if (Safari) {\n css(document.body, 'user-select', 'none');\n }\n },\n // Returns true - if no further action is needed (either inserted or another condition)\n _onDragOver: function _onDragOver(\n /**Event*/\n evt) {\n var el = this.el,\n target = evt.target,\n dragRect,\n targetRect,\n revert,\n options = this.options,\n group = options.group,\n activeSortable = Sortable.active,\n isOwner = activeGroup === group,\n canSort = options.sort,\n fromSortable = putSortable || activeSortable,\n vertical,\n _this = this,\n completedFired = false;\n\n if (_silent) return;\n\n function dragOverEvent(name, extra) {\n pluginEvent(name, _this, _objectSpread({\n evt: evt,\n isOwner: isOwner,\n axis: vertical ? 'vertical' : 'horizontal',\n revert: revert,\n dragRect: dragRect,\n targetRect: targetRect,\n canSort: canSort,\n fromSortable: fromSortable,\n target: target,\n completed: completed,\n onMove: function onMove(target, after) {\n return _onMove(rootEl, el, dragEl, dragRect, target, getRect(target), evt, after);\n },\n changed: changed\n }, extra));\n } // Capture animation state\n\n\n function capture() {\n dragOverEvent('dragOverAnimationCapture');\n\n _this.captureAnimationState();\n\n if (_this !== fromSortable) {\n fromSortable.captureAnimationState();\n }\n } // Return invocation when dragEl is inserted (or completed)\n\n\n function completed(insertion) {\n dragOverEvent('dragOverCompleted', {\n insertion: insertion\n });\n\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n } else {\n activeSortable._showClone(_this);\n }\n\n if (_this !== fromSortable) {\n // Set ghost class to new sortable's ghost class\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : activeSortable.options.ghostClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n }\n\n if (putSortable !== _this && _this !== Sortable.active) {\n putSortable = _this;\n } else if (_this === Sortable.active && putSortable) {\n putSortable = null;\n } // Animation\n\n\n if (fromSortable === _this) {\n _this._ignoreWhileAnimating = target;\n }\n\n _this.animateAll(function () {\n dragOverEvent('dragOverAnimationComplete');\n _this._ignoreWhileAnimating = null;\n });\n\n if (_this !== fromSortable) {\n fromSortable.animateAll();\n fromSortable._ignoreWhileAnimating = null;\n }\n } // Null lastTarget if it is not inside a previously swapped element\n\n\n if (target === dragEl && !dragEl.animated || target === el && !target.animated) {\n lastTarget = null;\n } // no bubbling and not fallback\n\n\n if (!options.dragoverBubble && !evt.rootEl && target !== document) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target); // Do not detect for empty insert if already inserted\n\n\n !insertion && nearestEmptyInsertDetectEvent(evt);\n }\n\n !options.dragoverBubble && evt.stopPropagation && evt.stopPropagation();\n return completedFired = true;\n } // Call when dragEl has been inserted\n\n\n function changed() {\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n\n _dispatchEvent({\n sortable: _this,\n name: 'change',\n toEl: el,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n originalEvent: evt\n });\n }\n\n if (evt.preventDefault !== void 0) {\n evt.cancelable && evt.preventDefault();\n }\n\n target = closest(target, options.draggable, el, true);\n dragOverEvent('dragOver');\n if (Sortable.eventCanceled) return completedFired;\n\n if (dragEl.contains(evt.target) || target.animated && target.animatingX && target.animatingY || _this._ignoreWhileAnimating === target) {\n return completed(false);\n }\n\n ignoreNextClick = false;\n\n if (activeSortable && !options.disabled && (isOwner ? canSort || (revert = !rootEl.contains(dragEl)) // Reverting item into the original list\n : putSortable === this || (this.lastPutMode = activeGroup.checkPull(this, activeSortable, dragEl, evt)) && group.checkPut(this, activeSortable, dragEl, evt))) {\n vertical = this._getDirection(evt, target) === 'vertical';\n dragRect = getRect(dragEl);\n dragOverEvent('dragOverValid');\n if (Sortable.eventCanceled) return completedFired;\n\n if (revert) {\n parentEl = rootEl; // actualization\n\n capture();\n\n this._hideClone();\n\n dragOverEvent('revert');\n\n if (!Sortable.eventCanceled) {\n if (nextEl) {\n rootEl.insertBefore(dragEl, nextEl);\n } else {\n rootEl.appendChild(dragEl);\n }\n }\n\n return completed(true);\n }\n\n var elLastChild = lastChild(el, options.draggable);\n\n if (!elLastChild || _ghostIsLast(evt, vertical, this) && !elLastChild.animated) {\n // If already at end of list: Do not insert\n if (elLastChild === dragEl) {\n return completed(false);\n } // assign target only if condition is true\n\n\n if (elLastChild && el === evt.target) {\n target = elLastChild;\n }\n\n if (target) {\n targetRect = getRect(target);\n }\n\n if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, !!target) !== false) {\n capture();\n el.appendChild(dragEl);\n parentEl = el; // actualization\n\n changed();\n return completed(true);\n }\n } else if (target.parentNode === el) {\n targetRect = getRect(target);\n var direction = 0,\n targetBeforeFirstSwap,\n differentLevel = dragEl.parentNode !== el,\n differentRowCol = !_dragElInRowColumn(dragEl.animated && dragEl.toRect || dragRect, target.animated && target.toRect || targetRect, vertical),\n side1 = vertical ? 'top' : 'left',\n scrolledPastTop = isScrolledPast(target, 'top', 'top') || isScrolledPast(dragEl, 'top', 'top'),\n scrollBefore = scrolledPastTop ? scrolledPastTop.scrollTop : void 0;\n\n if (lastTarget !== target) {\n targetBeforeFirstSwap = targetRect[side1];\n pastFirstInvertThresh = false;\n isCircumstantialInvert = !differentRowCol && options.invertSwap || differentLevel;\n }\n\n direction = _getSwapDirection(evt, target, targetRect, vertical, differentRowCol ? 1 : options.swapThreshold, options.invertedSwapThreshold == null ? options.swapThreshold : options.invertedSwapThreshold, isCircumstantialInvert, lastTarget === target);\n var sibling;\n\n if (direction !== 0) {\n // Check if target is beside dragEl in respective direction (ignoring hidden elements)\n var dragIndex = index(dragEl);\n\n do {\n dragIndex -= direction;\n sibling = parentEl.children[dragIndex];\n } while (sibling && (css(sibling, 'display') === 'none' || sibling === ghostEl));\n } // If dragEl is already beside target: Do not insert\n\n\n if (direction === 0 || sibling === target) {\n return completed(false);\n }\n\n lastTarget = target;\n lastDirection = direction;\n var nextSibling = target.nextElementSibling,\n after = false;\n after = direction === 1;\n\n var moveVector = _onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, after);\n\n if (moveVector !== false) {\n if (moveVector === 1 || moveVector === -1) {\n after = moveVector === 1;\n }\n\n _silent = true;\n setTimeout(_unsilent, 30);\n capture();\n\n if (after && !nextSibling) {\n el.appendChild(dragEl);\n } else {\n target.parentNode.insertBefore(dragEl, after ? nextSibling : target);\n } // Undo chrome's scroll adjustment (has no effect on other browsers)\n\n\n if (scrolledPastTop) {\n scrollBy(scrolledPastTop, 0, scrollBefore - scrolledPastTop.scrollTop);\n }\n\n parentEl = dragEl.parentNode; // actualization\n // must be done before animation\n\n if (targetBeforeFirstSwap !== undefined && !isCircumstantialInvert) {\n targetMoveDistance = Math.abs(targetBeforeFirstSwap - getRect(target)[side1]);\n }\n\n changed();\n return completed(true);\n }\n }\n\n if (el.contains(dragEl)) {\n return completed(false);\n }\n }\n\n return false;\n },\n _ignoreWhileAnimating: null,\n _offMoveEvents: function _offMoveEvents() {\n off(document, 'mousemove', this._onTouchMove);\n off(document, 'touchmove', this._onTouchMove);\n off(document, 'pointermove', this._onTouchMove);\n off(document, 'dragover', nearestEmptyInsertDetectEvent);\n off(document, 'mousemove', nearestEmptyInsertDetectEvent);\n off(document, 'touchmove', nearestEmptyInsertDetectEvent);\n },\n _offUpEvents: function _offUpEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._onDrop);\n off(ownerDocument, 'touchend', this._onDrop);\n off(ownerDocument, 'pointerup', this._onDrop);\n off(ownerDocument, 'touchcancel', this._onDrop);\n off(document, 'selectstart', this);\n },\n _onDrop: function _onDrop(\n /**Event*/\n evt) {\n var el = this.el,\n options = this.options; // Get the index of the dragged element within its parent\n\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n pluginEvent('drop', this, {\n evt: evt\n });\n parentEl = dragEl && dragEl.parentNode; // Get again after plugin event\n\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n\n if (Sortable.eventCanceled) {\n this._nulling();\n\n return;\n }\n\n awaitingDragStarted = false;\n isCircumstantialInvert = false;\n pastFirstInvertThresh = false;\n clearInterval(this._loopId);\n clearTimeout(this._dragStartTimer);\n\n _cancelNextTick(this.cloneId);\n\n _cancelNextTick(this._dragStartId); // Unbind events\n\n\n if (this.nativeDraggable) {\n off(document, 'drop', this);\n off(el, 'dragstart', this._onDragStart);\n }\n\n this._offMoveEvents();\n\n this._offUpEvents();\n\n if (Safari) {\n css(document.body, 'user-select', '');\n }\n\n css(dragEl, 'transform', '');\n\n if (evt) {\n if (moved) {\n evt.cancelable && evt.preventDefault();\n !options.dropBubble && evt.stopPropagation();\n }\n\n ghostEl && ghostEl.parentNode && ghostEl.parentNode.removeChild(ghostEl);\n\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n // Remove clone(s)\n cloneEl && cloneEl.parentNode && cloneEl.parentNode.removeChild(cloneEl);\n }\n\n if (dragEl) {\n if (this.nativeDraggable) {\n off(dragEl, 'dragend', this);\n }\n\n _disableDraggable(dragEl);\n\n dragEl.style['will-change'] = ''; // Remove classes\n // ghostClass is added in dragStarted\n\n if (moved && !awaitingDragStarted) {\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : this.options.ghostClass, false);\n }\n\n toggleClass(dragEl, this.options.chosenClass, false); // Drag stop event\n\n _dispatchEvent({\n sortable: this,\n name: 'unchoose',\n toEl: parentEl,\n newIndex: null,\n newDraggableIndex: null,\n originalEvent: evt\n });\n\n if (rootEl !== parentEl) {\n if (newIndex >= 0) {\n // Add event\n _dispatchEvent({\n rootEl: parentEl,\n name: 'add',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n }); // Remove event\n\n\n _dispatchEvent({\n sortable: this,\n name: 'remove',\n toEl: parentEl,\n originalEvent: evt\n }); // drag from one list and drop into another\n\n\n _dispatchEvent({\n rootEl: parentEl,\n name: 'sort',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n });\n\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n\n putSortable && putSortable.save();\n } else {\n if (newIndex !== oldIndex) {\n if (newIndex >= 0) {\n // drag & drop within the same list\n _dispatchEvent({\n sortable: this,\n name: 'update',\n toEl: parentEl,\n originalEvent: evt\n });\n\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n }\n }\n\n if (Sortable.active) {\n /* jshint eqnull:true */\n if (newIndex == null || newIndex === -1) {\n newIndex = oldIndex;\n newDraggableIndex = oldDraggableIndex;\n }\n\n _dispatchEvent({\n sortable: this,\n name: 'end',\n toEl: parentEl,\n originalEvent: evt\n }); // Save sorting\n\n\n this.save();\n }\n }\n }\n\n this._nulling();\n },\n _nulling: function _nulling() {\n pluginEvent('nulling', this);\n rootEl = dragEl = parentEl = ghostEl = nextEl = cloneEl = lastDownEl = cloneHidden = tapEvt = touchEvt = moved = newIndex = newDraggableIndex = oldIndex = oldDraggableIndex = lastTarget = lastDirection = putSortable = activeGroup = Sortable.dragged = Sortable.ghost = Sortable.clone = Sortable.active = null;\n savedInputChecked.forEach(function (el) {\n el.checked = true;\n });\n savedInputChecked.length = lastDx = lastDy = 0;\n },\n handleEvent: function handleEvent(\n /**Event*/\n evt) {\n switch (evt.type) {\n case 'drop':\n case 'dragend':\n this._onDrop(evt);\n\n break;\n\n case 'dragenter':\n case 'dragover':\n if (dragEl) {\n this._onDragOver(evt);\n\n _globalDragOver(evt);\n }\n\n break;\n\n case 'selectstart':\n evt.preventDefault();\n break;\n }\n },\n\n /**\n * Serializes the item into an array of string.\n * @returns {String[]}\n */\n toArray: function toArray() {\n var order = [],\n el,\n children = this.el.children,\n i = 0,\n n = children.length,\n options = this.options;\n\n for (; i < n; i++) {\n el = children[i];\n\n if (closest(el, options.draggable, this.el, false)) {\n order.push(el.getAttribute(options.dataIdAttr) || _generateId(el));\n }\n }\n\n return order;\n },\n\n /**\n * Sorts the elements according to the array.\n * @param {String[]} order order of the items\n */\n sort: function sort(order) {\n var items = {},\n rootEl = this.el;\n this.toArray().forEach(function (id, i) {\n var el = rootEl.children[i];\n\n if (closest(el, this.options.draggable, rootEl, false)) {\n items[id] = el;\n }\n }, this);\n order.forEach(function (id) {\n if (items[id]) {\n rootEl.removeChild(items[id]);\n rootEl.appendChild(items[id]);\n }\n });\n },\n\n /**\n * Save the current sorting\n */\n save: function save() {\n var store = this.options.store;\n store && store.set && store.set(this);\n },\n\n /**\n * For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.\n * @param {HTMLElement} el\n * @param {String} [selector] default: `options.draggable`\n * @returns {HTMLElement|null}\n */\n closest: function closest$1(el, selector) {\n return closest(el, selector || this.options.draggable, this.el, false);\n },\n\n /**\n * Set/get option\n * @param {string} name\n * @param {*} [value]\n * @returns {*}\n */\n option: function option(name, value) {\n var options = this.options;\n\n if (value === void 0) {\n return options[name];\n } else {\n var modifiedValue = PluginManager.modifyOption(this, name, value);\n\n if (typeof modifiedValue !== 'undefined') {\n options[name] = modifiedValue;\n } else {\n options[name] = value;\n }\n\n if (name === 'group') {\n _prepareGroup(options);\n }\n }\n },\n\n /**\n * Destroy\n */\n destroy: function destroy() {\n pluginEvent('destroy', this);\n var el = this.el;\n el[expando] = null;\n off(el, 'mousedown', this._onTapStart);\n off(el, 'touchstart', this._onTapStart);\n off(el, 'pointerdown', this._onTapStart);\n\n if (this.nativeDraggable) {\n off(el, 'dragover', this);\n off(el, 'dragenter', this);\n } // Remove draggable attributes\n\n\n Array.prototype.forEach.call(el.querySelectorAll('[draggable]'), function (el) {\n el.removeAttribute('draggable');\n });\n\n this._onDrop();\n\n this._disableDelayedDragEvents();\n\n sortables.splice(sortables.indexOf(this.el), 1);\n this.el = el = null;\n },\n _hideClone: function _hideClone() {\n if (!cloneHidden) {\n pluginEvent('hideClone', this);\n if (Sortable.eventCanceled) return;\n css(cloneEl, 'display', 'none');\n\n if (this.options.removeCloneOnHide && cloneEl.parentNode) {\n cloneEl.parentNode.removeChild(cloneEl);\n }\n\n cloneHidden = true;\n }\n },\n _showClone: function _showClone(putSortable) {\n if (putSortable.lastPutMode !== 'clone') {\n this._hideClone();\n\n return;\n }\n\n if (cloneHidden) {\n pluginEvent('showClone', this);\n if (Sortable.eventCanceled) return; // show clone at dragEl or original position\n\n if (rootEl.contains(dragEl) && !this.options.group.revertClone) {\n rootEl.insertBefore(cloneEl, dragEl);\n } else if (nextEl) {\n rootEl.insertBefore(cloneEl, nextEl);\n } else {\n rootEl.appendChild(cloneEl);\n }\n\n if (this.options.group.revertClone) {\n this.animate(dragEl, cloneEl);\n }\n\n css(cloneEl, 'display', '');\n cloneHidden = false;\n }\n }\n};\n\nfunction _globalDragOver(\n/**Event*/\nevt) {\n if (evt.dataTransfer) {\n evt.dataTransfer.dropEffect = 'move';\n }\n\n evt.cancelable && evt.preventDefault();\n}\n\nfunction _onMove(fromEl, toEl, dragEl, dragRect, targetEl, targetRect, originalEvent, willInsertAfter) {\n var evt,\n sortable = fromEl[expando],\n onMoveFn = sortable.options.onMove,\n retVal; // Support for new CustomEvent feature\n\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent('move', {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent('move', true, true);\n }\n\n evt.to = toEl;\n evt.from = fromEl;\n evt.dragged = dragEl;\n evt.draggedRect = dragRect;\n evt.related = targetEl || toEl;\n evt.relatedRect = targetRect || getRect(toEl);\n evt.willInsertAfter = willInsertAfter;\n evt.originalEvent = originalEvent;\n fromEl.dispatchEvent(evt);\n\n if (onMoveFn) {\n retVal = onMoveFn.call(sortable, evt, originalEvent);\n }\n\n return retVal;\n}\n\nfunction _disableDraggable(el) {\n el.draggable = false;\n}\n\nfunction _unsilent() {\n _silent = false;\n}\n\nfunction _ghostIsLast(evt, vertical, sortable) {\n var rect = getRect(lastChild(sortable.el, sortable.options.draggable));\n var spacer = 10;\n return vertical ? evt.clientX > rect.right + spacer || evt.clientX <= rect.right && evt.clientY > rect.bottom && evt.clientX >= rect.left : evt.clientX > rect.right && evt.clientY > rect.top || evt.clientX <= rect.right && evt.clientY > rect.bottom + spacer;\n}\n\nfunction _getSwapDirection(evt, target, targetRect, vertical, swapThreshold, invertedSwapThreshold, invertSwap, isLastTarget) {\n var mouseOnAxis = vertical ? evt.clientY : evt.clientX,\n targetLength = vertical ? targetRect.height : targetRect.width,\n targetS1 = vertical ? targetRect.top : targetRect.left,\n targetS2 = vertical ? targetRect.bottom : targetRect.right,\n invert = false;\n\n if (!invertSwap) {\n // Never invert or create dragEl shadow when target movemenet causes mouse to move past the end of regular swapThreshold\n if (isLastTarget && targetMoveDistance < targetLength * swapThreshold) {\n // multiplied only by swapThreshold because mouse will already be inside target by (1 - threshold) * targetLength / 2\n // check if past first invert threshold on side opposite of lastDirection\n if (!pastFirstInvertThresh && (lastDirection === 1 ? mouseOnAxis > targetS1 + targetLength * invertedSwapThreshold / 2 : mouseOnAxis < targetS2 - targetLength * invertedSwapThreshold / 2)) {\n // past first invert threshold, do not restrict inverted threshold to dragEl shadow\n pastFirstInvertThresh = true;\n }\n\n if (!pastFirstInvertThresh) {\n // dragEl shadow (target move distance shadow)\n if (lastDirection === 1 ? mouseOnAxis < targetS1 + targetMoveDistance // over dragEl shadow\n : mouseOnAxis > targetS2 - targetMoveDistance) {\n return -lastDirection;\n }\n } else {\n invert = true;\n }\n } else {\n // Regular\n if (mouseOnAxis > targetS1 + targetLength * (1 - swapThreshold) / 2 && mouseOnAxis < targetS2 - targetLength * (1 - swapThreshold) / 2) {\n return _getInsertDirection(target);\n }\n }\n }\n\n invert = invert || invertSwap;\n\n if (invert) {\n // Invert of regular\n if (mouseOnAxis < targetS1 + targetLength * invertedSwapThreshold / 2 || mouseOnAxis > targetS2 - targetLength * invertedSwapThreshold / 2) {\n return mouseOnAxis > targetS1 + targetLength / 2 ? 1 : -1;\n }\n }\n\n return 0;\n}\n/**\n * Gets the direction dragEl must be swapped relative to target in order to make it\n * seem that dragEl has been \"inserted\" into that element's position\n * @param {HTMLElement} target The target whose position dragEl is being inserted at\n * @return {Number} Direction dragEl must be swapped\n */\n\n\nfunction _getInsertDirection(target) {\n if (index(dragEl) < index(target)) {\n return 1;\n } else {\n return -1;\n }\n}\n/**\n * Generate id\n * @param {HTMLElement} el\n * @returns {String}\n * @private\n */\n\n\nfunction _generateId(el) {\n var str = el.tagName + el.className + el.src + el.href + el.textContent,\n i = str.length,\n sum = 0;\n\n while (i--) {\n sum += str.charCodeAt(i);\n }\n\n return sum.toString(36);\n}\n\nfunction _saveInputCheckedState(root) {\n savedInputChecked.length = 0;\n var inputs = root.getElementsByTagName('input');\n var idx = inputs.length;\n\n while (idx--) {\n var el = inputs[idx];\n el.checked && savedInputChecked.push(el);\n }\n}\n\nfunction _nextTick(fn) {\n return setTimeout(fn, 0);\n}\n\nfunction _cancelNextTick(id) {\n return clearTimeout(id);\n} // Fixed #973:\n\n\nif (documentExists) {\n on(document, 'touchmove', function (evt) {\n if ((Sortable.active || awaitingDragStarted) && evt.cancelable) {\n evt.preventDefault();\n }\n });\n} // Export utils\n\n\nSortable.utils = {\n on: on,\n off: off,\n css: css,\n find: find,\n is: function is(el, selector) {\n return !!closest(el, selector, el, false);\n },\n extend: extend,\n throttle: throttle,\n closest: closest,\n toggleClass: toggleClass,\n clone: clone,\n index: index,\n nextTick: _nextTick,\n cancelNextTick: _cancelNextTick,\n detectDirection: _detectDirection,\n getChild: getChild\n};\n/**\n * Get the Sortable instance of an element\n * @param {HTMLElement} element The element\n * @return {Sortable|undefined} The instance of Sortable\n */\n\nSortable.get = function (element) {\n return element[expando];\n};\n/**\n * Mount a plugin to Sortable\n * @param {...SortablePlugin|SortablePlugin[]} plugins Plugins being mounted\n */\n\n\nSortable.mount = function () {\n for (var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++) {\n plugins[_key] = arguments[_key];\n }\n\n if (plugins[0].constructor === Array) plugins = plugins[0];\n plugins.forEach(function (plugin) {\n if (!plugin.prototype || !plugin.prototype.constructor) {\n throw \"Sortable: Mounted plugin must be a constructor function, not \".concat({}.toString.call(plugin));\n }\n\n if (plugin.utils) Sortable.utils = _objectSpread({}, Sortable.utils, plugin.utils);\n PluginManager.mount(plugin);\n });\n};\n/**\n * Create sortable instance\n * @param {HTMLElement} el\n * @param {Object} [options]\n */\n\n\nSortable.create = function (el, options) {\n return new Sortable(el, options);\n}; // Export\n\n\nSortable.version = version;\n\nvar autoScrolls = [],\n scrollEl,\n scrollRootEl,\n scrolling = false,\n lastAutoScrollX,\n lastAutoScrollY,\n touchEvt$1,\n pointerElemChangedInterval;\n\nfunction AutoScrollPlugin() {\n function AutoScroll() {\n this.defaults = {\n scroll: true,\n scrollSensitivity: 30,\n scrollSpeed: 10,\n bubbleScroll: true\n }; // Bind all private methods\n\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n }\n\n AutoScroll.prototype = {\n dragStarted: function dragStarted(_ref) {\n var originalEvent = _ref.originalEvent;\n\n if (this.sortable.nativeDraggable) {\n on(document, 'dragover', this._handleAutoScroll);\n } else {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._handleFallbackAutoScroll);\n } else if (originalEvent.touches) {\n on(document, 'touchmove', this._handleFallbackAutoScroll);\n } else {\n on(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref2) {\n var originalEvent = _ref2.originalEvent;\n\n // For when bubbling is canceled and using fallback (fallback 'touchmove' always reached)\n if (!this.options.dragOverBubble && !originalEvent.rootEl) {\n this._handleAutoScroll(originalEvent);\n }\n },\n drop: function drop() {\n if (this.sortable.nativeDraggable) {\n off(document, 'dragover', this._handleAutoScroll);\n } else {\n off(document, 'pointermove', this._handleFallbackAutoScroll);\n off(document, 'touchmove', this._handleFallbackAutoScroll);\n off(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n\n clearPointerElemChangedInterval();\n clearAutoScrolls();\n cancelThrottle();\n },\n nulling: function nulling() {\n touchEvt$1 = scrollRootEl = scrollEl = scrolling = pointerElemChangedInterval = lastAutoScrollX = lastAutoScrollY = null;\n autoScrolls.length = 0;\n },\n _handleFallbackAutoScroll: function _handleFallbackAutoScroll(evt) {\n this._handleAutoScroll(evt, true);\n },\n _handleAutoScroll: function _handleAutoScroll(evt, fallback) {\n var _this = this;\n\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n elem = document.elementFromPoint(x, y);\n touchEvt$1 = evt; // IE does not seem to have native autoscroll,\n // Edge's autoscroll seems too conditional,\n // MACOS Safari does not have autoscroll,\n // Firefox and Chrome are good\n\n if (fallback || Edge || IE11OrLess || Safari) {\n autoScroll(evt, this.options, elem, fallback); // Listener for pointer element change\n\n var ogElemScroller = getParentAutoScrollElement(elem, true);\n\n if (scrolling && (!pointerElemChangedInterval || x !== lastAutoScrollX || y !== lastAutoScrollY)) {\n pointerElemChangedInterval && clearPointerElemChangedInterval(); // Detect for pointer elem change, emulating native DnD behaviour\n\n pointerElemChangedInterval = setInterval(function () {\n var newElem = getParentAutoScrollElement(document.elementFromPoint(x, y), true);\n\n if (newElem !== ogElemScroller) {\n ogElemScroller = newElem;\n clearAutoScrolls();\n }\n\n autoScroll(evt, _this.options, newElem, fallback);\n }, 10);\n lastAutoScrollX = x;\n lastAutoScrollY = y;\n }\n } else {\n // if DnD is enabled (and browser has good autoscrolling), first autoscroll will already scroll, so get parent autoscroll of first autoscroll\n if (!this.options.bubbleScroll || getParentAutoScrollElement(elem, true) === getWindowScrollingElement()) {\n clearAutoScrolls();\n return;\n }\n\n autoScroll(evt, this.options, getParentAutoScrollElement(elem, false), false);\n }\n }\n };\n return _extends(AutoScroll, {\n pluginName: 'scroll',\n initializeByDefault: true\n });\n}\n\nfunction clearAutoScrolls() {\n autoScrolls.forEach(function (autoScroll) {\n clearInterval(autoScroll.pid);\n });\n autoScrolls = [];\n}\n\nfunction clearPointerElemChangedInterval() {\n clearInterval(pointerElemChangedInterval);\n}\n\nvar autoScroll = throttle(function (evt, options, rootEl, isFallback) {\n // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=505521\n if (!options.scroll) return;\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n sens = options.scrollSensitivity,\n speed = options.scrollSpeed,\n winScroller = getWindowScrollingElement();\n var scrollThisInstance = false,\n scrollCustomFn; // New scroll root, set scrollEl\n\n if (scrollRootEl !== rootEl) {\n scrollRootEl = rootEl;\n clearAutoScrolls();\n scrollEl = options.scroll;\n scrollCustomFn = options.scrollFn;\n\n if (scrollEl === true) {\n scrollEl = getParentAutoScrollElement(rootEl, true);\n }\n }\n\n var layersOut = 0;\n var currentParent = scrollEl;\n\n do {\n var el = currentParent,\n rect = getRect(el),\n top = rect.top,\n bottom = rect.bottom,\n left = rect.left,\n right = rect.right,\n width = rect.width,\n height = rect.height,\n canScrollX = void 0,\n canScrollY = void 0,\n scrollWidth = el.scrollWidth,\n scrollHeight = el.scrollHeight,\n elCSS = css(el),\n scrollPosX = el.scrollLeft,\n scrollPosY = el.scrollTop;\n\n if (el === winScroller) {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll' || elCSS.overflowX === 'visible');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll' || elCSS.overflowY === 'visible');\n } else {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll');\n }\n\n var vx = canScrollX && (Math.abs(right - x) <= sens && scrollPosX + width < scrollWidth) - (Math.abs(left - x) <= sens && !!scrollPosX);\n var vy = canScrollY && (Math.abs(bottom - y) <= sens && scrollPosY + height < scrollHeight) - (Math.abs(top - y) <= sens && !!scrollPosY);\n\n if (!autoScrolls[layersOut]) {\n for (var i = 0; i <= layersOut; i++) {\n if (!autoScrolls[i]) {\n autoScrolls[i] = {};\n }\n }\n }\n\n if (autoScrolls[layersOut].vx != vx || autoScrolls[layersOut].vy != vy || autoScrolls[layersOut].el !== el) {\n autoScrolls[layersOut].el = el;\n autoScrolls[layersOut].vx = vx;\n autoScrolls[layersOut].vy = vy;\n clearInterval(autoScrolls[layersOut].pid);\n\n if (vx != 0 || vy != 0) {\n scrollThisInstance = true;\n /* jshint loopfunc:true */\n\n autoScrolls[layersOut].pid = setInterval(function () {\n // emulate drag over during autoscroll (fallback), emulating native DnD behaviour\n if (isFallback && this.layer === 0) {\n Sortable.active._onTouchMove(touchEvt$1); // To move ghost if it is positioned absolutely\n\n }\n\n var scrollOffsetY = autoScrolls[this.layer].vy ? autoScrolls[this.layer].vy * speed : 0;\n var scrollOffsetX = autoScrolls[this.layer].vx ? autoScrolls[this.layer].vx * speed : 0;\n\n if (typeof scrollCustomFn === 'function') {\n if (scrollCustomFn.call(Sortable.dragged.parentNode[expando], scrollOffsetX, scrollOffsetY, evt, touchEvt$1, autoScrolls[this.layer].el) !== 'continue') {\n return;\n }\n }\n\n scrollBy(autoScrolls[this.layer].el, scrollOffsetX, scrollOffsetY);\n }.bind({\n layer: layersOut\n }), 24);\n }\n }\n\n layersOut++;\n } while (options.bubbleScroll && currentParent !== winScroller && (currentParent = getParentAutoScrollElement(currentParent, false)));\n\n scrolling = scrollThisInstance; // in case another function catches scrolling as false in between when it is not\n}, 30);\n\nvar drop = function drop(_ref) {\n var originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n dragEl = _ref.dragEl,\n activeSortable = _ref.activeSortable,\n dispatchSortableEvent = _ref.dispatchSortableEvent,\n hideGhostForTarget = _ref.hideGhostForTarget,\n unhideGhostForTarget = _ref.unhideGhostForTarget;\n if (!originalEvent) return;\n var toSortable = putSortable || activeSortable;\n hideGhostForTarget();\n var touch = originalEvent.changedTouches && originalEvent.changedTouches.length ? originalEvent.changedTouches[0] : originalEvent;\n var target = document.elementFromPoint(touch.clientX, touch.clientY);\n unhideGhostForTarget();\n\n if (toSortable && !toSortable.el.contains(target)) {\n dispatchSortableEvent('spill');\n this.onSpill({\n dragEl: dragEl,\n putSortable: putSortable\n });\n }\n};\n\nfunction Revert() {}\n\nRevert.prototype = {\n startIndex: null,\n dragStart: function dragStart(_ref2) {\n var oldDraggableIndex = _ref2.oldDraggableIndex;\n this.startIndex = oldDraggableIndex;\n },\n onSpill: function onSpill(_ref3) {\n var dragEl = _ref3.dragEl,\n putSortable = _ref3.putSortable;\n this.sortable.captureAnimationState();\n\n if (putSortable) {\n putSortable.captureAnimationState();\n }\n\n var nextSibling = getChild(this.sortable.el, this.startIndex, this.options);\n\n if (nextSibling) {\n this.sortable.el.insertBefore(dragEl, nextSibling);\n } else {\n this.sortable.el.appendChild(dragEl);\n }\n\n this.sortable.animateAll();\n\n if (putSortable) {\n putSortable.animateAll();\n }\n },\n drop: drop\n};\n\n_extends(Revert, {\n pluginName: 'revertOnSpill'\n});\n\nfunction Remove() {}\n\nRemove.prototype = {\n onSpill: function onSpill(_ref4) {\n var dragEl = _ref4.dragEl,\n putSortable = _ref4.putSortable;\n var parentSortable = putSortable || this.sortable;\n parentSortable.captureAnimationState();\n dragEl.parentNode && dragEl.parentNode.removeChild(dragEl);\n parentSortable.animateAll();\n },\n drop: drop\n};\n\n_extends(Remove, {\n pluginName: 'removeOnSpill'\n});\n\nvar lastSwapEl;\n\nfunction SwapPlugin() {\n function Swap() {\n this.defaults = {\n swapClass: 'sortable-swap-highlight'\n };\n }\n\n Swap.prototype = {\n dragStart: function dragStart(_ref) {\n var dragEl = _ref.dragEl;\n lastSwapEl = dragEl;\n },\n dragOverValid: function dragOverValid(_ref2) {\n var completed = _ref2.completed,\n target = _ref2.target,\n onMove = _ref2.onMove,\n activeSortable = _ref2.activeSortable,\n changed = _ref2.changed,\n cancel = _ref2.cancel;\n if (!activeSortable.options.swap) return;\n var el = this.sortable.el,\n options = this.options;\n\n if (target && target !== el) {\n var prevSwapEl = lastSwapEl;\n\n if (onMove(target) !== false) {\n toggleClass(target, options.swapClass, true);\n lastSwapEl = target;\n } else {\n lastSwapEl = null;\n }\n\n if (prevSwapEl && prevSwapEl !== lastSwapEl) {\n toggleClass(prevSwapEl, options.swapClass, false);\n }\n }\n\n changed();\n completed(true);\n cancel();\n },\n drop: function drop(_ref3) {\n var activeSortable = _ref3.activeSortable,\n putSortable = _ref3.putSortable,\n dragEl = _ref3.dragEl;\n var toSortable = putSortable || this.sortable;\n var options = this.options;\n lastSwapEl && toggleClass(lastSwapEl, options.swapClass, false);\n\n if (lastSwapEl && (options.swap || putSortable && putSortable.options.swap)) {\n if (dragEl !== lastSwapEl) {\n toSortable.captureAnimationState();\n if (toSortable !== activeSortable) activeSortable.captureAnimationState();\n swapNodes(dragEl, lastSwapEl);\n toSortable.animateAll();\n if (toSortable !== activeSortable) activeSortable.animateAll();\n }\n }\n },\n nulling: function nulling() {\n lastSwapEl = null;\n }\n };\n return _extends(Swap, {\n pluginName: 'swap',\n eventProperties: function eventProperties() {\n return {\n swapItem: lastSwapEl\n };\n }\n });\n}\n\nfunction swapNodes(n1, n2) {\n var p1 = n1.parentNode,\n p2 = n2.parentNode,\n i1,\n i2;\n if (!p1 || !p2 || p1.isEqualNode(n2) || p2.isEqualNode(n1)) return;\n i1 = index(n1);\n i2 = index(n2);\n\n if (p1.isEqualNode(p2) && i1 < i2) {\n i2++;\n }\n\n p1.insertBefore(n2, p1.children[i1]);\n p2.insertBefore(n1, p2.children[i2]);\n}\n\nvar multiDragElements = [],\n multiDragClones = [],\n lastMultiDragSelect,\n // for selection with modifier key down (SHIFT)\nmultiDragSortable,\n initialFolding = false,\n // Initial multi-drag fold when drag started\nfolding = false,\n // Folding any other time\ndragStarted = false,\n dragEl$1,\n clonesFromRect,\n clonesHidden;\n\nfunction MultiDragPlugin() {\n function MultiDrag(sortable) {\n // Bind all private methods\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n\n if (sortable.options.supportPointer) {\n on(document, 'pointerup', this._deselectMultiDrag);\n } else {\n on(document, 'mouseup', this._deselectMultiDrag);\n on(document, 'touchend', this._deselectMultiDrag);\n }\n\n on(document, 'keydown', this._checkKeyDown);\n on(document, 'keyup', this._checkKeyUp);\n this.defaults = {\n selectedClass: 'sortable-selected',\n multiDragKey: null,\n setData: function setData(dataTransfer, dragEl) {\n var data = '';\n\n if (multiDragElements.length && multiDragSortable === sortable) {\n multiDragElements.forEach(function (multiDragElement, i) {\n data += (!i ? '' : ', ') + multiDragElement.textContent;\n });\n } else {\n data = dragEl.textContent;\n }\n\n dataTransfer.setData('Text', data);\n }\n };\n }\n\n MultiDrag.prototype = {\n multiDragKeyDown: false,\n isMultiDrag: false,\n delayStartGlobal: function delayStartGlobal(_ref) {\n var dragged = _ref.dragEl;\n dragEl$1 = dragged;\n },\n delayEnded: function delayEnded() {\n this.isMultiDrag = ~multiDragElements.indexOf(dragEl$1);\n },\n setupClone: function setupClone(_ref2) {\n var sortable = _ref2.sortable,\n cancel = _ref2.cancel;\n if (!this.isMultiDrag) return;\n\n for (var i = 0; i < multiDragElements.length; i++) {\n multiDragClones.push(clone(multiDragElements[i]));\n multiDragClones[i].sortableIndex = multiDragElements[i].sortableIndex;\n multiDragClones[i].draggable = false;\n multiDragClones[i].style['will-change'] = '';\n toggleClass(multiDragClones[i], this.options.selectedClass, false);\n multiDragElements[i] === dragEl$1 && toggleClass(multiDragClones[i], this.options.chosenClass, false);\n }\n\n sortable._hideClone();\n\n cancel();\n },\n clone: function clone(_ref3) {\n var sortable = _ref3.sortable,\n rootEl = _ref3.rootEl,\n dispatchSortableEvent = _ref3.dispatchSortableEvent,\n cancel = _ref3.cancel;\n if (!this.isMultiDrag) return;\n\n if (!this.options.removeCloneOnHide) {\n if (multiDragElements.length && multiDragSortable === sortable) {\n insertMultiDragClones(true, rootEl);\n dispatchSortableEvent('clone');\n cancel();\n }\n }\n },\n showClone: function showClone(_ref4) {\n var cloneNowShown = _ref4.cloneNowShown,\n rootEl = _ref4.rootEl,\n cancel = _ref4.cancel;\n if (!this.isMultiDrag) return;\n insertMultiDragClones(false, rootEl);\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', '');\n });\n cloneNowShown();\n clonesHidden = false;\n cancel();\n },\n hideClone: function hideClone(_ref5) {\n var _this = this;\n\n var sortable = _ref5.sortable,\n cloneNowHidden = _ref5.cloneNowHidden,\n cancel = _ref5.cancel;\n if (!this.isMultiDrag) return;\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', 'none');\n\n if (_this.options.removeCloneOnHide && clone.parentNode) {\n clone.parentNode.removeChild(clone);\n }\n });\n cloneNowHidden();\n clonesHidden = true;\n cancel();\n },\n dragStartGlobal: function dragStartGlobal(_ref6) {\n var sortable = _ref6.sortable;\n\n if (!this.isMultiDrag && multiDragSortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n }\n\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.sortableIndex = index(multiDragElement);\n }); // Sort multi-drag elements\n\n multiDragElements = multiDragElements.sort(function (a, b) {\n return a.sortableIndex - b.sortableIndex;\n });\n dragStarted = true;\n },\n dragStarted: function dragStarted(_ref7) {\n var _this2 = this;\n\n var sortable = _ref7.sortable;\n if (!this.isMultiDrag) return;\n\n if (this.options.sort) {\n // Capture rects,\n // hide multi drag elements (by positioning them absolute),\n // set multi drag elements rects to dragRect,\n // show multi drag elements,\n // animate to rects,\n // unset rects & remove from DOM\n sortable.captureAnimationState();\n\n if (this.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n css(multiDragElement, 'position', 'absolute');\n });\n var dragRect = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRect);\n });\n folding = true;\n initialFolding = true;\n }\n }\n\n sortable.animateAll(function () {\n folding = false;\n initialFolding = false;\n\n if (_this2.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n } // Remove all auxiliary multidrag items from el, if sorting enabled\n\n\n if (_this2.options.sort) {\n removeMultiDragElements();\n }\n });\n },\n dragOver: function dragOver(_ref8) {\n var target = _ref8.target,\n completed = _ref8.completed,\n cancel = _ref8.cancel;\n\n if (folding && ~multiDragElements.indexOf(target)) {\n completed(false);\n cancel();\n }\n },\n revert: function revert(_ref9) {\n var fromSortable = _ref9.fromSortable,\n rootEl = _ref9.rootEl,\n sortable = _ref9.sortable,\n dragRect = _ref9.dragRect;\n\n if (multiDragElements.length > 1) {\n // Setup unfold animation\n multiDragElements.forEach(function (multiDragElement) {\n sortable.addAnimationState({\n target: multiDragElement,\n rect: folding ? getRect(multiDragElement) : dragRect\n });\n unsetRect(multiDragElement);\n multiDragElement.fromRect = dragRect;\n fromSortable.removeAnimationState(multiDragElement);\n });\n folding = false;\n insertMultiDragElements(!this.options.removeCloneOnHide, rootEl);\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref10) {\n var sortable = _ref10.sortable,\n isOwner = _ref10.isOwner,\n insertion = _ref10.insertion,\n activeSortable = _ref10.activeSortable,\n parentEl = _ref10.parentEl,\n putSortable = _ref10.putSortable;\n var options = this.options;\n\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n }\n\n initialFolding = false; // If leaving sort:false root, or already folding - Fold to new location\n\n if (options.animation && multiDragElements.length > 1 && (folding || !isOwner && !activeSortable.options.sort && !putSortable)) {\n // Fold: Set all multi drag elements's rects to dragEl's rect when multi-drag elements are invisible\n var dragRectAbsolute = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRectAbsolute); // Move element(s) to end of parentEl so that it does not interfere with multi-drag clones insertion if they are inserted\n // while folding, and so that we can capture them again because old sortable will no longer be fromSortable\n\n parentEl.appendChild(multiDragElement);\n });\n folding = true;\n } // Clones must be shown (and check to remove multi drags) after folding when interfering multiDragElements are moved out\n\n\n if (!isOwner) {\n // Only remove if not folding (folding will remove them anyways)\n if (!folding) {\n removeMultiDragElements();\n }\n\n if (multiDragElements.length > 1) {\n var clonesHiddenBefore = clonesHidden;\n\n activeSortable._showClone(sortable); // Unfold animation for clones if showing from hidden\n\n\n if (activeSortable.options.animation && !clonesHidden && clonesHiddenBefore) {\n multiDragClones.forEach(function (clone) {\n activeSortable.addAnimationState({\n target: clone,\n rect: clonesFromRect\n });\n clone.fromRect = clonesFromRect;\n clone.thisAnimationDuration = null;\n });\n }\n } else {\n activeSortable._showClone(sortable);\n }\n }\n }\n },\n dragOverAnimationCapture: function dragOverAnimationCapture(_ref11) {\n var dragRect = _ref11.dragRect,\n isOwner = _ref11.isOwner,\n activeSortable = _ref11.activeSortable;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n });\n\n if (activeSortable.options.animation && !isOwner && activeSortable.multiDrag.isMultiDrag) {\n clonesFromRect = _extends({}, dragRect);\n var dragMatrix = matrix(dragEl$1, true);\n clonesFromRect.top -= dragMatrix.f;\n clonesFromRect.left -= dragMatrix.e;\n }\n },\n dragOverAnimationComplete: function dragOverAnimationComplete() {\n if (folding) {\n folding = false;\n removeMultiDragElements();\n }\n },\n drop: function drop(_ref12) {\n var evt = _ref12.originalEvent,\n rootEl = _ref12.rootEl,\n parentEl = _ref12.parentEl,\n sortable = _ref12.sortable,\n dispatchSortableEvent = _ref12.dispatchSortableEvent,\n oldIndex = _ref12.oldIndex,\n putSortable = _ref12.putSortable;\n var toSortable = putSortable || this.sortable;\n if (!evt) return;\n var options = this.options,\n children = parentEl.children; // Multi-drag selection\n\n if (!dragStarted) {\n if (options.multiDragKey && !this.multiDragKeyDown) {\n this._deselectMultiDrag();\n }\n\n toggleClass(dragEl$1, options.selectedClass, !~multiDragElements.indexOf(dragEl$1));\n\n if (!~multiDragElements.indexOf(dragEl$1)) {\n multiDragElements.push(dragEl$1);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: dragEl$1,\n originalEvt: evt\n }); // Modifier activated, select from last to dragEl\n\n if (evt.shiftKey && lastMultiDragSelect && sortable.el.contains(lastMultiDragSelect)) {\n var lastIndex = index(lastMultiDragSelect),\n currentIndex = index(dragEl$1);\n\n if (~lastIndex && ~currentIndex && lastIndex !== currentIndex) {\n // Must include lastMultiDragSelect (select it), in case modified selection from no selection\n // (but previous selection existed)\n var n, i;\n\n if (currentIndex > lastIndex) {\n i = lastIndex;\n n = currentIndex;\n } else {\n i = currentIndex;\n n = lastIndex + 1;\n }\n\n for (; i < n; i++) {\n if (~multiDragElements.indexOf(children[i])) continue;\n toggleClass(children[i], options.selectedClass, true);\n multiDragElements.push(children[i]);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: children[i],\n originalEvt: evt\n });\n }\n }\n } else {\n lastMultiDragSelect = dragEl$1;\n }\n\n multiDragSortable = toSortable;\n } else {\n multiDragElements.splice(multiDragElements.indexOf(dragEl$1), 1);\n lastMultiDragSelect = null;\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'deselect',\n targetEl: dragEl$1,\n originalEvt: evt\n });\n }\n } // Multi-drag drop\n\n\n if (dragStarted && this.isMultiDrag) {\n // Do not \"unfold\" after around dragEl if reverted\n if ((parentEl[expando].options.sort || parentEl !== rootEl) && multiDragElements.length > 1) {\n var dragRect = getRect(dragEl$1),\n multiDragIndex = index(dragEl$1, ':not(.' + this.options.selectedClass + ')');\n if (!initialFolding && options.animation) dragEl$1.thisAnimationDuration = null;\n toSortable.captureAnimationState();\n\n if (!initialFolding) {\n if (options.animation) {\n dragEl$1.fromRect = dragRect;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n\n if (multiDragElement !== dragEl$1) {\n var rect = folding ? getRect(multiDragElement) : dragRect;\n multiDragElement.fromRect = rect; // Prepare unfold animation\n\n toSortable.addAnimationState({\n target: multiDragElement,\n rect: rect\n });\n }\n });\n } // Multi drag elements are not necessarily removed from the DOM on drop, so to reinsert\n // properly they must all be removed\n\n\n removeMultiDragElements();\n multiDragElements.forEach(function (multiDragElement) {\n if (children[multiDragIndex]) {\n parentEl.insertBefore(multiDragElement, children[multiDragIndex]);\n } else {\n parentEl.appendChild(multiDragElement);\n }\n\n multiDragIndex++;\n }); // If initial folding is done, the elements may have changed position because they are now\n // unfolding around dragEl, even though dragEl may not have his index changed, so update event\n // must be fired here as Sortable will not.\n\n if (oldIndex === index(dragEl$1)) {\n var update = false;\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement.sortableIndex !== index(multiDragElement)) {\n update = true;\n return;\n }\n });\n\n if (update) {\n dispatchSortableEvent('update');\n }\n }\n } // Must be done after capturing individual rects (scroll bar)\n\n\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n toSortable.animateAll();\n }\n\n multiDragSortable = toSortable;\n } // Remove clones if necessary\n\n\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n multiDragClones.forEach(function (clone) {\n clone.parentNode && clone.parentNode.removeChild(clone);\n });\n }\n },\n nullingGlobal: function nullingGlobal() {\n this.isMultiDrag = dragStarted = false;\n multiDragClones.length = 0;\n },\n destroyGlobal: function destroyGlobal() {\n this._deselectMultiDrag();\n\n off(document, 'pointerup', this._deselectMultiDrag);\n off(document, 'mouseup', this._deselectMultiDrag);\n off(document, 'touchend', this._deselectMultiDrag);\n off(document, 'keydown', this._checkKeyDown);\n off(document, 'keyup', this._checkKeyUp);\n },\n _deselectMultiDrag: function _deselectMultiDrag(evt) {\n if (typeof dragStarted !== \"undefined\" && dragStarted) return; // Only deselect if selection is in this sortable\n\n if (multiDragSortable !== this.sortable) return; // Only deselect if target is not item in this sortable\n\n if (evt && closest(evt.target, this.options.draggable, this.sortable.el, false)) return; // Only deselect if left click\n\n if (evt && evt.button !== 0) return;\n\n while (multiDragElements.length) {\n var el = multiDragElements[0];\n toggleClass(el, this.options.selectedClass, false);\n multiDragElements.shift();\n dispatchEvent({\n sortable: this.sortable,\n rootEl: this.sortable.el,\n name: 'deselect',\n targetEl: el,\n originalEvt: evt\n });\n }\n },\n _checkKeyDown: function _checkKeyDown(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = true;\n }\n },\n _checkKeyUp: function _checkKeyUp(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = false;\n }\n }\n };\n return _extends(MultiDrag, {\n // Static methods & properties\n pluginName: 'multiDrag',\n utils: {\n /**\r\n * Selects the provided multi-drag item\r\n * @param {HTMLElement} el The element to be selected\r\n */\n select: function select(el) {\n var sortable = el.parentNode[expando];\n if (!sortable || !sortable.options.multiDrag || ~multiDragElements.indexOf(el)) return;\n\n if (multiDragSortable && multiDragSortable !== sortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n\n multiDragSortable = sortable;\n }\n\n toggleClass(el, sortable.options.selectedClass, true);\n multiDragElements.push(el);\n },\n\n /**\r\n * Deselects the provided multi-drag item\r\n * @param {HTMLElement} el The element to be deselected\r\n */\n deselect: function deselect(el) {\n var sortable = el.parentNode[expando],\n index = multiDragElements.indexOf(el);\n if (!sortable || !sortable.options.multiDrag || !~index) return;\n toggleClass(el, sortable.options.selectedClass, false);\n multiDragElements.splice(index, 1);\n }\n },\n eventProperties: function eventProperties() {\n var _this3 = this;\n\n var oldIndicies = [],\n newIndicies = [];\n multiDragElements.forEach(function (multiDragElement) {\n oldIndicies.push({\n multiDragElement: multiDragElement,\n index: multiDragElement.sortableIndex\n }); // multiDragElements will already be sorted if folding\n\n var newIndex;\n\n if (folding && multiDragElement !== dragEl$1) {\n newIndex = -1;\n } else if (folding) {\n newIndex = index(multiDragElement, ':not(.' + _this3.options.selectedClass + ')');\n } else {\n newIndex = index(multiDragElement);\n }\n\n newIndicies.push({\n multiDragElement: multiDragElement,\n index: newIndex\n });\n });\n return {\n items: _toConsumableArray(multiDragElements),\n clones: [].concat(multiDragClones),\n oldIndicies: oldIndicies,\n newIndicies: newIndicies\n };\n },\n optionListeners: {\n multiDragKey: function multiDragKey(key) {\n key = key.toLowerCase();\n\n if (key === 'ctrl') {\n key = 'Control';\n } else if (key.length > 1) {\n key = key.charAt(0).toUpperCase() + key.substr(1);\n }\n\n return key;\n }\n }\n });\n}\n\nfunction insertMultiDragElements(clonesInserted, rootEl) {\n multiDragElements.forEach(function (multiDragElement, i) {\n var target = rootEl.children[multiDragElement.sortableIndex + (clonesInserted ? Number(i) : 0)];\n\n if (target) {\n rootEl.insertBefore(multiDragElement, target);\n } else {\n rootEl.appendChild(multiDragElement);\n }\n });\n}\n/**\r\n * Insert multi-drag clones\r\n * @param {[Boolean]} elementsInserted Whether the multi-drag elements are inserted\r\n * @param {HTMLElement} rootEl\r\n */\n\n\nfunction insertMultiDragClones(elementsInserted, rootEl) {\n multiDragClones.forEach(function (clone, i) {\n var target = rootEl.children[clone.sortableIndex + (elementsInserted ? Number(i) : 0)];\n\n if (target) {\n rootEl.insertBefore(clone, target);\n } else {\n rootEl.appendChild(clone);\n }\n });\n}\n\nfunction removeMultiDragElements() {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n multiDragElement.parentNode && multiDragElement.parentNode.removeChild(multiDragElement);\n });\n}\n\nSortable.mount(new AutoScrollPlugin());\nSortable.mount(Remove, Revert);\n\nexport default Sortable;\nexport { MultiDragPlugin as MultiDrag, Sortable, SwapPlugin as Swap };\n","var Path = require(\"../Path\");\n\nvar vec2 = require(\"../../core/vector\");\n\nvar _curve = require(\"../../core/curve\");\n\nvar quadraticSubdivide = _curve.quadraticSubdivide;\nvar cubicSubdivide = _curve.cubicSubdivide;\nvar quadraticAt = _curve.quadraticAt;\nvar cubicAt = _curve.cubicAt;\nvar quadraticDerivativeAt = _curve.quadraticDerivativeAt;\nvar cubicDerivativeAt = _curve.cubicDerivativeAt;\n\n/**\n * 贝塞尔曲线\n * @module zrender/shape/BezierCurve\n */\nvar out = [];\n\nfunction someVectorAt(shape, t, isTangent) {\n var cpx2 = shape.cpx2;\n var cpy2 = shape.cpy2;\n\n if (cpx2 === null || cpy2 === null) {\n return [(isTangent ? cubicDerivativeAt : cubicAt)(shape.x1, shape.cpx1, shape.cpx2, shape.x2, t), (isTangent ? cubicDerivativeAt : cubicAt)(shape.y1, shape.cpy1, shape.cpy2, shape.y2, t)];\n } else {\n return [(isTangent ? quadraticDerivativeAt : quadraticAt)(shape.x1, shape.cpx1, shape.x2, t), (isTangent ? quadraticDerivativeAt : quadraticAt)(shape.y1, shape.cpy1, shape.y2, t)];\n }\n}\n\nvar _default = Path.extend({\n type: 'bezier-curve',\n shape: {\n x1: 0,\n y1: 0,\n x2: 0,\n y2: 0,\n cpx1: 0,\n cpy1: 0,\n // cpx2: 0,\n // cpy2: 0\n // Curve show percent, for animating\n percent: 1\n },\n style: {\n stroke: '#000',\n fill: null\n },\n buildPath: function (ctx, shape) {\n var x1 = shape.x1;\n var y1 = shape.y1;\n var x2 = shape.x2;\n var y2 = shape.y2;\n var cpx1 = shape.cpx1;\n var cpy1 = shape.cpy1;\n var cpx2 = shape.cpx2;\n var cpy2 = shape.cpy2;\n var percent = shape.percent;\n\n if (percent === 0) {\n return;\n }\n\n ctx.moveTo(x1, y1);\n\n if (cpx2 == null || cpy2 == null) {\n if (percent < 1) {\n quadraticSubdivide(x1, cpx1, x2, percent, out);\n cpx1 = out[1];\n x2 = out[2];\n quadraticSubdivide(y1, cpy1, y2, percent, out);\n cpy1 = out[1];\n y2 = out[2];\n }\n\n ctx.quadraticCurveTo(cpx1, cpy1, x2, y2);\n } else {\n if (percent < 1) {\n cubicSubdivide(x1, cpx1, cpx2, x2, percent, out);\n cpx1 = out[1];\n cpx2 = out[2];\n x2 = out[3];\n cubicSubdivide(y1, cpy1, cpy2, y2, percent, out);\n cpy1 = out[1];\n cpy2 = out[2];\n y2 = out[3];\n }\n\n ctx.bezierCurveTo(cpx1, cpy1, cpx2, cpy2, x2, y2);\n }\n },\n\n /**\n * Get point at percent\n * @param {number} t\n * @return {Array.}\n */\n pointAt: function (t) {\n return someVectorAt(this.shape, t, false);\n },\n\n /**\n * Get tangent at percent\n * @param {number} t\n * @return {Array.}\n */\n tangentAt: function (t) {\n var p = someVectorAt(this.shape, t, true);\n return vec2.normalize(p, p);\n }\n});\n\nmodule.exports = _default;","var Path = require(\"../Path\");\n\n/**\n * 椭圆形状\n * @module zrender/graphic/shape/Ellipse\n */\nvar _default = Path.extend({\n type: 'ellipse',\n shape: {\n cx: 0,\n cy: 0,\n rx: 0,\n ry: 0\n },\n buildPath: function (ctx, shape) {\n var k = 0.5522848;\n var x = shape.cx;\n var y = shape.cy;\n var a = shape.rx;\n var b = shape.ry;\n var ox = a * k; // 水平控制点偏移量\n\n var oy = b * k; // 垂直控制点偏移量\n // 从椭圆的左端点开始顺时针绘制四条三次贝塞尔曲线\n\n ctx.moveTo(x - a, y);\n ctx.bezierCurveTo(x - a, y - oy, x - ox, y - b, x, y - b);\n ctx.bezierCurveTo(x + ox, y - b, x + a, y - oy, x + a, y);\n ctx.bezierCurveTo(x + a, y + oy, x + ox, y + b, x, y + b);\n ctx.bezierCurveTo(x - ox, y + b, x - a, y + oy, x - a, y);\n ctx.closePath();\n }\n});\n\nmodule.exports = _default;","module.exports = __webpack_public_path__ + \"img/7-small.c4993d9a.png\";","var util = require(\"./core/util\");\n\nvar env = require(\"./core/env\");\n\nvar Group = require(\"./container/Group\");\n\nvar timsort = require(\"./core/timsort\");\n\n// Use timsort because in most case elements are partially sorted\n// https://jsfiddle.net/pissang/jr4x7mdm/8/\nfunction shapeCompareFunc(a, b) {\n if (a.zlevel === b.zlevel) {\n if (a.z === b.z) {\n // if (a.z2 === b.z2) {\n // // FIXME Slow has renderidx compare\n // // http://stackoverflow.com/questions/20883421/sorting-in-javascript-should-every-compare-function-have-a-return-0-statement\n // // https://github.com/v8/v8/blob/47cce544a31ed5577ffe2963f67acb4144ee0232/src/js/array.js#L1012\n // return a.__renderidx - b.__renderidx;\n // }\n return a.z2 - b.z2;\n }\n\n return a.z - b.z;\n }\n\n return a.zlevel - b.zlevel;\n}\n/**\n * 内容仓库 (M)\n * @alias module:zrender/Storage\n * @constructor\n */\n\n\nvar Storage = function () {\n // jshint ignore:line\n this._roots = [];\n this._displayList = [];\n this._displayListLen = 0;\n};\n\nStorage.prototype = {\n constructor: Storage,\n\n /**\n * @param {Function} cb\n *\n */\n traverse: function (cb, context) {\n for (var i = 0; i < this._roots.length; i++) {\n this._roots[i].traverse(cb, context);\n }\n },\n\n /**\n * 返回所有图形的绘制队列\n * @param {boolean} [update=false] 是否在返回前更新该数组\n * @param {boolean} [includeIgnore=false] 是否包含 ignore 的数组, 在 update 为 true 的时候有效\n *\n * 详见{@link module:zrender/graphic/Displayable.prototype.updateDisplayList}\n * @return {Array.}\n */\n getDisplayList: function (update, includeIgnore) {\n includeIgnore = includeIgnore || false;\n\n if (update) {\n this.updateDisplayList(includeIgnore);\n }\n\n return this._displayList;\n },\n\n /**\n * 更新图形的绘制队列。\n * 每次绘制前都会调用,该方法会先深度优先遍历整个树,更新所有Group和Shape的变换并且把所有可见的Shape保存到数组中,\n * 最后根据绘制的优先级(zlevel > z > 插入顺序)排序得到绘制队列\n * @param {boolean} [includeIgnore=false] 是否包含 ignore 的数组\n */\n updateDisplayList: function (includeIgnore) {\n this._displayListLen = 0;\n var roots = this._roots;\n var displayList = this._displayList;\n\n for (var i = 0, len = roots.length; i < len; i++) {\n this._updateAndAddDisplayable(roots[i], null, includeIgnore);\n }\n\n displayList.length = this._displayListLen;\n env.canvasSupported && timsort(displayList, shapeCompareFunc);\n },\n _updateAndAddDisplayable: function (el, clipPaths, includeIgnore) {\n if (el.ignore && !includeIgnore) {\n return;\n }\n\n el.beforeUpdate();\n\n if (el.__dirty) {\n el.update();\n }\n\n el.afterUpdate();\n var userSetClipPath = el.clipPath;\n\n if (userSetClipPath) {\n // FIXME 效率影响\n if (clipPaths) {\n clipPaths = clipPaths.slice();\n } else {\n clipPaths = [];\n }\n\n var currentClipPath = userSetClipPath;\n var parentClipPath = el; // Recursively add clip path\n\n while (currentClipPath) {\n // clipPath 的变换是基于使用这个 clipPath 的元素\n currentClipPath.parent = parentClipPath;\n currentClipPath.updateTransform();\n clipPaths.push(currentClipPath);\n parentClipPath = currentClipPath;\n currentClipPath = currentClipPath.clipPath;\n }\n }\n\n if (el.isGroup) {\n var children = el._children;\n\n for (var i = 0; i < children.length; i++) {\n var child = children[i]; // Force to mark as dirty if group is dirty\n // FIXME __dirtyPath ?\n\n if (el.__dirty) {\n child.__dirty = true;\n }\n\n this._updateAndAddDisplayable(child, clipPaths, includeIgnore);\n } // Mark group clean here\n\n\n el.__dirty = false;\n } else {\n el.__clipPaths = clipPaths;\n this._displayList[this._displayListLen++] = el;\n }\n },\n\n /**\n * 添加图形(Shape)或者组(Group)到根节点\n * @param {module:zrender/Element} el\n */\n addRoot: function (el) {\n if (el.__storage === this) {\n return;\n }\n\n if (el instanceof Group) {\n el.addChildrenToStorage(this);\n }\n\n this.addToStorage(el);\n\n this._roots.push(el);\n },\n\n /**\n * 删除指定的图形(Shape)或者组(Group)\n * @param {string|Array.} [el] 如果为空清空整个Storage\n */\n delRoot: function (el) {\n if (el == null) {\n // 不指定el清空\n for (var i = 0; i < this._roots.length; i++) {\n var root = this._roots[i];\n\n if (root instanceof Group) {\n root.delChildrenFromStorage(this);\n }\n }\n\n this._roots = [];\n this._displayList = [];\n this._displayListLen = 0;\n return;\n }\n\n if (el instanceof Array) {\n for (var i = 0, l = el.length; i < l; i++) {\n this.delRoot(el[i]);\n }\n\n return;\n }\n\n var idx = util.indexOf(this._roots, el);\n\n if (idx >= 0) {\n this.delFromStorage(el);\n\n this._roots.splice(idx, 1);\n\n if (el instanceof Group) {\n el.delChildrenFromStorage(this);\n }\n }\n },\n addToStorage: function (el) {\n if (el) {\n el.__storage = this;\n el.dirty(false);\n }\n\n return this;\n },\n delFromStorage: function (el) {\n if (el) {\n el.__storage = null;\n }\n\n return this;\n },\n\n /**\n * 清空并且释放Storage\n */\n dispose: function () {\n this._renderList = this._roots = null;\n },\n displayableSortFunc: shapeCompareFunc\n};\nvar _default = Storage;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar Group = require(\"zrender/lib/container/Group\");\n\nvar componentUtil = require(\"../util/component\");\n\nvar clazzUtil = require(\"../util/clazz\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar Component = function () {\n /**\n * @type {module:zrender/container/Group}\n * @readOnly\n */\n this.group = new Group();\n /**\n * @type {string}\n * @readOnly\n */\n\n this.uid = componentUtil.getUID('viewComponent');\n};\n\nComponent.prototype = {\n constructor: Component,\n init: function (ecModel, api) {},\n render: function (componentModel, ecModel, api, payload) {},\n dispose: function () {},\n\n /**\n * @param {string} eventType\n * @param {Object} query\n * @param {module:zrender/Element} targetEl\n * @param {Object} packedEvent\n * @return {boolen} Pass only when return `true`.\n */\n filterForExposedEvent: null\n};\nvar componentProto = Component.prototype;\n\ncomponentProto.updateView = componentProto.updateLayout = componentProto.updateVisual = function (seriesModel, ecModel, api, payload) {// Do nothing;\n}; // Enable Component.extend.\n\n\nclazzUtil.enableClassExtend(Component); // Enable capability of registerClass, getClass, hasClass, registerSubTypeDefaulter and so on.\n\nclazzUtil.enableClassManagement(Component, {\n registerWhenExtend: true\n});\nvar _default = Component;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar completeDimensions = require(\"./completeDimensions\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Substitute `completeDimensions`.\n * `completeDimensions` is to be deprecated.\n */\n\n/**\n * @param {module:echarts/data/Source|module:echarts/data/List} source or data.\n * @param {Object|Array} [opt]\n * @param {Array.} [opt.coordDimensions=[]]\n * @param {number} [opt.dimensionsCount]\n * @param {string} [opt.generateCoord]\n * @param {string} [opt.generateCoordCount]\n * @param {Array.} [opt.dimensionsDefine=source.dimensionsDefine] Overwrite source define.\n * @param {Object|HashMap} [opt.encodeDefine=source.encodeDefine] Overwrite source define.\n * @param {Function} [opt.encodeDefaulter] Make default encode if user not specified.\n * @return {Array.} dimensionsInfo\n */\nfunction _default(source, opt) {\n opt = opt || {};\n return completeDimensions(opt.coordDimensions || [], source, {\n dimsDef: opt.dimensionsDefine || source.dimensionsDefine,\n encodeDef: opt.encodeDefine || source.encodeDefine,\n dimCount: opt.dimensionsCount,\n encodeDefaulter: opt.encodeDefaulter,\n generateCoord: opt.generateCoord,\n generateCoordCount: opt.generateCoordCount\n });\n}\n\nmodule.exports = _default;","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar toInteger = require('../internals/to-integer');\nvar thisNumberValue = require('../internals/this-number-value');\nvar repeat = require('../internals/string-repeat');\nvar fails = require('../internals/fails');\n\nvar nativeToFixed = 1.0.toFixed;\nvar floor = Math.floor;\n\nvar pow = function (x, n, acc) {\n return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);\n};\n\nvar log = function (x) {\n var n = 0;\n var x2 = x;\n while (x2 >= 4096) {\n n += 12;\n x2 /= 4096;\n }\n while (x2 >= 2) {\n n += 1;\n x2 /= 2;\n } return n;\n};\n\nvar FORCED = nativeToFixed && (\n 0.00008.toFixed(3) !== '0.000' ||\n 0.9.toFixed(0) !== '1' ||\n 1.255.toFixed(2) !== '1.25' ||\n 1000000000000000128.0.toFixed(0) !== '1000000000000000128'\n) || !fails(function () {\n // V8 ~ Android 4.3-\n nativeToFixed.call({});\n});\n\n// `Number.prototype.toFixed` method\n// https://tc39.github.io/ecma262/#sec-number.prototype.tofixed\n$({ target: 'Number', proto: true, forced: FORCED }, {\n // eslint-disable-next-line max-statements\n toFixed: function toFixed(fractionDigits) {\n var number = thisNumberValue(this);\n var fractDigits = toInteger(fractionDigits);\n var data = [0, 0, 0, 0, 0, 0];\n var sign = '';\n var result = '0';\n var e, z, j, k;\n\n var multiply = function (n, c) {\n var index = -1;\n var c2 = c;\n while (++index < 6) {\n c2 += n * data[index];\n data[index] = c2 % 1e7;\n c2 = floor(c2 / 1e7);\n }\n };\n\n var divide = function (n) {\n var index = 6;\n var c = 0;\n while (--index >= 0) {\n c += data[index];\n data[index] = floor(c / n);\n c = (c % n) * 1e7;\n }\n };\n\n var dataToString = function () {\n var index = 6;\n var s = '';\n while (--index >= 0) {\n if (s !== '' || index === 0 || data[index] !== 0) {\n var t = String(data[index]);\n s = s === '' ? t : s + repeat.call('0', 7 - t.length) + t;\n }\n } return s;\n };\n\n if (fractDigits < 0 || fractDigits > 20) throw RangeError('Incorrect fraction digits');\n // eslint-disable-next-line no-self-compare\n if (number != number) return 'NaN';\n if (number <= -1e21 || number >= 1e21) return String(number);\n if (number < 0) {\n sign = '-';\n number = -number;\n }\n if (number > 1e-21) {\n e = log(number * pow(2, 69, 1)) - 69;\n z = e < 0 ? number * pow(2, -e, 1) : number / pow(2, e, 1);\n z *= 0x10000000000000;\n e = 52 - e;\n if (e > 0) {\n multiply(0, z);\n j = fractDigits;\n while (j >= 7) {\n multiply(1e7, 0);\n j -= 7;\n }\n multiply(pow(10, j, 1), 0);\n j = e - 1;\n while (j >= 23) {\n divide(1 << 23);\n j -= 23;\n }\n divide(1 << j);\n multiply(1, 1);\n divide(2);\n result = dataToString();\n } else {\n multiply(0, z);\n multiply(1 << -e, 0);\n result = dataToString() + repeat.call('0', fractDigits);\n }\n }\n if (fractDigits > 0) {\n k = result.length;\n result = sign + (k <= fractDigits\n ? '0.' + repeat.call('0', fractDigits - k) + result\n : result.slice(0, k - fractDigits) + '.' + result.slice(k - fractDigits));\n } else {\n result = sign + result;\n } return result;\n }\n});\n","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrender = require(\"zrender/lib/zrender\");\n\nexports.zrender = zrender;\n\nvar matrix = require(\"zrender/lib/core/matrix\");\n\nexports.matrix = matrix;\n\nvar vector = require(\"zrender/lib/core/vector\");\n\nexports.vector = vector;\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar colorTool = require(\"zrender/lib/tool/color\");\n\nexports.color = colorTool;\n\nvar graphicUtil = require(\"./util/graphic\");\n\nvar numberUtil = require(\"./util/number\");\n\nexports.number = numberUtil;\n\nvar formatUtil = require(\"./util/format\");\n\nexports.format = formatUtil;\n\nvar _throttle = require(\"./util/throttle\");\n\nvar throttle = _throttle.throttle;\nexports.throttle = _throttle.throttle;\n\nvar ecHelper = require(\"./helper\");\n\nexports.helper = ecHelper;\n\nvar parseGeoJSON = require(\"./coord/geo/parseGeoJson\");\n\nexports.parseGeoJSON = parseGeoJSON;\n\nvar _List = require(\"./data/List\");\n\nexports.List = _List;\n\nvar _Model = require(\"./model/Model\");\n\nexports.Model = _Model;\n\nvar _Axis = require(\"./coord/Axis\");\n\nexports.Axis = _Axis;\n\nvar _env = require(\"zrender/lib/core/env\");\n\nexports.env = _env;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Do not mount those modules on 'src/echarts' for better tree shaking.\n */\nvar parseGeoJson = parseGeoJSON;\nvar ecUtil = {};\nzrUtil.each(['map', 'each', 'filter', 'indexOf', 'inherits', 'reduce', 'filter', 'bind', 'curry', 'isArray', 'isString', 'isObject', 'isFunction', 'extend', 'defaults', 'clone', 'merge'], function (name) {\n ecUtil[name] = zrUtil[name];\n});\nvar graphic = {};\nzrUtil.each(['extendShape', 'extendPath', 'makePath', 'makeImage', 'mergePath', 'resizePath', 'createIcon', 'setHoverStyle', 'setLabelStyle', 'setTextStyle', 'setText', 'getFont', 'updateProps', 'initProps', 'getTransform', 'clipPointsByRect', 'clipRectByRect', 'registerShape', 'getShapeClass', 'Group', 'Image', 'Text', 'Circle', 'Sector', 'Ring', 'Polygon', 'Polyline', 'Rect', 'Line', 'BezierCurve', 'Arc', 'IncrementalDisplayable', 'CompoundPath', 'LinearGradient', 'RadialGradient', 'BoundingRect'], function (name) {\n graphic[name] = graphicUtil[name];\n});\nexports.parseGeoJson = parseGeoJson;\nexports.util = ecUtil;\nexports.graphic = graphic;","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"sortablejs\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"sortablejs\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"vuedraggable\"] = factory(require(\"sortablejs\"));\n\telse\n\t\troot[\"vuedraggable\"] = factory(root[\"Sortable\"]);\n})((typeof self !== 'undefined' ? self : this), function(__WEBPACK_EXTERNAL_MODULE_a352__) {\nreturn /******/ (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/***/ \"01f9\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar LIBRARY = __webpack_require__(\"2d00\");\nvar $export = __webpack_require__(\"5ca1\");\nvar redefine = __webpack_require__(\"2aba\");\nvar hide = __webpack_require__(\"32e9\");\nvar Iterators = __webpack_require__(\"84f2\");\nvar $iterCreate = __webpack_require__(\"41a0\");\nvar setToStringTag = __webpack_require__(\"7f20\");\nvar getPrototypeOf = __webpack_require__(\"38fd\");\nvar ITERATOR = __webpack_require__(\"2b4c\")('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n\n\n/***/ }),\n\n/***/ \"02f4\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(\"4588\");\nvar defined = __webpack_require__(\"be13\");\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n\n\n/***/ }),\n\n/***/ \"0390\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar at = __webpack_require__(\"02f4\")(true);\n\n // `AdvanceStringIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? at(S, index).length : 1);\n};\n\n\n/***/ }),\n\n/***/ \"0bfb\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// 21.2.5.3 get RegExp.prototype.flags\nvar anObject = __webpack_require__(\"cb7c\");\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n\n\n/***/ }),\n\n/***/ \"0d58\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = __webpack_require__(\"ce10\");\nvar enumBugKeys = __webpack_require__(\"e11e\");\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n\n\n/***/ }),\n\n/***/ \"1495\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar dP = __webpack_require__(\"86cc\");\nvar anObject = __webpack_require__(\"cb7c\");\nvar getKeys = __webpack_require__(\"0d58\");\n\nmodule.exports = __webpack_require__(\"9e1e\") ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n\n\n/***/ }),\n\n/***/ \"214f\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n__webpack_require__(\"b0c5\");\nvar redefine = __webpack_require__(\"2aba\");\nvar hide = __webpack_require__(\"32e9\");\nvar fails = __webpack_require__(\"79e5\");\nvar defined = __webpack_require__(\"be13\");\nvar wks = __webpack_require__(\"2b4c\");\nvar regexpExec = __webpack_require__(\"520a\");\n\nvar SPECIES = wks('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n // #replace needs built-in support for named groups.\n // #match works fine because it just return the exec results, even if it has\n // a \"grops\" property.\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n return ''.replace(re, '$') !== '7';\n});\n\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = (function () {\n // Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length === 2 && result[0] === 'a' && result[1] === 'b';\n})();\n\nmodule.exports = function (KEY, length, exec) {\n var SYMBOL = wks(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL ? !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n re.exec = function () { execCalled = true; return null; };\n if (KEY === 'split') {\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n }\n re[SYMBOL]('');\n return !execCalled;\n }) : undefined;\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) ||\n (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n ) {\n var nativeRegExpMethod = /./[SYMBOL];\n var fns = exec(\n defined,\n SYMBOL,\n ''[KEY],\n function maybeCallNative(nativeMethod, regexp, str, arg2, forceStringMethod) {\n if (regexp.exec === regexpExec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n }\n return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n }\n return { done: false };\n }\n );\n var strfn = fns[0];\n var rxfn = fns[1];\n\n redefine(String.prototype, KEY, strfn);\n hide(RegExp.prototype, SYMBOL, length == 2\n // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n ? function (string, arg) { return rxfn.call(string, this, arg); }\n // 21.2.5.6 RegExp.prototype[@@match](string)\n // 21.2.5.9 RegExp.prototype[@@search](string)\n : function (string) { return rxfn.call(string, this); }\n );\n }\n};\n\n\n/***/ }),\n\n/***/ \"230e\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(\"d3f4\");\nvar document = __webpack_require__(\"7726\").document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n\n\n/***/ }),\n\n/***/ \"23c6\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = __webpack_require__(\"2d95\");\nvar TAG = __webpack_require__(\"2b4c\")('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n\n\n/***/ }),\n\n/***/ \"2621\":\n/***/ (function(module, exports) {\n\nexports.f = Object.getOwnPropertySymbols;\n\n\n/***/ }),\n\n/***/ \"2aba\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(\"7726\");\nvar hide = __webpack_require__(\"32e9\");\nvar has = __webpack_require__(\"69a8\");\nvar SRC = __webpack_require__(\"ca5a\")('src');\nvar $toString = __webpack_require__(\"fa5b\");\nvar TO_STRING = 'toString';\nvar TPL = ('' + $toString).split(TO_STRING);\n\n__webpack_require__(\"8378\").inspectSource = function (it) {\n return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n var isFunction = typeof val == 'function';\n if (isFunction) has(val, 'name') || hide(val, 'name', key);\n if (O[key] === val) return;\n if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n if (O === global) {\n O[key] = val;\n } else if (!safe) {\n delete O[key];\n hide(O, key, val);\n } else if (O[key]) {\n O[key] = val;\n } else {\n hide(O, key, val);\n }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n\n\n/***/ }),\n\n/***/ \"2aeb\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = __webpack_require__(\"cb7c\");\nvar dPs = __webpack_require__(\"1495\");\nvar enumBugKeys = __webpack_require__(\"e11e\");\nvar IE_PROTO = __webpack_require__(\"613b\")('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = __webpack_require__(\"230e\")('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n __webpack_require__(\"fab2\").appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n\n\n/***/ }),\n\n/***/ \"2b4c\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar store = __webpack_require__(\"5537\")('wks');\nvar uid = __webpack_require__(\"ca5a\");\nvar Symbol = __webpack_require__(\"7726\").Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n\n\n/***/ }),\n\n/***/ \"2d00\":\n/***/ (function(module, exports) {\n\nmodule.exports = false;\n\n\n/***/ }),\n\n/***/ \"2d95\":\n/***/ (function(module, exports) {\n\nvar toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n\n\n/***/ }),\n\n/***/ \"2fdb\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n// 21.1.3.7 String.prototype.includes(searchString, position = 0)\n\nvar $export = __webpack_require__(\"5ca1\");\nvar context = __webpack_require__(\"d2c8\");\nvar INCLUDES = 'includes';\n\n$export($export.P + $export.F * __webpack_require__(\"5147\")(INCLUDES), 'String', {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~context(this, searchString, INCLUDES)\n .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n\n/***/ }),\n\n/***/ \"32e9\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar dP = __webpack_require__(\"86cc\");\nvar createDesc = __webpack_require__(\"4630\");\nmodule.exports = __webpack_require__(\"9e1e\") ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n\n\n/***/ }),\n\n/***/ \"38fd\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = __webpack_require__(\"69a8\");\nvar toObject = __webpack_require__(\"4bf8\");\nvar IE_PROTO = __webpack_require__(\"613b\")('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n\n\n/***/ }),\n\n/***/ \"41a0\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar create = __webpack_require__(\"2aeb\");\nvar descriptor = __webpack_require__(\"4630\");\nvar setToStringTag = __webpack_require__(\"7f20\");\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\n__webpack_require__(\"32e9\")(IteratorPrototype, __webpack_require__(\"2b4c\")('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n\n\n/***/ }),\n\n/***/ \"456d\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.14 Object.keys(O)\nvar toObject = __webpack_require__(\"4bf8\");\nvar $keys = __webpack_require__(\"0d58\");\n\n__webpack_require__(\"5eda\")('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n\n\n/***/ }),\n\n/***/ \"4588\":\n/***/ (function(module, exports) {\n\n// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n\n\n/***/ }),\n\n/***/ \"4630\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n\n\n/***/ }),\n\n/***/ \"4bf8\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.1.13 ToObject(argument)\nvar defined = __webpack_require__(\"be13\");\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n\n\n/***/ }),\n\n/***/ \"5147\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar MATCH = __webpack_require__(\"2b4c\")('match');\nmodule.exports = function (KEY) {\n var re = /./;\n try {\n '/./'[KEY](re);\n } catch (e) {\n try {\n re[MATCH] = false;\n return !'/./'[KEY](re);\n } catch (f) { /* empty */ }\n } return true;\n};\n\n\n/***/ }),\n\n/***/ \"520a\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar regexpFlags = __webpack_require__(\"0bfb\");\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar LAST_INDEX = 'lastIndex';\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/,\n re2 = /b*/g;\n nativeExec.call(re1, 'a');\n nativeExec.call(re2, 'a');\n return re1[LAST_INDEX] !== 0 || re2[LAST_INDEX] !== 0;\n})();\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED;\n\nif (PATCH) {\n patchedExec = function exec(str) {\n var re = this;\n var lastIndex, reCopy, match, i;\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + re.source + '$(?!\\\\s)', regexpFlags.call(re));\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re[LAST_INDEX];\n\n match = nativeExec.call(re, str);\n\n if (UPDATES_LAST_INDEX_WRONG && match) {\n re[LAST_INDEX] = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n // eslint-disable-next-line no-loop-func\n nativeReplace.call(match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n\n\n/***/ }),\n\n/***/ \"52a7\":\n/***/ (function(module, exports) {\n\nexports.f = {}.propertyIsEnumerable;\n\n\n/***/ }),\n\n/***/ \"5537\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar core = __webpack_require__(\"8378\");\nvar global = __webpack_require__(\"7726\");\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: __webpack_require__(\"2d00\") ? 'pure' : 'global',\n copyright: '© 2019 Denis Pushkarev (zloirock.ru)'\n});\n\n\n/***/ }),\n\n/***/ \"5ca1\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(\"7726\");\nvar core = __webpack_require__(\"8378\");\nvar hide = __webpack_require__(\"32e9\");\nvar redefine = __webpack_require__(\"2aba\");\nvar ctx = __webpack_require__(\"9b43\");\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n var key, own, out, exp;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n // export native or passed\n out = (own ? target : source)[key];\n // bind timers to global for call from export context\n exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // extend global\n if (target) redefine(target, key, out, type & $export.U);\n // export\n if (exports[key] != out) hide(exports, key, exp);\n if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n\n\n/***/ }),\n\n/***/ \"5eda\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// most Object methods by ES6 should accept primitives\nvar $export = __webpack_require__(\"5ca1\");\nvar core = __webpack_require__(\"8378\");\nvar fails = __webpack_require__(\"79e5\");\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n\n\n/***/ }),\n\n/***/ \"5f1b\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar classof = __webpack_require__(\"23c6\");\nvar builtinExec = RegExp.prototype.exec;\n\n // `RegExpExec` abstract operation\n// https://tc39.github.io/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (typeof exec === 'function') {\n var result = exec.call(R, S);\n if (typeof result !== 'object') {\n throw new TypeError('RegExp exec method returned something other than an Object or null');\n }\n return result;\n }\n if (classof(R) !== 'RegExp') {\n throw new TypeError('RegExp#exec called on incompatible receiver');\n }\n return builtinExec.call(R, S);\n};\n\n\n/***/ }),\n\n/***/ \"613b\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar shared = __webpack_require__(\"5537\")('keys');\nvar uid = __webpack_require__(\"ca5a\");\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n\n\n/***/ }),\n\n/***/ \"626a\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = __webpack_require__(\"2d95\");\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n\n\n/***/ }),\n\n/***/ \"6762\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// https://github.com/tc39/Array.prototype.includes\nvar $export = __webpack_require__(\"5ca1\");\nvar $includes = __webpack_require__(\"c366\")(true);\n\n$export($export.P, 'Array', {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n__webpack_require__(\"9c6c\")('includes');\n\n\n/***/ }),\n\n/***/ \"6821\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = __webpack_require__(\"626a\");\nvar defined = __webpack_require__(\"be13\");\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n\n\n/***/ }),\n\n/***/ \"69a8\":\n/***/ (function(module, exports) {\n\nvar hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n\n\n/***/ }),\n\n/***/ \"6a99\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = __webpack_require__(\"d3f4\");\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n\n\n/***/ }),\n\n/***/ \"7333\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// 19.1.2.1 Object.assign(target, source, ...)\nvar getKeys = __webpack_require__(\"0d58\");\nvar gOPS = __webpack_require__(\"2621\");\nvar pIE = __webpack_require__(\"52a7\");\nvar toObject = __webpack_require__(\"4bf8\");\nvar IObject = __webpack_require__(\"626a\");\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || __webpack_require__(\"79e5\")(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) if (isEnum.call(S, key = keys[j++])) T[key] = S[key];\n } return T;\n} : $assign;\n\n\n/***/ }),\n\n/***/ \"7726\":\n/***/ (function(module, exports) {\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n\n\n/***/ }),\n\n/***/ \"77f1\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(\"4588\");\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n\n\n/***/ }),\n\n/***/ \"79e5\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n\n\n/***/ }),\n\n/***/ \"7f20\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar def = __webpack_require__(\"86cc\").f;\nvar has = __webpack_require__(\"69a8\");\nvar TAG = __webpack_require__(\"2b4c\")('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n\n\n/***/ }),\n\n/***/ \"8378\":\n/***/ (function(module, exports) {\n\nvar core = module.exports = { version: '2.6.5' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n\n\n/***/ }),\n\n/***/ \"84f2\":\n/***/ (function(module, exports) {\n\nmodule.exports = {};\n\n\n/***/ }),\n\n/***/ \"86cc\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(\"cb7c\");\nvar IE8_DOM_DEFINE = __webpack_require__(\"c69a\");\nvar toPrimitive = __webpack_require__(\"6a99\");\nvar dP = Object.defineProperty;\n\nexports.f = __webpack_require__(\"9e1e\") ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n\n\n/***/ }),\n\n/***/ \"9b43\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// optional / simple context binding\nvar aFunction = __webpack_require__(\"d8e8\");\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n\n\n/***/ }),\n\n/***/ \"9c6c\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 22.1.3.31 Array.prototype[@@unscopables]\nvar UNSCOPABLES = __webpack_require__(\"2b4c\")('unscopables');\nvar ArrayProto = Array.prototype;\nif (ArrayProto[UNSCOPABLES] == undefined) __webpack_require__(\"32e9\")(ArrayProto, UNSCOPABLES, {});\nmodule.exports = function (key) {\n ArrayProto[UNSCOPABLES][key] = true;\n};\n\n\n/***/ }),\n\n/***/ \"9def\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.1.15 ToLength\nvar toInteger = __webpack_require__(\"4588\");\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n\n\n/***/ }),\n\n/***/ \"9e1e\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !__webpack_require__(\"79e5\")(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n\n\n/***/ }),\n\n/***/ \"a352\":\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_a352__;\n\n/***/ }),\n\n/***/ \"a481\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar anObject = __webpack_require__(\"cb7c\");\nvar toObject = __webpack_require__(\"4bf8\");\nvar toLength = __webpack_require__(\"9def\");\nvar toInteger = __webpack_require__(\"4588\");\nvar advanceStringIndex = __webpack_require__(\"0390\");\nvar regExpExec = __webpack_require__(\"5f1b\");\nvar max = Math.max;\nvar min = Math.min;\nvar floor = Math.floor;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&`']|\\d\\d?|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&`']|\\d\\d?)/g;\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\n};\n\n// @@replace logic\n__webpack_require__(\"214f\")('replace', 2, function (defined, REPLACE, $replace, maybeCallNative) {\n return [\n // `String.prototype.replace` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = defined(this);\n var fn = searchValue == undefined ? undefined : searchValue[REPLACE];\n return fn !== undefined\n ? fn.call(searchValue, O, replaceValue)\n : $replace.call(String(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace\n function (regexp, replaceValue) {\n var res = maybeCallNative($replace, regexp, this, replaceValue);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n var functionalReplace = typeof replaceValue === 'function';\n if (!functionalReplace) replaceValue = String(replaceValue);\n var global = rx.global;\n if (global) {\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n var results = [];\n while (true) {\n var result = regExpExec(rx, S);\n if (result === null) break;\n results.push(result);\n if (!global) break;\n var matchStr = String(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n var matched = String(result[0]);\n var position = max(min(toInteger(result.index), S.length), 0);\n var captures = [];\n // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = [matched].concat(captures, position, S);\n if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n var replacement = String(replaceValue.apply(undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n return accumulatedResult + S.slice(nextSourcePosition);\n }\n ];\n\n // https://tc39.github.io/ecma262/#sec-getsubstitution\n function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return $replace.call(replacement, symbols, function (match, ch) {\n var capture;\n switch (ch.charAt(0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return str.slice(0, position);\n case \"'\": return str.slice(tailPos);\n case '<':\n capture = namedCaptures[ch.slice(1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n }\n});\n\n\n/***/ }),\n\n/***/ \"aae3\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.2.8 IsRegExp(argument)\nvar isObject = __webpack_require__(\"d3f4\");\nvar cof = __webpack_require__(\"2d95\");\nvar MATCH = __webpack_require__(\"2b4c\")('match');\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');\n};\n\n\n/***/ }),\n\n/***/ \"ac6a\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $iterators = __webpack_require__(\"cadf\");\nvar getKeys = __webpack_require__(\"0d58\");\nvar redefine = __webpack_require__(\"2aba\");\nvar global = __webpack_require__(\"7726\");\nvar hide = __webpack_require__(\"32e9\");\nvar Iterators = __webpack_require__(\"84f2\");\nvar wks = __webpack_require__(\"2b4c\");\nvar ITERATOR = wks('iterator');\nvar TO_STRING_TAG = wks('toStringTag');\nvar ArrayValues = Iterators.Array;\n\nvar DOMIterables = {\n CSSRuleList: true, // TODO: Not spec compliant, should be false.\n CSSStyleDeclaration: false,\n CSSValueList: false,\n ClientRectList: false,\n DOMRectList: false,\n DOMStringList: false,\n DOMTokenList: true,\n DataTransferItemList: false,\n FileList: false,\n HTMLAllCollection: false,\n HTMLCollection: false,\n HTMLFormElement: false,\n HTMLSelectElement: false,\n MediaList: true, // TODO: Not spec compliant, should be false.\n MimeTypeArray: false,\n NamedNodeMap: false,\n NodeList: true,\n PaintRequestList: false,\n Plugin: false,\n PluginArray: false,\n SVGLengthList: false,\n SVGNumberList: false,\n SVGPathSegList: false,\n SVGPointList: false,\n SVGStringList: false,\n SVGTransformList: false,\n SourceBufferList: false,\n StyleSheetList: true, // TODO: Not spec compliant, should be false.\n TextTrackCueList: false,\n TextTrackList: false,\n TouchList: false\n};\n\nfor (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {\n var NAME = collections[i];\n var explicit = DOMIterables[NAME];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n var key;\n if (proto) {\n if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);\n if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = ArrayValues;\n if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true);\n }\n}\n\n\n/***/ }),\n\n/***/ \"b0c5\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar regexpExec = __webpack_require__(\"520a\");\n__webpack_require__(\"5ca1\")({\n target: 'RegExp',\n proto: true,\n forced: regexpExec !== /./.exec\n}, {\n exec: regexpExec\n});\n\n\n/***/ }),\n\n/***/ \"be13\":\n/***/ (function(module, exports) {\n\n// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n\n\n/***/ }),\n\n/***/ \"c366\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = __webpack_require__(\"6821\");\nvar toLength = __webpack_require__(\"9def\");\nvar toAbsoluteIndex = __webpack_require__(\"77f1\");\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\n\n/***/ }),\n\n/***/ \"c649\":\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return insertNodeAt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return camelize; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return console; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"d\", function() { return removeNode; });\n/* harmony import */ var core_js_modules_es6_regexp_replace__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"a481\");\n/* harmony import */ var core_js_modules_es6_regexp_replace__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_regexp_replace__WEBPACK_IMPORTED_MODULE_0__);\n\n\nfunction getConsole() {\n if (typeof window !== \"undefined\") {\n return window.console;\n }\n\n return global.console;\n}\n\nvar console = getConsole();\n\nfunction cached(fn) {\n var cache = Object.create(null);\n return function cachedFn(str) {\n var hit = cache[str];\n return hit || (cache[str] = fn(str));\n };\n}\n\nvar regex = /-(\\w)/g;\nvar camelize = cached(function (str) {\n return str.replace(regex, function (_, c) {\n return c ? c.toUpperCase() : \"\";\n });\n});\n\nfunction removeNode(node) {\n if (node.parentElement !== null) {\n node.parentElement.removeChild(node);\n }\n}\n\nfunction insertNodeAt(fatherNode, node, position) {\n var refNode = position === 0 ? fatherNode.children[0] : fatherNode.children[position - 1].nextSibling;\n fatherNode.insertBefore(node, refNode);\n}\n\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(\"c8ba\")))\n\n/***/ }),\n\n/***/ \"c69a\":\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = !__webpack_require__(\"9e1e\") && !__webpack_require__(\"79e5\")(function () {\n return Object.defineProperty(__webpack_require__(\"230e\")('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n\n\n/***/ }),\n\n/***/ \"c8ba\":\n/***/ (function(module, exports) {\n\nvar g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n\n\n/***/ }),\n\n/***/ \"ca5a\":\n/***/ (function(module, exports) {\n\nvar id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n\n\n/***/ }),\n\n/***/ \"cadf\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar addToUnscopables = __webpack_require__(\"9c6c\");\nvar step = __webpack_require__(\"d53b\");\nvar Iterators = __webpack_require__(\"84f2\");\nvar toIObject = __webpack_require__(\"6821\");\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = __webpack_require__(\"01f9\")(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n\n/***/ }),\n\n/***/ \"cb7c\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(\"d3f4\");\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n\n\n/***/ }),\n\n/***/ \"ce10\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar has = __webpack_require__(\"69a8\");\nvar toIObject = __webpack_require__(\"6821\");\nvar arrayIndexOf = __webpack_require__(\"c366\")(false);\nvar IE_PROTO = __webpack_require__(\"613b\")('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n\n\n/***/ }),\n\n/***/ \"d2c8\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// helper for String#{startsWith, endsWith, includes}\nvar isRegExp = __webpack_require__(\"aae3\");\nvar defined = __webpack_require__(\"be13\");\n\nmodule.exports = function (that, searchString, NAME) {\n if (isRegExp(searchString)) throw TypeError('String#' + NAME + \" doesn't accept regex!\");\n return String(defined(that));\n};\n\n\n/***/ }),\n\n/***/ \"d3f4\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n\n\n/***/ }),\n\n/***/ \"d53b\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n\n\n/***/ }),\n\n/***/ \"d8e8\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n\n\n/***/ }),\n\n/***/ \"e11e\":\n/***/ (function(module, exports) {\n\n// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n\n\n/***/ }),\n\n/***/ \"f559\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n// 21.1.3.18 String.prototype.startsWith(searchString [, position ])\n\nvar $export = __webpack_require__(\"5ca1\");\nvar toLength = __webpack_require__(\"9def\");\nvar context = __webpack_require__(\"d2c8\");\nvar STARTS_WITH = 'startsWith';\nvar $startsWith = ''[STARTS_WITH];\n\n$export($export.P + $export.F * __webpack_require__(\"5147\")(STARTS_WITH), 'String', {\n startsWith: function startsWith(searchString /* , position = 0 */) {\n var that = context(this, searchString, STARTS_WITH);\n var index = toLength(Math.min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n var search = String(searchString);\n return $startsWith\n ? $startsWith.call(that, search, index)\n : that.slice(index, index + search.length) === search;\n }\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/***/ \"f751\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.3.1 Object.assign(target, source)\nvar $export = __webpack_require__(\"5ca1\");\n\n$export($export.S + $export.F, 'Object', { assign: __webpack_require__(\"7333\") });\n\n\n/***/ }),\n\n/***/ \"fa5b\":\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(\"5537\")('native-function-to-string', Function.toString);\n\n\n/***/ }),\n\n/***/ \"fab2\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar document = __webpack_require__(\"7726\").document;\nmodule.exports = document && document.documentElement;\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// 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 setPublicPath_i\n if ((setPublicPath_i = window.document.currentScript) && (setPublicPath_i = setPublicPath_i.src.match(/(.+\\/)[^/]+\\.js(\\?.*)?$/))) {\n __webpack_require__.p = setPublicPath_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// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.object.assign.js\nvar es6_object_assign = __webpack_require__(\"f751\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.string.starts-with.js\nvar es6_string_starts_with = __webpack_require__(\"f559\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/web.dom.iterable.js\nvar web_dom_iterable = __webpack_require__(\"ac6a\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.array.iterator.js\nvar es6_array_iterator = __webpack_require__(\"cadf\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.object.keys.js\nvar es6_object_keys = __webpack_require__(\"456d\");\n\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js\nfunction _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/slicedToArray.js\n\n\n\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es7.array.includes.js\nvar es7_array_includes = __webpack_require__(\"6762\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.string.includes.js\nvar es6_string_includes = __webpack_require__(\"2fdb\");\n\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/iterableToArray.js\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\n\n\n\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n// EXTERNAL MODULE: external {\"commonjs\":\"sortablejs\",\"commonjs2\":\"sortablejs\",\"amd\":\"sortablejs\",\"root\":\"Sortable\"}\nvar external_commonjs_sortablejs_commonjs2_sortablejs_amd_sortablejs_root_Sortable_ = __webpack_require__(\"a352\");\nvar external_commonjs_sortablejs_commonjs2_sortablejs_amd_sortablejs_root_Sortable_default = /*#__PURE__*/__webpack_require__.n(external_commonjs_sortablejs_commonjs2_sortablejs_amd_sortablejs_root_Sortable_);\n\n// EXTERNAL MODULE: ./src/util/helper.js\nvar helper = __webpack_require__(\"c649\");\n\n// CONCATENATED MODULE: ./src/vuedraggable.js\n\n\n\n\n\n\n\n\n\n\n\n\nfunction buildAttribute(object, propName, value) {\n if (value === undefined) {\n return object;\n }\n\n object = object || {};\n object[propName] = value;\n return object;\n}\n\nfunction computeVmIndex(vnodes, element) {\n return vnodes.map(function (elt) {\n return elt.elm;\n }).indexOf(element);\n}\n\nfunction _computeIndexes(slots, children, isTransition, footerOffset) {\n if (!slots) {\n return [];\n }\n\n var elmFromNodes = slots.map(function (elt) {\n return elt.elm;\n });\n var footerIndex = children.length - footerOffset;\n\n var rawIndexes = _toConsumableArray(children).map(function (elt, idx) {\n return idx >= footerIndex ? elmFromNodes.length : elmFromNodes.indexOf(elt);\n });\n\n return isTransition ? rawIndexes.filter(function (ind) {\n return ind !== -1;\n }) : rawIndexes;\n}\n\nfunction emit(evtName, evtData) {\n var _this = this;\n\n this.$nextTick(function () {\n return _this.$emit(evtName.toLowerCase(), evtData);\n });\n}\n\nfunction delegateAndEmit(evtName) {\n var _this2 = this;\n\n return function (evtData) {\n if (_this2.realList !== null) {\n _this2[\"onDrag\" + evtName](evtData);\n }\n\n emit.call(_this2, evtName, evtData);\n };\n}\n\nfunction isTransitionName(name) {\n return [\"transition-group\", \"TransitionGroup\"].includes(name);\n}\n\nfunction vuedraggable_isTransition(slots) {\n if (!slots || slots.length !== 1) {\n return false;\n }\n\n var _slots = _slicedToArray(slots, 1),\n componentOptions = _slots[0].componentOptions;\n\n if (!componentOptions) {\n return false;\n }\n\n return isTransitionName(componentOptions.tag);\n}\n\nfunction getSlot(slot, scopedSlot, key) {\n return slot[key] || (scopedSlot[key] ? scopedSlot[key]() : undefined);\n}\n\nfunction computeChildrenAndOffsets(children, slot, scopedSlot) {\n var headerOffset = 0;\n var footerOffset = 0;\n var header = getSlot(slot, scopedSlot, \"header\");\n\n if (header) {\n headerOffset = header.length;\n children = children ? [].concat(_toConsumableArray(header), _toConsumableArray(children)) : _toConsumableArray(header);\n }\n\n var footer = getSlot(slot, scopedSlot, \"footer\");\n\n if (footer) {\n footerOffset = footer.length;\n children = children ? [].concat(_toConsumableArray(children), _toConsumableArray(footer)) : _toConsumableArray(footer);\n }\n\n return {\n children: children,\n headerOffset: headerOffset,\n footerOffset: footerOffset\n };\n}\n\nfunction getComponentAttributes($attrs, componentData) {\n var attributes = null;\n\n var update = function update(name, value) {\n attributes = buildAttribute(attributes, name, value);\n };\n\n var attrs = Object.keys($attrs).filter(function (key) {\n return key === \"id\" || key.startsWith(\"data-\");\n }).reduce(function (res, key) {\n res[key] = $attrs[key];\n return res;\n }, {});\n update(\"attrs\", attrs);\n\n if (!componentData) {\n return attributes;\n }\n\n var on = componentData.on,\n props = componentData.props,\n componentDataAttrs = componentData.attrs;\n update(\"on\", on);\n update(\"props\", props);\n Object.assign(attributes.attrs, componentDataAttrs);\n return attributes;\n}\n\nvar eventsListened = [\"Start\", \"Add\", \"Remove\", \"Update\", \"End\"];\nvar eventsToEmit = [\"Choose\", \"Unchoose\", \"Sort\", \"Filter\", \"Clone\"];\nvar readonlyProperties = [\"Move\"].concat(eventsListened, eventsToEmit).map(function (evt) {\n return \"on\" + evt;\n});\nvar draggingElement = null;\nvar props = {\n options: Object,\n list: {\n type: Array,\n required: false,\n default: null\n },\n value: {\n type: Array,\n required: false,\n default: null\n },\n noTransitionOnDrag: {\n type: Boolean,\n default: false\n },\n clone: {\n type: Function,\n default: function _default(original) {\n return original;\n }\n },\n element: {\n type: String,\n default: \"div\"\n },\n tag: {\n type: String,\n default: null\n },\n move: {\n type: Function,\n default: null\n },\n componentData: {\n type: Object,\n required: false,\n default: null\n }\n};\nvar draggableComponent = {\n name: \"draggable\",\n inheritAttrs: false,\n props: props,\n data: function data() {\n return {\n transitionMode: false,\n noneFunctionalComponentMode: false\n };\n },\n render: function render(h) {\n var slots = this.$slots.default;\n this.transitionMode = vuedraggable_isTransition(slots);\n\n var _computeChildrenAndOf = computeChildrenAndOffsets(slots, this.$slots, this.$scopedSlots),\n children = _computeChildrenAndOf.children,\n headerOffset = _computeChildrenAndOf.headerOffset,\n footerOffset = _computeChildrenAndOf.footerOffset;\n\n this.headerOffset = headerOffset;\n this.footerOffset = footerOffset;\n var attributes = getComponentAttributes(this.$attrs, this.componentData);\n return h(this.getTag(), attributes, children);\n },\n created: function created() {\n if (this.list !== null && this.value !== null) {\n helper[\"b\" /* console */].error(\"Value and list props are mutually exclusive! Please set one or another.\");\n }\n\n if (this.element !== \"div\") {\n helper[\"b\" /* console */].warn(\"Element props is deprecated please use tag props instead. See https://github.com/SortableJS/Vue.Draggable/blob/master/documentation/migrate.md#element-props\");\n }\n\n if (this.options !== undefined) {\n helper[\"b\" /* console */].warn(\"Options props is deprecated, add sortable options directly as vue.draggable item, or use v-bind. See https://github.com/SortableJS/Vue.Draggable/blob/master/documentation/migrate.md#options-props\");\n }\n },\n mounted: function mounted() {\n var _this3 = this;\n\n this.noneFunctionalComponentMode = this.getTag().toLowerCase() !== this.$el.nodeName.toLowerCase() && !this.getIsFunctional();\n\n if (this.noneFunctionalComponentMode && this.transitionMode) {\n throw new Error(\"Transition-group inside component is not supported. Please alter tag value or remove transition-group. Current tag value: \".concat(this.getTag()));\n }\n\n var optionsAdded = {};\n eventsListened.forEach(function (elt) {\n optionsAdded[\"on\" + elt] = delegateAndEmit.call(_this3, elt);\n });\n eventsToEmit.forEach(function (elt) {\n optionsAdded[\"on\" + elt] = emit.bind(_this3, elt);\n });\n var attributes = Object.keys(this.$attrs).reduce(function (res, key) {\n res[Object(helper[\"a\" /* camelize */])(key)] = _this3.$attrs[key];\n return res;\n }, {});\n var options = Object.assign({}, this.options, attributes, optionsAdded, {\n onMove: function onMove(evt, originalEvent) {\n return _this3.onDragMove(evt, originalEvent);\n }\n });\n !(\"draggable\" in options) && (options.draggable = \">*\");\n this._sortable = new external_commonjs_sortablejs_commonjs2_sortablejs_amd_sortablejs_root_Sortable_default.a(this.rootContainer, options);\n this.computeIndexes();\n },\n beforeDestroy: function beforeDestroy() {\n if (this._sortable !== undefined) this._sortable.destroy();\n },\n computed: {\n rootContainer: function rootContainer() {\n return this.transitionMode ? this.$el.children[0] : this.$el;\n },\n realList: function realList() {\n return this.list ? this.list : this.value;\n }\n },\n watch: {\n options: {\n handler: function handler(newOptionValue) {\n this.updateOptions(newOptionValue);\n },\n deep: true\n },\n $attrs: {\n handler: function handler(newOptionValue) {\n this.updateOptions(newOptionValue);\n },\n deep: true\n },\n realList: function realList() {\n this.computeIndexes();\n }\n },\n methods: {\n getIsFunctional: function getIsFunctional() {\n var fnOptions = this._vnode.fnOptions;\n return fnOptions && fnOptions.functional;\n },\n getTag: function getTag() {\n return this.tag || this.element;\n },\n updateOptions: function updateOptions(newOptionValue) {\n for (var property in newOptionValue) {\n var value = Object(helper[\"a\" /* camelize */])(property);\n\n if (readonlyProperties.indexOf(value) === -1) {\n this._sortable.option(value, newOptionValue[property]);\n }\n }\n },\n getChildrenNodes: function getChildrenNodes() {\n if (this.noneFunctionalComponentMode) {\n return this.$children[0].$slots.default;\n }\n\n var rawNodes = this.$slots.default;\n return this.transitionMode ? rawNodes[0].child.$slots.default : rawNodes;\n },\n computeIndexes: function computeIndexes() {\n var _this4 = this;\n\n this.$nextTick(function () {\n _this4.visibleIndexes = _computeIndexes(_this4.getChildrenNodes(), _this4.rootContainer.children, _this4.transitionMode, _this4.footerOffset);\n });\n },\n getUnderlyingVm: function getUnderlyingVm(htmlElt) {\n var index = computeVmIndex(this.getChildrenNodes() || [], htmlElt);\n\n if (index === -1) {\n //Edge case during move callback: related element might be\n //an element different from collection\n return null;\n }\n\n var element = this.realList[index];\n return {\n index: index,\n element: element\n };\n },\n getUnderlyingPotencialDraggableComponent: function getUnderlyingPotencialDraggableComponent(_ref) {\n var vue = _ref.__vue__;\n\n if (!vue || !vue.$options || !isTransitionName(vue.$options._componentTag)) {\n if (!(\"realList\" in vue) && vue.$children.length === 1 && \"realList\" in vue.$children[0]) return vue.$children[0];\n return vue;\n }\n\n return vue.$parent;\n },\n emitChanges: function emitChanges(evt) {\n var _this5 = this;\n\n this.$nextTick(function () {\n _this5.$emit(\"change\", evt);\n });\n },\n alterList: function alterList(onList) {\n if (this.list) {\n onList(this.list);\n return;\n }\n\n var newList = _toConsumableArray(this.value);\n\n onList(newList);\n this.$emit(\"input\", newList);\n },\n spliceList: function spliceList() {\n var _arguments = arguments;\n\n var spliceList = function spliceList(list) {\n return list.splice.apply(list, _toConsumableArray(_arguments));\n };\n\n this.alterList(spliceList);\n },\n updatePosition: function updatePosition(oldIndex, newIndex) {\n var updatePosition = function updatePosition(list) {\n return list.splice(newIndex, 0, list.splice(oldIndex, 1)[0]);\n };\n\n this.alterList(updatePosition);\n },\n getRelatedContextFromMoveEvent: function getRelatedContextFromMoveEvent(_ref2) {\n var to = _ref2.to,\n related = _ref2.related;\n var component = this.getUnderlyingPotencialDraggableComponent(to);\n\n if (!component) {\n return {\n component: component\n };\n }\n\n var list = component.realList;\n var context = {\n list: list,\n component: component\n };\n\n if (to !== related && list && component.getUnderlyingVm) {\n var destination = component.getUnderlyingVm(related);\n\n if (destination) {\n return Object.assign(destination, context);\n }\n }\n\n return context;\n },\n getVmIndex: function getVmIndex(domIndex) {\n var indexes = this.visibleIndexes;\n var numberIndexes = indexes.length;\n return domIndex > numberIndexes - 1 ? numberIndexes : indexes[domIndex];\n },\n getComponent: function getComponent() {\n return this.$slots.default[0].componentInstance;\n },\n resetTransitionData: function resetTransitionData(index) {\n if (!this.noTransitionOnDrag || !this.transitionMode) {\n return;\n }\n\n var nodes = this.getChildrenNodes();\n nodes[index].data = null;\n var transitionContainer = this.getComponent();\n transitionContainer.children = [];\n transitionContainer.kept = undefined;\n },\n onDragStart: function onDragStart(evt) {\n this.context = this.getUnderlyingVm(evt.item);\n evt.item._underlying_vm_ = this.clone(this.context.element);\n draggingElement = evt.item;\n },\n onDragAdd: function onDragAdd(evt) {\n var element = evt.item._underlying_vm_;\n\n if (element === undefined) {\n return;\n }\n\n Object(helper[\"d\" /* removeNode */])(evt.item);\n var newIndex = this.getVmIndex(evt.newIndex);\n this.spliceList(newIndex, 0, element);\n this.computeIndexes();\n var added = {\n element: element,\n newIndex: newIndex\n };\n this.emitChanges({\n added: added\n });\n },\n onDragRemove: function onDragRemove(evt) {\n Object(helper[\"c\" /* insertNodeAt */])(this.rootContainer, evt.item, evt.oldIndex);\n\n if (evt.pullMode === \"clone\") {\n Object(helper[\"d\" /* removeNode */])(evt.clone);\n return;\n }\n\n var oldIndex = this.context.index;\n this.spliceList(oldIndex, 1);\n var removed = {\n element: this.context.element,\n oldIndex: oldIndex\n };\n this.resetTransitionData(oldIndex);\n this.emitChanges({\n removed: removed\n });\n },\n onDragUpdate: function onDragUpdate(evt) {\n Object(helper[\"d\" /* removeNode */])(evt.item);\n Object(helper[\"c\" /* insertNodeAt */])(evt.from, evt.item, evt.oldIndex);\n var oldIndex = this.context.index;\n var newIndex = this.getVmIndex(evt.newIndex);\n this.updatePosition(oldIndex, newIndex);\n var moved = {\n element: this.context.element,\n oldIndex: oldIndex,\n newIndex: newIndex\n };\n this.emitChanges({\n moved: moved\n });\n },\n updateProperty: function updateProperty(evt, propertyName) {\n evt.hasOwnProperty(propertyName) && (evt[propertyName] += this.headerOffset);\n },\n computeFutureIndex: function computeFutureIndex(relatedContext, evt) {\n if (!relatedContext.element) {\n return 0;\n }\n\n var domChildren = _toConsumableArray(evt.to.children).filter(function (el) {\n return el.style[\"display\"] !== \"none\";\n });\n\n var currentDOMIndex = domChildren.indexOf(evt.related);\n var currentIndex = relatedContext.component.getVmIndex(currentDOMIndex);\n var draggedInList = domChildren.indexOf(draggingElement) !== -1;\n return draggedInList || !evt.willInsertAfter ? currentIndex : currentIndex + 1;\n },\n onDragMove: function onDragMove(evt, originalEvent) {\n var onMove = this.move;\n\n if (!onMove || !this.realList) {\n return true;\n }\n\n var relatedContext = this.getRelatedContextFromMoveEvent(evt);\n var draggedContext = this.context;\n var futureIndex = this.computeFutureIndex(relatedContext, evt);\n Object.assign(draggedContext, {\n futureIndex: futureIndex\n });\n var sendEvt = Object.assign({}, evt, {\n relatedContext: relatedContext,\n draggedContext: draggedContext\n });\n return onMove(sendEvt, originalEvent);\n },\n onDragEnd: function onDragEnd() {\n this.computeIndexes();\n draggingElement = null;\n }\n }\n};\n\nif (typeof window !== \"undefined\" && \"Vue\" in window) {\n window.Vue.component(\"draggable\", draggableComponent);\n}\n\n/* harmony default export */ var vuedraggable = (draggableComponent);\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\"] = (vuedraggable);\n\n\n\n/***/ })\n\n/******/ })[\"default\"];\n});\n//# sourceMappingURL=vuedraggable.umd.js.map","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar lang = require(\"../lang\");\n\nvar _dataProvider = require(\"../data/helper/dataProvider\");\n\nvar retrieveRawValue = _dataProvider.retrieveRawValue;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction _default(dom, ecModel) {\n var ariaModel = ecModel.getModel('aria');\n\n if (!ariaModel.get('show')) {\n return;\n } else if (ariaModel.get('description')) {\n dom.setAttribute('aria-label', ariaModel.get('description'));\n return;\n }\n\n var seriesCnt = 0;\n ecModel.eachSeries(function (seriesModel, idx) {\n ++seriesCnt;\n }, this);\n var maxDataCnt = ariaModel.get('data.maxCount') || 10;\n var maxSeriesCnt = ariaModel.get('series.maxCount') || 10;\n var displaySeriesCnt = Math.min(seriesCnt, maxSeriesCnt);\n var ariaLabel;\n\n if (seriesCnt < 1) {\n // No series, no aria label\n return;\n } else {\n var title = getTitle();\n\n if (title) {\n ariaLabel = replace(getConfig('general.withTitle'), {\n title: title\n });\n } else {\n ariaLabel = getConfig('general.withoutTitle');\n }\n\n var seriesLabels = [];\n var prefix = seriesCnt > 1 ? 'series.multiple.prefix' : 'series.single.prefix';\n ariaLabel += replace(getConfig(prefix), {\n seriesCount: seriesCnt\n });\n ecModel.eachSeries(function (seriesModel, idx) {\n if (idx < displaySeriesCnt) {\n var seriesLabel;\n var seriesName = seriesModel.get('name');\n var seriesTpl = 'series.' + (seriesCnt > 1 ? 'multiple' : 'single') + '.';\n seriesLabel = getConfig(seriesName ? seriesTpl + 'withName' : seriesTpl + 'withoutName');\n seriesLabel = replace(seriesLabel, {\n seriesId: seriesModel.seriesIndex,\n seriesName: seriesModel.get('name'),\n seriesType: getSeriesTypeName(seriesModel.subType)\n });\n var data = seriesModel.getData();\n window.data = data;\n\n if (data.count() > maxDataCnt) {\n // Show part of data\n seriesLabel += replace(getConfig('data.partialData'), {\n displayCnt: maxDataCnt\n });\n } else {\n seriesLabel += getConfig('data.allData');\n }\n\n var dataLabels = [];\n\n for (var i = 0; i < data.count(); i++) {\n if (i < maxDataCnt) {\n var name = data.getName(i);\n var value = retrieveRawValue(data, i);\n dataLabels.push(replace(name ? getConfig('data.withName') : getConfig('data.withoutName'), {\n name: name,\n value: value\n }));\n }\n }\n\n seriesLabel += dataLabels.join(getConfig('data.separator.middle')) + getConfig('data.separator.end');\n seriesLabels.push(seriesLabel);\n }\n });\n ariaLabel += seriesLabels.join(getConfig('series.multiple.separator.middle')) + getConfig('series.multiple.separator.end');\n dom.setAttribute('aria-label', ariaLabel);\n }\n\n function replace(str, keyValues) {\n if (typeof str !== 'string') {\n return str;\n }\n\n var result = str;\n zrUtil.each(keyValues, function (value, key) {\n result = result.replace(new RegExp('\\\\{\\\\s*' + key + '\\\\s*\\\\}', 'g'), value);\n });\n return result;\n }\n\n function getConfig(path) {\n var userConfig = ariaModel.get(path);\n\n if (userConfig == null) {\n var pathArr = path.split('.');\n var result = lang.aria;\n\n for (var i = 0; i < pathArr.length; ++i) {\n result = result[pathArr[i]];\n }\n\n return result;\n } else {\n return userConfig;\n }\n }\n\n function getTitle() {\n var title = ecModel.getModel('title').option;\n\n if (title && title.length) {\n title = title[0];\n }\n\n return title && title.text;\n }\n\n function getSeriesTypeName(type) {\n return lang.series.typeNames[type] || '自定义图';\n }\n}\n\nmodule.exports = _default;","module.exports = __webpack_public_path__ + \"img/11-small.4ade0856.png\";","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!./MultiStateSwitch.vue?vue&type=style&index=0&id=78f924ea&scoped=true&lang=css&\"","var Animator = require(\"../animation/Animator\");\n\nvar logError = require(\"../core/log\");\n\nvar _util = require(\"../core/util\");\n\nvar isString = _util.isString;\nvar isFunction = _util.isFunction;\nvar isObject = _util.isObject;\nvar isArrayLike = _util.isArrayLike;\nvar indexOf = _util.indexOf;\n\n/**\n * @alias module:zrender/mixin/Animatable\n * @constructor\n */\nvar Animatable = function () {\n /**\n * @type {Array.}\n * @readOnly\n */\n this.animators = [];\n};\n\nAnimatable.prototype = {\n constructor: Animatable,\n\n /**\n * 动画\n *\n * @param {string} path The path to fetch value from object, like 'a.b.c'.\n * @param {boolean} [loop] Whether to loop animation.\n * @return {module:zrender/animation/Animator}\n * @example:\n * el.animate('style', false)\n * .when(1000, {x: 10} )\n * .done(function(){ // Animation done })\n * .start()\n */\n animate: function (path, loop) {\n var target;\n var animatingShape = false;\n var el = this;\n var zr = this.__zr;\n\n if (path) {\n var pathSplitted = path.split('.');\n var prop = el; // If animating shape\n\n animatingShape = pathSplitted[0] === 'shape';\n\n for (var i = 0, l = pathSplitted.length; i < l; i++) {\n if (!prop) {\n continue;\n }\n\n prop = prop[pathSplitted[i]];\n }\n\n if (prop) {\n target = prop;\n }\n } else {\n target = el;\n }\n\n if (!target) {\n logError('Property \"' + path + '\" is not existed in element ' + el.id);\n return;\n }\n\n var animators = el.animators;\n var animator = new Animator(target, loop);\n animator.during(function (target) {\n el.dirty(animatingShape);\n }).done(function () {\n // FIXME Animator will not be removed if use `Animator#stop` to stop animation\n animators.splice(indexOf(animators, animator), 1);\n });\n animators.push(animator); // If animate after added to the zrender\n\n if (zr) {\n zr.animation.addAnimator(animator);\n }\n\n return animator;\n },\n\n /**\n * 停止动画\n * @param {boolean} forwardToLast If move to last frame before stop\n */\n stopAnimation: function (forwardToLast) {\n var animators = this.animators;\n var len = animators.length;\n\n for (var i = 0; i < len; i++) {\n animators[i].stop(forwardToLast);\n }\n\n animators.length = 0;\n return this;\n },\n\n /**\n * Caution: this method will stop previous animation.\n * So do not use this method to one element twice before\n * animation starts, unless you know what you are doing.\n * @param {Object} target\n * @param {number} [time=500] Time in ms\n * @param {string} [easing='linear']\n * @param {number} [delay=0]\n * @param {Function} [callback]\n * @param {Function} [forceAnimate] Prevent stop animation and callback\n * immediently when target values are the same as current values.\n *\n * @example\n * // Animate position\n * el.animateTo({\n * position: [10, 10]\n * }, function () { // done })\n *\n * // Animate shape, style and position in 100ms, delayed 100ms, with cubicOut easing\n * el.animateTo({\n * shape: {\n * width: 500\n * },\n * style: {\n * fill: 'red'\n * }\n * position: [10, 10]\n * }, 100, 100, 'cubicOut', function () { // done })\n */\n // TODO Return animation key\n animateTo: function (target, time, delay, easing, callback, forceAnimate) {\n animateTo(this, target, time, delay, easing, callback, forceAnimate);\n },\n\n /**\n * Animate from the target state to current state.\n * The params and the return value are the same as `this.animateTo`.\n */\n animateFrom: function (target, time, delay, easing, callback, forceAnimate) {\n animateTo(this, target, time, delay, easing, callback, forceAnimate, true);\n }\n};\n\nfunction animateTo(animatable, target, time, delay, easing, callback, forceAnimate, reverse) {\n // animateTo(target, time, easing, callback);\n if (isString(delay)) {\n callback = easing;\n easing = delay;\n delay = 0;\n } // animateTo(target, time, delay, callback);\n else if (isFunction(easing)) {\n callback = easing;\n easing = 'linear';\n delay = 0;\n } // animateTo(target, time, callback);\n else if (isFunction(delay)) {\n callback = delay;\n delay = 0;\n } // animateTo(target, callback)\n else if (isFunction(time)) {\n callback = time;\n time = 500;\n } // animateTo(target)\n else if (!time) {\n time = 500;\n } // Stop all previous animations\n\n\n animatable.stopAnimation();\n animateToShallow(animatable, '', animatable, target, time, delay, reverse); // Animators may be removed immediately after start\n // if there is nothing to animate\n\n var animators = animatable.animators.slice();\n var count = animators.length;\n\n function done() {\n count--;\n\n if (!count) {\n callback && callback();\n }\n } // No animators. This should be checked before animators[i].start(),\n // because 'done' may be executed immediately if no need to animate.\n\n\n if (!count) {\n callback && callback();\n } // Start after all animators created\n // Incase any animator is done immediately when all animation properties are not changed\n\n\n for (var i = 0; i < animators.length; i++) {\n animators[i].done(done).start(easing, forceAnimate);\n }\n}\n/**\n * @param {string} path=''\n * @param {Object} source=animatable\n * @param {Object} target\n * @param {number} [time=500]\n * @param {number} [delay=0]\n * @param {boolean} [reverse] If `true`, animate\n * from the `target` to current state.\n *\n * @example\n * // Animate position\n * el._animateToShallow({\n * position: [10, 10]\n * })\n *\n * // Animate shape, style and position in 100ms, delayed 100ms\n * el._animateToShallow({\n * shape: {\n * width: 500\n * },\n * style: {\n * fill: 'red'\n * }\n * position: [10, 10]\n * }, 100, 100)\n */\n\n\nfunction animateToShallow(animatable, path, source, target, time, delay, reverse) {\n var objShallow = {};\n var propertyCount = 0;\n\n for (var name in target) {\n if (!target.hasOwnProperty(name)) {\n continue;\n }\n\n if (source[name] != null) {\n if (isObject(target[name]) && !isArrayLike(target[name])) {\n animateToShallow(animatable, path ? path + '.' + name : name, source[name], target[name], time, delay, reverse);\n } else {\n if (reverse) {\n objShallow[name] = source[name];\n setAttrByPath(animatable, path, name, target[name]);\n } else {\n objShallow[name] = target[name];\n }\n\n propertyCount++;\n }\n } else if (target[name] != null && !reverse) {\n setAttrByPath(animatable, path, name, target[name]);\n }\n }\n\n if (propertyCount > 0) {\n animatable.animate(path, false).when(time == null ? 500 : time, objShallow).delay(delay || 0);\n }\n}\n\nfunction setAttrByPath(el, path, name, value) {\n // Attr directly if not has property\n // FIXME, if some property not needed for element ?\n if (!path) {\n el.attr(name, value);\n } else {\n // Only support set shape or style\n var props = {};\n props[path] = {};\n props[path][name] = value;\n el.attr(props);\n }\n}\n\nvar _default = Animatable;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar Region = require(\"./Region\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Parse and decode geo json\n * @module echarts/coord/geo/parseGeoJson\n */\nfunction decode(json) {\n if (!json.UTF8Encoding) {\n return json;\n }\n\n var encodeScale = json.UTF8Scale;\n\n if (encodeScale == null) {\n encodeScale = 1024;\n }\n\n var features = json.features;\n\n for (var f = 0; f < features.length; f++) {\n var feature = features[f];\n var geometry = feature.geometry;\n var coordinates = geometry.coordinates;\n var encodeOffsets = geometry.encodeOffsets;\n\n for (var c = 0; c < coordinates.length; c++) {\n var coordinate = coordinates[c];\n\n if (geometry.type === 'Polygon') {\n coordinates[c] = decodePolygon(coordinate, encodeOffsets[c], encodeScale);\n } else if (geometry.type === 'MultiPolygon') {\n for (var c2 = 0; c2 < coordinate.length; c2++) {\n var polygon = coordinate[c2];\n coordinate[c2] = decodePolygon(polygon, encodeOffsets[c][c2], encodeScale);\n }\n }\n }\n } // Has been decoded\n\n\n json.UTF8Encoding = false;\n return json;\n}\n\nfunction decodePolygon(coordinate, encodeOffsets, encodeScale) {\n var result = [];\n var prevX = encodeOffsets[0];\n var prevY = encodeOffsets[1];\n\n for (var i = 0; i < coordinate.length; i += 2) {\n var x = coordinate.charCodeAt(i) - 64;\n var y = coordinate.charCodeAt(i + 1) - 64; // ZigZag decoding\n\n x = x >> 1 ^ -(x & 1);\n y = y >> 1 ^ -(y & 1); // Delta deocding\n\n x += prevX;\n y += prevY;\n prevX = x;\n prevY = y; // Dequantize\n\n result.push([x / encodeScale, y / encodeScale]);\n }\n\n return result;\n}\n/**\n * @alias module:echarts/coord/geo/parseGeoJson\n * @param {Object} geoJson\n * @param {string} nameProperty\n * @return {module:zrender/container/Group}\n */\n\n\nfunction _default(geoJson, nameProperty) {\n decode(geoJson);\n return zrUtil.map(zrUtil.filter(geoJson.features, function (featureObj) {\n // Output of mapshaper may have geometry null\n return featureObj.geometry && featureObj.properties && featureObj.geometry.coordinates.length > 0;\n }), function (featureObj) {\n var properties = featureObj.properties;\n var geo = featureObj.geometry;\n var coordinates = geo.coordinates;\n var geometries = [];\n\n if (geo.type === 'Polygon') {\n geometries.push({\n type: 'polygon',\n // According to the GeoJSON specification.\n // First must be exterior, and the rest are all interior(holes).\n exterior: coordinates[0],\n interiors: coordinates.slice(1)\n });\n }\n\n if (geo.type === 'MultiPolygon') {\n zrUtil.each(coordinates, function (item) {\n if (item[0]) {\n geometries.push({\n type: 'polygon',\n exterior: item[0],\n interiors: item.slice(1)\n });\n }\n });\n }\n\n var region = new Region(properties[nameProperty || 'name'], geometries, properties.cp);\n region.properties = properties;\n return region;\n });\n}\n\nmodule.exports = _default;","!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e(require(\"flatpickr\")):\"function\"==typeof define&&define.amd?define(\"VueFlatpickr\",[\"flatpickr\"],e):\"object\"==typeof exports?exports.VueFlatpickr=e(require(\"flatpickr\")):t.VueFlatpickr=e(t.flatpickr)}(\"undefined\"!=typeof self?self:this,(function(t){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,\"a\",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p=\"\",n(n.s=1)}([function(e,n){e.exports=t},function(t,e,n){\"use strict\";n.r(e),n.d(e,\"Component\",(function(){return c})),n.d(e,\"Plugin\",(function(){return p}));var r=n(0),o=n.n(r),i=[\"onChange\",\"onClose\",\"onDestroy\",\"onMonthChange\",\"onOpen\",\"onYearChange\"];function u(){return(u=Object.assign||function(t){for(var e=1;e -1 : looseEqual(checked, value);\n },\n isRadio: function isRadio() {\n return false;\n }\n },\n watch: _defineProperty({}, MODEL_PROP_NAME_INDETERMINATE, function (newValue, oldValue) {\n if (!looseEqual(newValue, oldValue)) {\n this.setIndeterminate(newValue);\n }\n }),\n mounted: function mounted() {\n // Set initial indeterminate state\n this.setIndeterminate(this[MODEL_PROP_NAME_INDETERMINATE]);\n },\n methods: {\n computedLocalCheckedWatcher: function computedLocalCheckedWatcher(newValue, oldValue) {\n if (!looseEqual(newValue, oldValue)) {\n this.$emit(MODEL_EVENT_NAME, newValue);\n var $input = this.$refs.input;\n\n if ($input) {\n this.$emit(MODEL_EVENT_NAME_INDETERMINATE, $input.indeterminate);\n }\n }\n },\n handleChange: function handleChange(_ref) {\n var _this = this;\n\n var _ref$target = _ref.target,\n checked = _ref$target.checked,\n indeterminate = _ref$target.indeterminate;\n var value = this.value,\n uncheckedValue = this.uncheckedValue; // Update `computedLocalChecked`\n\n var localChecked = this.computedLocalChecked;\n\n if (isArray(localChecked)) {\n var index = looseIndexOf(localChecked, value);\n\n if (checked && index < 0) {\n // Add value to array\n localChecked = localChecked.concat(value);\n } else if (!checked && index > -1) {\n // Remove value from array\n localChecked = localChecked.slice(0, index).concat(localChecked.slice(index + 1));\n }\n } else {\n localChecked = checked ? value : uncheckedValue;\n }\n\n this.computedLocalChecked = localChecked; // Fire events in a `$nextTick()` to ensure the `v-model` is updated\n\n this.$nextTick(function () {\n // Change is only emitted on user interaction\n _this.$emit(EVENT_NAME_CHANGE, localChecked); // If this is a child of a group, we emit a change event on it as well\n\n\n if (_this.isGroup) {\n _this.bvGroup.$emit(EVENT_NAME_CHANGE, localChecked);\n }\n\n _this.$emit(MODEL_EVENT_NAME_INDETERMINATE, indeterminate);\n });\n },\n setIndeterminate: function setIndeterminate(state) {\n // Indeterminate only supported in single checkbox mode\n if (isArray(this.computedLocalChecked)) {\n state = false;\n }\n\n var $input = this.$refs.input;\n\n if ($input) {\n $input.indeterminate = state; // Emit update event to prop\n\n this.$emit(MODEL_EVENT_NAME_INDETERMINATE, state);\n }\n }\n }\n});","import { looseEqual } from './loose-equal'; // Assumes that the first argument is an array\n\nexport var looseIndexOf = function looseIndexOf(array, value) {\n for (var i = 0; i < array.length; i++) {\n if (looseEqual(array[i], value)) {\n return i;\n }\n }\n\n return -1;\n};","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar colorAll = ['#37A2DA', '#32C5E9', '#67E0E3', '#9FE6B8', '#FFDB5C', '#ff9f7f', '#fb7293', '#E062AE', '#E690D1', '#e7bcf3', '#9d96f5', '#8378EA', '#96BFFF'];\nvar _default = {\n color: colorAll,\n colorLayer: [['#37A2DA', '#ffd85c', '#fd7b5f'], ['#37A2DA', '#67E0E3', '#FFDB5C', '#ff9f7f', '#E062AE', '#9d96f5'], ['#37A2DA', '#32C5E9', '#9FE6B8', '#FFDB5C', '#ff9f7f', '#fb7293', '#e7bcf3', '#8378EA', '#96BFFF'], colorAll]\n};\nmodule.exports = _default;","var Path = require(\"../Path\");\n\nvar roundRectHelper = require(\"../helper/roundRect\");\n\nvar _subPixelOptimize = require(\"../helper/subPixelOptimize\");\n\nvar subPixelOptimizeRect = _subPixelOptimize.subPixelOptimizeRect;\n\n/**\n * 矩形\n * @module zrender/graphic/shape/Rect\n */\n// Avoid create repeatly.\nvar subPixelOptimizeOutputShape = {};\n\nvar _default = Path.extend({\n type: 'rect',\n shape: {\n // 左上、右上、右下、左下角的半径依次为r1、r2、r3、r4\n // r缩写为1 相当于 [1, 1, 1, 1]\n // r缩写为[1] 相当于 [1, 1, 1, 1]\n // r缩写为[1, 2] 相当于 [1, 2, 1, 2]\n // r缩写为[1, 2, 3] 相当于 [1, 2, 3, 2]\n r: 0,\n x: 0,\n y: 0,\n width: 0,\n height: 0\n },\n buildPath: function (ctx, shape) {\n var x;\n var y;\n var width;\n var height;\n\n if (this.subPixelOptimize) {\n subPixelOptimizeRect(subPixelOptimizeOutputShape, shape, this.style);\n x = subPixelOptimizeOutputShape.x;\n y = subPixelOptimizeOutputShape.y;\n width = subPixelOptimizeOutputShape.width;\n height = subPixelOptimizeOutputShape.height;\n subPixelOptimizeOutputShape.r = shape.r;\n shape = subPixelOptimizeOutputShape;\n } else {\n x = shape.x;\n y = shape.y;\n width = shape.width;\n height = shape.height;\n }\n\n if (!shape.r) {\n ctx.rect(x, y, width, height);\n } else {\n roundRectHelper.buildPath(ctx, shape);\n }\n\n ctx.closePath();\n return;\n }\n});\n\nmodule.exports = _default;","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}","import router from '@/router'\n// eslint-disable-next-line object-curly-newline\nimport { reactive, getCurrentInstance, watch, toRefs } from '@vue/composition-api'\n\nexport const isObject = obj => typeof obj === 'object' && obj !== null\n\nexport const isToday = date => {\n const today = new Date()\n return (\n /* eslint-disable operator-linebreak */\n date.getDate() === today.getDate() &&\n date.getMonth() === today.getMonth() &&\n date.getFullYear() === today.getFullYear()\n /* eslint-enable */\n )\n}\n\nconst getRandomFromArray = array => array[Math.floor(Math.random() * array.length)]\n\n// ? Light and Dark variant is not included\n// prettier-ignore\nexport const getRandomBsVariant = () => getRandomFromArray(['primary', 'secondary', 'success', 'warning', 'danger', 'info'])\n\nexport const isDynamicRouteActive = route => {\n const { route: resolvedRoute } = router.resolve(route)\n return resolvedRoute.path === router.currentRoute.path\n}\n\n// Thanks: https://medium.com/better-programming/reactive-vue-routes-with-the-composition-api-18c1abd878d1\nexport const useRouter = () => {\n const vm = getCurrentInstance().proxy\n const state = reactive({\n route: vm.$route,\n })\n\n watch(\n () => vm.$route,\n r => {\n state.route = r\n },\n )\n\n return { ...toRefs(state), router: vm.$router }\n}\n\n/**\n * This is just enhancement over Object.extend [Gives deep extend]\n * @param {target} a Object which contains values to be overridden\n * @param {source} b Object which contains values to override\n */\n// export const objectExtend = (a, b) => {\n// // Don't touch 'null' or 'undefined' objects.\n// if (a == null || b == null) {\n// return a\n// }\n\n// Object.keys(b).forEach(key => {\n// if (Object.prototype.toString.call(b[key]) === '[object Object]') {\n// if (Object.prototype.toString.call(a[key]) !== '[object Object]') {\n// // eslint-disable-next-line no-param-reassign\n// a[key] = b[key]\n// } else {\n// // eslint-disable-next-line no-param-reassign\n// a[key] = objectExtend(a[key], b[key])\n// }\n// } else {\n// // eslint-disable-next-line no-param-reassign\n// a[key] = b[key]\n// }\n// })\n\n// return a\n// }\n","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar modelUtil = require(\"../util/model\");\n\nvar ComponentModel = require(\"./Component\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * ECharts option manager\n *\n * @module {echarts/model/OptionManager}\n */\nvar each = zrUtil.each;\nvar clone = zrUtil.clone;\nvar map = zrUtil.map;\nvar merge = zrUtil.merge;\nvar QUERY_REG = /^(min|max)?(.+)$/;\n/**\n * TERM EXPLANATIONS:\n *\n * [option]:\n *\n * An object that contains definitions of components. For example:\n * var option = {\n * title: {...},\n * legend: {...},\n * visualMap: {...},\n * series: [\n * {data: [...]},\n * {data: [...]},\n * ...\n * ]\n * };\n *\n * [rawOption]:\n *\n * An object input to echarts.setOption. 'rawOption' may be an\n * 'option', or may be an object contains multi-options. For example:\n * var option = {\n * baseOption: {\n * title: {...},\n * legend: {...},\n * series: [\n * {data: [...]},\n * {data: [...]},\n * ...\n * ]\n * },\n * timeline: {...},\n * options: [\n * {title: {...}, series: {data: [...]}},\n * {title: {...}, series: {data: [...]}},\n * ...\n * ],\n * media: [\n * {\n * query: {maxWidth: 320},\n * option: {series: {x: 20}, visualMap: {show: false}}\n * },\n * {\n * query: {minWidth: 320, maxWidth: 720},\n * option: {series: {x: 500}, visualMap: {show: true}}\n * },\n * {\n * option: {series: {x: 1200}, visualMap: {show: true}}\n * }\n * ]\n * };\n *\n * @alias module:echarts/model/OptionManager\n * @param {module:echarts/ExtensionAPI} api\n */\n\nfunction OptionManager(api) {\n /**\n * @private\n * @type {module:echarts/ExtensionAPI}\n */\n this._api = api;\n /**\n * @private\n * @type {Array.}\n */\n\n this._timelineOptions = [];\n /**\n * @private\n * @type {Array.}\n */\n\n this._mediaList = [];\n /**\n * @private\n * @type {Object}\n */\n\n this._mediaDefault;\n /**\n * -1, means default.\n * empty means no media.\n * @private\n * @type {Array.}\n */\n\n this._currentMediaIndices = [];\n /**\n * @private\n * @type {Object}\n */\n\n this._optionBackup;\n /**\n * @private\n * @type {Object}\n */\n\n this._newBaseOption;\n} // timeline.notMerge is not supported in ec3. Firstly there is rearly\n// case that notMerge is needed. Secondly supporting 'notMerge' requires\n// rawOption cloned and backuped when timeline changed, which does no\n// good to performance. What's more, that both timeline and setOption\n// method supply 'notMerge' brings complex and some problems.\n// Consider this case:\n// (step1) chart.setOption({timeline: {notMerge: false}, ...}, false);\n// (step2) chart.setOption({timeline: {notMerge: true}, ...}, false);\n\n\nOptionManager.prototype = {\n constructor: OptionManager,\n\n /**\n * @public\n * @param {Object} rawOption Raw option.\n * @param {module:echarts/model/Global} ecModel\n * @param {Array.} optionPreprocessorFuncs\n * @return {Object} Init option\n */\n setOption: function (rawOption, optionPreprocessorFuncs) {\n if (rawOption) {\n // That set dat primitive is dangerous if user reuse the data when setOption again.\n zrUtil.each(modelUtil.normalizeToArray(rawOption.series), function (series) {\n series && series.data && zrUtil.isTypedArray(series.data) && zrUtil.setAsPrimitive(series.data);\n });\n } // Caution: some series modify option data, if do not clone,\n // it should ensure that the repeat modify correctly\n // (create a new object when modify itself).\n\n\n rawOption = clone(rawOption); // FIXME\n // 如果 timeline options 或者 media 中设置了某个属性,而baseOption中没有设置,则进行警告。\n\n var oldOptionBackup = this._optionBackup;\n var newParsedOption = parseRawOption.call(this, rawOption, optionPreprocessorFuncs, !oldOptionBackup);\n this._newBaseOption = newParsedOption.baseOption; // For setOption at second time (using merge mode);\n\n if (oldOptionBackup) {\n // Only baseOption can be merged.\n mergeOption(oldOptionBackup.baseOption, newParsedOption.baseOption); // For simplicity, timeline options and media options do not support merge,\n // that is, if you `setOption` twice and both has timeline options, the latter\n // timeline opitons will not be merged to the formers, but just substitude them.\n\n if (newParsedOption.timelineOptions.length) {\n oldOptionBackup.timelineOptions = newParsedOption.timelineOptions;\n }\n\n if (newParsedOption.mediaList.length) {\n oldOptionBackup.mediaList = newParsedOption.mediaList;\n }\n\n if (newParsedOption.mediaDefault) {\n oldOptionBackup.mediaDefault = newParsedOption.mediaDefault;\n }\n } else {\n this._optionBackup = newParsedOption;\n }\n },\n\n /**\n * @param {boolean} isRecreate\n * @return {Object}\n */\n mountOption: function (isRecreate) {\n var optionBackup = this._optionBackup; // TODO\n // 如果没有reset功能则不clone。\n\n this._timelineOptions = map(optionBackup.timelineOptions, clone);\n this._mediaList = map(optionBackup.mediaList, clone);\n this._mediaDefault = clone(optionBackup.mediaDefault);\n this._currentMediaIndices = [];\n return clone(isRecreate // this._optionBackup.baseOption, which is created at the first `setOption`\n // called, and is merged into every new option by inner method `mergeOption`\n // each time `setOption` called, can be only used in `isRecreate`, because\n // its reliability is under suspicion. In other cases option merge is\n // performed by `model.mergeOption`.\n ? optionBackup.baseOption : this._newBaseOption);\n },\n\n /**\n * @param {module:echarts/model/Global} ecModel\n * @return {Object}\n */\n getTimelineOption: function (ecModel) {\n var option;\n var timelineOptions = this._timelineOptions;\n\n if (timelineOptions.length) {\n // getTimelineOption can only be called after ecModel inited,\n // so we can get currentIndex from timelineModel.\n var timelineModel = ecModel.getComponent('timeline');\n\n if (timelineModel) {\n option = clone(timelineOptions[timelineModel.getCurrentIndex()], true);\n }\n }\n\n return option;\n },\n\n /**\n * @param {module:echarts/model/Global} ecModel\n * @return {Array.}\n */\n getMediaOption: function (ecModel) {\n var ecWidth = this._api.getWidth();\n\n var ecHeight = this._api.getHeight();\n\n var mediaList = this._mediaList;\n var mediaDefault = this._mediaDefault;\n var indices = [];\n var result = []; // No media defined.\n\n if (!mediaList.length && !mediaDefault) {\n return result;\n } // Multi media may be applied, the latter defined media has higher priority.\n\n\n for (var i = 0, len = mediaList.length; i < len; i++) {\n if (applyMediaQuery(mediaList[i].query, ecWidth, ecHeight)) {\n indices.push(i);\n }\n } // FIXME\n // 是否mediaDefault应该强制用户设置,否则可能修改不能回归。\n\n\n if (!indices.length && mediaDefault) {\n indices = [-1];\n }\n\n if (indices.length && !indicesEquals(indices, this._currentMediaIndices)) {\n result = map(indices, function (index) {\n return clone(index === -1 ? mediaDefault.option : mediaList[index].option);\n });\n } // Otherwise return nothing.\n\n\n this._currentMediaIndices = indices;\n return result;\n }\n};\n\nfunction parseRawOption(rawOption, optionPreprocessorFuncs, isNew) {\n var timelineOptions = [];\n var mediaList = [];\n var mediaDefault;\n var baseOption; // Compatible with ec2.\n\n var timelineOpt = rawOption.timeline;\n\n if (rawOption.baseOption) {\n baseOption = rawOption.baseOption;\n } // For timeline\n\n\n if (timelineOpt || rawOption.options) {\n baseOption = baseOption || {};\n timelineOptions = (rawOption.options || []).slice();\n } // For media query\n\n\n if (rawOption.media) {\n baseOption = baseOption || {};\n var media = rawOption.media;\n each(media, function (singleMedia) {\n if (singleMedia && singleMedia.option) {\n if (singleMedia.query) {\n mediaList.push(singleMedia);\n } else if (!mediaDefault) {\n // Use the first media default.\n mediaDefault = singleMedia;\n }\n }\n });\n } // For normal option\n\n\n if (!baseOption) {\n baseOption = rawOption;\n } // Set timelineOpt to baseOption in ec3,\n // which is convenient for merge option.\n\n\n if (!baseOption.timeline) {\n baseOption.timeline = timelineOpt;\n } // Preprocess.\n\n\n each([baseOption].concat(timelineOptions).concat(zrUtil.map(mediaList, function (media) {\n return media.option;\n })), function (option) {\n each(optionPreprocessorFuncs, function (preProcess) {\n preProcess(option, isNew);\n });\n });\n return {\n baseOption: baseOption,\n timelineOptions: timelineOptions,\n mediaDefault: mediaDefault,\n mediaList: mediaList\n };\n}\n/**\n * @see \n * Support: width, height, aspectRatio\n * Can use max or min as prefix.\n */\n\n\nfunction applyMediaQuery(query, ecWidth, ecHeight) {\n var realMap = {\n width: ecWidth,\n height: ecHeight,\n aspectratio: ecWidth / ecHeight // lowser case for convenientce.\n\n };\n var applicatable = true;\n zrUtil.each(query, function (value, attr) {\n var matched = attr.match(QUERY_REG);\n\n if (!matched || !matched[1] || !matched[2]) {\n return;\n }\n\n var operator = matched[1];\n var realAttr = matched[2].toLowerCase();\n\n if (!compare(realMap[realAttr], value, operator)) {\n applicatable = false;\n }\n });\n return applicatable;\n}\n\nfunction compare(real, expect, operator) {\n if (operator === 'min') {\n return real >= expect;\n } else if (operator === 'max') {\n return real <= expect;\n } else {\n // Equals\n return real === expect;\n }\n}\n\nfunction indicesEquals(indices1, indices2) {\n // indices is always order by asc and has only finite number.\n return indices1.join(',') === indices2.join(',');\n}\n/**\n * Consider case:\n * `chart.setOption(opt1);`\n * Then user do some interaction like dataZoom, dataView changing.\n * `chart.setOption(opt2);`\n * Then user press 'reset button' in toolbox.\n *\n * After doing that all of the interaction effects should be reset, the\n * chart should be the same as the result of invoke\n * `chart.setOption(opt1); chart.setOption(opt2);`.\n *\n * Although it is not able ensure that\n * `chart.setOption(opt1); chart.setOption(opt2);` is equivalents to\n * `chart.setOption(merge(opt1, opt2));` exactly,\n * this might be the only simple way to implement that feature.\n *\n * MEMO: We've considered some other approaches:\n * 1. Each model handle its self restoration but not uniform treatment.\n * (Too complex in logic and error-prone)\n * 2. Use a shadow ecModel. (Performace expensive)\n */\n\n\nfunction mergeOption(oldOption, newOption) {\n newOption = newOption || {};\n each(newOption, function (newCptOpt, mainType) {\n if (newCptOpt == null) {\n return;\n }\n\n var oldCptOpt = oldOption[mainType];\n\n if (!ComponentModel.hasClass(mainType)) {\n oldOption[mainType] = merge(oldCptOpt, newCptOpt, true);\n } else {\n newCptOpt = modelUtil.normalizeToArray(newCptOpt);\n oldCptOpt = modelUtil.normalizeToArray(oldCptOpt);\n var mapResult = modelUtil.mappingToExists(oldCptOpt, newCptOpt);\n oldOption[mainType] = map(mapResult, function (item) {\n return item.option && item.exist ? merge(item.exist, item.option, true) : item.exist || item.option;\n });\n }\n });\n}\n\nvar _default = OptionManager;\nmodule.exports = _default;","var Path = require(\"../Path\");\n\nvar _subPixelOptimize = require(\"../helper/subPixelOptimize\");\n\nvar subPixelOptimizeLine = _subPixelOptimize.subPixelOptimizeLine;\n\n/**\n * 直线\n * @module zrender/graphic/shape/Line\n */\n// Avoid create repeatly.\nvar subPixelOptimizeOutputShape = {};\n\nvar _default = Path.extend({\n type: 'line',\n shape: {\n // Start point\n x1: 0,\n y1: 0,\n // End point\n x2: 0,\n y2: 0,\n percent: 1\n },\n style: {\n stroke: '#000',\n fill: null\n },\n buildPath: function (ctx, shape) {\n var x1;\n var y1;\n var x2;\n var y2;\n\n if (this.subPixelOptimize) {\n subPixelOptimizeLine(subPixelOptimizeOutputShape, shape, this.style);\n x1 = subPixelOptimizeOutputShape.x1;\n y1 = subPixelOptimizeOutputShape.y1;\n x2 = subPixelOptimizeOutputShape.x2;\n y2 = subPixelOptimizeOutputShape.y2;\n } else {\n x1 = shape.x1;\n y1 = shape.y1;\n x2 = shape.x2;\n y2 = shape.y2;\n }\n\n var percent = shape.percent;\n\n if (percent === 0) {\n return;\n }\n\n ctx.moveTo(x1, y1);\n\n if (percent < 1) {\n x2 = x1 * (1 - percent) + x2 * percent;\n y2 = y1 * (1 - percent) + y2 * percent;\n }\n\n ctx.lineTo(x2, y2);\n },\n\n /**\n * Get point at percent\n * @param {number} percent\n * @return {Array.}\n */\n pointAt: function (p) {\n var shape = this.shape;\n return [shape.x1 * (1 - p) + shape.x2 * p, shape.y1 * (1 - p) + shape.y2 * p];\n }\n});\n\nmodule.exports = _default;","// TODO Draggable for group\n// FIXME Draggable on element which has parent rotation or scale\nfunction Draggable() {\n this.on('mousedown', this._dragStart, this);\n this.on('mousemove', this._drag, this);\n this.on('mouseup', this._dragEnd, this); // `mosuemove` and `mouseup` can be continue to fire when dragging.\n // See [Drag outside] in `Handler.js`. So we do not need to trigger\n // `_dragEnd` when globalout. That would brings better user experience.\n // this.on('globalout', this._dragEnd, this);\n // this._dropTarget = null;\n // this._draggingTarget = null;\n // this._x = 0;\n // this._y = 0;\n}\n\nDraggable.prototype = {\n constructor: Draggable,\n _dragStart: function (e) {\n var draggingTarget = e.target; // Find if there is draggable in the ancestor\n\n while (draggingTarget && !draggingTarget.draggable) {\n draggingTarget = draggingTarget.parent;\n }\n\n if (draggingTarget) {\n this._draggingTarget = draggingTarget;\n draggingTarget.dragging = true;\n this._x = e.offsetX;\n this._y = e.offsetY;\n this.dispatchToElement(param(draggingTarget, e), 'dragstart', e.event);\n }\n },\n _drag: function (e) {\n var draggingTarget = this._draggingTarget;\n\n if (draggingTarget) {\n var x = e.offsetX;\n var y = e.offsetY;\n var dx = x - this._x;\n var dy = y - this._y;\n this._x = x;\n this._y = y;\n draggingTarget.drift(dx, dy, e);\n this.dispatchToElement(param(draggingTarget, e), 'drag', e.event);\n var dropTarget = this.findHover(x, y, draggingTarget).target;\n var lastDropTarget = this._dropTarget;\n this._dropTarget = dropTarget;\n\n if (draggingTarget !== dropTarget) {\n if (lastDropTarget && dropTarget !== lastDropTarget) {\n this.dispatchToElement(param(lastDropTarget, e), 'dragleave', e.event);\n }\n\n if (dropTarget && dropTarget !== lastDropTarget) {\n this.dispatchToElement(param(dropTarget, e), 'dragenter', e.event);\n }\n }\n }\n },\n _dragEnd: function (e) {\n var draggingTarget = this._draggingTarget;\n\n if (draggingTarget) {\n draggingTarget.dragging = false;\n }\n\n this.dispatchToElement(param(draggingTarget, e), 'dragend', e.event);\n\n if (this._dropTarget) {\n this.dispatchToElement(param(this._dropTarget, e), 'drop', e.event);\n }\n\n this._draggingTarget = null;\n this._dropTarget = null;\n }\n};\n\nfunction param(target, e) {\n return {\n target: target,\n topTarget: e && e.topTarget\n };\n}\n\nvar _default = Draggable;\nmodule.exports = _default;","var Displayable = require(\"./Displayable\");\n\nvar zrUtil = require(\"../core/util\");\n\nvar PathProxy = require(\"../core/PathProxy\");\n\nvar pathContain = require(\"../contain/path\");\n\nvar Pattern = require(\"./Pattern\");\n\nvar getCanvasPattern = Pattern.prototype.getCanvasPattern;\nvar abs = Math.abs;\nvar pathProxyForDraw = new PathProxy(true);\n/**\n * @alias module:zrender/graphic/Path\n * @extends module:zrender/graphic/Displayable\n * @constructor\n * @param {Object} opts\n */\n\nfunction Path(opts) {\n Displayable.call(this, opts);\n /**\n * @type {module:zrender/core/PathProxy}\n * @readOnly\n */\n\n this.path = null;\n}\n\nPath.prototype = {\n constructor: Path,\n type: 'path',\n __dirtyPath: true,\n strokeContainThreshold: 5,\n // This item default to be false. But in map series in echarts,\n // in order to improve performance, it should be set to true,\n // so the shorty segment won't draw.\n segmentIgnoreThreshold: 0,\n\n /**\n * See `module:zrender/src/graphic/helper/subPixelOptimize`.\n * @type {boolean}\n */\n subPixelOptimize: false,\n brush: function (ctx, prevEl) {\n var style = this.style;\n var path = this.path || pathProxyForDraw;\n var hasStroke = style.hasStroke();\n var hasFill = style.hasFill();\n var fill = style.fill;\n var stroke = style.stroke;\n var hasFillGradient = hasFill && !!fill.colorStops;\n var hasStrokeGradient = hasStroke && !!stroke.colorStops;\n var hasFillPattern = hasFill && !!fill.image;\n var hasStrokePattern = hasStroke && !!stroke.image;\n style.bind(ctx, this, prevEl);\n this.setTransform(ctx);\n\n if (this.__dirty) {\n var rect; // Update gradient because bounding rect may changed\n\n if (hasFillGradient) {\n rect = rect || this.getBoundingRect();\n this._fillGradient = style.getGradient(ctx, fill, rect);\n }\n\n if (hasStrokeGradient) {\n rect = rect || this.getBoundingRect();\n this._strokeGradient = style.getGradient(ctx, stroke, rect);\n }\n } // Use the gradient or pattern\n\n\n if (hasFillGradient) {\n // PENDING If may have affect the state\n ctx.fillStyle = this._fillGradient;\n } else if (hasFillPattern) {\n ctx.fillStyle = getCanvasPattern.call(fill, ctx);\n }\n\n if (hasStrokeGradient) {\n ctx.strokeStyle = this._strokeGradient;\n } else if (hasStrokePattern) {\n ctx.strokeStyle = getCanvasPattern.call(stroke, ctx);\n }\n\n var lineDash = style.lineDash;\n var lineDashOffset = style.lineDashOffset;\n var ctxLineDash = !!ctx.setLineDash; // Update path sx, sy\n\n var scale = this.getGlobalScale();\n path.setScale(scale[0], scale[1], this.segmentIgnoreThreshold); // Proxy context\n // Rebuild path in following 2 cases\n // 1. Path is dirty\n // 2. Path needs javascript implemented lineDash stroking.\n // In this case, lineDash information will not be saved in PathProxy\n\n if (this.__dirtyPath || lineDash && !ctxLineDash && hasStroke) {\n path.beginPath(ctx); // Setting line dash before build path\n\n if (lineDash && !ctxLineDash) {\n path.setLineDash(lineDash);\n path.setLineDashOffset(lineDashOffset);\n }\n\n this.buildPath(path, this.shape, false); // Clear path dirty flag\n\n if (this.path) {\n this.__dirtyPath = false;\n }\n } else {\n // Replay path building\n ctx.beginPath();\n this.path.rebuildPath(ctx);\n }\n\n if (hasFill) {\n if (style.fillOpacity != null) {\n var originalGlobalAlpha = ctx.globalAlpha;\n ctx.globalAlpha = style.fillOpacity * style.opacity;\n path.fill(ctx);\n ctx.globalAlpha = originalGlobalAlpha;\n } else {\n path.fill(ctx);\n }\n }\n\n if (lineDash && ctxLineDash) {\n ctx.setLineDash(lineDash);\n ctx.lineDashOffset = lineDashOffset;\n }\n\n if (hasStroke) {\n if (style.strokeOpacity != null) {\n var originalGlobalAlpha = ctx.globalAlpha;\n ctx.globalAlpha = style.strokeOpacity * style.opacity;\n path.stroke(ctx);\n ctx.globalAlpha = originalGlobalAlpha;\n } else {\n path.stroke(ctx);\n }\n }\n\n if (lineDash && ctxLineDash) {\n // PENDING\n // Remove lineDash\n ctx.setLineDash([]);\n } // Draw rect text\n\n\n if (style.text != null) {\n // Only restore transform when needs draw text.\n this.restoreTransform(ctx);\n this.drawRectText(ctx, this.getBoundingRect());\n }\n },\n // When bundling path, some shape may decide if use moveTo to begin a new subpath or closePath\n // Like in circle\n buildPath: function (ctx, shapeCfg, inBundle) {},\n createPathProxy: function () {\n this.path = new PathProxy();\n },\n getBoundingRect: function () {\n var rect = this._rect;\n var style = this.style;\n var needsUpdateRect = !rect;\n\n if (needsUpdateRect) {\n var path = this.path;\n\n if (!path) {\n // Create path on demand.\n path = this.path = new PathProxy();\n }\n\n if (this.__dirtyPath) {\n path.beginPath();\n this.buildPath(path, this.shape, false);\n }\n\n rect = path.getBoundingRect();\n }\n\n this._rect = rect;\n\n if (style.hasStroke()) {\n // Needs update rect with stroke lineWidth when\n // 1. Element changes scale or lineWidth\n // 2. Shape is changed\n var rectWithStroke = this._rectWithStroke || (this._rectWithStroke = rect.clone());\n\n if (this.__dirty || needsUpdateRect) {\n rectWithStroke.copy(rect); // FIXME Must after updateTransform\n\n var w = style.lineWidth; // PENDING, Min line width is needed when line is horizontal or vertical\n\n var lineScale = style.strokeNoScale ? this.getLineScale() : 1; // Only add extra hover lineWidth when there are no fill\n\n if (!style.hasFill()) {\n w = Math.max(w, this.strokeContainThreshold || 4);\n } // Consider line width\n // Line scale can't be 0;\n\n\n if (lineScale > 1e-10) {\n rectWithStroke.width += w / lineScale;\n rectWithStroke.height += w / lineScale;\n rectWithStroke.x -= w / lineScale / 2;\n rectWithStroke.y -= w / lineScale / 2;\n }\n } // Return rect with stroke\n\n\n return rectWithStroke;\n }\n\n return rect;\n },\n contain: function (x, y) {\n var localPos = this.transformCoordToLocal(x, y);\n var rect = this.getBoundingRect();\n var style = this.style;\n x = localPos[0];\n y = localPos[1];\n\n if (rect.contain(x, y)) {\n var pathData = this.path.data;\n\n if (style.hasStroke()) {\n var lineWidth = style.lineWidth;\n var lineScale = style.strokeNoScale ? this.getLineScale() : 1; // Line scale can't be 0;\n\n if (lineScale > 1e-10) {\n // Only add extra hover lineWidth when there are no fill\n if (!style.hasFill()) {\n lineWidth = Math.max(lineWidth, this.strokeContainThreshold);\n }\n\n if (pathContain.containStroke(pathData, lineWidth / lineScale, x, y)) {\n return true;\n }\n }\n }\n\n if (style.hasFill()) {\n return pathContain.contain(pathData, x, y);\n }\n }\n\n return false;\n },\n\n /**\n * @param {boolean} dirtyPath\n */\n dirty: function (dirtyPath) {\n if (dirtyPath == null) {\n dirtyPath = true;\n } // Only mark dirty, not mark clean\n\n\n if (dirtyPath) {\n this.__dirtyPath = dirtyPath;\n this._rect = null;\n }\n\n this.__dirty = this.__dirtyText = true;\n this.__zr && this.__zr.refresh(); // Used as a clipping path\n\n if (this.__clipTarget) {\n this.__clipTarget.dirty();\n }\n },\n\n /**\n * Alias for animate('shape')\n * @param {boolean} loop\n */\n animateShape: function (loop) {\n return this.animate('shape', loop);\n },\n // Overwrite attrKV\n attrKV: function (key, value) {\n // FIXME\n if (key === 'shape') {\n this.setShape(value);\n this.__dirtyPath = true;\n this._rect = null;\n } else {\n Displayable.prototype.attrKV.call(this, key, value);\n }\n },\n\n /**\n * @param {Object|string} key\n * @param {*} value\n */\n setShape: function (key, value) {\n var shape = this.shape; // Path from string may not have shape\n\n if (shape) {\n if (zrUtil.isObject(key)) {\n for (var name in key) {\n if (key.hasOwnProperty(name)) {\n shape[name] = key[name];\n }\n }\n } else {\n shape[key] = value;\n }\n\n this.dirty(true);\n }\n\n return this;\n },\n getLineScale: function () {\n var m = this.transform; // Get the line scale.\n // Determinant of `m` means how much the area is enlarged by the\n // transformation. So its square root can be used as a scale factor\n // for width.\n\n return m && abs(m[0] - 1) > 1e-10 && abs(m[3] - 1) > 1e-10 ? Math.sqrt(abs(m[0] * m[3] - m[2] * m[1])) : 1;\n }\n};\n/**\n * 扩展一个 Path element, 比如星形,圆等。\n * Extend a path element\n * @param {Object} props\n * @param {string} props.type Path type\n * @param {Function} props.init Initialize\n * @param {Function} props.buildPath Overwrite buildPath method\n * @param {Object} [props.style] Extended default style config\n * @param {Object} [props.shape] Extended default shape config\n */\n\nPath.extend = function (defaults) {\n var Sub = function (opts) {\n Path.call(this, opts);\n\n if (defaults.style) {\n // Extend default style\n this.style.extendFrom(defaults.style, false);\n } // Extend default shape\n\n\n var defaultShape = defaults.shape;\n\n if (defaultShape) {\n this.shape = this.shape || {};\n var thisShape = this.shape;\n\n for (var name in defaultShape) {\n if (!thisShape.hasOwnProperty(name) && defaultShape.hasOwnProperty(name)) {\n thisShape[name] = defaultShape[name];\n }\n }\n }\n\n defaults.init && defaults.init.call(this, opts);\n };\n\n zrUtil.inherits(Sub, Path); // FIXME 不能 extend position, rotation 等引用对象\n\n for (var name in defaults) {\n // Extending prototype values and methods\n if (name !== 'style' && name !== 'shape') {\n Sub.prototype[name] = defaults[name];\n }\n }\n\n return Sub;\n};\n\nzrUtil.inherits(Path, Displayable);\nvar _default = Path;\nmodule.exports = _default;","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue, mergeData } from '../../vue';\nimport { NAME_INPUT_GROUP_APPEND } from '../../constants/components';\nimport { omit } from '../../utils/object';\nimport { makePropsConfigurable } from '../../utils/props';\nimport { BInputGroupAddon, props as BInputGroupAddonProps } from './input-group-addon'; // --- Props ---\n\nexport var props = makePropsConfigurable(omit(BInputGroupAddonProps, ['append']), NAME_INPUT_GROUP_APPEND); // --- Main component ---\n// @vue/component\n\nexport var BInputGroupAppend = /*#__PURE__*/Vue.extend({\n name: NAME_INPUT_GROUP_APPEND,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n // Pass all our data down to child, and set `append` to `true`\n return h(BInputGroupAddon, mergeData(data, {\n props: _objectSpread(_objectSpread({}, props), {}, {\n append: true\n })\n }), children);\n }\n});","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _model = require(\"../../util/model\");\n\nvar makeInner = _model.makeInner;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @return {string} If large mode changed, return string 'reset';\n */\nfunction _default() {\n var inner = makeInner();\n return function (seriesModel) {\n var fields = inner(seriesModel);\n var pipelineContext = seriesModel.pipelineContext;\n var originalLarge = fields.large;\n var originalProgressive = fields.progressiveRender; // FIXME: if the planner works on a filtered series, `pipelineContext` does not\n // exists. See #11611 . Probably we need to modify this structure, see the comment\n // on `performRawSeries` in `Schedular.js`.\n\n var large = fields.large = pipelineContext && pipelineContext.large;\n var progressive = fields.progressiveRender = pipelineContext && pipelineContext.progressiveRender;\n return !!(originalLarge ^ large || originalProgressive ^ progressive) && 'reset';\n };\n}\n\nmodule.exports = _default;","var _event = require(\"../core/event\");\n\nvar addEventListener = _event.addEventListener;\nvar removeEventListener = _event.removeEventListener;\nvar normalizeEvent = _event.normalizeEvent;\nvar getNativeEvent = _event.getNativeEvent;\n\nvar zrUtil = require(\"../core/util\");\n\nvar Eventful = require(\"../mixin/Eventful\");\n\nvar env = require(\"../core/env\");\n\n/* global document */\nvar TOUCH_CLICK_DELAY = 300;\nvar globalEventSupported = env.domSupported;\n\nvar localNativeListenerNames = function () {\n var mouseHandlerNames = ['click', 'dblclick', 'mousewheel', 'mouseout', 'mouseup', 'mousedown', 'mousemove', 'contextmenu'];\n var touchHandlerNames = ['touchstart', 'touchend', 'touchmove'];\n var pointerEventNameMap = {\n pointerdown: 1,\n pointerup: 1,\n pointermove: 1,\n pointerout: 1\n };\n var pointerHandlerNames = zrUtil.map(mouseHandlerNames, function (name) {\n var nm = name.replace('mouse', 'pointer');\n return pointerEventNameMap.hasOwnProperty(nm) ? nm : name;\n });\n return {\n mouse: mouseHandlerNames,\n touch: touchHandlerNames,\n pointer: pointerHandlerNames\n };\n}();\n\nvar globalNativeListenerNames = {\n mouse: ['mousemove', 'mouseup'],\n pointer: ['pointermove', 'pointerup']\n};\n\nfunction eventNameFix(name) {\n return name === 'mousewheel' && env.browser.firefox ? 'DOMMouseScroll' : name;\n}\n\nfunction isPointerFromTouch(event) {\n var pointerType = event.pointerType;\n return pointerType === 'pen' || pointerType === 'touch';\n} // function useMSGuesture(handlerProxy, event) {\n// return isPointerFromTouch(event) && !!handlerProxy._msGesture;\n// }\n// function onMSGestureChange(proxy, event) {\n// if (event.translationX || event.translationY) {\n// // mousemove is carried by MSGesture to reduce the sensitivity.\n// proxy.handler.dispatchToElement(event.target, 'mousemove', event);\n// }\n// if (event.scale !== 1) {\n// event.pinchX = event.offsetX;\n// event.pinchY = event.offsetY;\n// event.pinchScale = event.scale;\n// proxy.handler.dispatchToElement(event.target, 'pinch', event);\n// }\n// }\n\n/**\n * Prevent mouse event from being dispatched after Touch Events action\n * @see \n * 1. Mobile browsers dispatch mouse events 300ms after touchend.\n * 2. Chrome for Android dispatch mousedown for long-touch about 650ms\n * Result: Blocking Mouse Events for 700ms.\n *\n * @param {DOMHandlerScope} scope\n */\n\n\nfunction setTouchTimer(scope) {\n scope.touching = true;\n\n if (scope.touchTimer != null) {\n clearTimeout(scope.touchTimer);\n scope.touchTimer = null;\n }\n\n scope.touchTimer = setTimeout(function () {\n scope.touching = false;\n scope.touchTimer = null;\n }, 700);\n} // Mark touch, which is useful in distinguish touch and\n// mouse event in upper applicatoin.\n\n\nfunction markTouch(event) {\n event && (event.zrByTouch = true);\n} // function markTriggeredFromLocal(event) {\n// event && (event.__zrIsFromLocal = true);\n// }\n// function isTriggeredFromLocal(instance, event) {\n// return !!(event && event.__zrIsFromLocal);\n// }\n\n\nfunction normalizeGlobalEvent(instance, event) {\n // offsetX, offsetY still need to be calculated. They are necessary in the event\n // handlers of the upper applications. Set `true` to force calculate them.\n return normalizeEvent(instance.dom, new FakeGlobalEvent(instance, event), true);\n}\n/**\n * Detect whether the given el is in `painterRoot`.\n */\n\n\nfunction isLocalEl(instance, el) {\n var elTmp = el;\n var isLocal = false;\n\n while (elTmp && elTmp.nodeType !== 9 && !(isLocal = elTmp.domBelongToZr || elTmp !== el && elTmp === instance.painterRoot)) {\n elTmp = elTmp.parentNode;\n }\n\n return isLocal;\n}\n/**\n * Make a fake event but not change the original event,\n * becuase the global event probably be used by other\n * listeners not belonging to zrender.\n * @class\n */\n\n\nfunction FakeGlobalEvent(instance, event) {\n this.type = event.type;\n this.target = this.currentTarget = instance.dom;\n this.pointerType = event.pointerType; // Necessray for the force calculation of zrX, zrY\n\n this.clientX = event.clientX;\n this.clientY = event.clientY; // Because we do not mount global listeners to touch events,\n // we do not copy `targetTouches` and `changedTouches` here.\n}\n\nvar fakeGlobalEventProto = FakeGlobalEvent.prototype; // we make the default methods on the event do nothing,\n// otherwise it is dangerous. See more details in\n// [Drag outside] in `Handler.js`.\n\nfakeGlobalEventProto.stopPropagation = fakeGlobalEventProto.stopImmediatePropagation = fakeGlobalEventProto.preventDefault = zrUtil.noop;\n/**\n * Local DOM Handlers\n * @this {HandlerProxy}\n */\n\nvar localDOMHandlers = {\n mousedown: function (event) {\n event = normalizeEvent(this.dom, event);\n this._mayPointerCapture = [event.zrX, event.zrY];\n this.trigger('mousedown', event);\n },\n mousemove: function (event) {\n event = normalizeEvent(this.dom, event);\n var downPoint = this._mayPointerCapture;\n\n if (downPoint && (event.zrX !== downPoint[0] || event.zrY !== downPoint[1])) {\n togglePointerCapture(this, true);\n }\n\n this.trigger('mousemove', event);\n },\n mouseup: function (event) {\n event = normalizeEvent(this.dom, event);\n togglePointerCapture(this, false);\n this.trigger('mouseup', event);\n },\n mouseout: function (event) {\n event = normalizeEvent(this.dom, event); // Similarly to the browser did on `document` and touch event,\n // `globalout` will be delayed to final pointer cature release.\n\n if (this._pointerCapturing) {\n event.zrEventControl = 'no_globalout';\n } // There might be some doms created by upper layer application\n // at the same level of painter.getViewportRoot() (e.g., tooltip\n // dom created by echarts), where 'globalout' event should not\n // be triggered when mouse enters these doms. (But 'mouseout'\n // should be triggered at the original hovered element as usual).\n\n\n var element = event.toElement || event.relatedTarget;\n event.zrIsToLocalDOM = isLocalEl(this, element);\n this.trigger('mouseout', event);\n },\n touchstart: function (event) {\n // Default mouse behaviour should not be disabled here.\n // For example, page may needs to be slided.\n event = normalizeEvent(this.dom, event);\n markTouch(event);\n this._lastTouchMoment = new Date();\n this.handler.processGesture(event, 'start'); // For consistent event listener for both touch device and mouse device,\n // we simulate \"mouseover-->mousedown\" in touch device. So we trigger\n // `mousemove` here (to trigger `mouseover` inside), and then trigger\n // `mousedown`.\n\n localDOMHandlers.mousemove.call(this, event);\n localDOMHandlers.mousedown.call(this, event);\n },\n touchmove: function (event) {\n event = normalizeEvent(this.dom, event);\n markTouch(event);\n this.handler.processGesture(event, 'change'); // Mouse move should always be triggered no matter whether\n // there is gestrue event, because mouse move and pinch may\n // be used at the same time.\n\n localDOMHandlers.mousemove.call(this, event);\n },\n touchend: function (event) {\n event = normalizeEvent(this.dom, event);\n markTouch(event);\n this.handler.processGesture(event, 'end');\n localDOMHandlers.mouseup.call(this, event); // Do not trigger `mouseout` here, in spite of `mousemove`(`mouseover`) is\n // triggered in `touchstart`. This seems to be illogical, but by this mechanism,\n // we can conveniently implement \"hover style\" in both PC and touch device just\n // by listening to `mouseover` to add \"hover style\" and listening to `mouseout`\n // to remove \"hover style\" on an element, without any additional code for\n // compatibility. (`mouseout` will not be triggered in `touchend`, so \"hover\n // style\" will remain for user view)\n // click event should always be triggered no matter whether\n // there is gestrue event. System click can not be prevented.\n\n if (+new Date() - this._lastTouchMoment < TOUCH_CLICK_DELAY) {\n localDOMHandlers.click.call(this, event);\n }\n },\n pointerdown: function (event) {\n localDOMHandlers.mousedown.call(this, event); // if (useMSGuesture(this, event)) {\n // this._msGesture.addPointer(event.pointerId);\n // }\n },\n pointermove: function (event) {\n // FIXME\n // pointermove is so sensitive that it always triggered when\n // tap(click) on touch screen, which affect some judgement in\n // upper application. So, we dont support mousemove on MS touch\n // device yet.\n if (!isPointerFromTouch(event)) {\n localDOMHandlers.mousemove.call(this, event);\n }\n },\n pointerup: function (event) {\n localDOMHandlers.mouseup.call(this, event);\n },\n pointerout: function (event) {\n // pointerout will be triggered when tap on touch screen\n // (IE11+/Edge on MS Surface) after click event triggered,\n // which is inconsistent with the mousout behavior we defined\n // in touchend. So we unify them.\n // (check localDOMHandlers.touchend for detailed explanation)\n if (!isPointerFromTouch(event)) {\n localDOMHandlers.mouseout.call(this, event);\n }\n }\n};\n/**\n * Othere DOM UI Event handlers for zr dom.\n * @this {HandlerProxy}\n */\n\nzrUtil.each(['click', 'mousewheel', 'dblclick', 'contextmenu'], function (name) {\n localDOMHandlers[name] = function (event) {\n event = normalizeEvent(this.dom, event);\n this.trigger(name, event);\n };\n});\n/**\n * DOM UI Event handlers for global page.\n *\n * [Caution]:\n * those handlers should both support in capture phase and bubble phase!\n *\n * @this {HandlerProxy}\n */\n\nvar globalDOMHandlers = {\n pointermove: function (event) {\n // FIXME\n // pointermove is so sensitive that it always triggered when\n // tap(click) on touch screen, which affect some judgement in\n // upper application. So, we dont support mousemove on MS touch\n // device yet.\n if (!isPointerFromTouch(event)) {\n globalDOMHandlers.mousemove.call(this, event);\n }\n },\n pointerup: function (event) {\n globalDOMHandlers.mouseup.call(this, event);\n },\n mousemove: function (event) {\n this.trigger('mousemove', event);\n },\n mouseup: function (event) {\n var pointerCaptureReleasing = this._pointerCapturing;\n togglePointerCapture(this, false);\n this.trigger('mouseup', event);\n\n if (pointerCaptureReleasing) {\n event.zrEventControl = 'only_globalout';\n this.trigger('mouseout', event);\n }\n }\n};\n/**\n * @param {HandlerProxy} instance\n * @param {DOMHandlerScope} scope\n */\n\nfunction mountLocalDOMEventListeners(instance, scope) {\n var domHandlers = scope.domHandlers;\n\n if (env.pointerEventsSupported) {\n // Only IE11+/Edge\n // 1. On devices that both enable touch and mouse (e.g., MS Surface and lenovo X240),\n // IE11+/Edge do not trigger touch event, but trigger pointer event and mouse event\n // at the same time.\n // 2. On MS Surface, it probablely only trigger mousedown but no mouseup when tap on\n // screen, which do not occurs in pointer event.\n // So we use pointer event to both detect touch gesture and mouse behavior.\n zrUtil.each(localNativeListenerNames.pointer, function (nativeEventName) {\n mountSingleDOMEventListener(scope, nativeEventName, function (event) {\n // markTriggeredFromLocal(event);\n domHandlers[nativeEventName].call(instance, event);\n });\n }); // FIXME\n // Note: MS Gesture require CSS touch-action set. But touch-action is not reliable,\n // which does not prevent defuault behavior occasionally (which may cause view port\n // zoomed in but use can not zoom it back). And event.preventDefault() does not work.\n // So we have to not to use MSGesture and not to support touchmove and pinch on MS\n // touch screen. And we only support click behavior on MS touch screen now.\n // MS Gesture Event is only supported on IE11+/Edge and on Windows 8+.\n // We dont support touch on IE on win7.\n // See \n // if (typeof MSGesture === 'function') {\n // (this._msGesture = new MSGesture()).target = dom; // jshint ignore:line\n // dom.addEventListener('MSGestureChange', onMSGestureChange);\n // }\n } else {\n if (env.touchEventsSupported) {\n zrUtil.each(localNativeListenerNames.touch, function (nativeEventName) {\n mountSingleDOMEventListener(scope, nativeEventName, function (event) {\n // markTriggeredFromLocal(event);\n domHandlers[nativeEventName].call(instance, event);\n setTouchTimer(scope);\n });\n }); // Handler of 'mouseout' event is needed in touch mode, which will be mounted below.\n // addEventListener(root, 'mouseout', this._mouseoutHandler);\n } // 1. Considering some devices that both enable touch and mouse event (like on MS Surface\n // and lenovo X240, @see #2350), we make mouse event be always listened, otherwise\n // mouse event can not be handle in those devices.\n // 2. On MS Surface, Chrome will trigger both touch event and mouse event. How to prevent\n // mouseevent after touch event triggered, see `setTouchTimer`.\n\n\n zrUtil.each(localNativeListenerNames.mouse, function (nativeEventName) {\n mountSingleDOMEventListener(scope, nativeEventName, function (event) {\n event = getNativeEvent(event);\n\n if (!scope.touching) {\n // markTriggeredFromLocal(event);\n domHandlers[nativeEventName].call(instance, event);\n }\n });\n });\n }\n}\n/**\n * @param {HandlerProxy} instance\n * @param {DOMHandlerScope} scope\n */\n\n\nfunction mountGlobalDOMEventListeners(instance, scope) {\n // Only IE11+/Edge. See the comment in `mountLocalDOMEventListeners`.\n if (env.pointerEventsSupported) {\n zrUtil.each(globalNativeListenerNames.pointer, mount);\n } // Touch event has implemented \"drag outside\" so we do not mount global listener for touch event.\n // (see https://www.w3.org/TR/touch-events/#the-touchmove-event)\n // We do not consider \"both-support-touch-and-mouse device\" for this feature (see the comment of\n // `mountLocalDOMEventListeners`) to avoid bugs util some requirements come.\n else if (!env.touchEventsSupported) {\n zrUtil.each(globalNativeListenerNames.mouse, mount);\n }\n\n function mount(nativeEventName) {\n function nativeEventListener(event) {\n event = getNativeEvent(event); // See the reason in [Drag outside] in `Handler.js`\n // This checking supports both `useCapture` or not.\n // PENDING: if there is performance issue in some devices,\n // we probably can not use `useCapture` and change a easier\n // to judes whether local (mark).\n\n if (!isLocalEl(instance, event.target)) {\n event = normalizeGlobalEvent(instance, event);\n scope.domHandlers[nativeEventName].call(instance, event);\n }\n }\n\n mountSingleDOMEventListener(scope, nativeEventName, nativeEventListener, {\n capture: true\n } // See [Drag Outside] in `Handler.js`\n );\n }\n}\n\nfunction mountSingleDOMEventListener(scope, nativeEventName, listener, opt) {\n scope.mounted[nativeEventName] = listener;\n scope.listenerOpts[nativeEventName] = opt;\n addEventListener(scope.domTarget, eventNameFix(nativeEventName), listener, opt);\n}\n\nfunction unmountDOMEventListeners(scope) {\n var mounted = scope.mounted;\n\n for (var nativeEventName in mounted) {\n if (mounted.hasOwnProperty(nativeEventName)) {\n removeEventListener(scope.domTarget, eventNameFix(nativeEventName), mounted[nativeEventName], scope.listenerOpts[nativeEventName]);\n }\n }\n\n scope.mounted = {};\n}\n/**\n * See [Drag Outside] in `Handler.js`.\n * @implement\n * @param {boolean} isPointerCapturing Should never be `null`/`undefined`.\n * `true`: start to capture pointer if it is not capturing.\n * `false`: end the capture if it is capturing.\n */\n\n\nfunction togglePointerCapture(instance, isPointerCapturing) {\n instance._mayPointerCapture = null;\n\n if (globalEventSupported && instance._pointerCapturing ^ isPointerCapturing) {\n instance._pointerCapturing = isPointerCapturing;\n var globalHandlerScope = instance._globalHandlerScope;\n isPointerCapturing ? mountGlobalDOMEventListeners(instance, globalHandlerScope) : unmountDOMEventListeners(globalHandlerScope);\n }\n}\n/**\n * @inner\n * @class\n */\n\n\nfunction DOMHandlerScope(domTarget, domHandlers) {\n this.domTarget = domTarget;\n this.domHandlers = domHandlers; // Key: eventName, value: mounted handler funcitons.\n // Used for unmount.\n\n this.mounted = {};\n this.listenerOpts = {};\n this.touchTimer = null;\n this.touching = false;\n}\n/**\n * @public\n * @class\n */\n\n\nfunction HandlerDomProxy(dom, painterRoot) {\n Eventful.call(this);\n this.dom = dom;\n this.painterRoot = painterRoot;\n this._localHandlerScope = new DOMHandlerScope(dom, localDOMHandlers);\n\n if (globalEventSupported) {\n this._globalHandlerScope = new DOMHandlerScope(document, globalDOMHandlers);\n }\n /**\n * @type {boolean}\n */\n\n\n this._pointerCapturing = false;\n /**\n * @type {Array.} [x, y] or null.\n */\n\n this._mayPointerCapture = null;\n mountLocalDOMEventListeners(this, this._localHandlerScope);\n}\n\nvar handlerDomProxyProto = HandlerDomProxy.prototype;\n\nhandlerDomProxyProto.dispose = function () {\n unmountDOMEventListeners(this._localHandlerScope);\n\n if (globalEventSupported) {\n unmountDOMEventListeners(this._globalHandlerScope);\n }\n};\n\nhandlerDomProxyProto.setCursor = function (cursorStyle) {\n this.dom.style && (this.dom.style.cursor = cursorStyle || 'default');\n};\n\nzrUtil.mixin(HandlerDomProxy, Eventful);\nvar _default = HandlerDomProxy;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar createHashMap = _util.createHashMap;\nvar each = _util.each;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// (1) [Caution]: the logic is correct based on the premises:\n// data processing stage is blocked in stream.\n// See \n// (2) Only register once when import repeatly.\n// Should be executed after series filtered and before stack calculation.\nfunction _default(ecModel) {\n var stackInfoMap = createHashMap();\n ecModel.eachSeries(function (seriesModel) {\n var stack = seriesModel.get('stack'); // Compatibal: when `stack` is set as '', do not stack.\n\n if (stack) {\n var stackInfoList = stackInfoMap.get(stack) || stackInfoMap.set(stack, []);\n var data = seriesModel.getData();\n var stackInfo = {\n // Used for calculate axis extent automatically.\n stackResultDimension: data.getCalculationInfo('stackResultDimension'),\n stackedOverDimension: data.getCalculationInfo('stackedOverDimension'),\n stackedDimension: data.getCalculationInfo('stackedDimension'),\n stackedByDimension: data.getCalculationInfo('stackedByDimension'),\n isStackedByIndex: data.getCalculationInfo('isStackedByIndex'),\n data: data,\n seriesModel: seriesModel\n }; // If stacked on axis that do not support data stack.\n\n if (!stackInfo.stackedDimension || !(stackInfo.isStackedByIndex || stackInfo.stackedByDimension)) {\n return;\n }\n\n stackInfoList.length && data.setCalculationInfo('stackedOnSeries', stackInfoList[stackInfoList.length - 1].seriesModel);\n stackInfoList.push(stackInfo);\n }\n });\n stackInfoMap.each(calculateStack);\n}\n\nfunction calculateStack(stackInfoList) {\n each(stackInfoList, function (targetStackInfo, idxInStack) {\n var resultVal = [];\n var resultNaN = [NaN, NaN];\n var dims = [targetStackInfo.stackResultDimension, targetStackInfo.stackedOverDimension];\n var targetData = targetStackInfo.data;\n var isStackedByIndex = targetStackInfo.isStackedByIndex; // Should not write on raw data, because stack series model list changes\n // depending on legend selection.\n\n var newData = targetData.map(dims, function (v0, v1, dataIndex) {\n var sum = targetData.get(targetStackInfo.stackedDimension, dataIndex); // Consider `connectNulls` of line area, if value is NaN, stackedOver\n // should also be NaN, to draw a appropriate belt area.\n\n if (isNaN(sum)) {\n return resultNaN;\n }\n\n var byValue;\n var stackedDataRawIndex;\n\n if (isStackedByIndex) {\n stackedDataRawIndex = targetData.getRawIndex(dataIndex);\n } else {\n byValue = targetData.get(targetStackInfo.stackedByDimension, dataIndex);\n } // If stackOver is NaN, chart view will render point on value start.\n\n\n var stackedOver = NaN;\n\n for (var j = idxInStack - 1; j >= 0; j--) {\n var stackInfo = stackInfoList[j]; // Has been optimized by inverted indices on `stackedByDimension`.\n\n if (!isStackedByIndex) {\n stackedDataRawIndex = stackInfo.data.rawIndexOf(stackInfo.stackedByDimension, byValue);\n }\n\n if (stackedDataRawIndex >= 0) {\n var val = stackInfo.data.getByRawIndex(stackInfo.stackResultDimension, stackedDataRawIndex); // Considering positive stack, negative stack and empty data\n\n if (sum >= 0 && val > 0 || // Positive stack\n sum <= 0 && val < 0 // Negative stack\n ) {\n sum += val;\n stackedOver = val;\n break;\n }\n }\n }\n\n resultVal[0] = sum;\n resultVal[1] = stackedOver;\n return resultVal;\n });\n targetData.hostModel.setData(newData); // Update for consequent calculation\n\n targetStackInfo.data = newData;\n });\n}\n\nmodule.exports = _default;","import { Vue, mergeData } from '../../vue';\nimport { NAME_INPUT_GROUP_TEXT } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n tag: makeProp(PROP_TYPE_STRING, 'div')\n}, NAME_INPUT_GROUP_TEXT); // --- Main component ---\n// @vue/component\n\nexport var BInputGroupText = /*#__PURE__*/Vue.extend({\n name: NAME_INPUT_GROUP_TEXT,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h(props.tag, mergeData(data, {\n staticClass: 'input-group-text'\n }), children);\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue, mergeData } from '../../vue';\nimport { NAME_LIST_GROUP_ITEM } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { arrayIncludes } from '../../utils/array';\nimport { isTag } from '../../utils/dom';\nimport { omit, sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable, pluckProps } from '../../utils/props';\nimport { isLink } from '../../utils/router';\nimport { BLink, props as BLinkProps } from '../link/link'; // --- Constants ---\n\nvar actionTags = ['a', 'router-link', 'button', 'b-link']; // --- Props ---\n\nvar linkProps = omit(BLinkProps, ['event', 'routerTag']);\ndelete linkProps.href.default;\ndelete linkProps.to.default;\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, linkProps), {}, {\n action: makeProp(PROP_TYPE_BOOLEAN, false),\n button: makeProp(PROP_TYPE_BOOLEAN, false),\n tag: makeProp(PROP_TYPE_STRING, 'div'),\n variant: makeProp(PROP_TYPE_STRING)\n})), NAME_LIST_GROUP_ITEM); // --- Main component ---\n// @vue/component\n\nexport var BListGroupItem = /*#__PURE__*/Vue.extend({\n name: NAME_LIST_GROUP_ITEM,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var _class;\n\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var button = props.button,\n variant = props.variant,\n active = props.active,\n disabled = props.disabled;\n var link = isLink(props);\n var tag = button ? 'button' : !link ? props.tag : BLink;\n var action = !!(props.action || link || button || arrayIncludes(actionTags, props.tag));\n var attrs = {};\n var itemProps = {};\n\n if (isTag(tag, 'button')) {\n if (!data.attrs || !data.attrs.type) {\n // Add a type for button is one not provided in passed attributes\n attrs.type = 'button';\n }\n\n if (props.disabled) {\n // Set disabled attribute if button and disabled\n attrs.disabled = true;\n }\n } else {\n itemProps = pluckProps(linkProps, props);\n }\n\n return h(tag, mergeData(data, {\n attrs: attrs,\n props: itemProps,\n staticClass: 'list-group-item',\n class: (_class = {}, _defineProperty(_class, \"list-group-item-\".concat(variant), variant), _defineProperty(_class, 'list-group-item-action', action), _defineProperty(_class, \"active\", active), _defineProperty(_class, \"disabled\", disabled), _class)\n }), children);\n }\n});","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.iterator` well-known symbol\n// https://tc39.github.io/ecma262/#sec-symbol.iterator\ndefineWellKnownSymbol('iterator');\n","var util = require(\"./core/util\");\n\nvar vec2 = require(\"./core/vector\");\n\nvar Draggable = require(\"./mixin/Draggable\");\n\nvar Eventful = require(\"./mixin/Eventful\");\n\nvar eventTool = require(\"./core/event\");\n\nvar GestureMgr = require(\"./core/GestureMgr\");\n\n/**\n * [The interface between `Handler` and `HandlerProxy`]:\n *\n * The default `HandlerProxy` only support the common standard web environment\n * (e.g., standalone browser, headless browser, embed browser in mobild APP, ...).\n * But `HandlerProxy` can be replaced to support more non-standard environment\n * (e.g., mini app), or to support more feature that the default `HandlerProxy`\n * not provided (like echarts-gl did).\n * So the interface between `Handler` and `HandlerProxy` should be stable. Do not\n * make break changes util inevitable. The interface include the public methods\n * of `Handler` and the events listed in `handlerNames` below, by which `HandlerProxy`\n * drives `Handler`.\n */\n\n/**\n * [Drag outside]:\n *\n * That is, triggering `mousemove` and `mouseup` event when the pointer is out of the\n * zrender area when dragging. That is important for the improvement of the user experience\n * when dragging something near the boundary without being terminated unexpectedly.\n *\n * We originally consider to introduce new events like `pagemovemove` and `pagemouseup`\n * to resolve this issue. But some drawbacks of it is described in\n * https://github.com/ecomfe/zrender/pull/536#issuecomment-560286899\n *\n * Instead, we referenced the specifications:\n * https://www.w3.org/TR/touch-events/#the-touchmove-event\n * https://www.w3.org/TR/2014/WD-DOM-Level-3-Events-20140925/#event-type-mousemove\n * where the the mousemove/touchmove can be continue to fire if the user began a drag\n * operation and the pointer has left the boundary. (for the mouse event, browsers\n * only do it on `document` and when the pointer has left the boundary of the browser.)\n *\n * So the default `HandlerProxy` supports this feature similarly: if it is in the dragging\n * state (see `pointerCapture` in `HandlerProxy`), the `mousemove` and `mouseup` continue\n * to fire until release the pointer. That is implemented by listen to those event on\n * `document`.\n * If we implement some other `HandlerProxy` only for touch device, that would be easier.\n * The touch event support this feature by default.\n *\n * Note:\n * There might be some cases that the mouse event can not be\n * received on `document`. For example,\n * (A) `useCapture` is not supported and some user defined event listeners on the ancestor\n * of zr dom throw Error .\n * (B) `useCapture` is not supported Some user defined event listeners on the ancestor of\n * zr dom call `stopPropagation`.\n * In these cases, the `mousemove` event might be keep triggered event\n * if the mouse is released. We try to reduce the side-effect in those cases.\n * That is, do nothing (especially, `findHover`) in those cases. See `isOutsideBoundary`.\n *\n * Note:\n * If `HandlerProxy` listens to `document` with `useCapture`, `HandlerProxy` needs to\n * make sure `stopPropagation` and `preventDefault` doing nothing if and only if the event\n * target is not zrender dom. Becuase it is dangerous to enable users to call them in\n * `document` capture phase to prevent the propagation to any listener of the webpage.\n * But they are needed to work when the pointer inside the zrender dom.\n */\nvar SILENT = 'silent';\n\nfunction makeEventPacket(eveType, targetInfo, event) {\n return {\n type: eveType,\n event: event,\n // target can only be an element that is not silent.\n target: targetInfo.target,\n // topTarget can be a silent element.\n topTarget: targetInfo.topTarget,\n cancelBubble: false,\n offsetX: event.zrX,\n offsetY: event.zrY,\n gestureEvent: event.gestureEvent,\n pinchX: event.pinchX,\n pinchY: event.pinchY,\n pinchScale: event.pinchScale,\n wheelDelta: event.zrDelta,\n zrByTouch: event.zrByTouch,\n which: event.which,\n stop: stopEvent\n };\n}\n\nfunction stopEvent() {\n eventTool.stop(this.event);\n}\n\nfunction EmptyProxy() {}\n\nEmptyProxy.prototype.dispose = function () {};\n\nvar handlerNames = ['click', 'dblclick', 'mousewheel', 'mouseout', 'mouseup', 'mousedown', 'mousemove', 'contextmenu'];\n/**\n * @alias module:zrender/Handler\n * @constructor\n * @extends module:zrender/mixin/Eventful\n * @param {module:zrender/Storage} storage Storage instance.\n * @param {module:zrender/Painter} painter Painter instance.\n * @param {module:zrender/dom/HandlerProxy} proxy HandlerProxy instance.\n * @param {HTMLElement} painterRoot painter.root (not painter.getViewportRoot()).\n */\n\nvar Handler = function (storage, painter, proxy, painterRoot) {\n Eventful.call(this);\n this.storage = storage;\n this.painter = painter;\n this.painterRoot = painterRoot;\n proxy = proxy || new EmptyProxy();\n /**\n * Proxy of event. can be Dom, WebGLSurface, etc.\n */\n\n this.proxy = null;\n /**\n * {target, topTarget, x, y}\n * @private\n * @type {Object}\n */\n\n this._hovered = {};\n /**\n * @private\n * @type {Date}\n */\n\n this._lastTouchMoment;\n /**\n * @private\n * @type {number}\n */\n\n this._lastX;\n /**\n * @private\n * @type {number}\n */\n\n this._lastY;\n /**\n * @private\n * @type {module:zrender/core/GestureMgr}\n */\n\n this._gestureMgr;\n Draggable.call(this);\n this.setHandlerProxy(proxy);\n};\n\nHandler.prototype = {\n constructor: Handler,\n setHandlerProxy: function (proxy) {\n if (this.proxy) {\n this.proxy.dispose();\n }\n\n if (proxy) {\n util.each(handlerNames, function (name) {\n proxy.on && proxy.on(name, this[name], this);\n }, this); // Attach handler\n\n proxy.handler = this;\n }\n\n this.proxy = proxy;\n },\n mousemove: function (event) {\n var x = event.zrX;\n var y = event.zrY;\n var isOutside = isOutsideBoundary(this, x, y);\n var lastHovered = this._hovered;\n var lastHoveredTarget = lastHovered.target; // If lastHoveredTarget is removed from zr (detected by '__zr') by some API call\n // (like 'setOption' or 'dispatchAction') in event handlers, we should find\n // lastHovered again here. Otherwise 'mouseout' can not be triggered normally.\n // See #6198.\n\n if (lastHoveredTarget && !lastHoveredTarget.__zr) {\n lastHovered = this.findHover(lastHovered.x, lastHovered.y);\n lastHoveredTarget = lastHovered.target;\n }\n\n var hovered = this._hovered = isOutside ? {\n x: x,\n y: y\n } : this.findHover(x, y);\n var hoveredTarget = hovered.target;\n var proxy = this.proxy;\n proxy.setCursor && proxy.setCursor(hoveredTarget ? hoveredTarget.cursor : 'default'); // Mouse out on previous hovered element\n\n if (lastHoveredTarget && hoveredTarget !== lastHoveredTarget) {\n this.dispatchToElement(lastHovered, 'mouseout', event);\n } // Mouse moving on one element\n\n\n this.dispatchToElement(hovered, 'mousemove', event); // Mouse over on a new element\n\n if (hoveredTarget && hoveredTarget !== lastHoveredTarget) {\n this.dispatchToElement(hovered, 'mouseover', event);\n }\n },\n mouseout: function (event) {\n var eventControl = event.zrEventControl;\n var zrIsToLocalDOM = event.zrIsToLocalDOM;\n\n if (eventControl !== 'only_globalout') {\n this.dispatchToElement(this._hovered, 'mouseout', event);\n }\n\n if (eventControl !== 'no_globalout') {\n // FIXME: if the pointer moving from the extra doms to realy \"outside\",\n // the `globalout` should have been triggered. But currently not.\n !zrIsToLocalDOM && this.trigger('globalout', {\n type: 'globalout',\n event: event\n });\n }\n },\n\n /**\n * Resize\n */\n resize: function (event) {\n this._hovered = {};\n },\n\n /**\n * Dispatch event\n * @param {string} eventName\n * @param {event=} eventArgs\n */\n dispatch: function (eventName, eventArgs) {\n var handler = this[eventName];\n handler && handler.call(this, eventArgs);\n },\n\n /**\n * Dispose\n */\n dispose: function () {\n this.proxy.dispose();\n this.storage = this.proxy = this.painter = null;\n },\n\n /**\n * 设置默认的cursor style\n * @param {string} [cursorStyle='default'] 例如 crosshair\n */\n setCursorStyle: function (cursorStyle) {\n var proxy = this.proxy;\n proxy.setCursor && proxy.setCursor(cursorStyle);\n },\n\n /**\n * 事件分发代理\n *\n * @private\n * @param {Object} targetInfo {target, topTarget} 目标图形元素\n * @param {string} eventName 事件名称\n * @param {Object} event 事件对象\n */\n dispatchToElement: function (targetInfo, eventName, event) {\n targetInfo = targetInfo || {};\n var el = targetInfo.target;\n\n if (el && el.silent) {\n return;\n }\n\n var eventHandler = 'on' + eventName;\n var eventPacket = makeEventPacket(eventName, targetInfo, event);\n\n while (el) {\n el[eventHandler] && (eventPacket.cancelBubble = el[eventHandler].call(el, eventPacket));\n el.trigger(eventName, eventPacket);\n el = el.parent;\n\n if (eventPacket.cancelBubble) {\n break;\n }\n }\n\n if (!eventPacket.cancelBubble) {\n // 冒泡到顶级 zrender 对象\n this.trigger(eventName, eventPacket); // 分发事件到用户自定义层\n // 用户有可能在全局 click 事件中 dispose,所以需要判断下 painter 是否存在\n\n this.painter && this.painter.eachOtherLayer(function (layer) {\n if (typeof layer[eventHandler] === 'function') {\n layer[eventHandler].call(layer, eventPacket);\n }\n\n if (layer.trigger) {\n layer.trigger(eventName, eventPacket);\n }\n });\n }\n },\n\n /**\n * @private\n * @param {number} x\n * @param {number} y\n * @param {module:zrender/graphic/Displayable} exclude\n * @return {model:zrender/Element}\n * @method\n */\n findHover: function (x, y, exclude) {\n var list = this.storage.getDisplayList();\n var out = {\n x: x,\n y: y\n };\n\n for (var i = list.length - 1; i >= 0; i--) {\n var hoverCheckResult;\n\n if (list[i] !== exclude // getDisplayList may include ignored item in VML mode\n && !list[i].ignore && (hoverCheckResult = isHover(list[i], x, y))) {\n !out.topTarget && (out.topTarget = list[i]);\n\n if (hoverCheckResult !== SILENT) {\n out.target = list[i];\n break;\n }\n }\n }\n\n return out;\n },\n processGesture: function (event, stage) {\n if (!this._gestureMgr) {\n this._gestureMgr = new GestureMgr();\n }\n\n var gestureMgr = this._gestureMgr;\n stage === 'start' && gestureMgr.clear();\n var gestureInfo = gestureMgr.recognize(event, this.findHover(event.zrX, event.zrY, null).target, this.proxy.dom);\n stage === 'end' && gestureMgr.clear(); // Do not do any preventDefault here. Upper application do that if necessary.\n\n if (gestureInfo) {\n var type = gestureInfo.type;\n event.gestureEvent = type;\n this.dispatchToElement({\n target: gestureInfo.target\n }, type, gestureInfo.event);\n }\n }\n}; // Common handlers\n\nutil.each(['click', 'mousedown', 'mouseup', 'mousewheel', 'dblclick', 'contextmenu'], function (name) {\n Handler.prototype[name] = function (event) {\n var x = event.zrX;\n var y = event.zrY;\n var isOutside = isOutsideBoundary(this, x, y);\n var hovered;\n var hoveredTarget;\n\n if (name !== 'mouseup' || !isOutside) {\n // Find hover again to avoid click event is dispatched manually. Or click is triggered without mouseover\n hovered = this.findHover(x, y);\n hoveredTarget = hovered.target;\n }\n\n if (name === 'mousedown') {\n this._downEl = hoveredTarget;\n this._downPoint = [event.zrX, event.zrY]; // In case click triggered before mouseup\n\n this._upEl = hoveredTarget;\n } else if (name === 'mouseup') {\n this._upEl = hoveredTarget;\n } else if (name === 'click') {\n if (this._downEl !== this._upEl // Original click event is triggered on the whole canvas element,\n // including the case that `mousedown` - `mousemove` - `mouseup`,\n // which should be filtered, otherwise it will bring trouble to\n // pan and zoom.\n || !this._downPoint // Arbitrary value\n || vec2.dist(this._downPoint, [event.zrX, event.zrY]) > 4) {\n return;\n }\n\n this._downPoint = null;\n }\n\n this.dispatchToElement(hovered, name, event);\n };\n});\n\nfunction isHover(displayable, x, y) {\n if (displayable[displayable.rectHover ? 'rectContain' : 'contain'](x, y)) {\n var el = displayable;\n var isSilent;\n\n while (el) {\n // If clipped by ancestor.\n // FIXME: If clipPath has neither stroke nor fill,\n // el.clipPath.contain(x, y) will always return false.\n if (el.clipPath && !el.clipPath.contain(x, y)) {\n return false;\n }\n\n if (el.silent) {\n isSilent = true;\n }\n\n el = el.parent;\n }\n\n return isSilent ? SILENT : true;\n }\n\n return false;\n}\n/**\n * See [Drag outside].\n */\n\n\nfunction isOutsideBoundary(handlerInstance, x, y) {\n var painter = handlerInstance.painter;\n return x < 0 || x > painter.getWidth() || y < 0 || y > painter.getHeight();\n}\n\nutil.mixin(Handler, Eventful);\nutil.mixin(Handler, Draggable);\nvar _default = Handler;\nmodule.exports = _default;","var _watch, _methods;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../vue';\nimport { PROP_TYPE_ANY, PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../constants/props';\nimport { EVENT_NAME_CHANGE } from '../constants/events';\nimport { attemptBlur, attemptFocus } from '../utils/dom';\nimport { isBoolean } from '../utils/inspect';\nimport { looseEqual } from '../utils/loose-equal';\nimport { makeModelMixin } from '../utils/model';\nimport { sortKeys } from '../utils/object';\nimport { makeProp, makePropsConfigurable } from '../utils/props';\nimport { attrsMixin } from './attrs';\nimport { formControlMixin, props as formControlProps } from './form-control';\nimport { formCustomMixin, props as formCustomProps } from './form-custom';\nimport { formSizeMixin, props as formSizeProps } from './form-size';\nimport { formStateMixin, props as formStateProps } from './form-state';\nimport { idMixin, props as idProps } from './id';\nimport { normalizeSlotMixin } from './normalize-slot'; // --- Constants ---\n\nvar _makeModelMixin = makeModelMixin('checked', {\n defaultValue: null\n}),\n modelMixin = _makeModelMixin.mixin,\n modelProps = _makeModelMixin.props,\n MODEL_PROP_NAME = _makeModelMixin.prop,\n MODEL_EVENT_NAME = _makeModelMixin.event;\n\nexport { MODEL_PROP_NAME, MODEL_EVENT_NAME }; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, idProps), modelProps), formControlProps), formSizeProps), formStateProps), formCustomProps), {}, {\n ariaLabel: makeProp(PROP_TYPE_STRING),\n ariaLabelledby: makeProp(PROP_TYPE_STRING),\n // Only applicable in standalone mode (non group)\n button: makeProp(PROP_TYPE_BOOLEAN, false),\n // Only applicable when rendered with button style\n buttonVariant: makeProp(PROP_TYPE_STRING),\n inline: makeProp(PROP_TYPE_BOOLEAN, false),\n value: makeProp(PROP_TYPE_ANY)\n})), 'formRadioCheckControls'); // --- Mixin ---\n// @vue/component\n\nexport var formRadioCheckMixin = Vue.extend({\n mixins: [attrsMixin, idMixin, modelMixin, normalizeSlotMixin, formControlMixin, formSizeMixin, formStateMixin, formCustomMixin],\n inheritAttrs: false,\n props: props,\n data: function data() {\n return {\n localChecked: this.isGroup ? this.bvGroup[MODEL_PROP_NAME] : this[MODEL_PROP_NAME],\n hasFocus: false\n };\n },\n computed: {\n computedLocalChecked: {\n get: function get() {\n return this.isGroup ? this.bvGroup.localChecked : this.localChecked;\n },\n set: function set(value) {\n if (this.isGroup) {\n this.bvGroup.localChecked = value;\n } else {\n this.localChecked = value;\n }\n }\n },\n isChecked: function isChecked() {\n return looseEqual(this.value, this.computedLocalChecked);\n },\n isRadio: function isRadio() {\n return true;\n },\n isGroup: function isGroup() {\n // Is this check/radio a child of check-group or radio-group?\n return !!this.bvGroup;\n },\n isBtnMode: function isBtnMode() {\n // Support button style in single input mode\n return this.isGroup ? this.bvGroup.buttons : this.button;\n },\n isPlain: function isPlain() {\n return this.isBtnMode ? false : this.isGroup ? this.bvGroup.plain : this.plain;\n },\n isCustom: function isCustom() {\n return this.isBtnMode ? false : !this.isPlain;\n },\n isSwitch: function isSwitch() {\n // Custom switch styling (checkboxes only)\n return this.isBtnMode || this.isRadio || this.isPlain ? false : this.isGroup ? this.bvGroup.switches : this.switch;\n },\n isInline: function isInline() {\n return this.isGroup ? this.bvGroup.inline : this.inline;\n },\n isDisabled: function isDisabled() {\n // Child can be disabled while parent isn't, but is always disabled if group is\n return this.isGroup ? this.bvGroup.disabled || this.disabled : this.disabled;\n },\n isRequired: function isRequired() {\n // Required only works when a name is provided for the input(s)\n // Child can only be required when parent is\n // Groups will always have a name (either user supplied or auto generated)\n return this.computedName && (this.isGroup ? this.bvGroup.required : this.required);\n },\n computedName: function computedName() {\n // Group name preferred over local name\n return (this.isGroup ? this.bvGroup.groupName : this.name) || null;\n },\n computedForm: function computedForm() {\n return (this.isGroup ? this.bvGroup.form : this.form) || null;\n },\n computedSize: function computedSize() {\n return (this.isGroup ? this.bvGroup.size : this.size) || '';\n },\n computedState: function computedState() {\n return this.isGroup ? this.bvGroup.computedState : isBoolean(this.state) ? this.state : null;\n },\n computedButtonVariant: function computedButtonVariant() {\n // Local variant preferred over group variant\n var buttonVariant = this.buttonVariant;\n\n if (buttonVariant) {\n return buttonVariant;\n }\n\n if (this.isGroup && this.bvGroup.buttonVariant) {\n return this.bvGroup.buttonVariant;\n }\n\n return 'secondary';\n },\n buttonClasses: function buttonClasses() {\n var _ref;\n\n var computedSize = this.computedSize;\n return ['btn', \"btn-\".concat(this.computedButtonVariant), (_ref = {}, _defineProperty(_ref, \"btn-\".concat(computedSize), computedSize), _defineProperty(_ref, \"disabled\", this.isDisabled), _defineProperty(_ref, \"active\", this.isChecked), _defineProperty(_ref, \"focus\", this.hasFocus), _ref)];\n },\n computedAttrs: function computedAttrs() {\n var disabled = this.isDisabled,\n required = this.isRequired;\n return _objectSpread(_objectSpread({}, this.bvAttrs), {}, {\n id: this.safeId(),\n type: this.isRadio ? 'radio' : 'checkbox',\n name: this.computedName,\n form: this.computedForm,\n disabled: disabled,\n required: required,\n 'aria-required': required || null,\n 'aria-label': this.ariaLabel || null,\n 'aria-labelledby': this.ariaLabelledby || null\n });\n }\n },\n watch: (_watch = {}, _defineProperty(_watch, MODEL_PROP_NAME, function () {\n this[\"\".concat(MODEL_PROP_NAME, \"Watcher\")].apply(this, arguments);\n }), _defineProperty(_watch, \"computedLocalChecked\", function computedLocalChecked() {\n this.computedLocalCheckedWatcher.apply(this, arguments);\n }), _watch),\n methods: (_methods = {}, _defineProperty(_methods, \"\".concat(MODEL_PROP_NAME, \"Watcher\"), function Watcher(newValue) {\n if (!looseEqual(newValue, this.computedLocalChecked)) {\n this.computedLocalChecked = newValue;\n }\n }), _defineProperty(_methods, \"computedLocalCheckedWatcher\", function computedLocalCheckedWatcher(newValue, oldValue) {\n if (!looseEqual(newValue, oldValue)) {\n this.$emit(MODEL_EVENT_NAME, newValue);\n }\n }), _defineProperty(_methods, \"handleChange\", function handleChange(_ref2) {\n var _this = this;\n\n var checked = _ref2.target.checked;\n var value = this.value;\n var localChecked = checked ? value : null;\n this.computedLocalChecked = value; // Fire events in a `$nextTick()` to ensure the `v-model` is updated\n\n this.$nextTick(function () {\n // Change is only emitted on user interaction\n _this.$emit(EVENT_NAME_CHANGE, localChecked); // If this is a child of a group, we emit a change event on it as well\n\n\n if (_this.isGroup) {\n _this.bvGroup.$emit(EVENT_NAME_CHANGE, localChecked);\n }\n });\n }), _defineProperty(_methods, \"handleFocus\", function handleFocus(event) {\n // When in buttons mode, we need to add 'focus' class to label when input focused\n // As it is the hidden input which has actual focus\n if (event.target) {\n if (event.type === 'focus') {\n this.hasFocus = true;\n } else if (event.type === 'blur') {\n this.hasFocus = false;\n }\n }\n }), _defineProperty(_methods, \"focus\", function focus() {\n if (!this.isDisabled) {\n attemptFocus(this.$refs.input);\n }\n }), _defineProperty(_methods, \"blur\", function blur() {\n if (!this.isDisabled) {\n attemptBlur(this.$refs.input);\n }\n }), _methods),\n render: function render(h) {\n var isRadio = this.isRadio,\n isBtnMode = this.isBtnMode,\n isPlain = this.isPlain,\n isCustom = this.isCustom,\n isInline = this.isInline,\n isSwitch = this.isSwitch,\n computedSize = this.computedSize,\n bvAttrs = this.bvAttrs;\n var $content = this.normalizeSlot();\n var $input = h('input', {\n class: [{\n 'form-check-input': isPlain,\n 'custom-control-input': isCustom,\n // https://github.com/bootstrap-vue/bootstrap-vue/issues/2911\n 'position-static': isPlain && !$content\n }, isBtnMode ? '' : this.stateClass],\n directives: [{\n name: 'model',\n value: this.computedLocalChecked\n }],\n attrs: this.computedAttrs,\n domProps: {\n value: this.value,\n checked: this.isChecked\n },\n on: _objectSpread({\n change: this.handleChange\n }, isBtnMode ? {\n focus: this.handleFocus,\n blur: this.handleFocus\n } : {}),\n key: 'input',\n ref: 'input'\n });\n\n if (isBtnMode) {\n var $button = h('label', {\n class: this.buttonClasses\n }, [$input, $content]);\n\n if (!this.isGroup) {\n // Standalone button mode, so wrap in 'btn-group-toggle'\n // and flag it as inline-block to mimic regular buttons\n $button = h('div', {\n class: ['btn-group-toggle', 'd-inline-block']\n }, [$button]);\n }\n\n return $button;\n } // If no label content in plain mode we dont render the label\n // See: https://github.com/bootstrap-vue/bootstrap-vue/issues/2911\n\n\n var $label = h();\n\n if (!(isPlain && !$content)) {\n $label = h('label', {\n class: {\n 'form-check-label': isPlain,\n 'custom-control-label': isCustom\n },\n attrs: {\n for: this.safeId()\n }\n }, $content);\n }\n\n return h('div', {\n class: [_defineProperty({\n 'form-check': isPlain,\n 'form-check-inline': isPlain && isInline,\n 'custom-control': isCustom,\n 'custom-control-inline': isCustom && isInline,\n 'custom-checkbox': isCustom && !isRadio && !isSwitch,\n 'custom-switch': isSwitch,\n 'custom-radio': isCustom && isRadio\n }, \"b-custom-control-\".concat(computedSize), computedSize && !isBtnMode), bvAttrs.class],\n style: bvAttrs.style\n }, [$input, $label]);\n }\n});","var Path = require(\"../Path\");\n\nvar polyHelper = require(\"../helper/poly\");\n\n/**\n * @module zrender/graphic/shape/Polyline\n */\nvar _default = Path.extend({\n type: 'polyline',\n shape: {\n points: null,\n smooth: false,\n smoothConstraint: null\n },\n style: {\n stroke: '#000',\n fill: null\n },\n buildPath: function (ctx, shape) {\n polyHelper.buildPath(ctx, shape, false);\n }\n});\n\nmodule.exports = _default;","var Path = require(\"./Path\");\n\n// CompoundPath to improve performance\nvar _default = Path.extend({\n type: 'compound',\n shape: {\n paths: null\n },\n _updatePathDirty: function () {\n var dirtyPath = this.__dirtyPath;\n var paths = this.shape.paths;\n\n for (var i = 0; i < paths.length; i++) {\n // Mark as dirty if any subpath is dirty\n dirtyPath = dirtyPath || paths[i].__dirtyPath;\n }\n\n this.__dirtyPath = dirtyPath;\n this.__dirty = this.__dirty || dirtyPath;\n },\n beforeBrush: function () {\n this._updatePathDirty();\n\n var paths = this.shape.paths || [];\n var scale = this.getGlobalScale(); // Update path scale\n\n for (var i = 0; i < paths.length; i++) {\n if (!paths[i].path) {\n paths[i].createPathProxy();\n }\n\n paths[i].path.setScale(scale[0], scale[1], paths[i].segmentIgnoreThreshold);\n }\n },\n buildPath: function (ctx, shape) {\n var paths = shape.paths || [];\n\n for (var i = 0; i < paths.length; i++) {\n paths[i].buildPath(ctx, paths[i].shape, true);\n }\n },\n afterBrush: function () {\n var paths = this.shape.paths || [];\n\n for (var i = 0; i < paths.length; i++) {\n paths[i].__dirtyPath = false;\n }\n },\n getBoundingRect: function () {\n this._updatePathDirty();\n\n return Path.prototype.getBoundingRect.call(this);\n }\n});\n\nmodule.exports = _default;","// Simple LRU cache use doubly linked list\n// @module zrender/core/LRU\n\n/**\n * Simple double linked list. Compared with array, it has O(1) remove operation.\n * @constructor\n */\nvar LinkedList = function () {\n /**\n * @type {module:zrender/core/LRU~Entry}\n */\n this.head = null;\n /**\n * @type {module:zrender/core/LRU~Entry}\n */\n\n this.tail = null;\n this._len = 0;\n};\n\nvar linkedListProto = LinkedList.prototype;\n/**\n * Insert a new value at the tail\n * @param {} val\n * @return {module:zrender/core/LRU~Entry}\n */\n\nlinkedListProto.insert = function (val) {\n var entry = new Entry(val);\n this.insertEntry(entry);\n return entry;\n};\n/**\n * Insert an entry at the tail\n * @param {module:zrender/core/LRU~Entry} entry\n */\n\n\nlinkedListProto.insertEntry = function (entry) {\n if (!this.head) {\n this.head = this.tail = entry;\n } else {\n this.tail.next = entry;\n entry.prev = this.tail;\n entry.next = null;\n this.tail = entry;\n }\n\n this._len++;\n};\n/**\n * Remove entry.\n * @param {module:zrender/core/LRU~Entry} entry\n */\n\n\nlinkedListProto.remove = function (entry) {\n var prev = entry.prev;\n var next = entry.next;\n\n if (prev) {\n prev.next = next;\n } else {\n // Is head\n this.head = next;\n }\n\n if (next) {\n next.prev = prev;\n } else {\n // Is tail\n this.tail = prev;\n }\n\n entry.next = entry.prev = null;\n this._len--;\n};\n/**\n * @return {number}\n */\n\n\nlinkedListProto.len = function () {\n return this._len;\n};\n/**\n * Clear list\n */\n\n\nlinkedListProto.clear = function () {\n this.head = this.tail = null;\n this._len = 0;\n};\n/**\n * @constructor\n * @param {} val\n */\n\n\nvar Entry = function (val) {\n /**\n * @type {}\n */\n this.value = val;\n /**\n * @type {module:zrender/core/LRU~Entry}\n */\n\n this.next;\n /**\n * @type {module:zrender/core/LRU~Entry}\n */\n\n this.prev;\n};\n/**\n * LRU Cache\n * @constructor\n * @alias module:zrender/core/LRU\n */\n\n\nvar LRU = function (maxSize) {\n this._list = new LinkedList();\n this._map = {};\n this._maxSize = maxSize || 10;\n this._lastRemovedEntry = null;\n};\n\nvar LRUProto = LRU.prototype;\n/**\n * @param {string} key\n * @param {} value\n * @return {} Removed value\n */\n\nLRUProto.put = function (key, value) {\n var list = this._list;\n var map = this._map;\n var removed = null;\n\n if (map[key] == null) {\n var len = list.len(); // Reuse last removed entry\n\n var entry = this._lastRemovedEntry;\n\n if (len >= this._maxSize && len > 0) {\n // Remove the least recently used\n var leastUsedEntry = list.head;\n list.remove(leastUsedEntry);\n delete map[leastUsedEntry.key];\n removed = leastUsedEntry.value;\n this._lastRemovedEntry = leastUsedEntry;\n }\n\n if (entry) {\n entry.value = value;\n } else {\n entry = new Entry(value);\n }\n\n entry.key = key;\n list.insertEntry(entry);\n map[key] = entry;\n }\n\n return removed;\n};\n/**\n * @param {string} key\n * @return {}\n */\n\n\nLRUProto.get = function (key) {\n var entry = this._map[key];\n var list = this._list;\n\n if (entry != null) {\n // Put the latest used entry in the tail\n if (entry !== list.tail) {\n list.remove(entry);\n list.insertEntry(entry);\n }\n\n return entry.value;\n }\n};\n/**\n * Clear the cache\n */\n\n\nLRUProto.clear = function () {\n this._list.clear();\n\n this._map = {};\n};\n\nvar _default = LRU;\nmodule.exports = _default;","var guid = require(\"./core/guid\");\n\nvar Eventful = require(\"./mixin/Eventful\");\n\nvar Transformable = require(\"./mixin/Transformable\");\n\nvar Animatable = require(\"./mixin/Animatable\");\n\nvar zrUtil = require(\"./core/util\");\n\n/**\n * @alias module:zrender/Element\n * @constructor\n * @extends {module:zrender/mixin/Animatable}\n * @extends {module:zrender/mixin/Transformable}\n * @extends {module:zrender/mixin/Eventful}\n */\nvar Element = function (opts) {\n // jshint ignore:line\n Transformable.call(this, opts);\n Eventful.call(this, opts);\n Animatable.call(this, opts);\n /**\n * 画布元素ID\n * @type {string}\n */\n\n this.id = opts.id || guid();\n};\n\nElement.prototype = {\n /**\n * 元素类型\n * Element type\n * @type {string}\n */\n type: 'element',\n\n /**\n * 元素名字\n * Element name\n * @type {string}\n */\n name: '',\n\n /**\n * ZRender 实例对象,会在 element 添加到 zrender 实例中后自动赋值\n * ZRender instance will be assigned when element is associated with zrender\n * @name module:/zrender/Element#__zr\n * @type {module:zrender/ZRender}\n */\n __zr: null,\n\n /**\n * 图形是否忽略,为true时忽略图形的绘制以及事件触发\n * If ignore drawing and events of the element object\n * @name module:/zrender/Element#ignore\n * @type {boolean}\n * @default false\n */\n ignore: false,\n\n /**\n * 用于裁剪的路径(shape),所有 Group 内的路径在绘制时都会被这个路径裁剪\n * 该路径会继承被裁减对象的变换\n * @type {module:zrender/graphic/Path}\n * @see http://www.w3.org/TR/2dcontext/#clipping-region\n * @readOnly\n */\n clipPath: null,\n\n /**\n * 是否是 Group\n * @type {boolean}\n */\n isGroup: false,\n\n /**\n * Drift element\n * @param {number} dx dx on the global space\n * @param {number} dy dy on the global space\n */\n drift: function (dx, dy) {\n switch (this.draggable) {\n case 'horizontal':\n dy = 0;\n break;\n\n case 'vertical':\n dx = 0;\n break;\n }\n\n var m = this.transform;\n\n if (!m) {\n m = this.transform = [1, 0, 0, 1, 0, 0];\n }\n\n m[4] += dx;\n m[5] += dy;\n this.decomposeTransform();\n this.dirty(false);\n },\n\n /**\n * Hook before update\n */\n beforeUpdate: function () {},\n\n /**\n * Hook after update\n */\n afterUpdate: function () {},\n\n /**\n * Update each frame\n */\n update: function () {\n this.updateTransform();\n },\n\n /**\n * @param {Function} cb\n * @param {} context\n */\n traverse: function (cb, context) {},\n\n /**\n * @protected\n */\n attrKV: function (key, value) {\n if (key === 'position' || key === 'scale' || key === 'origin') {\n // Copy the array\n if (value) {\n var target = this[key];\n\n if (!target) {\n target = this[key] = [];\n }\n\n target[0] = value[0];\n target[1] = value[1];\n }\n } else {\n this[key] = value;\n }\n },\n\n /**\n * Hide the element\n */\n hide: function () {\n this.ignore = true;\n this.__zr && this.__zr.refresh();\n },\n\n /**\n * Show the element\n */\n show: function () {\n this.ignore = false;\n this.__zr && this.__zr.refresh();\n },\n\n /**\n * @param {string|Object} key\n * @param {*} value\n */\n attr: function (key, value) {\n if (typeof key === 'string') {\n this.attrKV(key, value);\n } else if (zrUtil.isObject(key)) {\n for (var name in key) {\n if (key.hasOwnProperty(name)) {\n this.attrKV(name, key[name]);\n }\n }\n }\n\n this.dirty(false);\n return this;\n },\n\n /**\n * @param {module:zrender/graphic/Path} clipPath\n */\n setClipPath: function (clipPath) {\n var zr = this.__zr;\n\n if (zr) {\n clipPath.addSelfToZr(zr);\n } // Remove previous clip path\n\n\n if (this.clipPath && this.clipPath !== clipPath) {\n this.removeClipPath();\n }\n\n this.clipPath = clipPath;\n clipPath.__zr = zr;\n clipPath.__clipTarget = this;\n this.dirty(false);\n },\n\n /**\n */\n removeClipPath: function () {\n var clipPath = this.clipPath;\n\n if (clipPath) {\n if (clipPath.__zr) {\n clipPath.removeSelfFromZr(clipPath.__zr);\n }\n\n clipPath.__zr = null;\n clipPath.__clipTarget = null;\n this.clipPath = null;\n this.dirty(false);\n }\n },\n\n /**\n * Add self from zrender instance.\n * Not recursively because it will be invoked when element added to storage.\n * @param {module:zrender/ZRender} zr\n */\n addSelfToZr: function (zr) {\n this.__zr = zr; // 添加动画\n\n var animators = this.animators;\n\n if (animators) {\n for (var i = 0; i < animators.length; i++) {\n zr.animation.addAnimator(animators[i]);\n }\n }\n\n if (this.clipPath) {\n this.clipPath.addSelfToZr(zr);\n }\n },\n\n /**\n * Remove self from zrender instance.\n * Not recursively because it will be invoked when element added to storage.\n * @param {module:zrender/ZRender} zr\n */\n removeSelfFromZr: function (zr) {\n this.__zr = null; // 移除动画\n\n var animators = this.animators;\n\n if (animators) {\n for (var i = 0; i < animators.length; i++) {\n zr.animation.removeAnimator(animators[i]);\n }\n }\n\n if (this.clipPath) {\n this.clipPath.removeSelfFromZr(zr);\n }\n }\n};\nzrUtil.mixin(Element, Animatable);\nzrUtil.mixin(Element, Transformable);\nzrUtil.mixin(Element, Eventful);\nvar _default = Element;\nmodule.exports = _default;","var PathProxy = require(\"../core/PathProxy\");\n\nvar line = require(\"./line\");\n\nvar cubic = require(\"./cubic\");\n\nvar quadratic = require(\"./quadratic\");\n\nvar arc = require(\"./arc\");\n\nvar _util = require(\"./util\");\n\nvar normalizeRadian = _util.normalizeRadian;\n\nvar curve = require(\"../core/curve\");\n\nvar windingLine = require(\"./windingLine\");\n\nvar CMD = PathProxy.CMD;\nvar PI2 = Math.PI * 2;\nvar EPSILON = 1e-4;\n\nfunction isAroundEqual(a, b) {\n return Math.abs(a - b) < EPSILON;\n} // 临时数组\n\n\nvar roots = [-1, -1, -1];\nvar extrema = [-1, -1];\n\nfunction swapExtrema() {\n var tmp = extrema[0];\n extrema[0] = extrema[1];\n extrema[1] = tmp;\n}\n\nfunction windingCubic(x0, y0, x1, y1, x2, y2, x3, y3, x, y) {\n // Quick reject\n if (y > y0 && y > y1 && y > y2 && y > y3 || y < y0 && y < y1 && y < y2 && y < y3) {\n return 0;\n }\n\n var nRoots = curve.cubicRootAt(y0, y1, y2, y3, y, roots);\n\n if (nRoots === 0) {\n return 0;\n } else {\n var w = 0;\n var nExtrema = -1;\n var y0_;\n var y1_;\n\n for (var i = 0; i < nRoots; i++) {\n var t = roots[i]; // Avoid winding error when intersection point is the connect point of two line of polygon\n\n var unit = t === 0 || t === 1 ? 0.5 : 1;\n var x_ = curve.cubicAt(x0, x1, x2, x3, t);\n\n if (x_ < x) {\n // Quick reject\n continue;\n }\n\n if (nExtrema < 0) {\n nExtrema = curve.cubicExtrema(y0, y1, y2, y3, extrema);\n\n if (extrema[1] < extrema[0] && nExtrema > 1) {\n swapExtrema();\n }\n\n y0_ = curve.cubicAt(y0, y1, y2, y3, extrema[0]);\n\n if (nExtrema > 1) {\n y1_ = curve.cubicAt(y0, y1, y2, y3, extrema[1]);\n }\n }\n\n if (nExtrema === 2) {\n // 分成三段单调函数\n if (t < extrema[0]) {\n w += y0_ < y0 ? unit : -unit;\n } else if (t < extrema[1]) {\n w += y1_ < y0_ ? unit : -unit;\n } else {\n w += y3 < y1_ ? unit : -unit;\n }\n } else {\n // 分成两段单调函数\n if (t < extrema[0]) {\n w += y0_ < y0 ? unit : -unit;\n } else {\n w += y3 < y0_ ? unit : -unit;\n }\n }\n }\n\n return w;\n }\n}\n\nfunction windingQuadratic(x0, y0, x1, y1, x2, y2, x, y) {\n // Quick reject\n if (y > y0 && y > y1 && y > y2 || y < y0 && y < y1 && y < y2) {\n return 0;\n }\n\n var nRoots = curve.quadraticRootAt(y0, y1, y2, y, roots);\n\n if (nRoots === 0) {\n return 0;\n } else {\n var t = curve.quadraticExtremum(y0, y1, y2);\n\n if (t >= 0 && t <= 1) {\n var w = 0;\n var y_ = curve.quadraticAt(y0, y1, y2, t);\n\n for (var i = 0; i < nRoots; i++) {\n // Remove one endpoint.\n var unit = roots[i] === 0 || roots[i] === 1 ? 0.5 : 1;\n var x_ = curve.quadraticAt(x0, x1, x2, roots[i]);\n\n if (x_ < x) {\n // Quick reject\n continue;\n }\n\n if (roots[i] < t) {\n w += y_ < y0 ? unit : -unit;\n } else {\n w += y2 < y_ ? unit : -unit;\n }\n }\n\n return w;\n } else {\n // Remove one endpoint.\n var unit = roots[0] === 0 || roots[0] === 1 ? 0.5 : 1;\n var x_ = curve.quadraticAt(x0, x1, x2, roots[0]);\n\n if (x_ < x) {\n // Quick reject\n return 0;\n }\n\n return y2 < y0 ? unit : -unit;\n }\n }\n} // TODO\n// Arc 旋转\n\n\nfunction windingArc(cx, cy, r, startAngle, endAngle, anticlockwise, x, y) {\n y -= cy;\n\n if (y > r || y < -r) {\n return 0;\n }\n\n var tmp = Math.sqrt(r * r - y * y);\n roots[0] = -tmp;\n roots[1] = tmp;\n var diff = Math.abs(startAngle - endAngle);\n\n if (diff < 1e-4) {\n return 0;\n }\n\n if (diff % PI2 < 1e-4) {\n // Is a circle\n startAngle = 0;\n endAngle = PI2;\n var dir = anticlockwise ? 1 : -1;\n\n if (x >= roots[0] + cx && x <= roots[1] + cx) {\n return dir;\n } else {\n return 0;\n }\n }\n\n if (anticlockwise) {\n var tmp = startAngle;\n startAngle = normalizeRadian(endAngle);\n endAngle = normalizeRadian(tmp);\n } else {\n startAngle = normalizeRadian(startAngle);\n endAngle = normalizeRadian(endAngle);\n }\n\n if (startAngle > endAngle) {\n endAngle += PI2;\n }\n\n var w = 0;\n\n for (var i = 0; i < 2; i++) {\n var x_ = roots[i];\n\n if (x_ + cx > x) {\n var angle = Math.atan2(y, x_);\n var dir = anticlockwise ? 1 : -1;\n\n if (angle < 0) {\n angle = PI2 + angle;\n }\n\n if (angle >= startAngle && angle <= endAngle || angle + PI2 >= startAngle && angle + PI2 <= endAngle) {\n if (angle > Math.PI / 2 && angle < Math.PI * 1.5) {\n dir = -dir;\n }\n\n w += dir;\n }\n }\n }\n\n return w;\n}\n\nfunction containPath(data, lineWidth, isStroke, x, y) {\n var w = 0;\n var xi = 0;\n var yi = 0;\n var x0 = 0;\n var y0 = 0;\n\n for (var i = 0; i < data.length;) {\n var cmd = data[i++]; // Begin a new subpath\n\n if (cmd === CMD.M && i > 1) {\n // Close previous subpath\n if (!isStroke) {\n w += windingLine(xi, yi, x0, y0, x, y);\n } // 如果被任何一个 subpath 包含\n // if (w !== 0) {\n // return true;\n // }\n\n }\n\n if (i === 1) {\n // 如果第一个命令是 L, C, Q\n // 则 previous point 同绘制命令的第一个 point\n //\n // 第一个命令为 Arc 的情况下会在后面特殊处理\n xi = data[i];\n yi = data[i + 1];\n x0 = xi;\n y0 = yi;\n }\n\n switch (cmd) {\n case CMD.M:\n // moveTo 命令重新创建一个新的 subpath, 并且更新新的起点\n // 在 closePath 的时候使用\n x0 = data[i++];\n y0 = data[i++];\n xi = x0;\n yi = y0;\n break;\n\n case CMD.L:\n if (isStroke) {\n if (line.containStroke(xi, yi, data[i], data[i + 1], lineWidth, x, y)) {\n return true;\n }\n } else {\n // NOTE 在第一个命令为 L, C, Q 的时候会计算出 NaN\n w += windingLine(xi, yi, data[i], data[i + 1], x, y) || 0;\n }\n\n xi = data[i++];\n yi = data[i++];\n break;\n\n case CMD.C:\n if (isStroke) {\n if (cubic.containStroke(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], lineWidth, x, y)) {\n return true;\n }\n } else {\n w += windingCubic(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], x, y) || 0;\n }\n\n xi = data[i++];\n yi = data[i++];\n break;\n\n case CMD.Q:\n if (isStroke) {\n if (quadratic.containStroke(xi, yi, data[i++], data[i++], data[i], data[i + 1], lineWidth, x, y)) {\n return true;\n }\n } else {\n w += windingQuadratic(xi, yi, data[i++], data[i++], data[i], data[i + 1], x, y) || 0;\n }\n\n xi = data[i++];\n yi = data[i++];\n break;\n\n case CMD.A:\n // TODO Arc 判断的开销比较大\n var cx = data[i++];\n var cy = data[i++];\n var rx = data[i++];\n var ry = data[i++];\n var theta = data[i++];\n var dTheta = data[i++]; // TODO Arc 旋转\n\n i += 1;\n var anticlockwise = 1 - data[i++];\n var x1 = Math.cos(theta) * rx + cx;\n var y1 = Math.sin(theta) * ry + cy; // 不是直接使用 arc 命令\n\n if (i > 1) {\n w += windingLine(xi, yi, x1, y1, x, y);\n } else {\n // 第一个命令起点还未定义\n x0 = x1;\n y0 = y1;\n } // zr 使用scale来模拟椭圆, 这里也对x做一定的缩放\n\n\n var _x = (x - cx) * ry / rx + cx;\n\n if (isStroke) {\n if (arc.containStroke(cx, cy, ry, theta, theta + dTheta, anticlockwise, lineWidth, _x, y)) {\n return true;\n }\n } else {\n w += windingArc(cx, cy, ry, theta, theta + dTheta, anticlockwise, _x, y);\n }\n\n xi = Math.cos(theta + dTheta) * rx + cx;\n yi = Math.sin(theta + dTheta) * ry + cy;\n break;\n\n case CMD.R:\n x0 = xi = data[i++];\n y0 = yi = data[i++];\n var width = data[i++];\n var height = data[i++];\n var x1 = x0 + width;\n var y1 = y0 + height;\n\n if (isStroke) {\n if (line.containStroke(x0, y0, x1, y0, lineWidth, x, y) || line.containStroke(x1, y0, x1, y1, lineWidth, x, y) || line.containStroke(x1, y1, x0, y1, lineWidth, x, y) || line.containStroke(x0, y1, x0, y0, lineWidth, x, y)) {\n return true;\n }\n } else {\n // FIXME Clockwise ?\n w += windingLine(x1, y0, x1, y1, x, y);\n w += windingLine(x0, y1, x0, y0, x, y);\n }\n\n break;\n\n case CMD.Z:\n if (isStroke) {\n if (line.containStroke(xi, yi, x0, y0, lineWidth, x, y)) {\n return true;\n }\n } else {\n // Close a subpath\n w += windingLine(xi, yi, x0, y0, x, y); // 如果被任何一个 subpath 包含\n // FIXME subpaths may overlap\n // if (w !== 0) {\n // return true;\n // }\n }\n\n xi = x0;\n yi = y0;\n break;\n }\n }\n\n if (!isStroke && !isAroundEqual(yi, y0)) {\n w += windingLine(xi, yi, x0, y0, x, y) || 0;\n }\n\n return w !== 0;\n}\n\nfunction contain(pathData, x, y) {\n return containPath(pathData, 0, false, x, y);\n}\n\nfunction containStroke(pathData, lineWidth, x, y) {\n return containPath(pathData, lineWidth, true, x, y);\n}\n\nexports.contain = contain;\nexports.containStroke = containStroke;","var Path = require(\"../Path\");\n\n/**\n * 圆形\n * @module zrender/shape/Circle\n */\nvar _default = Path.extend({\n type: 'circle',\n shape: {\n cx: 0,\n cy: 0,\n r: 0\n },\n buildPath: function (ctx, shape, inBundle) {\n // Better stroking in ShapeBundle\n // Always do it may have performence issue ( fill may be 2x more cost)\n if (inBundle) {\n ctx.moveTo(shape.cx + shape.r, shape.cy);\n } // else {\n // if (ctx.allocate && !ctx.data.length) {\n // ctx.allocate(ctx.CMD_MEM_SIZE.A);\n // }\n // }\n // Better stroking in ShapeBundle\n // ctx.moveTo(shape.cx + shape.r, shape.cy);\n\n\n ctx.arc(shape.cx, shape.cy, shape.r, 0, Math.PI * 2, true);\n }\n});\n\nmodule.exports = _default;","module.exports = __webpack_public_path__ + \"img/5-small.a4eb6d6e.png\";","var Pattern = function (image, repeat) {\n // Should do nothing more in this constructor. Because gradient can be\n // declard by `color: {image: ...}`, where this constructor will not be called.\n this.image = image;\n this.repeat = repeat; // Can be cloned\n\n this.type = 'pattern';\n};\n\nPattern.prototype.getCanvasPattern = function (ctx) {\n return ctx.createPattern(this.image, this.repeat || 'repeat');\n};\n\nvar _default = Pattern;\nmodule.exports = _default;","var zrUtil = require(\"../core/util\");\n\nvar Gradient = require(\"./Gradient\");\n\n/**\n * x, y, r are all percent from 0 to 1\n * @param {number} [x=0.5]\n * @param {number} [y=0.5]\n * @param {number} [r=0.5]\n * @param {Array.} [colorStops]\n * @param {boolean} [globalCoord=false]\n */\nvar RadialGradient = function (x, y, r, colorStops, globalCoord) {\n // Should do nothing more in this constructor. Because gradient can be\n // declard by `color: {type: 'radial', colorStops: ...}`, where\n // this constructor will not be called.\n this.x = x == null ? 0.5 : x;\n this.y = y == null ? 0.5 : y;\n this.r = r == null ? 0.5 : r; // Can be cloned\n\n this.type = 'radial'; // If use global coord\n\n this.global = globalCoord || false;\n Gradient.call(this, colorStops);\n};\n\nRadialGradient.prototype = {\n constructor: RadialGradient\n};\nzrUtil.inherits(RadialGradient, Gradient);\nvar _default = RadialGradient;\nmodule.exports = _default;","/**\n * zrender: 生成唯一id\n *\n * @author errorrik (errorrik@gmail.com)\n */\nvar idStart = 0x0907;\n\nfunction _default() {\n return idStart++;\n}\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = {\n getBoxLayoutParams: function () {\n return {\n left: this.get('left'),\n top: this.get('top'),\n right: this.get('right'),\n bottom: this.get('bottom'),\n width: this.get('width'),\n height: this.get('height')\n };\n }\n};\nmodule.exports = _default;","var Ripple = {\n bind: function(el, binding){\n\n // Default values.\n var props = {\n event: 'mousedown',\n transition: 600\n };\n\n setProps(Object.keys(binding.modifiers),props);\n\n el.addEventListener(props.event, function(event) {\n rippler(event, el, binding.value);\n });\n\n var bg = binding.value || Ripple.color || 'rgba(0, 0, 0, 0.35)';\n var zIndex = Ripple.zIndex || '9999';\n\n function rippler(event, el) {\n var target = el;\n // Get border to avoid offsetting on ripple container position\n var targetBorder = parseInt((getComputedStyle(target).borderWidth).replace('px', ''));\n\n // Get necessary variables\n var rect = target.getBoundingClientRect(),\n left = rect.left,\n top = rect.top,\n width = target.offsetWidth,\n height = target.offsetHeight,\n dx = event.clientX - left,\n dy = event.clientY - top,\n maxX = Math.max(dx, width - dx),\n maxY = Math.max(dy, height - dy),\n style = window.getComputedStyle(target),\n radius = Math.sqrt((maxX * maxX) + (maxY * maxY)),\n border = (targetBorder > 0 ) ? targetBorder : 0;\n\n // Create the ripple and its container\n var ripple = document.createElement(\"div\"),\n rippleContainer = document.createElement(\"div\");\n rippleContainer.className = 'ripple-container';\n ripple.className = 'ripple';\n\n //Styles for ripple\n ripple.style.marginTop= '0px';\n ripple.style.marginLeft= '0px';\n ripple.style.width= '1px';\n ripple.style.height= '1px';\n ripple.style.transition= 'all ' + props.transition + 'ms cubic-bezier(0.4, 0, 0.2, 1)';\n ripple.style.borderRadius= '50%';\n ripple.style.pointerEvents= 'none';\n ripple.style.position= 'relative';\n ripple.style.zIndex= zIndex;\n ripple.style.backgroundColor = bg;\n\n //Styles for rippleContainer\n rippleContainer.style.position= 'absolute';\n rippleContainer.style.left = 0 - border + 'px';\n rippleContainer.style.top = 0 - border + 'px';\n rippleContainer.style.height = '0';\n rippleContainer.style.width = '0';\n rippleContainer.style.pointerEvents = 'none';\n rippleContainer.style.overflow = 'hidden';\n\n // Store target position to change it after\n var storedTargetPosition = ((target.style.position).length > 0) ? target.style.position : getComputedStyle(target).position;\n // Change target position to relative to guarantee ripples correct positioning\n if (storedTargetPosition !== 'relative') {\n target.style.position = 'relative';\n }\n\n rippleContainer.appendChild(ripple);\n target.appendChild(rippleContainer);\n\n ripple.style.marginLeft = dx + \"px\";\n ripple.style.marginTop = dy + \"px\";\n\n // No need to set positioning because ripple should be child of target and to it's relative position.\n // rippleContainer.style.left = left + (((window.pageXOffset || document.scrollLeft) - (document.clientLeft || 0)) || 0) + \"px\";\n // rippleContainer.style.top = top + (((window.pageYOffset || document.scrollTop) - (document.clientTop || 0)) || 0) + \"px\";\n rippleContainer.style.width = width + \"px\";\n rippleContainer.style.height = height + \"px\";\n rippleContainer.style.borderTopLeftRadius = style.borderTopLeftRadius;\n rippleContainer.style.borderTopRightRadius = style.borderTopRightRadius;\n rippleContainer.style.borderBottomLeftRadius = style.borderBottomLeftRadius;\n rippleContainer.style.borderBottomRightRadius = style.borderBottomRightRadius;\n\n rippleContainer.style.direction = 'ltr';\n\n setTimeout(function() {\n ripple.style.width = radius * 2 + \"px\";\n ripple.style.height = radius * 2 + \"px\";\n ripple.style.marginLeft = dx - radius + \"px\";\n ripple.style.marginTop = dy - radius + \"px\";\n }, 0);\n\n function clearRipple() {\n setTimeout(function() {\n ripple.style.backgroundColor = \"rgba(0, 0, 0, 0)\";\n }, 250);\n\n // Timeout set to get a smooth removal of the ripple\n setTimeout(function() {\n rippleContainer.parentNode.removeChild(rippleContainer);\n }, 850);\n\n el.removeEventListener('mouseup', clearRipple, false);\n\n // After removing event set position to target to it's original one\n // Timeout it's needed to avoid jerky effect of ripple jumping out parent target\n setTimeout(function () {\n\n var clearPosition = true;\n for(var i = 0; i < target.childNodes.length; i++) {\n if(target.childNodes[i].className === 'ripple-container') {\n clearPosition = false;\n }\n }\n\n if(clearPosition) {\n if(storedTargetPosition !== 'static') {\n target.style.position = storedTargetPosition;\n } else {\n target.style.position = '';\n }\n }\n\n }, props.transition + 250)\n }\n\n if(event.type === 'mousedown') {\n el.addEventListener('mouseup', clearRipple, false);\n } else {\n clearRipple();\n }\n }\n }\n};\n\nfunction setProps(modifiers,props) {\n modifiers.forEach(function(item) {\n if(isNaN(Number(item)))\n props.event = item;\n else\n props.transition = item;\n });\n}\n\nexport default Ripple;","// `Symbol.prototype.description` getter\n// https://tc39.github.io/ecma262/#sec-symbol.prototype.description\n'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar has = require('../internals/has');\nvar isObject = require('../internals/is-object');\nvar defineProperty = require('../internals/object-define-property').f;\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\n\nvar NativeSymbol = global.Symbol;\n\nif (DESCRIPTORS && typeof NativeSymbol == 'function' && (!('description' in NativeSymbol.prototype) ||\n // Safari 12 bug\n NativeSymbol().description !== undefined\n)) {\n var EmptyStringDescriptionStore = {};\n // wrap Symbol constructor for correct work with undefined description\n var SymbolWrapper = function Symbol() {\n var description = arguments.length < 1 || arguments[0] === undefined ? undefined : String(arguments[0]);\n var result = this instanceof SymbolWrapper\n ? new NativeSymbol(description)\n // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)'\n : description === undefined ? NativeSymbol() : NativeSymbol(description);\n if (description === '') EmptyStringDescriptionStore[result] = true;\n return result;\n };\n copyConstructorProperties(SymbolWrapper, NativeSymbol);\n var symbolPrototype = SymbolWrapper.prototype = NativeSymbol.prototype;\n symbolPrototype.constructor = SymbolWrapper;\n\n var symbolToString = symbolPrototype.toString;\n var native = String(NativeSymbol('test')) == 'Symbol(test)';\n var regexp = /^Symbol\\((.*)\\)[^)]+$/;\n defineProperty(symbolPrototype, 'description', {\n configurable: true,\n get: function description() {\n var symbol = isObject(this) ? this.valueOf() : this;\n var string = symbolToString.call(symbol);\n if (has(EmptyStringDescriptionStore, symbol)) return '';\n var desc = native ? string.slice(7, -1) : string.replace(regexp, '$1');\n return desc === '' ? undefined : desc;\n }\n });\n\n $({ global: true, forced: true }, {\n Symbol: SymbolWrapper\n });\n}\n","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar textContain = require(\"zrender/lib/contain/text\");\n\nvar _model = require(\"../util/model\");\n\nvar makeInner = _model.makeInner;\n\nvar _axisHelper = require(\"./axisHelper\");\n\nvar makeLabelFormatter = _axisHelper.makeLabelFormatter;\nvar getOptionCategoryInterval = _axisHelper.getOptionCategoryInterval;\nvar shouldShowAllLabels = _axisHelper.shouldShowAllLabels;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar inner = makeInner();\n/**\n * @param {module:echats/coord/Axis} axis\n * @return {Object} {\n * labels: [{\n * formattedLabel: string,\n * rawLabel: string,\n * tickValue: number\n * }, ...],\n * labelCategoryInterval: number\n * }\n */\n\nfunction createAxisLabels(axis) {\n // Only ordinal scale support tick interval\n return axis.type === 'category' ? makeCategoryLabels(axis) : makeRealNumberLabels(axis);\n}\n/**\n * @param {module:echats/coord/Axis} axis\n * @param {module:echarts/model/Model} tickModel For example, can be axisTick, splitLine, splitArea.\n * @return {Object} {\n * ticks: Array.\n * tickCategoryInterval: number\n * }\n */\n\n\nfunction createAxisTicks(axis, tickModel) {\n // Only ordinal scale support tick interval\n return axis.type === 'category' ? makeCategoryTicks(axis, tickModel) : {\n ticks: axis.scale.getTicks()\n };\n}\n\nfunction makeCategoryLabels(axis) {\n var labelModel = axis.getLabelModel();\n var result = makeCategoryLabelsActually(axis, labelModel);\n return !labelModel.get('show') || axis.scale.isBlank() ? {\n labels: [],\n labelCategoryInterval: result.labelCategoryInterval\n } : result;\n}\n\nfunction makeCategoryLabelsActually(axis, labelModel) {\n var labelsCache = getListCache(axis, 'labels');\n var optionLabelInterval = getOptionCategoryInterval(labelModel);\n var result = listCacheGet(labelsCache, optionLabelInterval);\n\n if (result) {\n return result;\n }\n\n var labels;\n var numericLabelInterval;\n\n if (zrUtil.isFunction(optionLabelInterval)) {\n labels = makeLabelsByCustomizedCategoryInterval(axis, optionLabelInterval);\n } else {\n numericLabelInterval = optionLabelInterval === 'auto' ? makeAutoCategoryInterval(axis) : optionLabelInterval;\n labels = makeLabelsByNumericCategoryInterval(axis, numericLabelInterval);\n } // Cache to avoid calling interval function repeatly.\n\n\n return listCacheSet(labelsCache, optionLabelInterval, {\n labels: labels,\n labelCategoryInterval: numericLabelInterval\n });\n}\n\nfunction makeCategoryTicks(axis, tickModel) {\n var ticksCache = getListCache(axis, 'ticks');\n var optionTickInterval = getOptionCategoryInterval(tickModel);\n var result = listCacheGet(ticksCache, optionTickInterval);\n\n if (result) {\n return result;\n }\n\n var ticks;\n var tickCategoryInterval; // Optimize for the case that large category data and no label displayed,\n // we should not return all ticks.\n\n if (!tickModel.get('show') || axis.scale.isBlank()) {\n ticks = [];\n }\n\n if (zrUtil.isFunction(optionTickInterval)) {\n ticks = makeLabelsByCustomizedCategoryInterval(axis, optionTickInterval, true);\n } // Always use label interval by default despite label show. Consider this\n // scenario, Use multiple grid with the xAxis sync, and only one xAxis shows\n // labels. `splitLine` and `axisTick` should be consistent in this case.\n else if (optionTickInterval === 'auto') {\n var labelsResult = makeCategoryLabelsActually(axis, axis.getLabelModel());\n tickCategoryInterval = labelsResult.labelCategoryInterval;\n ticks = zrUtil.map(labelsResult.labels, function (labelItem) {\n return labelItem.tickValue;\n });\n } else {\n tickCategoryInterval = optionTickInterval;\n ticks = makeLabelsByNumericCategoryInterval(axis, tickCategoryInterval, true);\n } // Cache to avoid calling interval function repeatly.\n\n\n return listCacheSet(ticksCache, optionTickInterval, {\n ticks: ticks,\n tickCategoryInterval: tickCategoryInterval\n });\n}\n\nfunction makeRealNumberLabels(axis) {\n var ticks = axis.scale.getTicks();\n var labelFormatter = makeLabelFormatter(axis);\n return {\n labels: zrUtil.map(ticks, function (tickValue, idx) {\n return {\n formattedLabel: labelFormatter(tickValue, idx),\n rawLabel: axis.scale.getLabel(tickValue),\n tickValue: tickValue\n };\n })\n };\n} // Large category data calculation is performence sensitive, and ticks and label\n// probably be fetched by multiple times. So we cache the result.\n// axis is created each time during a ec process, so we do not need to clear cache.\n\n\nfunction getListCache(axis, prop) {\n // Because key can be funciton, and cache size always be small, we use array cache.\n return inner(axis)[prop] || (inner(axis)[prop] = []);\n}\n\nfunction listCacheGet(cache, key) {\n for (var i = 0; i < cache.length; i++) {\n if (cache[i].key === key) {\n return cache[i].value;\n }\n }\n}\n\nfunction listCacheSet(cache, key, value) {\n cache.push({\n key: key,\n value: value\n });\n return value;\n}\n\nfunction makeAutoCategoryInterval(axis) {\n var result = inner(axis).autoInterval;\n return result != null ? result : inner(axis).autoInterval = axis.calculateCategoryInterval();\n}\n/**\n * Calculate interval for category axis ticks and labels.\n * To get precise result, at least one of `getRotate` and `isHorizontal`\n * should be implemented in axis.\n */\n\n\nfunction calculateCategoryInterval(axis) {\n var params = fetchAutoCategoryIntervalCalculationParams(axis);\n var labelFormatter = makeLabelFormatter(axis);\n var rotation = (params.axisRotate - params.labelRotate) / 180 * Math.PI;\n var ordinalScale = axis.scale;\n var ordinalExtent = ordinalScale.getExtent(); // Providing this method is for optimization:\n // avoid generating a long array by `getTicks`\n // in large category data case.\n\n var tickCount = ordinalScale.count();\n\n if (ordinalExtent[1] - ordinalExtent[0] < 1) {\n return 0;\n }\n\n var step = 1; // Simple optimization. Empirical value: tick count should less than 40.\n\n if (tickCount > 40) {\n step = Math.max(1, Math.floor(tickCount / 40));\n }\n\n var tickValue = ordinalExtent[0];\n var unitSpan = axis.dataToCoord(tickValue + 1) - axis.dataToCoord(tickValue);\n var unitW = Math.abs(unitSpan * Math.cos(rotation));\n var unitH = Math.abs(unitSpan * Math.sin(rotation));\n var maxW = 0;\n var maxH = 0; // Caution: Performance sensitive for large category data.\n // Consider dataZoom, we should make appropriate step to avoid O(n) loop.\n\n for (; tickValue <= ordinalExtent[1]; tickValue += step) {\n var width = 0;\n var height = 0; // Not precise, do not consider align and vertical align\n // and each distance from axis line yet.\n\n var rect = textContain.getBoundingRect(labelFormatter(tickValue), params.font, 'center', 'top'); // Magic number\n\n width = rect.width * 1.3;\n height = rect.height * 1.3; // Min size, void long loop.\n\n maxW = Math.max(maxW, width, 7);\n maxH = Math.max(maxH, height, 7);\n }\n\n var dw = maxW / unitW;\n var dh = maxH / unitH; // 0/0 is NaN, 1/0 is Infinity.\n\n isNaN(dw) && (dw = Infinity);\n isNaN(dh) && (dh = Infinity);\n var interval = Math.max(0, Math.floor(Math.min(dw, dh)));\n var cache = inner(axis.model);\n var axisExtent = axis.getExtent();\n var lastAutoInterval = cache.lastAutoInterval;\n var lastTickCount = cache.lastTickCount; // Use cache to keep interval stable while moving zoom window,\n // otherwise the calculated interval might jitter when the zoom\n // window size is close to the interval-changing size.\n // For example, if all of the axis labels are `a, b, c, d, e, f, g`.\n // The jitter will cause that sometimes the displayed labels are\n // `a, d, g` (interval: 2) sometimes `a, c, e`(interval: 1).\n\n if (lastAutoInterval != null && lastTickCount != null && Math.abs(lastAutoInterval - interval) <= 1 && Math.abs(lastTickCount - tickCount) <= 1 // Always choose the bigger one, otherwise the critical\n // point is not the same when zooming in or zooming out.\n && lastAutoInterval > interval // If the axis change is caused by chart resize, the cache should not\n // be used. Otherwise some hiden labels might not be shown again.\n && cache.axisExtend0 === axisExtent[0] && cache.axisExtend1 === axisExtent[1]) {\n interval = lastAutoInterval;\n } // Only update cache if cache not used, otherwise the\n // changing of interval is too insensitive.\n else {\n cache.lastTickCount = tickCount;\n cache.lastAutoInterval = interval;\n cache.axisExtend0 = axisExtent[0];\n cache.axisExtend1 = axisExtent[1];\n }\n\n return interval;\n}\n\nfunction fetchAutoCategoryIntervalCalculationParams(axis) {\n var labelModel = axis.getLabelModel();\n return {\n axisRotate: axis.getRotate ? axis.getRotate() : axis.isHorizontal && !axis.isHorizontal() ? 90 : 0,\n labelRotate: labelModel.get('rotate') || 0,\n font: labelModel.getFont()\n };\n}\n\nfunction makeLabelsByNumericCategoryInterval(axis, categoryInterval, onlyTick) {\n var labelFormatter = makeLabelFormatter(axis);\n var ordinalScale = axis.scale;\n var ordinalExtent = ordinalScale.getExtent();\n var labelModel = axis.getLabelModel();\n var result = []; // TODO: axisType: ordinalTime, pick the tick from each month/day/year/...\n\n var step = Math.max((categoryInterval || 0) + 1, 1);\n var startTick = ordinalExtent[0];\n var tickCount = ordinalScale.count(); // Calculate start tick based on zero if possible to keep label consistent\n // while zooming and moving while interval > 0. Otherwise the selection\n // of displayable ticks and symbols probably keep changing.\n // 3 is empirical value.\n\n if (startTick !== 0 && step > 1 && tickCount / step > 2) {\n startTick = Math.round(Math.ceil(startTick / step) * step);\n } // (1) Only add min max label here but leave overlap checking\n // to render stage, which also ensure the returned list\n // suitable for splitLine and splitArea rendering.\n // (2) Scales except category always contain min max label so\n // do not need to perform this process.\n\n\n var showAllLabel = shouldShowAllLabels(axis);\n var includeMinLabel = labelModel.get('showMinLabel') || showAllLabel;\n var includeMaxLabel = labelModel.get('showMaxLabel') || showAllLabel;\n\n if (includeMinLabel && startTick !== ordinalExtent[0]) {\n addItem(ordinalExtent[0]);\n } // Optimize: avoid generating large array by `ordinalScale.getTicks()`.\n\n\n var tickValue = startTick;\n\n for (; tickValue <= ordinalExtent[1]; tickValue += step) {\n addItem(tickValue);\n }\n\n if (includeMaxLabel && tickValue - step !== ordinalExtent[1]) {\n addItem(ordinalExtent[1]);\n }\n\n function addItem(tVal) {\n result.push(onlyTick ? tVal : {\n formattedLabel: labelFormatter(tVal),\n rawLabel: ordinalScale.getLabel(tVal),\n tickValue: tVal\n });\n }\n\n return result;\n} // When interval is function, the result `false` means ignore the tick.\n// It is time consuming for large category data.\n\n\nfunction makeLabelsByCustomizedCategoryInterval(axis, categoryInterval, onlyTick) {\n var ordinalScale = axis.scale;\n var labelFormatter = makeLabelFormatter(axis);\n var result = [];\n zrUtil.each(ordinalScale.getTicks(), function (tickValue) {\n var rawLabel = ordinalScale.getLabel(tickValue);\n\n if (categoryInterval(tickValue, rawLabel)) {\n result.push(onlyTick ? tickValue : {\n formattedLabel: labelFormatter(tickValue),\n rawLabel: rawLabel,\n tickValue: tickValue\n });\n }\n });\n return result;\n}\n\nexports.createAxisLabels = createAxisLabels;\nexports.createAxisTicks = createAxisTicks;\nexports.calculateCategoryInterval = calculateCategoryInterval;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar env = require(\"zrender/lib/core/env\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar each = zrUtil.each;\nvar isObject = zrUtil.isObject;\nvar isArray = zrUtil.isArray;\n/**\n * Make the name displayable. But we should\n * make sure it is not duplicated with user\n * specified name, so use '\\0';\n */\n\nvar DUMMY_COMPONENT_NAME_PREFIX = 'series\\0';\n/**\n * If value is not array, then translate it to array.\n * @param {*} value\n * @return {Array} [value] or value\n */\n\nfunction normalizeToArray(value) {\n return value instanceof Array ? value : value == null ? [] : [value];\n}\n/**\n * Sync default option between normal and emphasis like `position` and `show`\n * In case some one will write code like\n * label: {\n * show: false,\n * position: 'outside',\n * fontSize: 18\n * },\n * emphasis: {\n * label: { show: true }\n * }\n * @param {Object} opt\n * @param {string} key\n * @param {Array.} subOpts\n */\n\n\nfunction defaultEmphasis(opt, key, subOpts) {\n // Caution: performance sensitive.\n if (opt) {\n opt[key] = opt[key] || {};\n opt.emphasis = opt.emphasis || {};\n opt.emphasis[key] = opt.emphasis[key] || {}; // Default emphasis option from normal\n\n for (var i = 0, len = subOpts.length; i < len; i++) {\n var subOptName = subOpts[i];\n\n if (!opt.emphasis[key].hasOwnProperty(subOptName) && opt[key].hasOwnProperty(subOptName)) {\n opt.emphasis[key][subOptName] = opt[key][subOptName];\n }\n }\n }\n}\n\nvar TEXT_STYLE_OPTIONS = ['fontStyle', 'fontWeight', 'fontSize', 'fontFamily', 'rich', 'tag', 'color', 'textBorderColor', 'textBorderWidth', 'width', 'height', 'lineHeight', 'align', 'verticalAlign', 'baseline', 'shadowColor', 'shadowBlur', 'shadowOffsetX', 'shadowOffsetY', 'textShadowColor', 'textShadowBlur', 'textShadowOffsetX', 'textShadowOffsetY', 'backgroundColor', 'borderColor', 'borderWidth', 'borderRadius', 'padding']; // modelUtil.LABEL_OPTIONS = modelUtil.TEXT_STYLE_OPTIONS.concat([\n// 'position', 'offset', 'rotate', 'origin', 'show', 'distance', 'formatter',\n// 'fontStyle', 'fontWeight', 'fontSize', 'fontFamily',\n// // FIXME: deprecated, check and remove it.\n// 'textStyle'\n// ]);\n\n/**\n * The method do not ensure performance.\n * data could be [12, 2323, {value: 223}, [1221, 23], {value: [2, 23]}]\n * This helper method retieves value from data.\n * @param {string|number|Date|Array|Object} dataItem\n * @return {number|string|Date|Array.}\n */\n\nfunction getDataItemValue(dataItem) {\n return isObject(dataItem) && !isArray(dataItem) && !(dataItem instanceof Date) ? dataItem.value : dataItem;\n}\n/**\n * data could be [12, 2323, {value: 223}, [1221, 23], {value: [2, 23]}]\n * This helper method determine if dataItem has extra option besides value\n * @param {string|number|Date|Array|Object} dataItem\n */\n\n\nfunction isDataItemOption(dataItem) {\n return isObject(dataItem) && !(dataItem instanceof Array); // // markLine data can be array\n // && !(dataItem[0] && isObject(dataItem[0]) && !(dataItem[0] instanceof Array));\n}\n/**\n * Mapping to exists for merge.\n *\n * @public\n * @param {Array.|Array.} exists\n * @param {Object|Array.} newCptOptions\n * @return {Array.} Result, like [{exist: ..., option: ...}, {}],\n * index of which is the same as exists.\n */\n\n\nfunction mappingToExists(exists, newCptOptions) {\n // Mapping by the order by original option (but not order of\n // new option) in merge mode. Because we should ensure\n // some specified index (like xAxisIndex) is consistent with\n // original option, which is easy to understand, espatially in\n // media query. And in most case, merge option is used to\n // update partial option but not be expected to change order.\n newCptOptions = (newCptOptions || []).slice();\n var result = zrUtil.map(exists || [], function (obj, index) {\n return {\n exist: obj\n };\n }); // Mapping by id or name if specified.\n\n each(newCptOptions, function (cptOption, index) {\n if (!isObject(cptOption)) {\n return;\n } // id has highest priority.\n\n\n for (var i = 0; i < result.length; i++) {\n if (!result[i].option // Consider name: two map to one.\n && cptOption.id != null && result[i].exist.id === cptOption.id + '') {\n result[i].option = cptOption;\n newCptOptions[index] = null;\n return;\n }\n }\n\n for (var i = 0; i < result.length; i++) {\n var exist = result[i].exist;\n\n if (!result[i].option // Consider name: two map to one.\n // Can not match when both ids exist but different.\n && (exist.id == null || cptOption.id == null) && cptOption.name != null && !isIdInner(cptOption) && !isIdInner(exist) && exist.name === cptOption.name + '') {\n result[i].option = cptOption;\n newCptOptions[index] = null;\n return;\n }\n }\n }); // Otherwise mapping by index.\n\n each(newCptOptions, function (cptOption, index) {\n if (!isObject(cptOption)) {\n return;\n }\n\n var i = 0;\n\n for (; i < result.length; i++) {\n var exist = result[i].exist;\n\n if (!result[i].option // Existing model that already has id should be able to\n // mapped to (because after mapping performed model may\n // be assigned with a id, whish should not affect next\n // mapping), except those has inner id.\n && !isIdInner(exist) // Caution:\n // Do not overwrite id. But name can be overwritten,\n // because axis use name as 'show label text'.\n // 'exist' always has id and name and we dont\n // need to check it.\n && cptOption.id == null) {\n result[i].option = cptOption;\n break;\n }\n }\n\n if (i >= result.length) {\n result.push({\n option: cptOption\n });\n }\n });\n return result;\n}\n/**\n * Make id and name for mapping result (result of mappingToExists)\n * into `keyInfo` field.\n *\n * @public\n * @param {Array.} Result, like [{exist: ..., option: ...}, {}],\n * which order is the same as exists.\n * @return {Array.} The input.\n */\n\n\nfunction makeIdAndName(mapResult) {\n // We use this id to hash component models and view instances\n // in echarts. id can be specified by user, or auto generated.\n // The id generation rule ensures new view instance are able\n // to mapped to old instance when setOption are called in\n // no-merge mode. So we generate model id by name and plus\n // type in view id.\n // name can be duplicated among components, which is convenient\n // to specify multi components (like series) by one name.\n // Ensure that each id is distinct.\n var idMap = zrUtil.createHashMap();\n each(mapResult, function (item, index) {\n var existCpt = item.exist;\n existCpt && idMap.set(existCpt.id, item);\n });\n each(mapResult, function (item, index) {\n var opt = item.option;\n zrUtil.assert(!opt || opt.id == null || !idMap.get(opt.id) || idMap.get(opt.id) === item, 'id duplicates: ' + (opt && opt.id));\n opt && opt.id != null && idMap.set(opt.id, item);\n !item.keyInfo && (item.keyInfo = {});\n }); // Make name and id.\n\n each(mapResult, function (item, index) {\n var existCpt = item.exist;\n var opt = item.option;\n var keyInfo = item.keyInfo;\n\n if (!isObject(opt)) {\n return;\n } // name can be overwitten. Consider case: axis.name = '20km'.\n // But id generated by name will not be changed, which affect\n // only in that case: setOption with 'not merge mode' and view\n // instance will be recreated, which can be accepted.\n\n\n keyInfo.name = opt.name != null ? opt.name + '' : existCpt ? existCpt.name // Avoid diffferent series has the same name,\n // because name may be used like in color pallet.\n : DUMMY_COMPONENT_NAME_PREFIX + index;\n\n if (existCpt) {\n keyInfo.id = existCpt.id;\n } else if (opt.id != null) {\n keyInfo.id = opt.id + '';\n } else {\n // Consider this situatoin:\n // optionA: [{name: 'a'}, {name: 'a'}, {..}]\n // optionB [{..}, {name: 'a'}, {name: 'a'}]\n // Series with the same name between optionA and optionB\n // should be mapped.\n var idNum = 0;\n\n do {\n keyInfo.id = '\\0' + keyInfo.name + '\\0' + idNum++;\n } while (idMap.get(keyInfo.id));\n }\n\n idMap.set(keyInfo.id, item);\n });\n}\n\nfunction isNameSpecified(componentModel) {\n var name = componentModel.name; // Is specified when `indexOf` get -1 or > 0.\n\n return !!(name && name.indexOf(DUMMY_COMPONENT_NAME_PREFIX));\n}\n/**\n * @public\n * @param {Object} cptOption\n * @return {boolean}\n */\n\n\nfunction isIdInner(cptOption) {\n return isObject(cptOption) && cptOption.id && (cptOption.id + '').indexOf('\\0_ec_\\0') === 0;\n}\n/**\n * A helper for removing duplicate items between batchA and batchB,\n * and in themselves, and categorize by series.\n *\n * @param {Array.} batchA Like: [{seriesId: 2, dataIndex: [32, 4, 5]}, ...]\n * @param {Array.} batchB Like: [{seriesId: 2, dataIndex: [32, 4, 5]}, ...]\n * @return {Array., Array.>} result: [resultBatchA, resultBatchB]\n */\n\n\nfunction compressBatches(batchA, batchB) {\n var mapA = {};\n var mapB = {};\n makeMap(batchA || [], mapA);\n makeMap(batchB || [], mapB, mapA);\n return [mapToArray(mapA), mapToArray(mapB)];\n\n function makeMap(sourceBatch, map, otherMap) {\n for (var i = 0, len = sourceBatch.length; i < len; i++) {\n var seriesId = sourceBatch[i].seriesId;\n var dataIndices = normalizeToArray(sourceBatch[i].dataIndex);\n var otherDataIndices = otherMap && otherMap[seriesId];\n\n for (var j = 0, lenj = dataIndices.length; j < lenj; j++) {\n var dataIndex = dataIndices[j];\n\n if (otherDataIndices && otherDataIndices[dataIndex]) {\n otherDataIndices[dataIndex] = null;\n } else {\n (map[seriesId] || (map[seriesId] = {}))[dataIndex] = 1;\n }\n }\n }\n }\n\n function mapToArray(map, isData) {\n var result = [];\n\n for (var i in map) {\n if (map.hasOwnProperty(i) && map[i] != null) {\n if (isData) {\n result.push(+i);\n } else {\n var dataIndices = mapToArray(map[i], true);\n dataIndices.length && result.push({\n seriesId: i,\n dataIndex: dataIndices\n });\n }\n }\n }\n\n return result;\n }\n}\n/**\n * @param {module:echarts/data/List} data\n * @param {Object} payload Contains dataIndex (means rawIndex) / dataIndexInside / name\n * each of which can be Array or primary type.\n * @return {number|Array.} dataIndex If not found, return undefined/null.\n */\n\n\nfunction queryDataIndex(data, payload) {\n if (payload.dataIndexInside != null) {\n return payload.dataIndexInside;\n } else if (payload.dataIndex != null) {\n return zrUtil.isArray(payload.dataIndex) ? zrUtil.map(payload.dataIndex, function (value) {\n return data.indexOfRawIndex(value);\n }) : data.indexOfRawIndex(payload.dataIndex);\n } else if (payload.name != null) {\n return zrUtil.isArray(payload.name) ? zrUtil.map(payload.name, function (value) {\n return data.indexOfName(value);\n }) : data.indexOfName(payload.name);\n }\n}\n/**\n * Enable property storage to any host object.\n * Notice: Serialization is not supported.\n *\n * For example:\n * var inner = zrUitl.makeInner();\n *\n * function some1(hostObj) {\n * inner(hostObj).someProperty = 1212;\n * ...\n * }\n * function some2() {\n * var fields = inner(this);\n * fields.someProperty1 = 1212;\n * fields.someProperty2 = 'xx';\n * ...\n * }\n *\n * @return {Function}\n */\n\n\nfunction makeInner() {\n // Consider different scope by es module import.\n var key = '__\\0ec_inner_' + innerUniqueIndex++ + '_' + Math.random().toFixed(5);\n return function (hostObj) {\n return hostObj[key] || (hostObj[key] = {});\n };\n}\n\nvar innerUniqueIndex = 0;\n/**\n * @param {module:echarts/model/Global} ecModel\n * @param {string|Object} finder\n * If string, e.g., 'geo', means {geoIndex: 0}.\n * If Object, could contain some of these properties below:\n * {\n * seriesIndex, seriesId, seriesName,\n * geoIndex, geoId, geoName,\n * bmapIndex, bmapId, bmapName,\n * xAxisIndex, xAxisId, xAxisName,\n * yAxisIndex, yAxisId, yAxisName,\n * gridIndex, gridId, gridName,\n * ... (can be extended)\n * }\n * Each properties can be number|string|Array.|Array.\n * For example, a finder could be\n * {\n * seriesIndex: 3,\n * geoId: ['aa', 'cc'],\n * gridName: ['xx', 'rr']\n * }\n * xxxIndex can be set as 'all' (means all xxx) or 'none' (means not specify)\n * If nothing or null/undefined specified, return nothing.\n * @param {Object} [opt]\n * @param {string} [opt.defaultMainType]\n * @param {Array.} [opt.includeMainTypes]\n * @return {Object} result like:\n * {\n * seriesModels: [seriesModel1, seriesModel2],\n * seriesModel: seriesModel1, // The first model\n * geoModels: [geoModel1, geoModel2],\n * geoModel: geoModel1, // The first model\n * ...\n * }\n */\n\nfunction parseFinder(ecModel, finder, opt) {\n if (zrUtil.isString(finder)) {\n var obj = {};\n obj[finder + 'Index'] = 0;\n finder = obj;\n }\n\n var defaultMainType = opt && opt.defaultMainType;\n\n if (defaultMainType && !has(finder, defaultMainType + 'Index') && !has(finder, defaultMainType + 'Id') && !has(finder, defaultMainType + 'Name')) {\n finder[defaultMainType + 'Index'] = 0;\n }\n\n var result = {};\n each(finder, function (value, key) {\n var value = finder[key]; // Exclude 'dataIndex' and other illgal keys.\n\n if (key === 'dataIndex' || key === 'dataIndexInside') {\n result[key] = value;\n return;\n }\n\n var parsedKey = key.match(/^(\\w+)(Index|Id|Name)$/) || [];\n var mainType = parsedKey[1];\n var queryType = (parsedKey[2] || '').toLowerCase();\n\n if (!mainType || !queryType || value == null || queryType === 'index' && value === 'none' || opt && opt.includeMainTypes && zrUtil.indexOf(opt.includeMainTypes, mainType) < 0) {\n return;\n }\n\n var queryParam = {\n mainType: mainType\n };\n\n if (queryType !== 'index' || value !== 'all') {\n queryParam[queryType] = value;\n }\n\n var models = ecModel.queryComponents(queryParam);\n result[mainType + 'Models'] = models;\n result[mainType + 'Model'] = models[0];\n });\n return result;\n}\n\nfunction has(obj, prop) {\n return obj && obj.hasOwnProperty(prop);\n}\n\nfunction setAttribute(dom, key, value) {\n dom.setAttribute ? dom.setAttribute(key, value) : dom[key] = value;\n}\n\nfunction getAttribute(dom, key) {\n return dom.getAttribute ? dom.getAttribute(key) : dom[key];\n}\n\nfunction getTooltipRenderMode(renderModeOption) {\n if (renderModeOption === 'auto') {\n // Using html when `document` exists, use richText otherwise\n return env.domSupported ? 'html' : 'richText';\n } else {\n return renderModeOption || 'html';\n }\n}\n/**\n * Group a list by key.\n *\n * @param {Array} array\n * @param {Function} getKey\n * param {*} Array item\n * return {string} key\n * @return {Object} Result\n * {Array}: keys,\n * {module:zrender/core/util/HashMap} buckets: {key -> Array}\n */\n\n\nfunction groupData(array, getKey) {\n var buckets = zrUtil.createHashMap();\n var keys = [];\n zrUtil.each(array, function (item) {\n var key = getKey(item);\n (buckets.get(key) || (keys.push(key), buckets.set(key, []))).push(item);\n });\n return {\n keys: keys,\n buckets: buckets\n };\n}\n\nexports.normalizeToArray = normalizeToArray;\nexports.defaultEmphasis = defaultEmphasis;\nexports.TEXT_STYLE_OPTIONS = TEXT_STYLE_OPTIONS;\nexports.getDataItemValue = getDataItemValue;\nexports.isDataItemOption = isDataItemOption;\nexports.mappingToExists = mappingToExists;\nexports.makeIdAndName = makeIdAndName;\nexports.isNameSpecified = isNameSpecified;\nexports.isIdInner = isIdInner;\nexports.compressBatches = compressBatches;\nexports.queryDataIndex = queryDataIndex;\nexports.makeInner = makeInner;\nexports.parseFinder = parseFinder;\nexports.setAttribute = setAttribute;\nexports.getAttribute = getAttribute;\nexports.getTooltipRenderMode = getTooltipRenderMode;\nexports.groupData = groupData;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar clazzUtil = require(\"../util/clazz\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * // Scale class management\n * @module echarts/scale/Scale\n */\n\n/**\n * @param {Object} [setting]\n */\nfunction Scale(setting) {\n this._setting = setting || {};\n /**\n * Extent\n * @type {Array.}\n * @protected\n */\n\n this._extent = [Infinity, -Infinity];\n /**\n * Step is calculated in adjustExtent\n * @type {Array.}\n * @protected\n */\n\n this._interval = 0;\n this.init && this.init.apply(this, arguments);\n}\n/**\n * Parse input val to valid inner number.\n * @param {*} val\n * @return {number}\n */\n\n\nScale.prototype.parse = function (val) {\n // Notice: This would be a trap here, If the implementation\n // of this method depends on extent, and this method is used\n // before extent set (like in dataZoom), it would be wrong.\n // Nevertheless, parse does not depend on extent generally.\n return val;\n};\n\nScale.prototype.getSetting = function (name) {\n return this._setting[name];\n};\n\nScale.prototype.contain = function (val) {\n var extent = this._extent;\n return val >= extent[0] && val <= extent[1];\n};\n/**\n * Normalize value to linear [0, 1], return 0.5 if extent span is 0\n * @param {number} val\n * @return {number}\n */\n\n\nScale.prototype.normalize = function (val) {\n var extent = this._extent;\n\n if (extent[1] === extent[0]) {\n return 0.5;\n }\n\n return (val - extent[0]) / (extent[1] - extent[0]);\n};\n/**\n * Scale normalized value\n * @param {number} val\n * @return {number}\n */\n\n\nScale.prototype.scale = function (val) {\n var extent = this._extent;\n return val * (extent[1] - extent[0]) + extent[0];\n};\n/**\n * Set extent from data\n * @param {Array.} other\n */\n\n\nScale.prototype.unionExtent = function (other) {\n var extent = this._extent;\n other[0] < extent[0] && (extent[0] = other[0]);\n other[1] > extent[1] && (extent[1] = other[1]); // not setExtent because in log axis it may transformed to power\n // this.setExtent(extent[0], extent[1]);\n};\n/**\n * Set extent from data\n * @param {module:echarts/data/List} data\n * @param {string} dim\n */\n\n\nScale.prototype.unionExtentFromData = function (data, dim) {\n this.unionExtent(data.getApproximateExtent(dim));\n};\n/**\n * Get extent\n * @return {Array.}\n */\n\n\nScale.prototype.getExtent = function () {\n return this._extent.slice();\n};\n/**\n * Set extent\n * @param {number} start\n * @param {number} end\n */\n\n\nScale.prototype.setExtent = function (start, end) {\n var thisExtent = this._extent;\n\n if (!isNaN(start)) {\n thisExtent[0] = start;\n }\n\n if (!isNaN(end)) {\n thisExtent[1] = end;\n }\n};\n/**\n * When axis extent depends on data and no data exists,\n * axis ticks should not be drawn, which is named 'blank'.\n */\n\n\nScale.prototype.isBlank = function () {\n return this._isBlank;\n},\n/**\n * When axis extent depends on data and no data exists,\n * axis ticks should not be drawn, which is named 'blank'.\n */\nScale.prototype.setBlank = function (isBlank) {\n this._isBlank = isBlank;\n};\n/**\n * @abstract\n * @param {*} tick\n * @return {string} label of the tick.\n */\n\nScale.prototype.getLabel = null;\nclazzUtil.enableClassExtend(Scale);\nclazzUtil.enableClassManagement(Scale, {\n registerWhenExtend: true\n});\nvar _default = Scale;\nmodule.exports = _default;","var zrUtil = require(\"../core/util\");\n\nvar Element = require(\"../Element\");\n\nvar BoundingRect = require(\"../core/BoundingRect\");\n\n/**\n * Group是一个容器,可以插入子节点,Group的变换也会被应用到子节点上\n * @module zrender/graphic/Group\n * @example\n * var Group = require('zrender/container/Group');\n * var Circle = require('zrender/graphic/shape/Circle');\n * var g = new Group();\n * g.position[0] = 100;\n * g.position[1] = 100;\n * g.add(new Circle({\n * style: {\n * x: 100,\n * y: 100,\n * r: 20,\n * }\n * }));\n * zr.add(g);\n */\n\n/**\n * @alias module:zrender/graphic/Group\n * @constructor\n * @extends module:zrender/mixin/Transformable\n * @extends module:zrender/mixin/Eventful\n */\nvar Group = function (opts) {\n opts = opts || {};\n Element.call(this, opts);\n\n for (var key in opts) {\n if (opts.hasOwnProperty(key)) {\n this[key] = opts[key];\n }\n }\n\n this._children = [];\n this.__storage = null;\n this.__dirty = true;\n};\n\nGroup.prototype = {\n constructor: Group,\n isGroup: true,\n\n /**\n * @type {string}\n */\n type: 'group',\n\n /**\n * 所有子孙元素是否响应鼠标事件\n * @name module:/zrender/container/Group#silent\n * @type {boolean}\n * @default false\n */\n silent: false,\n\n /**\n * @return {Array.}\n */\n children: function () {\n return this._children.slice();\n },\n\n /**\n * 获取指定 index 的儿子节点\n * @param {number} idx\n * @return {module:zrender/Element}\n */\n childAt: function (idx) {\n return this._children[idx];\n },\n\n /**\n * 获取指定名字的儿子节点\n * @param {string} name\n * @return {module:zrender/Element}\n */\n childOfName: function (name) {\n var children = this._children;\n\n for (var i = 0; i < children.length; i++) {\n if (children[i].name === name) {\n return children[i];\n }\n }\n },\n\n /**\n * @return {number}\n */\n childCount: function () {\n return this._children.length;\n },\n\n /**\n * 添加子节点到最后\n * @param {module:zrender/Element} child\n */\n add: function (child) {\n if (child && child !== this && child.parent !== this) {\n this._children.push(child);\n\n this._doAdd(child);\n }\n\n return this;\n },\n\n /**\n * 添加子节点在 nextSibling 之前\n * @param {module:zrender/Element} child\n * @param {module:zrender/Element} nextSibling\n */\n addBefore: function (child, nextSibling) {\n if (child && child !== this && child.parent !== this && nextSibling && nextSibling.parent === this) {\n var children = this._children;\n var idx = children.indexOf(nextSibling);\n\n if (idx >= 0) {\n children.splice(idx, 0, child);\n\n this._doAdd(child);\n }\n }\n\n return this;\n },\n _doAdd: function (child) {\n if (child.parent) {\n child.parent.remove(child);\n }\n\n child.parent = this;\n var storage = this.__storage;\n var zr = this.__zr;\n\n if (storage && storage !== child.__storage) {\n storage.addToStorage(child);\n\n if (child instanceof Group) {\n child.addChildrenToStorage(storage);\n }\n }\n\n zr && zr.refresh();\n },\n\n /**\n * 移除子节点\n * @param {module:zrender/Element} child\n */\n remove: function (child) {\n var zr = this.__zr;\n var storage = this.__storage;\n var children = this._children;\n var idx = zrUtil.indexOf(children, child);\n\n if (idx < 0) {\n return this;\n }\n\n children.splice(idx, 1);\n child.parent = null;\n\n if (storage) {\n storage.delFromStorage(child);\n\n if (child instanceof Group) {\n child.delChildrenFromStorage(storage);\n }\n }\n\n zr && zr.refresh();\n return this;\n },\n\n /**\n * 移除所有子节点\n */\n removeAll: function () {\n var children = this._children;\n var storage = this.__storage;\n var child;\n var i;\n\n for (i = 0; i < children.length; i++) {\n child = children[i];\n\n if (storage) {\n storage.delFromStorage(child);\n\n if (child instanceof Group) {\n child.delChildrenFromStorage(storage);\n }\n }\n\n child.parent = null;\n }\n\n children.length = 0;\n return this;\n },\n\n /**\n * 遍历所有子节点\n * @param {Function} cb\n * @param {} context\n */\n eachChild: function (cb, context) {\n var children = this._children;\n\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n cb.call(context, child, i);\n }\n\n return this;\n },\n\n /**\n * 深度优先遍历所有子孙节点\n * @param {Function} cb\n * @param {} context\n */\n traverse: function (cb, context) {\n for (var i = 0; i < this._children.length; i++) {\n var child = this._children[i];\n cb.call(context, child);\n\n if (child.type === 'group') {\n child.traverse(cb, context);\n }\n }\n\n return this;\n },\n addChildrenToStorage: function (storage) {\n for (var i = 0; i < this._children.length; i++) {\n var child = this._children[i];\n storage.addToStorage(child);\n\n if (child instanceof Group) {\n child.addChildrenToStorage(storage);\n }\n }\n },\n delChildrenFromStorage: function (storage) {\n for (var i = 0; i < this._children.length; i++) {\n var child = this._children[i];\n storage.delFromStorage(child);\n\n if (child instanceof Group) {\n child.delChildrenFromStorage(storage);\n }\n }\n },\n dirty: function () {\n this.__dirty = true;\n this.__zr && this.__zr.refresh();\n return this;\n },\n\n /**\n * @return {module:zrender/core/BoundingRect}\n */\n getBoundingRect: function (includeChildren) {\n // TODO Caching\n var rect = null;\n var tmpRect = new BoundingRect(0, 0, 0, 0);\n var children = includeChildren || this._children;\n var tmpMat = [];\n\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n\n if (child.ignore || child.invisible) {\n continue;\n }\n\n var childRect = child.getBoundingRect();\n var transform = child.getLocalTransform(tmpMat); // TODO\n // The boundingRect cacluated by transforming original\n // rect may be bigger than the actual bundingRect when rotation\n // is used. (Consider a circle rotated aginst its center, where\n // the actual boundingRect should be the same as that not be\n // rotated.) But we can not find better approach to calculate\n // actual boundingRect yet, considering performance.\n\n if (transform) {\n tmpRect.copy(childRect);\n tmpRect.applyTransform(transform);\n rect = rect || tmpRect.clone();\n rect.union(tmpRect);\n } else {\n rect = rect || childRect.clone();\n rect.union(childRect);\n }\n }\n\n return rect || tmpRect;\n }\n};\nzrUtil.inherits(Group, Element);\nvar _default = Group;\nmodule.exports = _default;","var vec2 = require(\"./vector\");\n\nvar curve = require(\"./curve\");\n\n/**\n * @author Yi Shen(https://github.com/pissang)\n */\nvar mathMin = Math.min;\nvar mathMax = Math.max;\nvar mathSin = Math.sin;\nvar mathCos = Math.cos;\nvar PI2 = Math.PI * 2;\nvar start = vec2.create();\nvar end = vec2.create();\nvar extremity = vec2.create();\n/**\n * 从顶点数组中计算出最小包围盒,写入`min`和`max`中\n * @module zrender/core/bbox\n * @param {Array} points 顶点数组\n * @param {number} min\n * @param {number} max\n */\n\nfunction fromPoints(points, min, max) {\n if (points.length === 0) {\n return;\n }\n\n var p = points[0];\n var left = p[0];\n var right = p[0];\n var top = p[1];\n var bottom = p[1];\n var i;\n\n for (i = 1; i < points.length; i++) {\n p = points[i];\n left = mathMin(left, p[0]);\n right = mathMax(right, p[0]);\n top = mathMin(top, p[1]);\n bottom = mathMax(bottom, p[1]);\n }\n\n min[0] = left;\n min[1] = top;\n max[0] = right;\n max[1] = bottom;\n}\n/**\n * @memberOf module:zrender/core/bbox\n * @param {number} x0\n * @param {number} y0\n * @param {number} x1\n * @param {number} y1\n * @param {Array.} min\n * @param {Array.} max\n */\n\n\nfunction fromLine(x0, y0, x1, y1, min, max) {\n min[0] = mathMin(x0, x1);\n min[1] = mathMin(y0, y1);\n max[0] = mathMax(x0, x1);\n max[1] = mathMax(y0, y1);\n}\n\nvar xDim = [];\nvar yDim = [];\n/**\n * 从三阶贝塞尔曲线(p0, p1, p2, p3)中计算出最小包围盒,写入`min`和`max`中\n * @memberOf module:zrender/core/bbox\n * @param {number} x0\n * @param {number} y0\n * @param {number} x1\n * @param {number} y1\n * @param {number} x2\n * @param {number} y2\n * @param {number} x3\n * @param {number} y3\n * @param {Array.} min\n * @param {Array.} max\n */\n\nfunction fromCubic(x0, y0, x1, y1, x2, y2, x3, y3, min, max) {\n var cubicExtrema = curve.cubicExtrema;\n var cubicAt = curve.cubicAt;\n var i;\n var n = cubicExtrema(x0, x1, x2, x3, xDim);\n min[0] = Infinity;\n min[1] = Infinity;\n max[0] = -Infinity;\n max[1] = -Infinity;\n\n for (i = 0; i < n; i++) {\n var x = cubicAt(x0, x1, x2, x3, xDim[i]);\n min[0] = mathMin(x, min[0]);\n max[0] = mathMax(x, max[0]);\n }\n\n n = cubicExtrema(y0, y1, y2, y3, yDim);\n\n for (i = 0; i < n; i++) {\n var y = cubicAt(y0, y1, y2, y3, yDim[i]);\n min[1] = mathMin(y, min[1]);\n max[1] = mathMax(y, max[1]);\n }\n\n min[0] = mathMin(x0, min[0]);\n max[0] = mathMax(x0, max[0]);\n min[0] = mathMin(x3, min[0]);\n max[0] = mathMax(x3, max[0]);\n min[1] = mathMin(y0, min[1]);\n max[1] = mathMax(y0, max[1]);\n min[1] = mathMin(y3, min[1]);\n max[1] = mathMax(y3, max[1]);\n}\n/**\n * 从二阶贝塞尔曲线(p0, p1, p2)中计算出最小包围盒,写入`min`和`max`中\n * @memberOf module:zrender/core/bbox\n * @param {number} x0\n * @param {number} y0\n * @param {number} x1\n * @param {number} y1\n * @param {number} x2\n * @param {number} y2\n * @param {Array.} min\n * @param {Array.} max\n */\n\n\nfunction fromQuadratic(x0, y0, x1, y1, x2, y2, min, max) {\n var quadraticExtremum = curve.quadraticExtremum;\n var quadraticAt = curve.quadraticAt; // Find extremities, where derivative in x dim or y dim is zero\n\n var tx = mathMax(mathMin(quadraticExtremum(x0, x1, x2), 1), 0);\n var ty = mathMax(mathMin(quadraticExtremum(y0, y1, y2), 1), 0);\n var x = quadraticAt(x0, x1, x2, tx);\n var y = quadraticAt(y0, y1, y2, ty);\n min[0] = mathMin(x0, x2, x);\n min[1] = mathMin(y0, y2, y);\n max[0] = mathMax(x0, x2, x);\n max[1] = mathMax(y0, y2, y);\n}\n/**\n * 从圆弧中计算出最小包围盒,写入`min`和`max`中\n * @method\n * @memberOf module:zrender/core/bbox\n * @param {number} x\n * @param {number} y\n * @param {number} rx\n * @param {number} ry\n * @param {number} startAngle\n * @param {number} endAngle\n * @param {number} anticlockwise\n * @param {Array.} min\n * @param {Array.} max\n */\n\n\nfunction fromArc(x, y, rx, ry, startAngle, endAngle, anticlockwise, min, max) {\n var vec2Min = vec2.min;\n var vec2Max = vec2.max;\n var diff = Math.abs(startAngle - endAngle);\n\n if (diff % PI2 < 1e-4 && diff > 1e-4) {\n // Is a circle\n min[0] = x - rx;\n min[1] = y - ry;\n max[0] = x + rx;\n max[1] = y + ry;\n return;\n }\n\n start[0] = mathCos(startAngle) * rx + x;\n start[1] = mathSin(startAngle) * ry + y;\n end[0] = mathCos(endAngle) * rx + x;\n end[1] = mathSin(endAngle) * ry + y;\n vec2Min(min, start, end);\n vec2Max(max, start, end); // Thresh to [0, Math.PI * 2]\n\n startAngle = startAngle % PI2;\n\n if (startAngle < 0) {\n startAngle = startAngle + PI2;\n }\n\n endAngle = endAngle % PI2;\n\n if (endAngle < 0) {\n endAngle = endAngle + PI2;\n }\n\n if (startAngle > endAngle && !anticlockwise) {\n endAngle += PI2;\n } else if (startAngle < endAngle && anticlockwise) {\n startAngle += PI2;\n }\n\n if (anticlockwise) {\n var tmp = endAngle;\n endAngle = startAngle;\n startAngle = tmp;\n } // var number = 0;\n // var step = (anticlockwise ? -Math.PI : Math.PI) / 2;\n\n\n for (var angle = 0; angle < endAngle; angle += Math.PI / 2) {\n if (angle > startAngle) {\n extremity[0] = mathCos(angle) * rx + x;\n extremity[1] = mathSin(angle) * ry + y;\n vec2Min(min, extremity, min);\n vec2Max(max, extremity, max);\n }\n }\n}\n\nexports.fromPoints = fromPoints;\nexports.fromLine = fromLine;\nexports.fromCubic = fromCubic;\nexports.fromQuadratic = fromQuadratic;\nexports.fromArc = fromArc;","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _model = require(\"../../util/model\");\n\nvar makeInner = _model.makeInner;\nvar normalizeToArray = _model.normalizeToArray;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar inner = makeInner();\n\nfunction getNearestColorPalette(colors, requestColorNum) {\n var paletteNum = colors.length; // TODO colors must be in order\n\n for (var i = 0; i < paletteNum; i++) {\n if (colors[i].length > requestColorNum) {\n return colors[i];\n }\n }\n\n return colors[paletteNum - 1];\n}\n\nvar _default = {\n clearColorPalette: function () {\n inner(this).colorIdx = 0;\n inner(this).colorNameMap = {};\n },\n\n /**\n * @param {string} name MUST NOT be null/undefined. Otherwise call this function\n * twise with the same parameters will get different result.\n * @param {Object} [scope=this]\n * @param {Object} [requestColorNum]\n * @return {string} color string.\n */\n getColorFromPalette: function (name, scope, requestColorNum) {\n scope = scope || this;\n var scopeFields = inner(scope);\n var colorIdx = scopeFields.colorIdx || 0;\n var colorNameMap = scopeFields.colorNameMap = scopeFields.colorNameMap || {}; // Use `hasOwnProperty` to avoid conflict with Object.prototype.\n\n if (colorNameMap.hasOwnProperty(name)) {\n return colorNameMap[name];\n }\n\n var defaultColorPalette = normalizeToArray(this.get('color', true));\n var layeredColorPalette = this.get('colorLayer', true);\n var colorPalette = requestColorNum == null || !layeredColorPalette ? defaultColorPalette : getNearestColorPalette(layeredColorPalette, requestColorNum); // In case can't find in layered color palette.\n\n colorPalette = colorPalette || defaultColorPalette;\n\n if (!colorPalette || !colorPalette.length) {\n return;\n }\n\n var color = colorPalette[colorIdx];\n\n if (name) {\n colorNameMap[name] = color;\n }\n\n scopeFields.colorIdx = (colorIdx + 1) % colorPalette.length;\n return color;\n }\n};\nmodule.exports = _default;","var curve = require(\"../core/curve\");\n\n/**\n * 三次贝塞尔曲线描边包含判断\n * @param {number} x0\n * @param {number} y0\n * @param {number} x1\n * @param {number} y1\n * @param {number} x2\n * @param {number} y2\n * @param {number} x3\n * @param {number} y3\n * @param {number} lineWidth\n * @param {number} x\n * @param {number} y\n * @return {boolean}\n */\nfunction containStroke(x0, y0, x1, y1, x2, y2, x3, y3, lineWidth, x, y) {\n if (lineWidth === 0) {\n return false;\n }\n\n var _l = lineWidth; // Quick reject\n\n if (y > y0 + _l && y > y1 + _l && y > y2 + _l && y > y3 + _l || y < y0 - _l && y < y1 - _l && y < y2 - _l && y < y3 - _l || x > x0 + _l && x > x1 + _l && x > x2 + _l && x > x3 + _l || x < x0 - _l && x < x1 - _l && x < x2 - _l && x < x3 - _l) {\n return false;\n }\n\n var d = curve.cubicProjectPoint(x0, y0, x1, y1, x2, y2, x3, y3, x, y, null);\n return d <= _l / 2;\n}\n\nexports.containStroke = containStroke;","var BoundingRect = require(\"../core/BoundingRect\");\n\nvar imageHelper = require(\"../graphic/helper/image\");\n\nvar _util = require(\"../core/util\");\n\nvar getContext = _util.getContext;\nvar extend = _util.extend;\nvar retrieve2 = _util.retrieve2;\nvar retrieve3 = _util.retrieve3;\nvar trim = _util.trim;\nvar textWidthCache = {};\nvar textWidthCacheCounter = 0;\nvar TEXT_CACHE_MAX = 5000;\nvar STYLE_REG = /\\{([a-zA-Z0-9_]+)\\|([^}]*)\\}/g;\nvar DEFAULT_FONT = '12px sans-serif'; // Avoid assign to an exported variable, for transforming to cjs.\n\nvar methods = {};\n\nfunction $override(name, fn) {\n methods[name] = fn;\n}\n/**\n * @public\n * @param {string} text\n * @param {string} font\n * @return {number} width\n */\n\n\nfunction getWidth(text, font) {\n font = font || DEFAULT_FONT;\n var key = text + ':' + font;\n\n if (textWidthCache[key]) {\n return textWidthCache[key];\n }\n\n var textLines = (text + '').split('\\n');\n var width = 0;\n\n for (var i = 0, l = textLines.length; i < l; i++) {\n // textContain.measureText may be overrided in SVG or VML\n width = Math.max(measureText(textLines[i], font).width, width);\n }\n\n if (textWidthCacheCounter > TEXT_CACHE_MAX) {\n textWidthCacheCounter = 0;\n textWidthCache = {};\n }\n\n textWidthCacheCounter++;\n textWidthCache[key] = width;\n return width;\n}\n/**\n * @public\n * @param {string} text\n * @param {string} font\n * @param {string} [textAlign='left']\n * @param {string} [textVerticalAlign='top']\n * @param {Array.} [textPadding]\n * @param {Object} [rich]\n * @param {Object} [truncate]\n * @return {Object} {x, y, width, height, lineHeight}\n */\n\n\nfunction getBoundingRect(text, font, textAlign, textVerticalAlign, textPadding, textLineHeight, rich, truncate) {\n return rich ? getRichTextRect(text, font, textAlign, textVerticalAlign, textPadding, textLineHeight, rich, truncate) : getPlainTextRect(text, font, textAlign, textVerticalAlign, textPadding, textLineHeight, truncate);\n}\n\nfunction getPlainTextRect(text, font, textAlign, textVerticalAlign, textPadding, textLineHeight, truncate) {\n var contentBlock = parsePlainText(text, font, textPadding, textLineHeight, truncate);\n var outerWidth = getWidth(text, font);\n\n if (textPadding) {\n outerWidth += textPadding[1] + textPadding[3];\n }\n\n var outerHeight = contentBlock.outerHeight;\n var x = adjustTextX(0, outerWidth, textAlign);\n var y = adjustTextY(0, outerHeight, textVerticalAlign);\n var rect = new BoundingRect(x, y, outerWidth, outerHeight);\n rect.lineHeight = contentBlock.lineHeight;\n return rect;\n}\n\nfunction getRichTextRect(text, font, textAlign, textVerticalAlign, textPadding, textLineHeight, rich, truncate) {\n var contentBlock = parseRichText(text, {\n rich: rich,\n truncate: truncate,\n font: font,\n textAlign: textAlign,\n textPadding: textPadding,\n textLineHeight: textLineHeight\n });\n var outerWidth = contentBlock.outerWidth;\n var outerHeight = contentBlock.outerHeight;\n var x = adjustTextX(0, outerWidth, textAlign);\n var y = adjustTextY(0, outerHeight, textVerticalAlign);\n return new BoundingRect(x, y, outerWidth, outerHeight);\n}\n/**\n * @public\n * @param {number} x\n * @param {number} width\n * @param {string} [textAlign='left']\n * @return {number} Adjusted x.\n */\n\n\nfunction adjustTextX(x, width, textAlign) {\n // FIXME Right to left language\n if (textAlign === 'right') {\n x -= width;\n } else if (textAlign === 'center') {\n x -= width / 2;\n }\n\n return x;\n}\n/**\n * @public\n * @param {number} y\n * @param {number} height\n * @param {string} [textVerticalAlign='top']\n * @return {number} Adjusted y.\n */\n\n\nfunction adjustTextY(y, height, textVerticalAlign) {\n if (textVerticalAlign === 'middle') {\n y -= height / 2;\n } else if (textVerticalAlign === 'bottom') {\n y -= height;\n }\n\n return y;\n}\n/**\n * Follow same interface to `Displayable.prototype.calculateTextPosition`.\n * @public\n * @param {Obejct} [out] Prepared out object. If not input, auto created in the method.\n * @param {module:zrender/graphic/Style} style where `textPosition` and `textDistance` are visited.\n * @param {Object} rect {x, y, width, height} Rect of the host elment, according to which the text positioned.\n * @return {Object} The input `out`. Set: {x, y, textAlign, textVerticalAlign}\n */\n\n\nfunction calculateTextPosition(out, style, rect) {\n var textPosition = style.textPosition;\n var distance = style.textDistance;\n var x = rect.x;\n var y = rect.y;\n distance = distance || 0;\n var height = rect.height;\n var width = rect.width;\n var halfHeight = height / 2;\n var textAlign = 'left';\n var textVerticalAlign = 'top';\n\n switch (textPosition) {\n case 'left':\n x -= distance;\n y += halfHeight;\n textAlign = 'right';\n textVerticalAlign = 'middle';\n break;\n\n case 'right':\n x += distance + width;\n y += halfHeight;\n textVerticalAlign = 'middle';\n break;\n\n case 'top':\n x += width / 2;\n y -= distance;\n textAlign = 'center';\n textVerticalAlign = 'bottom';\n break;\n\n case 'bottom':\n x += width / 2;\n y += height + distance;\n textAlign = 'center';\n break;\n\n case 'inside':\n x += width / 2;\n y += halfHeight;\n textAlign = 'center';\n textVerticalAlign = 'middle';\n break;\n\n case 'insideLeft':\n x += distance;\n y += halfHeight;\n textVerticalAlign = 'middle';\n break;\n\n case 'insideRight':\n x += width - distance;\n y += halfHeight;\n textAlign = 'right';\n textVerticalAlign = 'middle';\n break;\n\n case 'insideTop':\n x += width / 2;\n y += distance;\n textAlign = 'center';\n break;\n\n case 'insideBottom':\n x += width / 2;\n y += height - distance;\n textAlign = 'center';\n textVerticalAlign = 'bottom';\n break;\n\n case 'insideTopLeft':\n x += distance;\n y += distance;\n break;\n\n case 'insideTopRight':\n x += width - distance;\n y += distance;\n textAlign = 'right';\n break;\n\n case 'insideBottomLeft':\n x += distance;\n y += height - distance;\n textVerticalAlign = 'bottom';\n break;\n\n case 'insideBottomRight':\n x += width - distance;\n y += height - distance;\n textAlign = 'right';\n textVerticalAlign = 'bottom';\n break;\n }\n\n out = out || {};\n out.x = x;\n out.y = y;\n out.textAlign = textAlign;\n out.textVerticalAlign = textVerticalAlign;\n return out;\n}\n/**\n * To be removed. But still do not remove in case that some one has imported it.\n * @deprecated\n * @public\n * @param {stirng} textPosition\n * @param {Object} rect {x, y, width, height}\n * @param {number} distance\n * @return {Object} {x, y, textAlign, textVerticalAlign}\n */\n\n\nfunction adjustTextPositionOnRect(textPosition, rect, distance) {\n var dummyStyle = {\n textPosition: textPosition,\n textDistance: distance\n };\n return calculateTextPosition({}, dummyStyle, rect);\n}\n/**\n * Show ellipsis if overflow.\n *\n * @public\n * @param {string} text\n * @param {string} containerWidth\n * @param {string} font\n * @param {number} [ellipsis='...']\n * @param {Object} [options]\n * @param {number} [options.maxIterations=3]\n * @param {number} [options.minChar=0] If truncate result are less\n * then minChar, ellipsis will not show, which is\n * better for user hint in some cases.\n * @param {number} [options.placeholder=''] When all truncated, use the placeholder.\n * @return {string}\n */\n\n\nfunction truncateText(text, containerWidth, font, ellipsis, options) {\n if (!containerWidth) {\n return '';\n }\n\n var textLines = (text + '').split('\\n');\n options = prepareTruncateOptions(containerWidth, font, ellipsis, options); // FIXME\n // It is not appropriate that every line has '...' when truncate multiple lines.\n\n for (var i = 0, len = textLines.length; i < len; i++) {\n textLines[i] = truncateSingleLine(textLines[i], options);\n }\n\n return textLines.join('\\n');\n}\n\nfunction prepareTruncateOptions(containerWidth, font, ellipsis, options) {\n options = extend({}, options);\n options.font = font;\n var ellipsis = retrieve2(ellipsis, '...');\n options.maxIterations = retrieve2(options.maxIterations, 2);\n var minChar = options.minChar = retrieve2(options.minChar, 0); // FIXME\n // Other languages?\n\n options.cnCharWidth = getWidth('国', font); // FIXME\n // Consider proportional font?\n\n var ascCharWidth = options.ascCharWidth = getWidth('a', font);\n options.placeholder = retrieve2(options.placeholder, ''); // Example 1: minChar: 3, text: 'asdfzxcv', truncate result: 'asdf', but not: 'a...'.\n // Example 2: minChar: 3, text: '维度', truncate result: '维', but not: '...'.\n\n var contentWidth = containerWidth = Math.max(0, containerWidth - 1); // Reserve some gap.\n\n for (var i = 0; i < minChar && contentWidth >= ascCharWidth; i++) {\n contentWidth -= ascCharWidth;\n }\n\n var ellipsisWidth = getWidth(ellipsis, font);\n\n if (ellipsisWidth > contentWidth) {\n ellipsis = '';\n ellipsisWidth = 0;\n }\n\n contentWidth = containerWidth - ellipsisWidth;\n options.ellipsis = ellipsis;\n options.ellipsisWidth = ellipsisWidth;\n options.contentWidth = contentWidth;\n options.containerWidth = containerWidth;\n return options;\n}\n\nfunction truncateSingleLine(textLine, options) {\n var containerWidth = options.containerWidth;\n var font = options.font;\n var contentWidth = options.contentWidth;\n\n if (!containerWidth) {\n return '';\n }\n\n var lineWidth = getWidth(textLine, font);\n\n if (lineWidth <= containerWidth) {\n return textLine;\n }\n\n for (var j = 0;; j++) {\n if (lineWidth <= contentWidth || j >= options.maxIterations) {\n textLine += options.ellipsis;\n break;\n }\n\n var subLength = j === 0 ? estimateLength(textLine, contentWidth, options.ascCharWidth, options.cnCharWidth) : lineWidth > 0 ? Math.floor(textLine.length * contentWidth / lineWidth) : 0;\n textLine = textLine.substr(0, subLength);\n lineWidth = getWidth(textLine, font);\n }\n\n if (textLine === '') {\n textLine = options.placeholder;\n }\n\n return textLine;\n}\n\nfunction estimateLength(text, contentWidth, ascCharWidth, cnCharWidth) {\n var width = 0;\n var i = 0;\n\n for (var len = text.length; i < len && width < contentWidth; i++) {\n var charCode = text.charCodeAt(i);\n width += 0 <= charCode && charCode <= 127 ? ascCharWidth : cnCharWidth;\n }\n\n return i;\n}\n/**\n * @public\n * @param {string} font\n * @return {number} line height\n */\n\n\nfunction getLineHeight(font) {\n // FIXME A rough approach.\n return getWidth('国', font);\n}\n/**\n * @public\n * @param {string} text\n * @param {string} font\n * @return {Object} width\n */\n\n\nfunction measureText(text, font) {\n return methods.measureText(text, font);\n} // Avoid assign to an exported variable, for transforming to cjs.\n\n\nmethods.measureText = function (text, font) {\n var ctx = getContext();\n ctx.font = font || DEFAULT_FONT;\n return ctx.measureText(text);\n};\n/**\n * @public\n * @param {string} text\n * @param {string} font\n * @param {Object} [truncate]\n * @return {Object} block: {lineHeight, lines, height, outerHeight, canCacheByTextString}\n * Notice: for performance, do not calculate outerWidth util needed.\n * `canCacheByTextString` means the result `lines` is only determined by the input `text`.\n * Thus we can simply comparing the `input` text to determin whether the result changed,\n * without travel the result `lines`.\n */\n\n\nfunction parsePlainText(text, font, padding, textLineHeight, truncate) {\n text != null && (text += '');\n var lineHeight = retrieve2(textLineHeight, getLineHeight(font));\n var lines = text ? text.split('\\n') : [];\n var height = lines.length * lineHeight;\n var outerHeight = height;\n var canCacheByTextString = true;\n\n if (padding) {\n outerHeight += padding[0] + padding[2];\n }\n\n if (text && truncate) {\n canCacheByTextString = false;\n var truncOuterHeight = truncate.outerHeight;\n var truncOuterWidth = truncate.outerWidth;\n\n if (truncOuterHeight != null && outerHeight > truncOuterHeight) {\n text = '';\n lines = [];\n } else if (truncOuterWidth != null) {\n var options = prepareTruncateOptions(truncOuterWidth - (padding ? padding[1] + padding[3] : 0), font, truncate.ellipsis, {\n minChar: truncate.minChar,\n placeholder: truncate.placeholder\n }); // FIXME\n // It is not appropriate that every line has '...' when truncate multiple lines.\n\n for (var i = 0, len = lines.length; i < len; i++) {\n lines[i] = truncateSingleLine(lines[i], options);\n }\n }\n }\n\n return {\n lines: lines,\n height: height,\n outerHeight: outerHeight,\n lineHeight: lineHeight,\n canCacheByTextString: canCacheByTextString\n };\n}\n/**\n * For example: 'some text {a|some text}other text{b|some text}xxx{c|}xxx'\n * Also consider 'bbbb{a|xxx\\nzzz}xxxx\\naaaa'.\n *\n * @public\n * @param {string} text\n * @param {Object} style\n * @return {Object} block\n * {\n * width,\n * height,\n * lines: [{\n * lineHeight,\n * width,\n * tokens: [[{\n * styleName,\n * text,\n * width, // include textPadding\n * height, // include textPadding\n * textWidth, // pure text width\n * textHeight, // pure text height\n * lineHeihgt,\n * font,\n * textAlign,\n * textVerticalAlign\n * }], [...], ...]\n * }, ...]\n * }\n * If styleName is undefined, it is plain text.\n */\n\n\nfunction parseRichText(text, style) {\n var contentBlock = {\n lines: [],\n width: 0,\n height: 0\n };\n text != null && (text += '');\n\n if (!text) {\n return contentBlock;\n }\n\n var lastIndex = STYLE_REG.lastIndex = 0;\n var result;\n\n while ((result = STYLE_REG.exec(text)) != null) {\n var matchedIndex = result.index;\n\n if (matchedIndex > lastIndex) {\n pushTokens(contentBlock, text.substring(lastIndex, matchedIndex));\n }\n\n pushTokens(contentBlock, result[2], result[1]);\n lastIndex = STYLE_REG.lastIndex;\n }\n\n if (lastIndex < text.length) {\n pushTokens(contentBlock, text.substring(lastIndex, text.length));\n }\n\n var lines = contentBlock.lines;\n var contentHeight = 0;\n var contentWidth = 0; // For `textWidth: 100%`\n\n var pendingList = [];\n var stlPadding = style.textPadding;\n var truncate = style.truncate;\n var truncateWidth = truncate && truncate.outerWidth;\n var truncateHeight = truncate && truncate.outerHeight;\n\n if (stlPadding) {\n truncateWidth != null && (truncateWidth -= stlPadding[1] + stlPadding[3]);\n truncateHeight != null && (truncateHeight -= stlPadding[0] + stlPadding[2]);\n } // Calculate layout info of tokens.\n\n\n for (var i = 0; i < lines.length; i++) {\n var line = lines[i];\n var lineHeight = 0;\n var lineWidth = 0;\n\n for (var j = 0; j < line.tokens.length; j++) {\n var token = line.tokens[j];\n var tokenStyle = token.styleName && style.rich[token.styleName] || {}; // textPadding should not inherit from style.\n\n var textPadding = token.textPadding = tokenStyle.textPadding; // textFont has been asigned to font by `normalizeStyle`.\n\n var font = token.font = tokenStyle.font || style.font; // textHeight can be used when textVerticalAlign is specified in token.\n\n var tokenHeight = token.textHeight = retrieve2( // textHeight should not be inherited, consider it can be specified\n // as box height of the block.\n tokenStyle.textHeight, getLineHeight(font));\n textPadding && (tokenHeight += textPadding[0] + textPadding[2]);\n token.height = tokenHeight;\n token.lineHeight = retrieve3(tokenStyle.textLineHeight, style.textLineHeight, tokenHeight);\n token.textAlign = tokenStyle && tokenStyle.textAlign || style.textAlign;\n token.textVerticalAlign = tokenStyle && tokenStyle.textVerticalAlign || 'middle';\n\n if (truncateHeight != null && contentHeight + token.lineHeight > truncateHeight) {\n return {\n lines: [],\n width: 0,\n height: 0\n };\n }\n\n token.textWidth = getWidth(token.text, font);\n var tokenWidth = tokenStyle.textWidth;\n var tokenWidthNotSpecified = tokenWidth == null || tokenWidth === 'auto'; // Percent width, can be `100%`, can be used in drawing separate\n // line when box width is needed to be auto.\n\n if (typeof tokenWidth === 'string' && tokenWidth.charAt(tokenWidth.length - 1) === '%') {\n token.percentWidth = tokenWidth;\n pendingList.push(token);\n tokenWidth = 0; // Do not truncate in this case, because there is no user case\n // and it is too complicated.\n } else {\n if (tokenWidthNotSpecified) {\n tokenWidth = token.textWidth; // FIXME: If image is not loaded and textWidth is not specified, calling\n // `getBoundingRect()` will not get correct result.\n\n var textBackgroundColor = tokenStyle.textBackgroundColor;\n var bgImg = textBackgroundColor && textBackgroundColor.image; // Use cases:\n // (1) If image is not loaded, it will be loaded at render phase and call\n // `dirty()` and `textBackgroundColor.image` will be replaced with the loaded\n // image, and then the right size will be calculated here at the next tick.\n // See `graphic/helper/text.js`.\n // (2) If image loaded, and `textBackgroundColor.image` is image src string,\n // use `imageHelper.findExistImage` to find cached image.\n // `imageHelper.findExistImage` will always be called here before\n // `imageHelper.createOrUpdateImage` in `graphic/helper/text.js#renderRichText`\n // which ensures that image will not be rendered before correct size calcualted.\n\n if (bgImg) {\n bgImg = imageHelper.findExistImage(bgImg);\n\n if (imageHelper.isImageReady(bgImg)) {\n tokenWidth = Math.max(tokenWidth, bgImg.width * tokenHeight / bgImg.height);\n }\n }\n }\n\n var paddingW = textPadding ? textPadding[1] + textPadding[3] : 0;\n tokenWidth += paddingW;\n var remianTruncWidth = truncateWidth != null ? truncateWidth - lineWidth : null;\n\n if (remianTruncWidth != null && remianTruncWidth < tokenWidth) {\n if (!tokenWidthNotSpecified || remianTruncWidth < paddingW) {\n token.text = '';\n token.textWidth = tokenWidth = 0;\n } else {\n token.text = truncateText(token.text, remianTruncWidth - paddingW, font, truncate.ellipsis, {\n minChar: truncate.minChar\n });\n token.textWidth = getWidth(token.text, font);\n tokenWidth = token.textWidth + paddingW;\n }\n }\n }\n\n lineWidth += token.width = tokenWidth;\n tokenStyle && (lineHeight = Math.max(lineHeight, token.lineHeight));\n }\n\n line.width = lineWidth;\n line.lineHeight = lineHeight;\n contentHeight += lineHeight;\n contentWidth = Math.max(contentWidth, lineWidth);\n }\n\n contentBlock.outerWidth = contentBlock.width = retrieve2(style.textWidth, contentWidth);\n contentBlock.outerHeight = contentBlock.height = retrieve2(style.textHeight, contentHeight);\n\n if (stlPadding) {\n contentBlock.outerWidth += stlPadding[1] + stlPadding[3];\n contentBlock.outerHeight += stlPadding[0] + stlPadding[2];\n }\n\n for (var i = 0; i < pendingList.length; i++) {\n var token = pendingList[i];\n var percentWidth = token.percentWidth; // Should not base on outerWidth, because token can not be placed out of padding.\n\n token.width = parseInt(percentWidth, 10) / 100 * contentWidth;\n }\n\n return contentBlock;\n}\n\nfunction pushTokens(block, str, styleName) {\n var isEmptyStr = str === '';\n var strs = str.split('\\n');\n var lines = block.lines;\n\n for (var i = 0; i < strs.length; i++) {\n var text = strs[i];\n var token = {\n styleName: styleName,\n text: text,\n isLineHolder: !text && !isEmptyStr\n }; // The first token should be appended to the last line.\n\n if (!i) {\n var tokens = (lines[lines.length - 1] || (lines[0] = {\n tokens: []\n })).tokens; // Consider cases:\n // (1) ''.split('\\n') => ['', '\\n', ''], the '' at the first item\n // (which is a placeholder) should be replaced by new token.\n // (2) A image backage, where token likes {a|}.\n // (3) A redundant '' will affect textAlign in line.\n // (4) tokens with the same tplName should not be merged, because\n // they should be displayed in different box (with border and padding).\n\n var tokensLen = tokens.length;\n tokensLen === 1 && tokens[0].isLineHolder ? tokens[0] = token : // Consider text is '', only insert when it is the \"lineHolder\" or\n // \"emptyStr\". Otherwise a redundant '' will affect textAlign in line.\n (text || !tokensLen || isEmptyStr) && tokens.push(token);\n } // Other tokens always start a new line.\n else {\n // If there is '', insert it as a placeholder.\n lines.push({\n tokens: [token]\n });\n }\n }\n}\n\nfunction makeFont(style) {\n // FIXME in node-canvas fontWeight is before fontStyle\n // Use `fontSize` `fontFamily` to check whether font properties are defined.\n var font = (style.fontSize || style.fontFamily) && [style.fontStyle, style.fontWeight, (style.fontSize || 12) + 'px', // If font properties are defined, `fontFamily` should not be ignored.\n style.fontFamily || 'sans-serif'].join(' ');\n return font && trim(font) || style.textFont || style.font;\n}\n\nexports.DEFAULT_FONT = DEFAULT_FONT;\nexports.$override = $override;\nexports.getWidth = getWidth;\nexports.getBoundingRect = getBoundingRect;\nexports.adjustTextX = adjustTextX;\nexports.adjustTextY = adjustTextY;\nexports.calculateTextPosition = calculateTextPosition;\nexports.adjustTextPositionOnRect = adjustTextPositionOnRect;\nexports.truncateText = truncateText;\nexports.getLineHeight = getLineHeight;\nexports.measureText = measureText;\nexports.parsePlainText = parsePlainText;\nexports.parseRichText = parseRichText;\nexports.makeFont = makeFont;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar each = _util.each;\n\nvar Group = require(\"zrender/lib/container/Group\");\n\nvar componentUtil = require(\"../util/component\");\n\nvar clazzUtil = require(\"../util/clazz\");\n\nvar modelUtil = require(\"../util/model\");\n\nvar graphicUtil = require(\"../util/graphic\");\n\nvar _task = require(\"../stream/task\");\n\nvar createTask = _task.createTask;\n\nvar createRenderPlanner = require(\"../chart/helper/createRenderPlanner\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar inner = modelUtil.makeInner();\nvar renderPlanner = createRenderPlanner();\n\nfunction Chart() {\n /**\n * @type {module:zrender/container/Group}\n * @readOnly\n */\n this.group = new Group();\n /**\n * @type {string}\n * @readOnly\n */\n\n this.uid = componentUtil.getUID('viewChart');\n this.renderTask = createTask({\n plan: renderTaskPlan,\n reset: renderTaskReset\n });\n this.renderTask.context = {\n view: this\n };\n}\n\nChart.prototype = {\n type: 'chart',\n\n /**\n * Init the chart.\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n */\n init: function (ecModel, api) {},\n\n /**\n * Render the chart.\n * @param {module:echarts/model/Series} seriesModel\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n * @param {Object} payload\n */\n render: function (seriesModel, ecModel, api, payload) {},\n\n /**\n * Highlight series or specified data item.\n * @param {module:echarts/model/Series} seriesModel\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n * @param {Object} payload\n */\n highlight: function (seriesModel, ecModel, api, payload) {\n toggleHighlight(seriesModel.getData(), payload, 'emphasis');\n },\n\n /**\n * Downplay series or specified data item.\n * @param {module:echarts/model/Series} seriesModel\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n * @param {Object} payload\n */\n downplay: function (seriesModel, ecModel, api, payload) {\n toggleHighlight(seriesModel.getData(), payload, 'normal');\n },\n\n /**\n * Remove self.\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n */\n remove: function (ecModel, api) {\n this.group.removeAll();\n },\n\n /**\n * Dispose self.\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n */\n dispose: function () {},\n\n /**\n * Rendering preparation in progressive mode.\n * @param {module:echarts/model/Series} seriesModel\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n * @param {Object} payload\n */\n incrementalPrepareRender: null,\n\n /**\n * Render in progressive mode.\n * @param {Object} params See taskParams in `stream/task.js`\n * @param {module:echarts/model/Series} seriesModel\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n * @param {Object} payload\n */\n incrementalRender: null,\n\n /**\n * Update transform directly.\n * @param {module:echarts/model/Series} seriesModel\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n * @param {Object} payload\n * @return {Object} {update: true}\n */\n updateTransform: null,\n\n /**\n * The view contains the given point.\n * @interface\n * @param {Array.} point\n * @return {boolean}\n */\n // containPoint: function () {}\n\n /**\n * @param {string} eventType\n * @param {Object} query\n * @param {module:zrender/Element} targetEl\n * @param {Object} packedEvent\n * @return {boolen} Pass only when return `true`.\n */\n filterForExposedEvent: null\n};\nvar chartProto = Chart.prototype;\n\nchartProto.updateView = chartProto.updateLayout = chartProto.updateVisual = function (seriesModel, ecModel, api, payload) {\n this.render(seriesModel, ecModel, api, payload);\n};\n/**\n * Set state of single element\n * @param {module:zrender/Element} el\n * @param {string} state 'normal'|'emphasis'\n * @param {number} highlightDigit\n */\n\n\nfunction elSetState(el, state, highlightDigit) {\n if (el) {\n el.trigger(state, highlightDigit);\n\n if (el.isGroup // Simple optimize.\n && !graphicUtil.isHighDownDispatcher(el)) {\n for (var i = 0, len = el.childCount(); i < len; i++) {\n elSetState(el.childAt(i), state, highlightDigit);\n }\n }\n }\n}\n/**\n * @param {module:echarts/data/List} data\n * @param {Object} payload\n * @param {string} state 'normal'|'emphasis'\n */\n\n\nfunction toggleHighlight(data, payload, state) {\n var dataIndex = modelUtil.queryDataIndex(data, payload);\n var highlightDigit = payload && payload.highlightKey != null ? graphicUtil.getHighlightDigit(payload.highlightKey) : null;\n\n if (dataIndex != null) {\n each(modelUtil.normalizeToArray(dataIndex), function (dataIdx) {\n elSetState(data.getItemGraphicEl(dataIdx), state, highlightDigit);\n });\n } else {\n data.eachItemGraphicEl(function (el) {\n elSetState(el, state, highlightDigit);\n });\n }\n} // Enable Chart.extend.\n\n\nclazzUtil.enableClassExtend(Chart, ['dispose']); // Add capability of registerClass, getClass, hasClass, registerSubTypeDefaulter and so on.\n\nclazzUtil.enableClassManagement(Chart, {\n registerWhenExtend: true\n});\n\nChart.markUpdateMethod = function (payload, methodName) {\n inner(payload).updateMethod = methodName;\n};\n\nfunction renderTaskPlan(context) {\n return renderPlanner(context.model);\n}\n\nfunction renderTaskReset(context) {\n var seriesModel = context.model;\n var ecModel = context.ecModel;\n var api = context.api;\n var payload = context.payload; // ???! remove updateView updateVisual\n\n var progressiveRender = seriesModel.pipelineContext.progressiveRender;\n var view = context.view;\n var updateMethod = payload && inner(payload).updateMethod;\n var methodName = progressiveRender ? 'incrementalPrepareRender' : updateMethod && view[updateMethod] ? updateMethod // `appendData` is also supported when data amount\n // is less than progressive threshold.\n : 'render';\n\n if (methodName !== 'render') {\n view[methodName](seriesModel, ecModel, api, payload);\n }\n\n return progressMethodMap[methodName];\n}\n\nvar progressMethodMap = {\n incrementalPrepareRender: {\n progress: function (params, context) {\n context.view.incrementalRender(params, context.model, context.ecModel, context.api, context.payload);\n }\n },\n render: {\n // Put view.render in `progress` to support appendData. But in this case\n // view.render should not be called in reset, otherwise it will be called\n // twise. Use `forceFirstProgress` to make sure that view.render is called\n // in any cases.\n forceFirstProgress: true,\n progress: function (params, context) {\n context.view.render(context.model, context.ecModel, context.api, context.payload);\n }\n }\n};\nvar _default = Chart;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar createHashMap = _util.createHashMap;\nvar isString = _util.isString;\nvar isArray = _util.isArray;\nvar each = _util.each;\nvar assert = _util.assert;\n\nvar _parseSVG = require(\"zrender/lib/tool/parseSVG\");\n\nvar parseXML = _parseSVG.parseXML;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar storage = createHashMap(); // For minimize the code size of common echarts package,\n// do not put too much logic in this module.\n\nvar _default = {\n // The format of record: see `echarts.registerMap`.\n // Compatible with previous `echarts.registerMap`.\n registerMap: function (mapName, rawGeoJson, rawSpecialAreas) {\n var records;\n\n if (isArray(rawGeoJson)) {\n records = rawGeoJson;\n } else if (rawGeoJson.svg) {\n records = [{\n type: 'svg',\n source: rawGeoJson.svg,\n specialAreas: rawGeoJson.specialAreas\n }];\n } else {\n // Backward compatibility.\n if (rawGeoJson.geoJson && !rawGeoJson.features) {\n rawSpecialAreas = rawGeoJson.specialAreas;\n rawGeoJson = rawGeoJson.geoJson;\n }\n\n records = [{\n type: 'geoJSON',\n source: rawGeoJson,\n specialAreas: rawSpecialAreas\n }];\n }\n\n each(records, function (record) {\n var type = record.type;\n type === 'geoJson' && (type = record.type = 'geoJSON');\n var parse = parsers[type];\n parse(record);\n });\n return storage.set(mapName, records);\n },\n retrieveMap: function (mapName) {\n return storage.get(mapName);\n }\n};\nvar parsers = {\n geoJSON: function (record) {\n var source = record.source;\n record.geoJSON = !isString(source) ? source : typeof JSON !== 'undefined' && JSON.parse ? JSON.parse(source) : new Function('return (' + source + ');')();\n },\n // Only perform parse to XML object here, which might be time\n // consiming for large SVG.\n // Although convert XML to zrender element is also time consiming,\n // if we do it here, the clone of zrender elements has to be\n // required. So we do it once for each geo instance, util real\n // performance issues call for optimizing it.\n svg: function (record) {\n record.svgXML = parseXML(record.source);\n }\n};\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar createHashMap = _util.createHashMap;\nvar isTypedArray = _util.isTypedArray;\n\nvar _clazz = require(\"../util/clazz\");\n\nvar enableClassCheck = _clazz.enableClassCheck;\n\nvar _sourceType = require(\"./helper/sourceType\");\n\nvar SOURCE_FORMAT_ORIGINAL = _sourceType.SOURCE_FORMAT_ORIGINAL;\nvar SERIES_LAYOUT_BY_COLUMN = _sourceType.SERIES_LAYOUT_BY_COLUMN;\nvar SOURCE_FORMAT_UNKNOWN = _sourceType.SOURCE_FORMAT_UNKNOWN;\nvar SOURCE_FORMAT_TYPED_ARRAY = _sourceType.SOURCE_FORMAT_TYPED_ARRAY;\nvar SOURCE_FORMAT_KEYED_COLUMNS = _sourceType.SOURCE_FORMAT_KEYED_COLUMNS;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * [sourceFormat]\n *\n * + \"original\":\n * This format is only used in series.data, where\n * itemStyle can be specified in data item.\n *\n * + \"arrayRows\":\n * [\n * ['product', 'score', 'amount'],\n * ['Matcha Latte', 89.3, 95.8],\n * ['Milk Tea', 92.1, 89.4],\n * ['Cheese Cocoa', 94.4, 91.2],\n * ['Walnut Brownie', 85.4, 76.9]\n * ]\n *\n * + \"objectRows\":\n * [\n * {product: 'Matcha Latte', score: 89.3, amount: 95.8},\n * {product: 'Milk Tea', score: 92.1, amount: 89.4},\n * {product: 'Cheese Cocoa', score: 94.4, amount: 91.2},\n * {product: 'Walnut Brownie', score: 85.4, amount: 76.9}\n * ]\n *\n * + \"keyedColumns\":\n * {\n * 'product': ['Matcha Latte', 'Milk Tea', 'Cheese Cocoa', 'Walnut Brownie'],\n * 'count': [823, 235, 1042, 988],\n * 'score': [95.8, 81.4, 91.2, 76.9]\n * }\n *\n * + \"typedArray\"\n *\n * + \"unknown\"\n */\n\n/**\n * @constructor\n * @param {Object} fields\n * @param {string} fields.sourceFormat\n * @param {Array|Object} fields.fromDataset\n * @param {Array|Object} [fields.data]\n * @param {string} [seriesLayoutBy='column']\n * @param {Array.} [dimensionsDefine]\n * @param {Objet|HashMap} [encodeDefine]\n * @param {number} [startIndex=0]\n * @param {number} [dimensionsDetectCount]\n */\nfunction Source(fields) {\n /**\n * @type {boolean}\n */\n this.fromDataset = fields.fromDataset;\n /**\n * Not null/undefined.\n * @type {Array|Object}\n */\n\n this.data = fields.data || (fields.sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS ? {} : []);\n /**\n * See also \"detectSourceFormat\".\n * Not null/undefined.\n * @type {string}\n */\n\n this.sourceFormat = fields.sourceFormat || SOURCE_FORMAT_UNKNOWN;\n /**\n * 'row' or 'column'\n * Not null/undefined.\n * @type {string} seriesLayoutBy\n */\n\n this.seriesLayoutBy = fields.seriesLayoutBy || SERIES_LAYOUT_BY_COLUMN;\n /**\n * dimensions definition in option.\n * can be null/undefined.\n * @type {Array.}\n */\n\n this.dimensionsDefine = fields.dimensionsDefine;\n /**\n * encode definition in option.\n * can be null/undefined.\n * @type {Objet|HashMap}\n */\n\n this.encodeDefine = fields.encodeDefine && createHashMap(fields.encodeDefine);\n /**\n * Not null/undefined, uint.\n * @type {number}\n */\n\n this.startIndex = fields.startIndex || 0;\n /**\n * Can be null/undefined (when unknown), uint.\n * @type {number}\n */\n\n this.dimensionsDetectCount = fields.dimensionsDetectCount;\n}\n/**\n * Wrap original series data for some compatibility cases.\n */\n\n\nSource.seriesDataToSource = function (data) {\n return new Source({\n data: data,\n sourceFormat: isTypedArray(data) ? SOURCE_FORMAT_TYPED_ARRAY : SOURCE_FORMAT_ORIGINAL,\n fromDataset: false\n });\n};\n\nenableClassCheck(Source);\nvar _default = Source;\nmodule.exports = _default;","var _config = require(\"./config\");\n\nvar devicePixelRatio = _config.devicePixelRatio;\n\nvar util = require(\"./core/util\");\n\nvar logError = require(\"./core/log\");\n\nvar BoundingRect = require(\"./core/BoundingRect\");\n\nvar timsort = require(\"./core/timsort\");\n\nvar Layer = require(\"./Layer\");\n\nvar requestAnimationFrame = require(\"./animation/requestAnimationFrame\");\n\nvar Image = require(\"./graphic/Image\");\n\nvar env = require(\"./core/env\");\n\nvar HOVER_LAYER_ZLEVEL = 1e5;\nvar CANVAS_ZLEVEL = 314159;\nvar EL_AFTER_INCREMENTAL_INC = 0.01;\nvar INCREMENTAL_INC = 0.001;\n\nfunction parseInt10(val) {\n return parseInt(val, 10);\n}\n\nfunction isLayerValid(layer) {\n if (!layer) {\n return false;\n }\n\n if (layer.__builtin__) {\n return true;\n }\n\n if (typeof layer.resize !== 'function' || typeof layer.refresh !== 'function') {\n return false;\n }\n\n return true;\n}\n\nvar tmpRect = new BoundingRect(0, 0, 0, 0);\nvar viewRect = new BoundingRect(0, 0, 0, 0);\n\nfunction isDisplayableCulled(el, width, height) {\n tmpRect.copy(el.getBoundingRect());\n\n if (el.transform) {\n tmpRect.applyTransform(el.transform);\n }\n\n viewRect.width = width;\n viewRect.height = height;\n return !tmpRect.intersect(viewRect);\n}\n\nfunction isClipPathChanged(clipPaths, prevClipPaths) {\n // displayable.__clipPaths can only be `null`/`undefined` or an non-empty array.\n if (clipPaths === prevClipPaths) {\n return false;\n }\n\n if (!clipPaths || !prevClipPaths || clipPaths.length !== prevClipPaths.length) {\n return true;\n }\n\n for (var i = 0; i < clipPaths.length; i++) {\n if (clipPaths[i] !== prevClipPaths[i]) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction doClip(clipPaths, ctx) {\n for (var i = 0; i < clipPaths.length; i++) {\n var clipPath = clipPaths[i];\n clipPath.setTransform(ctx);\n ctx.beginPath();\n clipPath.buildPath(ctx, clipPath.shape);\n ctx.clip(); // Transform back\n\n clipPath.restoreTransform(ctx);\n }\n}\n\nfunction createRoot(width, height) {\n var domRoot = document.createElement('div'); // domRoot.onselectstart = returnFalse; // Avoid page selected\n\n domRoot.style.cssText = ['position:relative', // IOS13 safari probably has a compositing bug (z order of the canvas and the consequent\n // dom does not act as expected) when some of the parent dom has\n // `-webkit-overflow-scrolling: touch;` and the webpage is longer than one screen and\n // the canvas is not at the top part of the page.\n // Check `https://bugs.webkit.org/show_bug.cgi?id=203681` for more details. We remove\n // this `overflow:hidden` to avoid the bug.\n // 'overflow:hidden',\n 'width:' + width + 'px', 'height:' + height + 'px', 'padding:0', 'margin:0', 'border-width:0'].join(';') + ';';\n return domRoot;\n}\n/**\n * @alias module:zrender/Painter\n * @constructor\n * @param {HTMLElement} root 绘图容器\n * @param {module:zrender/Storage} storage\n * @param {Object} opts\n */\n\n\nvar Painter = function (root, storage, opts) {\n this.type = 'canvas'; // In node environment using node-canvas\n\n var singleCanvas = !root.nodeName // In node ?\n || root.nodeName.toUpperCase() === 'CANVAS';\n this._opts = opts = util.extend({}, opts || {});\n /**\n * @type {number}\n */\n\n this.dpr = opts.devicePixelRatio || devicePixelRatio;\n /**\n * @type {boolean}\n * @private\n */\n\n this._singleCanvas = singleCanvas;\n /**\n * 绘图容器\n * @type {HTMLElement}\n */\n\n this.root = root;\n var rootStyle = root.style;\n\n if (rootStyle) {\n rootStyle['-webkit-tap-highlight-color'] = 'transparent';\n rootStyle['-webkit-user-select'] = rootStyle['user-select'] = rootStyle['-webkit-touch-callout'] = 'none';\n root.innerHTML = '';\n }\n /**\n * @type {module:zrender/Storage}\n */\n\n\n this.storage = storage;\n /**\n * @type {Array.}\n * @private\n */\n\n var zlevelList = this._zlevelList = [];\n /**\n * @type {Object.}\n * @private\n */\n\n var layers = this._layers = {};\n /**\n * @type {Object.}\n * @private\n */\n\n this._layerConfig = {};\n /**\n * zrender will do compositing when root is a canvas and have multiple zlevels.\n */\n\n this._needsManuallyCompositing = false;\n\n if (!singleCanvas) {\n this._width = this._getSize(0);\n this._height = this._getSize(1);\n var domRoot = this._domRoot = createRoot(this._width, this._height);\n root.appendChild(domRoot);\n } else {\n var width = root.width;\n var height = root.height;\n\n if (opts.width != null) {\n width = opts.width;\n }\n\n if (opts.height != null) {\n height = opts.height;\n }\n\n this.dpr = opts.devicePixelRatio || 1; // Use canvas width and height directly\n\n root.width = width * this.dpr;\n root.height = height * this.dpr;\n this._width = width;\n this._height = height; // Create layer if only one given canvas\n // Device can be specified to create a high dpi image.\n\n var mainLayer = new Layer(root, this, this.dpr);\n mainLayer.__builtin__ = true;\n mainLayer.initContext(); // FIXME Use canvas width and height\n // mainLayer.resize(width, height);\n\n layers[CANVAS_ZLEVEL] = mainLayer;\n mainLayer.zlevel = CANVAS_ZLEVEL; // Not use common zlevel.\n\n zlevelList.push(CANVAS_ZLEVEL);\n this._domRoot = root;\n }\n /**\n * @type {module:zrender/Layer}\n * @private\n */\n\n\n this._hoverlayer = null;\n this._hoverElements = [];\n};\n\nPainter.prototype = {\n constructor: Painter,\n getType: function () {\n return 'canvas';\n },\n\n /**\n * If painter use a single canvas\n * @return {boolean}\n */\n isSingleCanvas: function () {\n return this._singleCanvas;\n },\n\n /**\n * @return {HTMLDivElement}\n */\n getViewportRoot: function () {\n return this._domRoot;\n },\n getViewportRootOffset: function () {\n var viewportRoot = this.getViewportRoot();\n\n if (viewportRoot) {\n return {\n offsetLeft: viewportRoot.offsetLeft || 0,\n offsetTop: viewportRoot.offsetTop || 0\n };\n }\n },\n\n /**\n * 刷新\n * @param {boolean} [paintAll=false] 强制绘制所有displayable\n */\n refresh: function (paintAll) {\n var list = this.storage.getDisplayList(true);\n var zlevelList = this._zlevelList;\n this._redrawId = Math.random();\n\n this._paintList(list, paintAll, this._redrawId); // Paint custum layers\n\n\n for (var i = 0; i < zlevelList.length; i++) {\n var z = zlevelList[i];\n var layer = this._layers[z];\n\n if (!layer.__builtin__ && layer.refresh) {\n var clearColor = i === 0 ? this._backgroundColor : null;\n layer.refresh(clearColor);\n }\n }\n\n this.refreshHover();\n return this;\n },\n addHover: function (el, hoverStyle) {\n if (el.__hoverMir) {\n return;\n }\n\n var elMirror = new el.constructor({\n style: el.style,\n shape: el.shape,\n z: el.z,\n z2: el.z2,\n silent: el.silent\n });\n elMirror.__from = el;\n el.__hoverMir = elMirror;\n hoverStyle && elMirror.setStyle(hoverStyle);\n\n this._hoverElements.push(elMirror);\n\n return elMirror;\n },\n removeHover: function (el) {\n var elMirror = el.__hoverMir;\n var hoverElements = this._hoverElements;\n var idx = util.indexOf(hoverElements, elMirror);\n\n if (idx >= 0) {\n hoverElements.splice(idx, 1);\n }\n\n el.__hoverMir = null;\n },\n clearHover: function (el) {\n var hoverElements = this._hoverElements;\n\n for (var i = 0; i < hoverElements.length; i++) {\n var from = hoverElements[i].__from;\n\n if (from) {\n from.__hoverMir = null;\n }\n }\n\n hoverElements.length = 0;\n },\n refreshHover: function () {\n var hoverElements = this._hoverElements;\n var len = hoverElements.length;\n var hoverLayer = this._hoverlayer;\n hoverLayer && hoverLayer.clear();\n\n if (!len) {\n return;\n }\n\n timsort(hoverElements, this.storage.displayableSortFunc); // Use a extream large zlevel\n // FIXME?\n\n if (!hoverLayer) {\n hoverLayer = this._hoverlayer = this.getLayer(HOVER_LAYER_ZLEVEL);\n }\n\n var scope = {};\n hoverLayer.ctx.save();\n\n for (var i = 0; i < len;) {\n var el = hoverElements[i];\n var originalEl = el.__from; // Original el is removed\n // PENDING\n\n if (!(originalEl && originalEl.__zr)) {\n hoverElements.splice(i, 1);\n originalEl.__hoverMir = null;\n len--;\n continue;\n }\n\n i++; // Use transform\n // FIXME style and shape ?\n\n if (!originalEl.invisible) {\n el.transform = originalEl.transform;\n el.invTransform = originalEl.invTransform;\n el.__clipPaths = originalEl.__clipPaths; // el.\n\n this._doPaintEl(el, hoverLayer, true, scope);\n }\n }\n\n hoverLayer.ctx.restore();\n },\n getHoverLayer: function () {\n return this.getLayer(HOVER_LAYER_ZLEVEL);\n },\n _paintList: function (list, paintAll, redrawId) {\n if (this._redrawId !== redrawId) {\n return;\n }\n\n paintAll = paintAll || false;\n\n this._updateLayerStatus(list);\n\n var finished = this._doPaintList(list, paintAll);\n\n if (this._needsManuallyCompositing) {\n this._compositeManually();\n }\n\n if (!finished) {\n var self = this;\n requestAnimationFrame(function () {\n self._paintList(list, paintAll, redrawId);\n });\n }\n },\n _compositeManually: function () {\n var ctx = this.getLayer(CANVAS_ZLEVEL).ctx;\n var width = this._domRoot.width;\n var height = this._domRoot.height;\n ctx.clearRect(0, 0, width, height); // PENDING, If only builtin layer?\n\n this.eachBuiltinLayer(function (layer) {\n if (layer.virtual) {\n ctx.drawImage(layer.dom, 0, 0, width, height);\n }\n });\n },\n _doPaintList: function (list, paintAll) {\n var layerList = [];\n\n for (var zi = 0; zi < this._zlevelList.length; zi++) {\n var zlevel = this._zlevelList[zi];\n var layer = this._layers[zlevel];\n\n if (layer.__builtin__ && layer !== this._hoverlayer && (layer.__dirty || paintAll)) {\n layerList.push(layer);\n }\n }\n\n var finished = true;\n\n for (var k = 0; k < layerList.length; k++) {\n var layer = layerList[k];\n var ctx = layer.ctx;\n var scope = {};\n ctx.save();\n var start = paintAll ? layer.__startIndex : layer.__drawIndex;\n var useTimer = !paintAll && layer.incremental && Date.now;\n var startTime = useTimer && Date.now();\n var clearColor = layer.zlevel === this._zlevelList[0] ? this._backgroundColor : null; // All elements in this layer are cleared.\n\n if (layer.__startIndex === layer.__endIndex) {\n layer.clear(false, clearColor);\n } else if (start === layer.__startIndex) {\n var firstEl = list[start];\n\n if (!firstEl.incremental || !firstEl.notClear || paintAll) {\n layer.clear(false, clearColor);\n }\n }\n\n if (start === -1) {\n console.error('For some unknown reason. drawIndex is -1');\n start = layer.__startIndex;\n }\n\n for (var i = start; i < layer.__endIndex; i++) {\n var el = list[i];\n\n this._doPaintEl(el, layer, paintAll, scope);\n\n el.__dirty = el.__dirtyText = false;\n\n if (useTimer) {\n // Date.now can be executed in 13,025,305 ops/second.\n var dTime = Date.now() - startTime; // Give 15 millisecond to draw.\n // The rest elements will be drawn in the next frame.\n\n if (dTime > 15) {\n break;\n }\n }\n }\n\n layer.__drawIndex = i;\n\n if (layer.__drawIndex < layer.__endIndex) {\n finished = false;\n }\n\n if (scope.prevElClipPaths) {\n // Needs restore the state. If last drawn element is in the clipping area.\n ctx.restore();\n }\n\n ctx.restore();\n }\n\n if (env.wxa) {\n // Flush for weixin application\n util.each(this._layers, function (layer) {\n if (layer && layer.ctx && layer.ctx.draw) {\n layer.ctx.draw();\n }\n });\n }\n\n return finished;\n },\n _doPaintEl: function (el, currentLayer, forcePaint, scope) {\n var ctx = currentLayer.ctx;\n var m = el.transform;\n\n if ((currentLayer.__dirty || forcePaint) && // Ignore invisible element\n !el.invisible // Ignore transparent element\n && el.style.opacity !== 0 // Ignore scale 0 element, in some environment like node-canvas\n // Draw a scale 0 element can cause all following draw wrong\n // And setTransform with scale 0 will cause set back transform failed.\n && !(m && !m[0] && !m[3]) // Ignore culled element\n && !(el.culling && isDisplayableCulled(el, this._width, this._height))) {\n var clipPaths = el.__clipPaths;\n var prevElClipPaths = scope.prevElClipPaths; // Optimize when clipping on group with several elements\n\n if (!prevElClipPaths || isClipPathChanged(clipPaths, prevElClipPaths)) {\n // If has previous clipping state, restore from it\n if (prevElClipPaths) {\n ctx.restore();\n scope.prevElClipPaths = null; // Reset prevEl since context has been restored\n\n scope.prevEl = null;\n } // New clipping state\n\n\n if (clipPaths) {\n ctx.save();\n doClip(clipPaths, ctx);\n scope.prevElClipPaths = clipPaths;\n }\n }\n\n el.beforeBrush && el.beforeBrush(ctx);\n el.brush(ctx, scope.prevEl || null);\n scope.prevEl = el;\n el.afterBrush && el.afterBrush(ctx);\n }\n },\n\n /**\n * 获取 zlevel 所在层,如果不存在则会创建一个新的层\n * @param {number} zlevel\n * @param {boolean} virtual Virtual layer will not be inserted into dom.\n * @return {module:zrender/Layer}\n */\n getLayer: function (zlevel, virtual) {\n if (this._singleCanvas && !this._needsManuallyCompositing) {\n zlevel = CANVAS_ZLEVEL;\n }\n\n var layer = this._layers[zlevel];\n\n if (!layer) {\n // Create a new layer\n layer = new Layer('zr_' + zlevel, this, this.dpr);\n layer.zlevel = zlevel;\n layer.__builtin__ = true;\n\n if (this._layerConfig[zlevel]) {\n util.merge(layer, this._layerConfig[zlevel], true);\n } // TODO Remove EL_AFTER_INCREMENTAL_INC magic number\n else if (this._layerConfig[zlevel - EL_AFTER_INCREMENTAL_INC]) {\n util.merge(layer, this._layerConfig[zlevel - EL_AFTER_INCREMENTAL_INC], true);\n }\n\n if (virtual) {\n layer.virtual = virtual;\n }\n\n this.insertLayer(zlevel, layer); // Context is created after dom inserted to document\n // Or excanvas will get 0px clientWidth and clientHeight\n\n layer.initContext();\n }\n\n return layer;\n },\n insertLayer: function (zlevel, layer) {\n var layersMap = this._layers;\n var zlevelList = this._zlevelList;\n var len = zlevelList.length;\n var prevLayer = null;\n var i = -1;\n var domRoot = this._domRoot;\n\n if (layersMap[zlevel]) {\n logError('ZLevel ' + zlevel + ' has been used already');\n return;\n } // Check if is a valid layer\n\n\n if (!isLayerValid(layer)) {\n logError('Layer of zlevel ' + zlevel + ' is not valid');\n return;\n }\n\n if (len > 0 && zlevel > zlevelList[0]) {\n for (i = 0; i < len - 1; i++) {\n if (zlevelList[i] < zlevel && zlevelList[i + 1] > zlevel) {\n break;\n }\n }\n\n prevLayer = layersMap[zlevelList[i]];\n }\n\n zlevelList.splice(i + 1, 0, zlevel);\n layersMap[zlevel] = layer; // Vitual layer will not directly show on the screen.\n // (It can be a WebGL layer and assigned to a ZImage element)\n // But it still under management of zrender.\n\n if (!layer.virtual) {\n if (prevLayer) {\n var prevDom = prevLayer.dom;\n\n if (prevDom.nextSibling) {\n domRoot.insertBefore(layer.dom, prevDom.nextSibling);\n } else {\n domRoot.appendChild(layer.dom);\n }\n } else {\n if (domRoot.firstChild) {\n domRoot.insertBefore(layer.dom, domRoot.firstChild);\n } else {\n domRoot.appendChild(layer.dom);\n }\n }\n }\n },\n // Iterate each layer\n eachLayer: function (cb, context) {\n var zlevelList = this._zlevelList;\n var z;\n var i;\n\n for (i = 0; i < zlevelList.length; i++) {\n z = zlevelList[i];\n cb.call(context, this._layers[z], z);\n }\n },\n // Iterate each buildin layer\n eachBuiltinLayer: function (cb, context) {\n var zlevelList = this._zlevelList;\n var layer;\n var z;\n var i;\n\n for (i = 0; i < zlevelList.length; i++) {\n z = zlevelList[i];\n layer = this._layers[z];\n\n if (layer.__builtin__) {\n cb.call(context, layer, z);\n }\n }\n },\n // Iterate each other layer except buildin layer\n eachOtherLayer: function (cb, context) {\n var zlevelList = this._zlevelList;\n var layer;\n var z;\n var i;\n\n for (i = 0; i < zlevelList.length; i++) {\n z = zlevelList[i];\n layer = this._layers[z];\n\n if (!layer.__builtin__) {\n cb.call(context, layer, z);\n }\n }\n },\n\n /**\n * 获取所有已创建的层\n * @param {Array.} [prevLayer]\n */\n getLayers: function () {\n return this._layers;\n },\n _updateLayerStatus: function (list) {\n this.eachBuiltinLayer(function (layer, z) {\n layer.__dirty = layer.__used = false;\n });\n\n function updatePrevLayer(idx) {\n if (prevLayer) {\n if (prevLayer.__endIndex !== idx) {\n prevLayer.__dirty = true;\n }\n\n prevLayer.__endIndex = idx;\n }\n }\n\n if (this._singleCanvas) {\n for (var i = 1; i < list.length; i++) {\n var el = list[i];\n\n if (el.zlevel !== list[i - 1].zlevel || el.incremental) {\n this._needsManuallyCompositing = true;\n break;\n }\n }\n }\n\n var prevLayer = null;\n var incrementalLayerCount = 0;\n var prevZlevel;\n\n for (var i = 0; i < list.length; i++) {\n var el = list[i];\n var zlevel = el.zlevel;\n var layer;\n\n if (prevZlevel !== zlevel) {\n prevZlevel = zlevel;\n incrementalLayerCount = 0;\n } // TODO Not use magic number on zlevel.\n // Each layer with increment element can be separated to 3 layers.\n // (Other Element drawn after incremental element)\n // -----------------zlevel + EL_AFTER_INCREMENTAL_INC--------------------\n // (Incremental element)\n // ----------------------zlevel + INCREMENTAL_INC------------------------\n // (Element drawn before incremental element)\n // --------------------------------zlevel--------------------------------\n\n\n if (el.incremental) {\n layer = this.getLayer(zlevel + INCREMENTAL_INC, this._needsManuallyCompositing);\n layer.incremental = true;\n incrementalLayerCount = 1;\n } else {\n layer = this.getLayer(zlevel + (incrementalLayerCount > 0 ? EL_AFTER_INCREMENTAL_INC : 0), this._needsManuallyCompositing);\n }\n\n if (!layer.__builtin__) {\n logError('ZLevel ' + zlevel + ' has been used by unkown layer ' + layer.id);\n }\n\n if (layer !== prevLayer) {\n layer.__used = true;\n\n if (layer.__startIndex !== i) {\n layer.__dirty = true;\n }\n\n layer.__startIndex = i;\n\n if (!layer.incremental) {\n layer.__drawIndex = i;\n } else {\n // Mark layer draw index needs to update.\n layer.__drawIndex = -1;\n }\n\n updatePrevLayer(i);\n prevLayer = layer;\n }\n\n if (el.__dirty) {\n layer.__dirty = true;\n\n if (layer.incremental && layer.__drawIndex < 0) {\n // Start draw from the first dirty element.\n layer.__drawIndex = i;\n }\n }\n }\n\n updatePrevLayer(i);\n this.eachBuiltinLayer(function (layer, z) {\n // Used in last frame but not in this frame. Needs clear\n if (!layer.__used && layer.getElementCount() > 0) {\n layer.__dirty = true;\n layer.__startIndex = layer.__endIndex = layer.__drawIndex = 0;\n } // For incremental layer. In case start index changed and no elements are dirty.\n\n\n if (layer.__dirty && layer.__drawIndex < 0) {\n layer.__drawIndex = layer.__startIndex;\n }\n });\n },\n\n /**\n * 清除hover层外所有内容\n */\n clear: function () {\n this.eachBuiltinLayer(this._clearLayer);\n return this;\n },\n _clearLayer: function (layer) {\n layer.clear();\n },\n setBackgroundColor: function (backgroundColor) {\n this._backgroundColor = backgroundColor;\n },\n\n /**\n * 修改指定zlevel的绘制参数\n *\n * @param {string} zlevel\n * @param {Object} config 配置对象\n * @param {string} [config.clearColor=0] 每次清空画布的颜色\n * @param {string} [config.motionBlur=false] 是否开启动态模糊\n * @param {number} [config.lastFrameAlpha=0.7]\n * 在开启动态模糊的时候使用,与上一帧混合的alpha值,值越大尾迹越明显\n */\n configLayer: function (zlevel, config) {\n if (config) {\n var layerConfig = this._layerConfig;\n\n if (!layerConfig[zlevel]) {\n layerConfig[zlevel] = config;\n } else {\n util.merge(layerConfig[zlevel], config, true);\n }\n\n for (var i = 0; i < this._zlevelList.length; i++) {\n var _zlevel = this._zlevelList[i]; // TODO Remove EL_AFTER_INCREMENTAL_INC magic number\n\n if (_zlevel === zlevel || _zlevel === zlevel + EL_AFTER_INCREMENTAL_INC) {\n var layer = this._layers[_zlevel];\n util.merge(layer, layerConfig[zlevel], true);\n }\n }\n }\n },\n\n /**\n * 删除指定层\n * @param {number} zlevel 层所在的zlevel\n */\n delLayer: function (zlevel) {\n var layers = this._layers;\n var zlevelList = this._zlevelList;\n var layer = layers[zlevel];\n\n if (!layer) {\n return;\n }\n\n layer.dom.parentNode.removeChild(layer.dom);\n delete layers[zlevel];\n zlevelList.splice(util.indexOf(zlevelList, zlevel), 1);\n },\n\n /**\n * 区域大小变化后重绘\n */\n resize: function (width, height) {\n if (!this._domRoot.style) {\n // Maybe in node or worker\n if (width == null || height == null) {\n return;\n }\n\n this._width = width;\n this._height = height;\n this.getLayer(CANVAS_ZLEVEL).resize(width, height);\n } else {\n var domRoot = this._domRoot; // FIXME Why ?\n\n domRoot.style.display = 'none'; // Save input w/h\n\n var opts = this._opts;\n width != null && (opts.width = width);\n height != null && (opts.height = height);\n width = this._getSize(0);\n height = this._getSize(1);\n domRoot.style.display = ''; // 优化没有实际改变的resize\n\n if (this._width !== width || height !== this._height) {\n domRoot.style.width = width + 'px';\n domRoot.style.height = height + 'px';\n\n for (var id in this._layers) {\n if (this._layers.hasOwnProperty(id)) {\n this._layers[id].resize(width, height);\n }\n }\n\n util.each(this._progressiveLayers, function (layer) {\n layer.resize(width, height);\n });\n this.refresh(true);\n }\n\n this._width = width;\n this._height = height;\n }\n\n return this;\n },\n\n /**\n * 清除单独的一个层\n * @param {number} zlevel\n */\n clearLayer: function (zlevel) {\n var layer = this._layers[zlevel];\n\n if (layer) {\n layer.clear();\n }\n },\n\n /**\n * 释放\n */\n dispose: function () {\n this.root.innerHTML = '';\n this.root = this.storage = this._domRoot = this._layers = null;\n },\n\n /**\n * Get canvas which has all thing rendered\n * @param {Object} opts\n * @param {string} [opts.backgroundColor]\n * @param {number} [opts.pixelRatio]\n */\n getRenderedCanvas: function (opts) {\n opts = opts || {};\n\n if (this._singleCanvas && !this._compositeManually) {\n return this._layers[CANVAS_ZLEVEL].dom;\n }\n\n var imageLayer = new Layer('image', this, opts.pixelRatio || this.dpr);\n imageLayer.initContext();\n imageLayer.clear(false, opts.backgroundColor || this._backgroundColor);\n\n if (opts.pixelRatio <= this.dpr) {\n this.refresh();\n var width = imageLayer.dom.width;\n var height = imageLayer.dom.height;\n var ctx = imageLayer.ctx;\n this.eachLayer(function (layer) {\n if (layer.__builtin__) {\n ctx.drawImage(layer.dom, 0, 0, width, height);\n } else if (layer.renderToCanvas) {\n imageLayer.ctx.save();\n layer.renderToCanvas(imageLayer.ctx);\n imageLayer.ctx.restore();\n }\n });\n } else {\n // PENDING, echarts-gl and incremental rendering.\n var scope = {};\n var displayList = this.storage.getDisplayList(true);\n\n for (var i = 0; i < displayList.length; i++) {\n var el = displayList[i];\n\n this._doPaintEl(el, imageLayer, true, scope);\n }\n }\n\n return imageLayer.dom;\n },\n\n /**\n * 获取绘图区域宽度\n */\n getWidth: function () {\n return this._width;\n },\n\n /**\n * 获取绘图区域高度\n */\n getHeight: function () {\n return this._height;\n },\n _getSize: function (whIdx) {\n var opts = this._opts;\n var wh = ['width', 'height'][whIdx];\n var cwh = ['clientWidth', 'clientHeight'][whIdx];\n var plt = ['paddingLeft', 'paddingTop'][whIdx];\n var prb = ['paddingRight', 'paddingBottom'][whIdx];\n\n if (opts[wh] != null && opts[wh] !== 'auto') {\n return parseFloat(opts[wh]);\n }\n\n var root = this.root; // IE8 does not support getComputedStyle, but it use VML.\n\n var stl = document.defaultView.getComputedStyle(root);\n return (root[cwh] || parseInt10(stl[wh]) || parseInt10(root.style[wh])) - (parseInt10(stl[plt]) || 0) - (parseInt10(stl[prb]) || 0) | 0;\n },\n pathToImage: function (path, dpr) {\n dpr = dpr || this.dpr;\n var canvas = document.createElement('canvas');\n var ctx = canvas.getContext('2d');\n var rect = path.getBoundingRect();\n var style = path.style;\n var shadowBlurSize = style.shadowBlur * dpr;\n var shadowOffsetX = style.shadowOffsetX * dpr;\n var shadowOffsetY = style.shadowOffsetY * dpr;\n var lineWidth = style.hasStroke() ? style.lineWidth : 0;\n var leftMargin = Math.max(lineWidth / 2, -shadowOffsetX + shadowBlurSize);\n var rightMargin = Math.max(lineWidth / 2, shadowOffsetX + shadowBlurSize);\n var topMargin = Math.max(lineWidth / 2, -shadowOffsetY + shadowBlurSize);\n var bottomMargin = Math.max(lineWidth / 2, shadowOffsetY + shadowBlurSize);\n var width = rect.width + leftMargin + rightMargin;\n var height = rect.height + topMargin + bottomMargin;\n canvas.width = width * dpr;\n canvas.height = height * dpr;\n ctx.scale(dpr, dpr);\n ctx.clearRect(0, 0, width, height);\n ctx.dpr = dpr;\n var pathTransform = {\n position: path.position,\n rotation: path.rotation,\n scale: path.scale\n };\n path.position = [leftMargin - rect.x, topMargin - rect.y];\n path.rotation = 0;\n path.scale = [1, 1];\n path.updateTransform();\n\n if (path) {\n path.brush(ctx);\n }\n\n var ImageShape = Image;\n var imgShape = new ImageShape({\n style: {\n x: 0,\n y: 0,\n image: canvas\n }\n });\n\n if (pathTransform.position != null) {\n imgShape.position = path.position = pathTransform.position;\n }\n\n if (pathTransform.rotation != null) {\n imgShape.rotation = path.rotation = pathTransform.rotation;\n }\n\n if (pathTransform.scale != null) {\n imgShape.scale = path.scale = pathTransform.scale;\n }\n\n return imgShape;\n }\n};\nvar _default = Painter;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar textContain = require(\"zrender/lib/contain/text\");\n\nvar numberUtil = require(\"./number\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// import Text from 'zrender/src/graphic/Text';\n\n/**\n * add commas after every three numbers\n * @param {string|number} x\n * @return {string}\n */\nfunction addCommas(x) {\n if (isNaN(x)) {\n return '-';\n }\n\n x = (x + '').split('.');\n return x[0].replace(/(\\d{1,3})(?=(?:\\d{3})+(?!\\d))/g, '$1,') + (x.length > 1 ? '.' + x[1] : '');\n}\n/**\n * @param {string} str\n * @param {boolean} [upperCaseFirst=false]\n * @return {string} str\n */\n\n\nfunction toCamelCase(str, upperCaseFirst) {\n str = (str || '').toLowerCase().replace(/-(.)/g, function (match, group1) {\n return group1.toUpperCase();\n });\n\n if (upperCaseFirst && str) {\n str = str.charAt(0).toUpperCase() + str.slice(1);\n }\n\n return str;\n}\n\nvar normalizeCssArray = zrUtil.normalizeCssArray;\nvar replaceReg = /([&<>\"'])/g;\nvar replaceMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n '\\'': '''\n};\n\nfunction encodeHTML(source) {\n return source == null ? '' : (source + '').replace(replaceReg, function (str, c) {\n return replaceMap[c];\n });\n}\n\nvar TPL_VAR_ALIAS = ['a', 'b', 'c', 'd', 'e', 'f', 'g'];\n\nvar wrapVar = function (varName, seriesIdx) {\n return '{' + varName + (seriesIdx == null ? '' : seriesIdx) + '}';\n};\n/**\n * Template formatter\n * @param {string} tpl\n * @param {Array.|Object} paramsList\n * @param {boolean} [encode=false]\n * @return {string}\n */\n\n\nfunction formatTpl(tpl, paramsList, encode) {\n if (!zrUtil.isArray(paramsList)) {\n paramsList = [paramsList];\n }\n\n var seriesLen = paramsList.length;\n\n if (!seriesLen) {\n return '';\n }\n\n var $vars = paramsList[0].$vars || [];\n\n for (var i = 0; i < $vars.length; i++) {\n var alias = TPL_VAR_ALIAS[i];\n tpl = tpl.replace(wrapVar(alias), wrapVar(alias, 0));\n }\n\n for (var seriesIdx = 0; seriesIdx < seriesLen; seriesIdx++) {\n for (var k = 0; k < $vars.length; k++) {\n var val = paramsList[seriesIdx][$vars[k]];\n tpl = tpl.replace(wrapVar(TPL_VAR_ALIAS[k], seriesIdx), encode ? encodeHTML(val) : val);\n }\n }\n\n return tpl;\n}\n/**\n * simple Template formatter\n *\n * @param {string} tpl\n * @param {Object} param\n * @param {boolean} [encode=false]\n * @return {string}\n */\n\n\nfunction formatTplSimple(tpl, param, encode) {\n zrUtil.each(param, function (value, key) {\n tpl = tpl.replace('{' + key + '}', encode ? encodeHTML(value) : value);\n });\n return tpl;\n}\n/**\n * @param {Object|string} [opt] If string, means color.\n * @param {string} [opt.color]\n * @param {string} [opt.extraCssText]\n * @param {string} [opt.type='item'] 'item' or 'subItem'\n * @param {string} [opt.renderMode='html'] render mode of tooltip, 'html' or 'richText'\n * @param {string} [opt.markerId='X'] id name for marker. If only one marker is in a rich text, this can be omitted.\n * @return {string}\n */\n\n\nfunction getTooltipMarker(opt, extraCssText) {\n opt = zrUtil.isString(opt) ? {\n color: opt,\n extraCssText: extraCssText\n } : opt || {};\n var color = opt.color;\n var type = opt.type;\n var extraCssText = opt.extraCssText;\n var renderMode = opt.renderMode || 'html';\n var markerId = opt.markerId || 'X';\n\n if (!color) {\n return '';\n }\n\n if (renderMode === 'html') {\n return type === 'subItem' ? '' : '';\n } else {\n // Space for rich element marker\n return {\n renderMode: renderMode,\n content: '{marker' + markerId + '|} ',\n style: {\n color: color\n }\n };\n }\n}\n\nfunction pad(str, len) {\n str += '';\n return '0000'.substr(0, len - str.length) + str;\n}\n/**\n * ISO Date format\n * @param {string} tpl\n * @param {number} value\n * @param {boolean} [isUTC=false] Default in local time.\n * see `module:echarts/scale/Time`\n * and `module:echarts/util/number#parseDate`.\n * @inner\n */\n\n\nfunction formatTime(tpl, value, isUTC) {\n if (tpl === 'week' || tpl === 'month' || tpl === 'quarter' || tpl === 'half-year' || tpl === 'year') {\n tpl = 'MM-dd\\nyyyy';\n }\n\n var date = numberUtil.parseDate(value);\n var utc = isUTC ? 'UTC' : '';\n var y = date['get' + utc + 'FullYear']();\n var M = date['get' + utc + 'Month']() + 1;\n var d = date['get' + utc + 'Date']();\n var h = date['get' + utc + 'Hours']();\n var m = date['get' + utc + 'Minutes']();\n var s = date['get' + utc + 'Seconds']();\n var S = date['get' + utc + 'Milliseconds']();\n tpl = tpl.replace('MM', pad(M, 2)).replace('M', M).replace('yyyy', y).replace('yy', y % 100).replace('dd', pad(d, 2)).replace('d', d).replace('hh', pad(h, 2)).replace('h', h).replace('mm', pad(m, 2)).replace('m', m).replace('ss', pad(s, 2)).replace('s', s).replace('SSS', pad(S, 3));\n return tpl;\n}\n/**\n * Capital first\n * @param {string} str\n * @return {string}\n */\n\n\nfunction capitalFirst(str) {\n return str ? str.charAt(0).toUpperCase() + str.substr(1) : str;\n}\n\nvar truncateText = textContain.truncateText;\n/**\n * @public\n * @param {Object} opt\n * @param {string} opt.text\n * @param {string} opt.font\n * @param {string} [opt.textAlign='left']\n * @param {string} [opt.textVerticalAlign='top']\n * @param {Array.} [opt.textPadding]\n * @param {number} [opt.textLineHeight]\n * @param {Object} [opt.rich]\n * @param {Object} [opt.truncate]\n * @return {Object} {x, y, width, height, lineHeight}\n */\n\nfunction getTextBoundingRect(opt) {\n return textContain.getBoundingRect(opt.text, opt.font, opt.textAlign, opt.textVerticalAlign, opt.textPadding, opt.textLineHeight, opt.rich, opt.truncate);\n}\n/**\n * @deprecated\n * the `textLineHeight` was added later.\n * For backward compatiblility, put it as the last parameter.\n * But deprecated this interface. Please use `getTextBoundingRect` instead.\n */\n\n\nfunction getTextRect(text, font, textAlign, textVerticalAlign, textPadding, rich, truncate, textLineHeight) {\n return textContain.getBoundingRect(text, font, textAlign, textVerticalAlign, textPadding, textLineHeight, rich, truncate);\n}\n/**\n * open new tab\n * @param {string} link url\n * @param {string} target blank or self\n */\n\n\nfunction windowOpen(link, target) {\n if (target === '_blank' || target === 'blank') {\n var blank = window.open();\n blank.opener = null;\n blank.location = link;\n } else {\n window.open(link, target);\n }\n}\n\nexports.addCommas = addCommas;\nexports.toCamelCase = toCamelCase;\nexports.normalizeCssArray = normalizeCssArray;\nexports.encodeHTML = encodeHTML;\nexports.formatTpl = formatTpl;\nexports.formatTplSimple = formatTplSimple;\nexports.getTooltipMarker = getTooltipMarker;\nexports.formatTime = formatTime;\nexports.capitalFirst = capitalFirst;\nexports.truncateText = truncateText;\nexports.getTextBoundingRect = getTextBoundingRect;\nexports.getTextRect = getTextRect;\nexports.windowOpen = windowOpen;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar each = _util.each;\nvar isString = _util.isString;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Note that it is too complicated to support 3d stack by value\n * (have to create two-dimension inverted index), so in 3d case\n * we just support that stacked by index.\n *\n * @param {module:echarts/model/Series} seriesModel\n * @param {Array.} dimensionInfoList The same as the input of .\n * The input dimensionInfoList will be modified.\n * @param {Object} [opt]\n * @param {boolean} [opt.stackedCoordDimension=''] Specify a coord dimension if needed.\n * @param {boolean} [opt.byIndex=false]\n * @return {Object} calculationInfo\n * {\n * stackedDimension: string\n * stackedByDimension: string\n * isStackedByIndex: boolean\n * stackedOverDimension: string\n * stackResultDimension: string\n * }\n */\nfunction enableDataStack(seriesModel, dimensionInfoList, opt) {\n opt = opt || {};\n var byIndex = opt.byIndex;\n var stackedCoordDimension = opt.stackedCoordDimension; // Compatibal: when `stack` is set as '', do not stack.\n\n var mayStack = !!(seriesModel && seriesModel.get('stack'));\n var stackedByDimInfo;\n var stackedDimInfo;\n var stackResultDimension;\n var stackedOverDimension;\n each(dimensionInfoList, function (dimensionInfo, index) {\n if (isString(dimensionInfo)) {\n dimensionInfoList[index] = dimensionInfo = {\n name: dimensionInfo\n };\n }\n\n if (mayStack && !dimensionInfo.isExtraCoord) {\n // Find the first ordinal dimension as the stackedByDimInfo.\n if (!byIndex && !stackedByDimInfo && dimensionInfo.ordinalMeta) {\n stackedByDimInfo = dimensionInfo;\n } // Find the first stackable dimension as the stackedDimInfo.\n\n\n if (!stackedDimInfo && dimensionInfo.type !== 'ordinal' && dimensionInfo.type !== 'time' && (!stackedCoordDimension || stackedCoordDimension === dimensionInfo.coordDim)) {\n stackedDimInfo = dimensionInfo;\n }\n }\n });\n\n if (stackedDimInfo && !byIndex && !stackedByDimInfo) {\n // Compatible with previous design, value axis (time axis) only stack by index.\n // It may make sense if the user provides elaborately constructed data.\n byIndex = true;\n } // Add stack dimension, they can be both calculated by coordinate system in `unionExtent`.\n // That put stack logic in List is for using conveniently in echarts extensions, but it\n // might not be a good way.\n\n\n if (stackedDimInfo) {\n // Use a weird name that not duplicated with other names.\n stackResultDimension = '__\\0ecstackresult';\n stackedOverDimension = '__\\0ecstackedover'; // Create inverted index to fast query index by value.\n\n if (stackedByDimInfo) {\n stackedByDimInfo.createInvertedIndices = true;\n }\n\n var stackedDimCoordDim = stackedDimInfo.coordDim;\n var stackedDimType = stackedDimInfo.type;\n var stackedDimCoordIndex = 0;\n each(dimensionInfoList, function (dimensionInfo) {\n if (dimensionInfo.coordDim === stackedDimCoordDim) {\n stackedDimCoordIndex++;\n }\n });\n dimensionInfoList.push({\n name: stackResultDimension,\n coordDim: stackedDimCoordDim,\n coordDimIndex: stackedDimCoordIndex,\n type: stackedDimType,\n isExtraCoord: true,\n isCalculationCoord: true\n });\n stackedDimCoordIndex++;\n dimensionInfoList.push({\n name: stackedOverDimension,\n // This dimension contains stack base (generally, 0), so do not set it as\n // `stackedDimCoordDim` to avoid extent calculation, consider log scale.\n coordDim: stackedOverDimension,\n coordDimIndex: stackedDimCoordIndex,\n type: stackedDimType,\n isExtraCoord: true,\n isCalculationCoord: true\n });\n }\n\n return {\n stackedDimension: stackedDimInfo && stackedDimInfo.name,\n stackedByDimension: stackedByDimInfo && stackedByDimInfo.name,\n isStackedByIndex: byIndex,\n stackedOverDimension: stackedOverDimension,\n stackResultDimension: stackResultDimension\n };\n}\n/**\n * @param {module:echarts/data/List} data\n * @param {string} stackedDim\n */\n\n\nfunction isDimensionStacked(data, stackedDim\n/*, stackedByDim*/\n) {\n // Each single series only maps to one pair of axis. So we do not need to\n // check stackByDim, whatever stacked by a dimension or stacked by index.\n return !!stackedDim && stackedDim === data.getCalculationInfo('stackedDimension'); // && (\n // stackedByDim != null\n // ? stackedByDim === data.getCalculationInfo('stackedByDimension')\n // : data.getCalculationInfo('isStackedByIndex')\n // );\n}\n/**\n * @param {module:echarts/data/List} data\n * @param {string} targetDim\n * @param {string} [stackedByDim] If not input this parameter, check whether\n * stacked by index.\n * @return {string} dimension\n */\n\n\nfunction getStackedDimension(data, targetDim) {\n return isDimensionStacked(data, targetDim) ? data.getCalculationInfo('stackResultDimension') : targetDim;\n}\n\nexports.enableDataStack = enableDataStack;\nexports.isDimensionStacked = isDimensionStacked;\nexports.getStackedDimension = getStackedDimension;","var PathProxy = require(\"../core/PathProxy\");\n\nvar _vector = require(\"../core/vector\");\n\nvar v2ApplyTransform = _vector.applyTransform;\nvar CMD = PathProxy.CMD;\nvar points = [[], [], []];\nvar mathSqrt = Math.sqrt;\nvar mathAtan2 = Math.atan2;\n\nfunction _default(path, m) {\n var data = path.data;\n var cmd;\n var nPoint;\n var i;\n var j;\n var k;\n var p;\n var M = CMD.M;\n var C = CMD.C;\n var L = CMD.L;\n var R = CMD.R;\n var A = CMD.A;\n var Q = CMD.Q;\n\n for (i = 0, j = 0; i < data.length;) {\n cmd = data[i++];\n j = i;\n nPoint = 0;\n\n switch (cmd) {\n case M:\n nPoint = 1;\n break;\n\n case L:\n nPoint = 1;\n break;\n\n case C:\n nPoint = 3;\n break;\n\n case Q:\n nPoint = 2;\n break;\n\n case A:\n var x = m[4];\n var y = m[5];\n var sx = mathSqrt(m[0] * m[0] + m[1] * m[1]);\n var sy = mathSqrt(m[2] * m[2] + m[3] * m[3]);\n var angle = mathAtan2(-m[1] / sy, m[0] / sx); // cx\n\n data[i] *= sx;\n data[i++] += x; // cy\n\n data[i] *= sy;\n data[i++] += y; // Scale rx and ry\n // FIXME Assume psi is 0 here\n\n data[i++] *= sx;\n data[i++] *= sy; // Start angle\n\n data[i++] += angle; // end angle\n\n data[i++] += angle; // FIXME psi\n\n i += 2;\n j = i;\n break;\n\n case R:\n // x0, y0\n p[0] = data[i++];\n p[1] = data[i++];\n v2ApplyTransform(p, p, m);\n data[j++] = p[0];\n data[j++] = p[1]; // x1, y1\n\n p[0] += data[i++];\n p[1] += data[i++];\n v2ApplyTransform(p, p, m);\n data[j++] = p[0];\n data[j++] = p[1];\n }\n\n for (k = 0; k < nPoint; k++) {\n var p = points[k];\n p[0] = data[i++];\n p[1] = data[i++];\n v2ApplyTransform(p, p, m); // Write back\n\n data[j++] = p[0];\n data[j++] = p[1];\n }\n }\n}\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar contrastColor = '#eee';\n\nvar axisCommon = function () {\n return {\n axisLine: {\n lineStyle: {\n color: contrastColor\n }\n },\n axisTick: {\n lineStyle: {\n color: contrastColor\n }\n },\n axisLabel: {\n textStyle: {\n color: contrastColor\n }\n },\n splitLine: {\n lineStyle: {\n type: 'dashed',\n color: '#aaa'\n }\n },\n splitArea: {\n areaStyle: {\n color: contrastColor\n }\n }\n };\n};\n\nvar colorPalette = ['#dd6b66', '#759aa0', '#e69d87', '#8dc1a9', '#ea7e53', '#eedd78', '#73a373', '#73b9bc', '#7289ab', '#91ca8c', '#f49f42'];\nvar theme = {\n color: colorPalette,\n backgroundColor: '#333',\n tooltip: {\n axisPointer: {\n lineStyle: {\n color: contrastColor\n },\n crossStyle: {\n color: contrastColor\n },\n label: {\n color: '#000'\n }\n }\n },\n legend: {\n textStyle: {\n color: contrastColor\n }\n },\n textStyle: {\n color: contrastColor\n },\n title: {\n textStyle: {\n color: contrastColor\n }\n },\n toolbox: {\n iconStyle: {\n normal: {\n borderColor: contrastColor\n }\n }\n },\n dataZoom: {\n textStyle: {\n color: contrastColor\n }\n },\n visualMap: {\n textStyle: {\n color: contrastColor\n }\n },\n timeline: {\n lineStyle: {\n color: contrastColor\n },\n itemStyle: {\n normal: {\n color: colorPalette[1]\n }\n },\n label: {\n normal: {\n textStyle: {\n color: contrastColor\n }\n }\n },\n controlStyle: {\n normal: {\n color: contrastColor,\n borderColor: contrastColor\n }\n }\n },\n timeAxis: axisCommon(),\n logAxis: axisCommon(),\n valueAxis: axisCommon(),\n categoryAxis: axisCommon(),\n line: {\n symbol: 'circle'\n },\n graph: {\n color: colorPalette\n },\n gauge: {\n title: {\n textStyle: {\n color: contrastColor\n }\n }\n },\n candlestick: {\n itemStyle: {\n normal: {\n color: '#FD1050',\n color0: '#0CF49B',\n borderColor: '#FD1050',\n borderColor0: '#0CF49B'\n }\n }\n }\n};\ntheme.categoryAxis.splitLine.show = false;\nvar _default = theme;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar BoundingRect = require(\"zrender/lib/core/BoundingRect\");\n\nvar bbox = require(\"zrender/lib/core/bbox\");\n\nvar vec2 = require(\"zrender/lib/core/vector\");\n\nvar polygonContain = require(\"zrender/lib/contain/polygon\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @module echarts/coord/geo/Region\n */\n\n/**\n * @param {string|Region} name\n * @param {Array} geometries\n * @param {Array.} cp\n */\nfunction Region(name, geometries, cp) {\n /**\n * @type {string}\n * @readOnly\n */\n this.name = name;\n /**\n * @type {Array.}\n * @readOnly\n */\n\n this.geometries = geometries;\n\n if (!cp) {\n var rect = this.getBoundingRect();\n cp = [rect.x + rect.width / 2, rect.y + rect.height / 2];\n } else {\n cp = [cp[0], cp[1]];\n }\n /**\n * @type {Array.}\n */\n\n\n this.center = cp;\n}\n\nRegion.prototype = {\n constructor: Region,\n properties: null,\n\n /**\n * @return {module:zrender/core/BoundingRect}\n */\n getBoundingRect: function () {\n var rect = this._rect;\n\n if (rect) {\n return rect;\n }\n\n var MAX_NUMBER = Number.MAX_VALUE;\n var min = [MAX_NUMBER, MAX_NUMBER];\n var max = [-MAX_NUMBER, -MAX_NUMBER];\n var min2 = [];\n var max2 = [];\n var geometries = this.geometries;\n\n for (var i = 0; i < geometries.length; i++) {\n // Only support polygon\n if (geometries[i].type !== 'polygon') {\n continue;\n } // Doesn't consider hole\n\n\n var exterior = geometries[i].exterior;\n bbox.fromPoints(exterior, min2, max2);\n vec2.min(min, min, min2);\n vec2.max(max, max, max2);\n } // No data\n\n\n if (i === 0) {\n min[0] = min[1] = max[0] = max[1] = 0;\n }\n\n return this._rect = new BoundingRect(min[0], min[1], max[0] - min[0], max[1] - min[1]);\n },\n\n /**\n * @param {} coord\n * @return {boolean}\n */\n contain: function (coord) {\n var rect = this.getBoundingRect();\n var geometries = this.geometries;\n\n if (!rect.contain(coord[0], coord[1])) {\n return false;\n }\n\n loopGeo: for (var i = 0, len = geometries.length; i < len; i++) {\n // Only support polygon.\n if (geometries[i].type !== 'polygon') {\n continue;\n }\n\n var exterior = geometries[i].exterior;\n var interiors = geometries[i].interiors;\n\n if (polygonContain.contain(exterior, coord[0], coord[1])) {\n // Not in the region if point is in the hole.\n for (var k = 0; k < (interiors ? interiors.length : 0); k++) {\n if (polygonContain.contain(interiors[k])) {\n continue loopGeo;\n }\n }\n\n return true;\n }\n }\n\n return false;\n },\n transformTo: function (x, y, width, height) {\n var rect = this.getBoundingRect();\n var aspect = rect.width / rect.height;\n\n if (!width) {\n width = aspect * height;\n } else if (!height) {\n height = width / aspect;\n }\n\n var target = new BoundingRect(x, y, width, height);\n var transform = rect.calculateTransform(target);\n var geometries = this.geometries;\n\n for (var i = 0; i < geometries.length; i++) {\n // Only support polygon.\n if (geometries[i].type !== 'polygon') {\n continue;\n }\n\n var exterior = geometries[i].exterior;\n var interiors = geometries[i].interiors;\n\n for (var p = 0; p < exterior.length; p++) {\n vec2.applyTransform(exterior[p], exterior[p], transform);\n }\n\n for (var h = 0; h < (interiors ? interiors.length : 0); h++) {\n for (var p = 0; p < interiors[h].length; p++) {\n vec2.applyTransform(interiors[h][p], interiors[h][p], transform);\n }\n }\n }\n\n rect = this._rect;\n rect.copy(target); // Update center\n\n this.center = [rect.x + rect.width / 2, rect.y + rect.height / 2];\n },\n cloneShallow: function (name) {\n name == null && (name = this.name);\n var newRegion = new Region(name, this.geometries, this.center);\n newRegion._rect = this._rect;\n newRegion.transformTo = null; // Simply avoid to be called.\n\n return newRegion;\n }\n};\nvar _default = Region;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar assert = _util.assert;\nvar isArray = _util.isArray;\n\nvar _config = require(\"../config\");\n\nvar __DEV__ = _config.__DEV__;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @param {Object} define\n * @return See the return of `createTask`.\n */\nfunction createTask(define) {\n return new Task(define);\n}\n/**\n * @constructor\n * @param {Object} define\n * @param {Function} define.reset Custom reset\n * @param {Function} [define.plan] Returns 'reset' indicate reset immediately.\n * @param {Function} [define.count] count is used to determin data task.\n * @param {Function} [define.onDirty] count is used to determin data task.\n */\n\n\nfunction Task(define) {\n define = define || {};\n this._reset = define.reset;\n this._plan = define.plan;\n this._count = define.count;\n this._onDirty = define.onDirty;\n this._dirty = true; // Context must be specified implicitly, to\n // avoid miss update context when model changed.\n\n this.context;\n}\n\nvar taskProto = Task.prototype;\n/**\n * @param {Object} performArgs\n * @param {number} [performArgs.step] Specified step.\n * @param {number} [performArgs.skip] Skip customer perform call.\n * @param {number} [performArgs.modBy] Sampling window size.\n * @param {number} [performArgs.modDataCount] Sampling count.\n */\n\ntaskProto.perform = function (performArgs) {\n var upTask = this._upstream;\n var skip = performArgs && performArgs.skip; // TODO some refactor.\n // Pull data. Must pull data each time, because context.data\n // may be updated by Series.setData.\n\n if (this._dirty && upTask) {\n var context = this.context;\n context.data = context.outputData = upTask.context.outputData;\n }\n\n if (this.__pipeline) {\n this.__pipeline.currentTask = this;\n }\n\n var planResult;\n\n if (this._plan && !skip) {\n planResult = this._plan(this.context);\n } // Support sharding by mod, which changes the render sequence and makes the rendered graphic\n // elements uniformed distributed when progress, especially when moving or zooming.\n\n\n var lastModBy = normalizeModBy(this._modBy);\n var lastModDataCount = this._modDataCount || 0;\n var modBy = normalizeModBy(performArgs && performArgs.modBy);\n var modDataCount = performArgs && performArgs.modDataCount || 0;\n\n if (lastModBy !== modBy || lastModDataCount !== modDataCount) {\n planResult = 'reset';\n }\n\n function normalizeModBy(val) {\n !(val >= 1) && (val = 1); // jshint ignore:line\n\n return val;\n }\n\n var forceFirstProgress;\n\n if (this._dirty || planResult === 'reset') {\n this._dirty = false;\n forceFirstProgress = reset(this, skip);\n }\n\n this._modBy = modBy;\n this._modDataCount = modDataCount;\n var step = performArgs && performArgs.step;\n\n if (upTask) {\n this._dueEnd = upTask._outputDueEnd;\n } // DataTask or overallTask\n else {\n this._dueEnd = this._count ? this._count(this.context) : Infinity;\n } // Note: Stubs, that its host overall task let it has progress, has progress.\n // If no progress, pass index from upstream to downstream each time plan called.\n\n\n if (this._progress) {\n var start = this._dueIndex;\n var end = Math.min(step != null ? this._dueIndex + step : Infinity, this._dueEnd);\n\n if (!skip && (forceFirstProgress || start < end)) {\n var progress = this._progress;\n\n if (isArray(progress)) {\n for (var i = 0; i < progress.length; i++) {\n doProgress(this, progress[i], start, end, modBy, modDataCount);\n }\n } else {\n doProgress(this, progress, start, end, modBy, modDataCount);\n }\n }\n\n this._dueIndex = end; // If no `outputDueEnd`, assume that output data and\n // input data is the same, so use `dueIndex` as `outputDueEnd`.\n\n var outputDueEnd = this._settedOutputEnd != null ? this._settedOutputEnd : end;\n this._outputDueEnd = outputDueEnd;\n } else {\n // (1) Some overall task has no progress.\n // (2) Stubs, that its host overall task do not let it has progress, has no progress.\n // This should always be performed so it can be passed to downstream.\n this._dueIndex = this._outputDueEnd = this._settedOutputEnd != null ? this._settedOutputEnd : this._dueEnd;\n }\n\n return this.unfinished();\n};\n\nvar iterator = function () {\n var end;\n var current;\n var modBy;\n var modDataCount;\n var winCount;\n var it = {\n reset: function (s, e, sStep, sCount) {\n current = s;\n end = e;\n modBy = sStep;\n modDataCount = sCount;\n winCount = Math.ceil(modDataCount / modBy);\n it.next = modBy > 1 && modDataCount > 0 ? modNext : sequentialNext;\n }\n };\n return it;\n\n function sequentialNext() {\n return current < end ? current++ : null;\n }\n\n function modNext() {\n var dataIndex = current % winCount * modBy + Math.ceil(current / winCount);\n var result = current >= end ? null : dataIndex < modDataCount ? dataIndex // If modDataCount is smaller than data.count() (consider `appendData` case),\n // Use normal linear rendering mode.\n : current;\n current++;\n return result;\n }\n}();\n\ntaskProto.dirty = function () {\n this._dirty = true;\n this._onDirty && this._onDirty(this.context);\n};\n\nfunction doProgress(taskIns, progress, start, end, modBy, modDataCount) {\n iterator.reset(start, end, modBy, modDataCount);\n taskIns._callingProgress = progress;\n\n taskIns._callingProgress({\n start: start,\n end: end,\n count: end - start,\n next: iterator.next\n }, taskIns.context);\n}\n\nfunction reset(taskIns, skip) {\n taskIns._dueIndex = taskIns._outputDueEnd = taskIns._dueEnd = 0;\n taskIns._settedOutputEnd = null;\n var progress;\n var forceFirstProgress;\n\n if (!skip && taskIns._reset) {\n progress = taskIns._reset(taskIns.context);\n\n if (progress && progress.progress) {\n forceFirstProgress = progress.forceFirstProgress;\n progress = progress.progress;\n } // To simplify no progress checking, array must has item.\n\n\n if (isArray(progress) && !progress.length) {\n progress = null;\n }\n }\n\n taskIns._progress = progress;\n taskIns._modBy = taskIns._modDataCount = null;\n var downstream = taskIns._downstream;\n downstream && downstream.dirty();\n return forceFirstProgress;\n}\n/**\n * @return {boolean}\n */\n\n\ntaskProto.unfinished = function () {\n return this._progress && this._dueIndex < this._dueEnd;\n};\n/**\n * @param {Object} downTask The downstream task.\n * @return {Object} The downstream task.\n */\n\n\ntaskProto.pipe = function (downTask) {\n // If already downstream, do not dirty downTask.\n if (this._downstream !== downTask || this._dirty) {\n this._downstream = downTask;\n downTask._upstream = this;\n downTask.dirty();\n }\n};\n\ntaskProto.dispose = function () {\n if (this._disposed) {\n return;\n }\n\n this._upstream && (this._upstream._downstream = null);\n this._downstream && (this._downstream._upstream = null);\n this._dirty = false;\n this._disposed = true;\n};\n\ntaskProto.getUpstream = function () {\n return this._upstream;\n};\n\ntaskProto.getDownstream = function () {\n return this._downstream;\n};\n\ntaskProto.setOutputEnd = function (end) {\n // This only happend in dataTask, dataZoom, map, currently.\n // where dataZoom do not set end each time, but only set\n // when reset. So we should record the setted end, in case\n // that the stub of dataZoom perform again and earse the\n // setted end by upstream.\n this._outputDueEnd = this._settedOutputEnd = end;\n}; ///////////////////////////////////////////////////////////\n// For stream debug (Should be commented out after used!)\n// Usage: printTask(this, 'begin');\n// Usage: printTask(this, null, {someExtraProp});\n// function printTask(task, prefix, extra) {\n// window.ecTaskUID == null && (window.ecTaskUID = 0);\n// task.uidDebug == null && (task.uidDebug = `task_${window.ecTaskUID++}`);\n// task.agent && task.agent.uidDebug == null && (task.agent.uidDebug = `task_${window.ecTaskUID++}`);\n// var props = [];\n// if (task.__pipeline) {\n// var val = `${task.__idxInPipeline}/${task.__pipeline.tail.__idxInPipeline} ${task.agent ? '(stub)' : ''}`;\n// props.push({text: 'idx', value: val});\n// } else {\n// var stubCount = 0;\n// task.agentStubMap.each(() => stubCount++);\n// props.push({text: 'idx', value: `overall (stubs: ${stubCount})`});\n// }\n// props.push({text: 'uid', value: task.uidDebug});\n// if (task.__pipeline) {\n// props.push({text: 'pid', value: task.__pipeline.id});\n// task.agent && props.push(\n// {text: 'stubFor', value: task.agent.uidDebug}\n// );\n// }\n// props.push(\n// {text: 'dirty', value: task._dirty},\n// {text: 'dueIndex', value: task._dueIndex},\n// {text: 'dueEnd', value: task._dueEnd},\n// {text: 'outputDueEnd', value: task._outputDueEnd}\n// );\n// if (extra) {\n// Object.keys(extra).forEach(key => {\n// props.push({text: key, value: extra[key]});\n// });\n// }\n// var args = ['color: blue'];\n// var msg = `%c[${prefix || 'T'}] %c` + props.map(item => (\n// args.push('color: black', 'color: red'),\n// `${item.text}: %c${item.value}`\n// )).join('%c, ');\n// console.log.apply(console, [msg].concat(args));\n// // console.log(this);\n// }\n\n\nexports.createTask = createTask;","module.exports = __webpack_public_path__ + \"img/9-small.30df7a62.png\";","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar BoundingRect = require(\"zrender/lib/core/BoundingRect\");\n\nvar _number = require(\"./number\");\n\nvar parsePercent = _number.parsePercent;\n\nvar formatUtil = require(\"./format\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// Layout helpers for each component positioning\nvar each = zrUtil.each;\n/**\n * @public\n */\n\nvar LOCATION_PARAMS = ['left', 'right', 'top', 'bottom', 'width', 'height'];\n/**\n * @public\n */\n\nvar HV_NAMES = [['width', 'left', 'right'], ['height', 'top', 'bottom']];\n\nfunction boxLayout(orient, group, gap, maxWidth, maxHeight) {\n var x = 0;\n var y = 0;\n\n if (maxWidth == null) {\n maxWidth = Infinity;\n }\n\n if (maxHeight == null) {\n maxHeight = Infinity;\n }\n\n var currentLineMaxSize = 0;\n group.eachChild(function (child, idx) {\n var position = child.position;\n var rect = child.getBoundingRect();\n var nextChild = group.childAt(idx + 1);\n var nextChildRect = nextChild && nextChild.getBoundingRect();\n var nextX;\n var nextY;\n\n if (orient === 'horizontal') {\n var moveX = rect.width + (nextChildRect ? -nextChildRect.x + rect.x : 0);\n nextX = x + moveX; // Wrap when width exceeds maxWidth or meet a `newline` group\n // FIXME compare before adding gap?\n\n if (nextX > maxWidth || child.newline) {\n x = 0;\n nextX = moveX;\n y += currentLineMaxSize + gap;\n currentLineMaxSize = rect.height;\n } else {\n // FIXME: consider rect.y is not `0`?\n currentLineMaxSize = Math.max(currentLineMaxSize, rect.height);\n }\n } else {\n var moveY = rect.height + (nextChildRect ? -nextChildRect.y + rect.y : 0);\n nextY = y + moveY; // Wrap when width exceeds maxHeight or meet a `newline` group\n\n if (nextY > maxHeight || child.newline) {\n x += currentLineMaxSize + gap;\n y = 0;\n nextY = moveY;\n currentLineMaxSize = rect.width;\n } else {\n currentLineMaxSize = Math.max(currentLineMaxSize, rect.width);\n }\n }\n\n if (child.newline) {\n return;\n }\n\n position[0] = x;\n position[1] = y;\n orient === 'horizontal' ? x = nextX + gap : y = nextY + gap;\n });\n}\n/**\n * VBox or HBox layouting\n * @param {string} orient\n * @param {module:zrender/container/Group} group\n * @param {number} gap\n * @param {number} [width=Infinity]\n * @param {number} [height=Infinity]\n */\n\n\nvar box = boxLayout;\n/**\n * VBox layouting\n * @param {module:zrender/container/Group} group\n * @param {number} gap\n * @param {number} [width=Infinity]\n * @param {number} [height=Infinity]\n */\n\nvar vbox = zrUtil.curry(boxLayout, 'vertical');\n/**\n * HBox layouting\n * @param {module:zrender/container/Group} group\n * @param {number} gap\n * @param {number} [width=Infinity]\n * @param {number} [height=Infinity]\n */\n\nvar hbox = zrUtil.curry(boxLayout, 'horizontal');\n/**\n * If x or x2 is not specified or 'center' 'left' 'right',\n * the width would be as long as possible.\n * If y or y2 is not specified or 'middle' 'top' 'bottom',\n * the height would be as long as possible.\n *\n * @param {Object} positionInfo\n * @param {number|string} [positionInfo.x]\n * @param {number|string} [positionInfo.y]\n * @param {number|string} [positionInfo.x2]\n * @param {number|string} [positionInfo.y2]\n * @param {Object} containerRect {width, height}\n * @param {string|number} margin\n * @return {Object} {width, height}\n */\n\nfunction getAvailableSize(positionInfo, containerRect, margin) {\n var containerWidth = containerRect.width;\n var containerHeight = containerRect.height;\n var x = parsePercent(positionInfo.x, containerWidth);\n var y = parsePercent(positionInfo.y, containerHeight);\n var x2 = parsePercent(positionInfo.x2, containerWidth);\n var y2 = parsePercent(positionInfo.y2, containerHeight);\n (isNaN(x) || isNaN(parseFloat(positionInfo.x))) && (x = 0);\n (isNaN(x2) || isNaN(parseFloat(positionInfo.x2))) && (x2 = containerWidth);\n (isNaN(y) || isNaN(parseFloat(positionInfo.y))) && (y = 0);\n (isNaN(y2) || isNaN(parseFloat(positionInfo.y2))) && (y2 = containerHeight);\n margin = formatUtil.normalizeCssArray(margin || 0);\n return {\n width: Math.max(x2 - x - margin[1] - margin[3], 0),\n height: Math.max(y2 - y - margin[0] - margin[2], 0)\n };\n}\n/**\n * Parse position info.\n *\n * @param {Object} positionInfo\n * @param {number|string} [positionInfo.left]\n * @param {number|string} [positionInfo.top]\n * @param {number|string} [positionInfo.right]\n * @param {number|string} [positionInfo.bottom]\n * @param {number|string} [positionInfo.width]\n * @param {number|string} [positionInfo.height]\n * @param {number|string} [positionInfo.aspect] Aspect is width / height\n * @param {Object} containerRect\n * @param {string|number} [margin]\n *\n * @return {module:zrender/core/BoundingRect}\n */\n\n\nfunction getLayoutRect(positionInfo, containerRect, margin) {\n margin = formatUtil.normalizeCssArray(margin || 0);\n var containerWidth = containerRect.width;\n var containerHeight = containerRect.height;\n var left = parsePercent(positionInfo.left, containerWidth);\n var top = parsePercent(positionInfo.top, containerHeight);\n var right = parsePercent(positionInfo.right, containerWidth);\n var bottom = parsePercent(positionInfo.bottom, containerHeight);\n var width = parsePercent(positionInfo.width, containerWidth);\n var height = parsePercent(positionInfo.height, containerHeight);\n var verticalMargin = margin[2] + margin[0];\n var horizontalMargin = margin[1] + margin[3];\n var aspect = positionInfo.aspect; // If width is not specified, calculate width from left and right\n\n if (isNaN(width)) {\n width = containerWidth - right - horizontalMargin - left;\n }\n\n if (isNaN(height)) {\n height = containerHeight - bottom - verticalMargin - top;\n }\n\n if (aspect != null) {\n // If width and height are not given\n // 1. Graph should not exceeds the container\n // 2. Aspect must be keeped\n // 3. Graph should take the space as more as possible\n // FIXME\n // Margin is not considered, because there is no case that both\n // using margin and aspect so far.\n if (isNaN(width) && isNaN(height)) {\n if (aspect > containerWidth / containerHeight) {\n width = containerWidth * 0.8;\n } else {\n height = containerHeight * 0.8;\n }\n } // Calculate width or height with given aspect\n\n\n if (isNaN(width)) {\n width = aspect * height;\n }\n\n if (isNaN(height)) {\n height = width / aspect;\n }\n } // If left is not specified, calculate left from right and width\n\n\n if (isNaN(left)) {\n left = containerWidth - right - width - horizontalMargin;\n }\n\n if (isNaN(top)) {\n top = containerHeight - bottom - height - verticalMargin;\n } // Align left and top\n\n\n switch (positionInfo.left || positionInfo.right) {\n case 'center':\n left = containerWidth / 2 - width / 2 - margin[3];\n break;\n\n case 'right':\n left = containerWidth - width - horizontalMargin;\n break;\n }\n\n switch (positionInfo.top || positionInfo.bottom) {\n case 'middle':\n case 'center':\n top = containerHeight / 2 - height / 2 - margin[0];\n break;\n\n case 'bottom':\n top = containerHeight - height - verticalMargin;\n break;\n } // If something is wrong and left, top, width, height are calculated as NaN\n\n\n left = left || 0;\n top = top || 0;\n\n if (isNaN(width)) {\n // Width may be NaN if only one value is given except width\n width = containerWidth - horizontalMargin - left - (right || 0);\n }\n\n if (isNaN(height)) {\n // Height may be NaN if only one value is given except height\n height = containerHeight - verticalMargin - top - (bottom || 0);\n }\n\n var rect = new BoundingRect(left + margin[3], top + margin[0], width, height);\n rect.margin = margin;\n return rect;\n}\n/**\n * Position a zr element in viewport\n * Group position is specified by either\n * {left, top}, {right, bottom}\n * If all properties exists, right and bottom will be igonred.\n *\n * Logic:\n * 1. Scale (against origin point in parent coord)\n * 2. Rotate (against origin point in parent coord)\n * 3. Traslate (with el.position by this method)\n * So this method only fixes the last step 'Traslate', which does not affect\n * scaling and rotating.\n *\n * If be called repeatly with the same input el, the same result will be gotten.\n *\n * @param {module:zrender/Element} el Should have `getBoundingRect` method.\n * @param {Object} positionInfo\n * @param {number|string} [positionInfo.left]\n * @param {number|string} [positionInfo.top]\n * @param {number|string} [positionInfo.right]\n * @param {number|string} [positionInfo.bottom]\n * @param {number|string} [positionInfo.width] Only for opt.boundingModel: 'raw'\n * @param {number|string} [positionInfo.height] Only for opt.boundingModel: 'raw'\n * @param {Object} containerRect\n * @param {string|number} margin\n * @param {Object} [opt]\n * @param {Array.} [opt.hv=[1,1]] Only horizontal or only vertical.\n * @param {Array.} [opt.boundingMode='all']\n * Specify how to calculate boundingRect when locating.\n * 'all': Position the boundingRect that is transformed and uioned\n * both itself and its descendants.\n * This mode simplies confine the elements in the bounding\n * of their container (e.g., using 'right: 0').\n * 'raw': Position the boundingRect that is not transformed and only itself.\n * This mode is useful when you want a element can overflow its\n * container. (Consider a rotated circle needs to be located in a corner.)\n * In this mode positionInfo.width/height can only be number.\n */\n\n\nfunction positionElement(el, positionInfo, containerRect, margin, opt) {\n var h = !opt || !opt.hv || opt.hv[0];\n var v = !opt || !opt.hv || opt.hv[1];\n var boundingMode = opt && opt.boundingMode || 'all';\n\n if (!h && !v) {\n return;\n }\n\n var rect;\n\n if (boundingMode === 'raw') {\n rect = el.type === 'group' ? new BoundingRect(0, 0, +positionInfo.width || 0, +positionInfo.height || 0) : el.getBoundingRect();\n } else {\n rect = el.getBoundingRect();\n\n if (el.needLocalTransform()) {\n var transform = el.getLocalTransform(); // Notice: raw rect may be inner object of el,\n // which should not be modified.\n\n rect = rect.clone();\n rect.applyTransform(transform);\n }\n } // The real width and height can not be specified but calculated by the given el.\n\n\n positionInfo = getLayoutRect(zrUtil.defaults({\n width: rect.width,\n height: rect.height\n }, positionInfo), containerRect, margin); // Because 'tranlate' is the last step in transform\n // (see zrender/core/Transformable#getLocalTransform),\n // we can just only modify el.position to get final result.\n\n var elPos = el.position;\n var dx = h ? positionInfo.x - rect.x : 0;\n var dy = v ? positionInfo.y - rect.y : 0;\n el.attr('position', boundingMode === 'raw' ? [dx, dy] : [elPos[0] + dx, elPos[1] + dy]);\n}\n/**\n * @param {Object} option Contains some of the properties in HV_NAMES.\n * @param {number} hvIdx 0: horizontal; 1: vertical.\n */\n\n\nfunction sizeCalculable(option, hvIdx) {\n return option[HV_NAMES[hvIdx][0]] != null || option[HV_NAMES[hvIdx][1]] != null && option[HV_NAMES[hvIdx][2]] != null;\n}\n/**\n * Consider Case:\n * When defulat option has {left: 0, width: 100}, and we set {right: 0}\n * through setOption or media query, using normal zrUtil.merge will cause\n * {right: 0} does not take effect.\n *\n * @example\n * ComponentModel.extend({\n * init: function () {\n * ...\n * var inputPositionParams = layout.getLayoutParams(option);\n * this.mergeOption(inputPositionParams);\n * },\n * mergeOption: function (newOption) {\n * newOption && zrUtil.merge(thisOption, newOption, true);\n * layout.mergeLayoutParam(thisOption, newOption);\n * }\n * });\n *\n * @param {Object} targetOption\n * @param {Object} newOption\n * @param {Object|string} [opt]\n * @param {boolean|Array.} [opt.ignoreSize=false] Used for the components\n * that width (or height) should not be calculated by left and right (or top and bottom).\n */\n\n\nfunction mergeLayoutParam(targetOption, newOption, opt) {\n !zrUtil.isObject(opt) && (opt = {});\n var ignoreSize = opt.ignoreSize;\n !zrUtil.isArray(ignoreSize) && (ignoreSize = [ignoreSize, ignoreSize]);\n var hResult = merge(HV_NAMES[0], 0);\n var vResult = merge(HV_NAMES[1], 1);\n copy(HV_NAMES[0], targetOption, hResult);\n copy(HV_NAMES[1], targetOption, vResult);\n\n function merge(names, hvIdx) {\n var newParams = {};\n var newValueCount = 0;\n var merged = {};\n var mergedValueCount = 0;\n var enoughParamNumber = 2;\n each(names, function (name) {\n merged[name] = targetOption[name];\n });\n each(names, function (name) {\n // Consider case: newOption.width is null, which is\n // set by user for removing width setting.\n hasProp(newOption, name) && (newParams[name] = merged[name] = newOption[name]);\n hasValue(newParams, name) && newValueCount++;\n hasValue(merged, name) && mergedValueCount++;\n });\n\n if (ignoreSize[hvIdx]) {\n // Only one of left/right is premitted to exist.\n if (hasValue(newOption, names[1])) {\n merged[names[2]] = null;\n } else if (hasValue(newOption, names[2])) {\n merged[names[1]] = null;\n }\n\n return merged;\n } // Case: newOption: {width: ..., right: ...},\n // or targetOption: {right: ...} and newOption: {width: ...},\n // There is no conflict when merged only has params count\n // little than enoughParamNumber.\n\n\n if (mergedValueCount === enoughParamNumber || !newValueCount) {\n return merged;\n } // Case: newOption: {width: ..., right: ...},\n // Than we can make sure user only want those two, and ignore\n // all origin params in targetOption.\n else if (newValueCount >= enoughParamNumber) {\n return newParams;\n } else {\n // Chose another param from targetOption by priority.\n for (var i = 0; i < names.length; i++) {\n var name = names[i];\n\n if (!hasProp(newParams, name) && hasProp(targetOption, name)) {\n newParams[name] = targetOption[name];\n break;\n }\n }\n\n return newParams;\n }\n }\n\n function hasProp(obj, name) {\n return obj.hasOwnProperty(name);\n }\n\n function hasValue(obj, name) {\n return obj[name] != null && obj[name] !== 'auto';\n }\n\n function copy(names, target, source) {\n each(names, function (name) {\n target[name] = source[name];\n });\n }\n}\n/**\n * Retrieve 'left', 'right', 'top', 'bottom', 'width', 'height' from object.\n * @param {Object} source\n * @return {Object} Result contains those props.\n */\n\n\nfunction getLayoutParams(source) {\n return copyLayoutParams({}, source);\n}\n/**\n * Retrieve 'left', 'right', 'top', 'bottom', 'width', 'height' from object.\n * @param {Object} source\n * @return {Object} Result contains those props.\n */\n\n\nfunction copyLayoutParams(target, source) {\n source && target && each(LOCATION_PARAMS, function (name) {\n source.hasOwnProperty(name) && (target[name] = source[name]);\n });\n return target;\n}\n\nexports.LOCATION_PARAMS = LOCATION_PARAMS;\nexports.HV_NAMES = HV_NAMES;\nexports.box = box;\nexports.vbox = vbox;\nexports.hbox = hbox;\nexports.getAvailableSize = getAvailableSize;\nexports.getLayoutRect = getLayoutRect;\nexports.positionElement = positionElement;\nexports.sizeCalculable = sizeCalculable;\nexports.mergeLayoutParam = mergeLayoutParam;\nexports.getLayoutParams = getLayoutParams;\nexports.copyLayoutParams = copyLayoutParams;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar each = _util.each;\nvar isArray = _util.isArray;\nvar isObject = _util.isObject;\n\nvar compatStyle = require(\"./helper/compatStyle\");\n\nvar _model = require(\"../util/model\");\n\nvar normalizeToArray = _model.normalizeToArray;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// Compatitable with 2.0\nfunction get(opt, path) {\n path = path.split(',');\n var obj = opt;\n\n for (var i = 0; i < path.length; i++) {\n obj = obj && obj[path[i]];\n\n if (obj == null) {\n break;\n }\n }\n\n return obj;\n}\n\nfunction set(opt, path, val, overwrite) {\n path = path.split(',');\n var obj = opt;\n var key;\n\n for (var i = 0; i < path.length - 1; i++) {\n key = path[i];\n\n if (obj[key] == null) {\n obj[key] = {};\n }\n\n obj = obj[key];\n }\n\n if (overwrite || obj[path[i]] == null) {\n obj[path[i]] = val;\n }\n}\n\nfunction compatLayoutProperties(option) {\n each(LAYOUT_PROPERTIES, function (prop) {\n if (prop[0] in option && !(prop[1] in option)) {\n option[prop[1]] = option[prop[0]];\n }\n });\n}\n\nvar LAYOUT_PROPERTIES = [['x', 'left'], ['y', 'top'], ['x2', 'right'], ['y2', 'bottom']];\nvar COMPATITABLE_COMPONENTS = ['grid', 'geo', 'parallel', 'legend', 'toolbox', 'title', 'visualMap', 'dataZoom', 'timeline'];\n\nfunction _default(option, isTheme) {\n compatStyle(option, isTheme); // Make sure series array for model initialization.\n\n option.series = normalizeToArray(option.series);\n each(option.series, function (seriesOpt) {\n if (!isObject(seriesOpt)) {\n return;\n }\n\n var seriesType = seriesOpt.type;\n\n if (seriesType === 'line') {\n if (seriesOpt.clipOverflow != null) {\n seriesOpt.clip = seriesOpt.clipOverflow;\n }\n } else if (seriesType === 'pie' || seriesType === 'gauge') {\n if (seriesOpt.clockWise != null) {\n seriesOpt.clockwise = seriesOpt.clockWise;\n }\n } else if (seriesType === 'gauge') {\n var pointerColor = get(seriesOpt, 'pointer.color');\n pointerColor != null && set(seriesOpt, 'itemStyle.color', pointerColor);\n }\n\n compatLayoutProperties(seriesOpt);\n }); // dataRange has changed to visualMap\n\n if (option.dataRange) {\n option.visualMap = option.dataRange;\n }\n\n each(COMPATITABLE_COMPONENTS, function (componentName) {\n var options = option[componentName];\n\n if (options) {\n if (!isArray(options)) {\n options = [options];\n }\n\n each(options, function (option) {\n compatLayoutProperties(option);\n });\n }\n });\n}\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar Gradient = require(\"zrender/lib/graphic/Gradient\");\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar isFunction = _util.isFunction;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = {\n createOnAllSeries: true,\n performRawSeries: true,\n reset: function (seriesModel, ecModel) {\n var data = seriesModel.getData();\n var colorAccessPath = (seriesModel.visualColorAccessPath || 'itemStyle.color').split('.'); // Set in itemStyle\n\n var color = seriesModel.get(colorAccessPath);\n var colorCallback = isFunction(color) && !(color instanceof Gradient) ? color : null; // Default color\n\n if (!color || colorCallback) {\n color = seriesModel.getColorFromPalette( // TODO series count changed.\n seriesModel.name, null, ecModel.getSeriesCount());\n }\n\n data.setVisual('color', color);\n var borderColorAccessPath = (seriesModel.visualBorderColorAccessPath || 'itemStyle.borderColor').split('.');\n var borderColor = seriesModel.get(borderColorAccessPath);\n data.setVisual('borderColor', borderColor); // Only visible series has each data be visual encoded\n\n if (!ecModel.isSeriesFiltered(seriesModel)) {\n if (colorCallback) {\n data.each(function (idx) {\n data.setItemVisual(idx, 'color', colorCallback(seriesModel.getDataParams(idx)));\n });\n } // itemStyle in each data item\n\n\n var dataEach = function (data, idx) {\n var itemModel = data.getItemModel(idx);\n var color = itemModel.get(colorAccessPath, true);\n var borderColor = itemModel.get(borderColorAccessPath, true);\n\n if (color != null) {\n data.setItemVisual(idx, 'color', color);\n }\n\n if (borderColor != null) {\n data.setItemVisual(idx, 'borderColor', borderColor);\n }\n };\n\n return {\n dataEach: data.hasItemOption ? dataEach : null\n };\n }\n }\n};\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar textContain = require(\"zrender/lib/contain/text\");\n\nvar graphicUtil = require(\"../../util/graphic\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar PATH_COLOR = ['textStyle', 'color'];\nvar _default = {\n /**\n * Get color property or get color from option.textStyle.color\n * @param {boolean} [isEmphasis]\n * @return {string}\n */\n getTextColor: function (isEmphasis) {\n var ecModel = this.ecModel;\n return this.getShallow('color') || (!isEmphasis && ecModel ? ecModel.get(PATH_COLOR) : null);\n },\n\n /**\n * Create font string from fontStyle, fontWeight, fontSize, fontFamily\n * @return {string}\n */\n getFont: function () {\n return graphicUtil.getFont({\n fontStyle: this.getShallow('fontStyle'),\n fontWeight: this.getShallow('fontWeight'),\n fontSize: this.getShallow('fontSize'),\n fontFamily: this.getShallow('fontFamily')\n }, this.ecModel);\n },\n getTextRect: function (text) {\n return textContain.getBoundingRect(text, this.getFont(), this.getShallow('align'), this.getShallow('verticalAlign') || this.getShallow('baseline'), this.getShallow('padding'), this.getShallow('lineHeight'), this.getShallow('rich'), this.getShallow('truncateText'));\n }\n};\nmodule.exports = _default;"],"sourceRoot":""}