{"version":3,"sources":["webpack:///./node_modules/core-js/internals/engine-ff-version.js","webpack:///./src/components/informative.vue?a045","webpack:///./src/components/shared/StatusTag.vue?5843","webpack:///./src/components/SelectCurrency.vue","webpack:///src/components/SelectCurrency.vue","webpack:///./src/components/SelectCurrency.vue?7cf8","webpack:///./src/components/SelectCurrency.vue?9969","webpack:///./src/services/resources/MetaService.js","webpack:///./src/components/shared/ModalBanner.vue?3825","webpack:///./src/components/shared/CardPendingDocumentation.vue?2150","webpack:///./node_modules/core-js/modules/es.array.sort.js","webpack:///./node_modules/core-js/internals/engine-webkit-version.js","webpack:///./src/views/Seller/Dashboard.vue","webpack:///./src/views/Seller/Dashboard.vue?9fb5","webpack:///./src/views/Seller/Dashboard.vue?7b4a","webpack:///./src/assets/img/man-at-office.jpeg","webpack:///./node_modules/raphael/raphael.js","webpack:///./src/components/shared/ModalBanner.vue","webpack:///src/components/shared/ModalBanner.vue","webpack:///./src/components/shared/ModalBanner.vue?5a10","webpack:///./src/components/shared/ModalBanner.vue?05db","webpack:///src/views/Seller/Dashboard.vue","webpack:///./src/services/resources/AuthServiceEnvios.js","webpack:///./src/services/resources/CurrencyCurrenciesService.js","webpack:///./src/components/chart/AreaChart.vue","webpack:///src/components/chart/AreaChart.vue","webpack:///./src/components/chart/AreaChart.vue?f247","webpack:///./src/components/chart/AreaChart.vue?66bb","webpack:///./src/components/SelectCurrency.vue?5ba2","webpack:///./src/services/resources/AuthServiceClub.js","webpack:///./src/components/informative.vue","webpack:///src/components/informative.vue","webpack:///./src/components/informative.vue?35eb","webpack:///./src/components/informative.vue?149b","webpack:///./src/components/shared/CardPendingDocumentation.vue","webpack:///./src/services/resources/DocumentationStatusService.js","webpack:///./src/components/shared/StatusTag.vue","webpack:///src/components/shared/StatusTag.vue","webpack:///./src/components/shared/StatusTag.vue?e00d","webpack:///./src/components/shared/StatusTag.vue?54b4","webpack:///src/components/shared/CardPendingDocumentation.vue","webpack:///./src/components/shared/CardPendingDocumentation.vue?fa4d","webpack:///./src/components/shared/CardPendingDocumentation.vue?691c","webpack:///./src/services/resources/DashboardService.js","webpack:///./src/mixins/money.js","webpack:///./src/components/chart/BarChart.vue","webpack:///src/components/chart/BarChart.vue","webpack:///./src/components/chart/BarChart.vue?ba5a","webpack:///./src/components/chart/BarChart.vue?0a02","webpack:///./node_modules/core-js/internals/engine-is-ie-or-edge.js","webpack:///./src/views/Seller/Dashboard.vue?a0af","webpack:///./src/components/Seller/Dashboard/modals/ModalPendingDocumentation.vue?df29","webpack:///./src/components/Seller/Dashboard/modals/ModalPendingDocumentation.vue","webpack:///src/components/Seller/Dashboard/modals/ModalPendingDocumentation.vue","webpack:///./src/components/Seller/Dashboard/modals/ModalPendingDocumentation.vue?134e","webpack:///./src/components/Seller/Dashboard/modals/ModalPendingDocumentation.vue?24a6"],"names":["userAgent","firefox","match","module","exports","render","_vm","this","_c","_self","staticClass","class","active","_l","coins","coin","key","id","on","$event","stopPropagation","selectCoin","attrs","name","style","setColors","_v","_s","currency_symbol","currency","staticRenderFns","serviceCurrencyCurrencies","CurrencyCurrenciesService","build","props","require","type","Object","default","data","currencyLocal","assign","text_color","background_color","created","_this","JSON","parse","localStorage","user","country","base_currency","is_base_currency","search","then","response","sort","a","b","catch","err","console","error","methods","$emit","component","MetaService","_Rest","_inherits","_super","_createSuper","_classCallCheck","apply","arguments","_createClass","Rest","_defineProperty","$","uncurryThis","aCallable","toObject","lengthOfArrayLike","deletePropertyOrThrow","toString","fails","internalSort","arrayMethodIsStrict","FF","IE_OR_EDGE","V8","WEBKIT","test","nativeSort","push","FAILS_ON_UNDEFINED","undefined","FAILS_ON_NULL","STRICT_METHOD","STABLE_SORT","code","chr","value","index","result","String","fromCharCode","k","v","length","charAt","FORCED","getSortCompare","comparefn","x","y","target","proto","forced","array","itemsLength","items","arrayLength","webkit","ambassadorEnabled","ambassadorAcceptedTerms","directives","rawName","modifiers","staticStyle","openComissions","$t","_e","isMobile","status_validation","status","openVerification","openBannerInModal","openNpsForm","banner_url","updatedUrlRedirect","statementsToday","saldoOk","formatMoney","statementsLastMonth","interAccess","expression","updateCoin","statementsAvailableCount","ativo","statementsBlockCount","loading_statements","vendas_device","vendas_recentes","venda","openSale","product","images","path","substr","seller_balance","nameClient","client","_f","created_at","vendas_recentes_load","ref","top_products","produto","category","total","count","top_products_load","isBetaSeller","getStatusValidation","root","factory","window","modules","installedModules","__webpack_require__","moduleId","i","l","call","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","t","mode","__esModule","ns","create","bind","n","object","property","prototype","hasOwnProperty","p","s","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","R","eve","first","is","loaded","_engine","splice","nu","add","args","Array","slice","f","pop","version","paperproto","separator","elements","circle","rect","ellipse","text","image","formatrg","has","g","doc","document","win","oldRaphael","was","Raphael","Paper","ca","customAttributes","concat","supportsTouch","TouchEvent","DocumentTouch","E","S","Str","split","events","touchMap","mousedown","mousemove","mouseup","lowerCase","toLowerCase","math","Math","mmax","max","mmin","min","abs","pow","PI","string","objectToString","colourRegExp","_ISURL","isnan","bezierrg","round","toFloat","parseFloat","toInt","parseInt","upperCase","toUpperCase","availableAttrs","_availableAttrs","blur","cursor","cx","cy","fill","font","gradient","height","href","opacity","rx","ry","src","stroke","title","transform","width","availableAnimAttrs","_availableAnimAttrs","commaSpaces","hsrg","hs","rg","p2s","pathCommand","tCommand","pathValues","eldata","_radial_gradient","sortByNumber","pipe","rectPath","_rectPath","w","h","ellipsePath","getPath","_getPath","el","attr","bbox","_getBBox","set","mapPath","matrix","j","ii","jj","pathi","path2curve","_g","SVGAngle","implementation","hasFeature","createElement","innerHTML","firstChild","behavior","adj","clone","obj","res","constructor","svg","vml","_Paper","fn","_id","isArray","angle","x1","y1","x2","y2","x3","y3","atan2","rad","deg","snapTo","values","tolerance","rem","createUUID","uuidRegEx","uuidReplacer","replace","random","setWindow","newwin","initWin","toHex","color","bod","trim","docum","ActiveXObject","write","close","body","e","createPopup","range","createTextRange","cacher","queryCommandValue","display","appendChild","defaultView","getComputedStyle","getPropertyValue","hsbtoString","hsltoString","rgbtoString","hex","prepareRGB","clr","getRGB","packageRGB","rgb","repush","item","scope","postprocessor","newf","arg","join","cache","shift","hsb2rgb","hsl2rgb","rgb2hsl","rgb2hsb","G","B","X","C","H","V","L","M","_path2string","_preload","img","cssText","onload","removeChild","onerror","clrToString","catmullRom2bezier","crp","z","iLen","colour","indexOf","substring","red","green","blue","hsb","hsl","getColor","start","reset","parsePathString","pathString","pth","paths","arr","pathClone","paramCounts","q","params","parseTransformString","TString","elem","newData","newLevel","ps","sleep","setTimeout","base3","p1","p2","p3","p4","t1","t2","bezlen","x4","y4","z2","Tvalues","Cvalues","sum","ct","xbase","ybase","comb","sqrt","getTatLen","ll","step","intersect","nx","ny","denominator","px","py","px2","toFixed","py2","interHelper","bez1","bez2","justCount","bbox1","bezierBBox","bbox2","isBBoxIntersect","l1","l2","n1","n2","dots1","dots2","xy","findDotsAtSegment","di","di1","dj","dj1","ci","cj","interPathHelper","path1","path2","_path2curve","x1m","y1m","x2m","y2m","pi","pj","intr","kk","segment1","segment2","p1x","p1y","c1x","c1y","c2x","c2y","p2x","p2y","t13","t12","t3","mx","my","ax","ay","alpha","end","curveDim","isPointInsideBBox","pathIntersection","pathIntersectionNumber","isPointInsidePath","pathBBox","_removedFactory","methodname","pathDimensions","Y","dim","xmin","ymin","xmax","ymax","bb","pathArray","pathToRelative","_pathToRelative","rel","pa","len","pathToAbsolute","_pathToAbsolute","crz","dots","l2c","q2c","_13","_23","a2c","large_arc_flag","sweep_flag","recursive","_120","rotate","cos","sin","f1","f2","rx2","ry2","asin","df","f2old","x2old","y2old","c1","s1","c2","s2","tan","hx","hy","m1","m2","m3","m4","newres","findDotAtSegment","dot","curve","bx","by","qx","qy","attrs2","processPath","pcom","tq","T","Q","fixArc","pp","pcoms1","pcoms2","fixM","a1","a2","pfirst","seg","seg2","seglen","seg2len","tear","_parseDots","par","offset","_tear","paper","top","prev","bottom","next","toMatrix","_tofront","_toback","_insertafter","el2","_insertbefore","_","getBBox","extractTransform","transformPath","_extractTransform","tstr","tdata","dx","dy","sx","sy","Matrix","tlen","command","absolute","inver","invert","translate","scale","dirtyT","getEmpty","equaliseTransform","_equaliseTransform","tt1","tt2","maxlength","from","to","_getContainer","container","getElementById","tagName","pixelWidth","offsetWidth","pixelHeight","offsetHeight","matrixproto","norm","normalize","mag","out","me","toFilter","row","scalex","shear","scaley","acos","isSimple","isSuperSimple","noRotation","toTransformString","shorter","preventDefault","returnValue","preventTouch","originalEvent","cancelBubble","stopTouch","getEventPosition","scrollY","documentElement","scrollTop","scrollX","scrollLeft","clientX","clientY","addEvent","addEventListener","element","pos","olde","targetTouches","removeEventListener","attachEvent","event","detacher","detachEvent","drag","dragMove","dragi","touches","touch","identifier","_drag","node","nextSibling","parent","parentNode","opera","getElementByPoint","insertBefore","move_scope","dragUp","unmousemove","unmouseup","end_scope","start_scope","elproto","eventName","unbind","shape","removeData","getData","hover","f_in","f_out","scope_in","scope_out","mouseover","mouseout","unhover","unmouseover","unmouseout","draggable","onmove","onstart","onend","onDragOver","undrag","unmousedown","__set__","format","itemsArray","Set","setStart","setFinish","getSize","canvas","setSize","setViewBox","fit","raphael","getOffset","box","getBoundingClientRect","ownerDocument","docElem","clientTop","clientLeft","pageYOffset","left","pageXOffset","x_y_w_h","elementFromPoint","so","sr","createSVGRect","hits","getIntersectionList","getById","raphaelid","getElementsByBBox","forEach","bot","callback","thisArg","getElementsByPoint","isPointInside","rp","realPath","isWithoutTransform","removed","dirty","bboxwt","glow","offsetx","offsety","getPointAtSegmentLength","getLengthFactory","istotal","subpath","onlystart","point","sp","subpaths","getTotalLength","getPointAtLength","getSubpathsAtLength","getSubpath","ef","easing_formulas","linear","backIn","backOut","elastic","bounce","easeIn","easeOut","easeInOut","animationElements","requestAnimFrame","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","animation","Now","Date","paused","now","time","ms","easing","diff","that","init","initstatus","anim","percent","stop","upto255","real","from2","repeat","totalOrigin","runAnimation","percents","CubicBezierAtTime","duration","sampleCurveX","solve","epsilon","solveCurveX","t0","d2","Animation","newAnim","times","isInAnim","isInAnimSet","timestamp","toColour","pathes","toPath","eq","to2","easyeasy","del","origin","stopAnimation","animateWith","onAnimation","delay","floor","json","100","lastKey","animate","setTime","pause","resume","setproto","method","clear","insertion","tail","todel","arglen","exclude","collector","insertAfter","glowConfig","ret","shape2","index2","registerFont","face","fonts","fontcopy","glyphs","family","prop","glyph","getFont","weight","stretch","normal","bold","lighter","bolder","thefont","RegExp","fontName","print","size","letter_spacing","line_spacing","letters","notfirst","lineHeight","shifty","descent","curr","token","str","fullfill","tokenRegex","objNotationRegex","replacer","all","quote","quotedName","isFunc","ninja","st","isLoaded","readyState","xlink","markers","block","classic","diamond","open","oval","markerCounter","setAttributeNS","setAttribute","createElementNS","webkitTapHighlightColor","addGradientFill","fx","fy","SVG","_fx","_fy","dir","isNaN","vector","defs","gradientTransform","isFinite","fillurl","fillOpacity","isIE9or10","documentMode","location","locationString","protocol","host","pathname","updatePosition","pattern","patternTransform","addArrow","isEnd","refX","se","arrows","endPath","endMarker","startPath","startMarker","pathId","markerId","use","marker","getElementsByTagName","markerHeight","markerWidth","orient","refY","delta","startdx","enddx","dasharray","addDashes","butt","square","dashes","setFillAndStroke","vis","visibility","att","nodeValue","val","createTextNode","pn","hl","clip","rc","getAttribute","startString","endString","isURL","ig","patternUnits","stops","cssrule","tuneText","leading","fontSize","tspan","texts","tspans","dif","getRealNode","Element","guid","sw","hide","show","remove","containerStyle","canvasHidden","parentElement","clientWidth","clientHeight","names","def","subkey","toFront","toBack","afterNode","beforeNode","fltr","stdDeviation","_blur","filter","removeAttribute","preserveAspectRatio","_viewBox","con","Error","isFloating","cnvs","css","xmlns","_left","_top","renderfix","vb","paperSize","aspectRatio","_vbSize","viewBox","getScreenCTM","createSVGMatrix","desc","fillString","map","Z","bites","blurregexp","cssDot","zoom","pathTypes","ovalTypes","path2vml","vals","isMove","compensation","setCoords","fillpos","flip","kx","ky","coordsize","rotation","coordorigin","fillsize","position","createNode","newpath","isOval","div","clipRect","dstyle","textpath","textpathStyle","fontFamily","fontWeight","fontStyle","newstroke","strokeColor","joinstyle","miterlimit","endcap","dashstyle","span","brect","W","right","dirtyattrs","dd","bbx","fxfy","color2","clrs","colors","focus","focussize","focusposition","_oid","oldt","vbs","_viewBoxShift","vbt","skew","isGrad","isPatt","bbt","auxGetBBox","runtimeStyle","margin","Path","textpathok","cs","styleSheets","createStyleSheet","addRule","namespaces","rvml","glob","current_event","comaseparator","wildcard","numsort","firstDefined","lastDefined","objtos","ar","oldstop","listeners","indexed","queue","ce","zIndex","_events","nes","es","sep","exist","nt","subname","cur","nts","off","funcs","once","isVisible","model","showModal","$$v","showModalBanner","url","mixins","utils","Boolean","computed","_objectSpread","mapGetters","changeModalBanner","mounted","isAuthenticated","watch","newVal","global","serviceUser","UserService","serviceMeta","serviceSubUser","SubUserService","serviceValidation","ValidationService","serviceClub","AuthServiceClub","serviceEnvios","AuthServiceEnvios","serviceDashboard","DashboardService","Utils","Money","components","AreaChart","BarChart","Informative","SelectCurrency","ModalBanner","ModalPendingDocumentation","CardPendingDocumentation","url_redirect","loading","observation","floatApp","vendas_semana","doesUserHavePendingDocumentation","filters","moment","date","replaceDynamicParams","getPermissionsCommissions","$store","getters","getAllPermissionsNames","includes","isLoadingStatements","checkBetaSeller","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_context","dispatch","$children","child","userID","$route","checkInvite","_this2","Cookies","parent_id","dataInvite","createId","$root","message","$bvToast","toast","variant","autoHideDelay","appendToast","existExternalParams","queryString","urlParams","URLSearchParams","externalSubmit","modalSubUser","openPendingDocumentation","$bvModal","service","toClub","resp","process","_this3","read","log","fetchMetas","_this4","meta_value","detectOs","navigator","vendor","MSStream","openHelp","openApp","name_client","handleResize","innerWidth","id_venda","$router","query","s_id","fetchVendasRecentes","_this5","getVerifyPermissions","Dashboard","today","setHours","lastWeek","setDate","getDate","lastMonth","types","tz","utc","last_week","last_month","currency_id","salesLastWeek","finally","fetchHeader","_this6","statementsAvailable","statementsBlock","statementsLastWeekDetail","device","statementsDesktopLastWeek","statementsMobileLastWeek","$refs","areaChart","mountedChart","fetchBanner","_this7","upload_path","in_modal","fetchTopProducts","_this8","openPanel","sale_id","debounce","sendLocalStorage","local_storage","stringify","update","initAll","$crisp","_this9","userInterIds","some","userId","destroyed","Auth","_Api","resource","options","http","base","username","password","captcha","grant_type","client_id","client_secret","post","Api","Chart","defaults","defaultFontFamily","defaultFontSize","extends","Line","required","gradient2","getContext","createLinearGradient","addColorStop","renderChart","labels","_toConsumableArray","reverse","datasets","label","pointBackgroundColor","borderWidth","pointBorderColor","backgroundColor","tooltips","callbacks","tooltipItem","dataset","datasetIndex","currentValue","reduce","previousValue","toLocaleString","responsive","maintainAspectRatio","scales","xAxes","gridLines","drawOnChartArea","yAxes","ticks","legend","skip","scopedSlots","_u","_ref","_objectDestructuringEmpty","activeHidden","meta_key","_m","identityValidationDocumentationStatus","financialDocumentationStatus","sendDocumentation","DocumentationStatusService","_get","_getPrototypeOf","statusClass","validator","bootstrapClass","serviceDocumentationStatus","StatusTag","fetchDocumentationStatus","number","decPlaces","decSep","thouSep","formattedNumber","parts","Doughnut","borderColor","cutoutPercentage","stepSize","UA","closeModal","openPendingDocumentationScreen"],"mappings":"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","file":"js/chunk-a73f8d66.19c56aec.js","sourcesContent":["var userAgent = require('../internals/engine-user-agent');\n\nvar firefox = userAgent.match(/firefox\\/(\\d+)/i);\n\nmodule.exports = !!firefox && +firefox[1];\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/@vue/cli-service/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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./informative.vue?vue&type=style&index=0&id=2fa242e6&prod&scoped=true&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/@vue/cli-service/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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./StatusTag.vue?vue&type=style&index=0&id=9a88393a&prod&scoped=true&lang=css&\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"coin-select select-box\"},[_c('div',{class:'options-container absolute' + _vm.active},_vm._l((_vm.coins),function(coin){return _c('div',{key:coin.id,staticClass:\"option\",on:{\"click\":function($event){$event.stopPropagation();return _vm.selectCoin(coin)}}},[_c('input',{staticClass:\"radio\",attrs:{\"type\":\"radio\",\"id\":coin.name,\"name\":\"coins\"}}),_c('label',{staticClass:\"label-coin\",attrs:{\"for\":coin.name}},[_c('div',{staticClass:\"chip\",style:(_vm.setColors(coin.name))},[_vm._v(\" \"+_vm._s(coin.currency_symbol)+\" \")]),_vm._v(\" \"+_vm._s(coin.currency)+\" \")])])}),0),_c('div',{staticClass:\"selected\",on:{\"click\":function($event){_vm.active = _vm.active === '' ? ' active' : ''}}},[_c('div',{staticClass:\"chip\",style:(_vm.setColors(_vm.currency.name))},[_vm._v(\" \"+_vm._s(_vm.currency.currency_symbol)+\" \")]),_vm._v(\" \"+_vm._s(_vm.currency.currency)+\" \")])])\n}\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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./SelectCurrency.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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./SelectCurrency.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SelectCurrency.vue?vue&type=template&id=399f5a96&scoped=true&\"\nimport script from \"./SelectCurrency.vue?vue&type=script&lang=js&\"\nexport * from \"./SelectCurrency.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SelectCurrency.vue?vue&type=style&index=0&id=399f5a96&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"399f5a96\",\n null\n \n)\n\nexport default component.exports","import Rest from '@/services/Rest';\n\n/**\n * @typedef {MetaService}\n */\nexport default class MetaService extends Rest {\n /**\n * @type {String}\n */\n static resource = '/user-meta'\n}\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/cli-service/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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ModalBanner.vue?vue&type=style&index=0&id=7701828f&prod&lang=scss&scoped=true&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./CardPendingDocumentation.vue?vue&type=style&index=0&id=42e17c42&prod&lang=scss&scoped=true&\"","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar deletePropertyOrThrow = require('../internals/delete-property-or-throw');\nvar toString = require('../internals/to-string');\nvar fails = require('../internals/fails');\nvar internalSort = require('../internals/array-sort');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar FF = require('../internals/engine-ff-version');\nvar IE_OR_EDGE = require('../internals/engine-is-ie-or-edge');\nvar V8 = require('../internals/engine-v8-version');\nvar WEBKIT = require('../internals/engine-webkit-version');\n\nvar test = [];\nvar nativeSort = uncurryThis(test.sort);\nvar push = uncurryThis(test.push);\n\n// IE8-\nvar FAILS_ON_UNDEFINED = fails(function () {\n test.sort(undefined);\n});\n// V8 bug\nvar FAILS_ON_NULL = fails(function () {\n test.sort(null);\n});\n// Old WebKit\nvar STRICT_METHOD = arrayMethodIsStrict('sort');\n\nvar STABLE_SORT = !fails(function () {\n // feature detection can be too slow, so check engines versions\n if (V8) return V8 < 70;\n if (FF && FF > 3) return;\n if (IE_OR_EDGE) return true;\n if (WEBKIT) return WEBKIT < 603;\n\n var result = '';\n var code, chr, value, index;\n\n // generate an array with more 512 elements (Chakra and old V8 fails only in this case)\n for (code = 65; code < 76; code++) {\n chr = String.fromCharCode(code);\n\n switch (code) {\n case 66: case 69: case 70: case 72: value = 3; break;\n case 68: case 71: value = 4; break;\n default: value = 2;\n }\n\n for (index = 0; index < 47; index++) {\n test.push({ k: chr + index, v: value });\n }\n }\n\n test.sort(function (a, b) { return b.v - a.v; });\n\n for (index = 0; index < test.length; index++) {\n chr = test[index].k.charAt(0);\n if (result.charAt(result.length - 1) !== chr) result += chr;\n }\n\n return result !== 'DGBEFHACIJK';\n});\n\nvar FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || !STRICT_METHOD || !STABLE_SORT;\n\nvar getSortCompare = function (comparefn) {\n return function (x, y) {\n if (y === undefined) return -1;\n if (x === undefined) return 1;\n if (comparefn !== undefined) return +comparefn(x, y) || 0;\n return toString(x) > toString(y) ? 1 : -1;\n };\n};\n\n// `Array.prototype.sort` method\n// https://tc39.es/ecma262/#sec-array.prototype.sort\n$({ target: 'Array', proto: true, forced: FORCED }, {\n sort: function sort(comparefn) {\n if (comparefn !== undefined) aCallable(comparefn);\n\n var array = toObject(this);\n\n if (STABLE_SORT) return comparefn === undefined ? nativeSort(array) : nativeSort(array, comparefn);\n\n var items = [];\n var arrayLength = lengthOfArrayLike(array);\n var itemsLength, index;\n\n for (index = 0; index < arrayLength; index++) {\n if (index in array) push(items, array[index]);\n }\n\n internalSort(items, getSortCompare(comparefn));\n\n itemsLength = lengthOfArrayLike(items);\n index = 0;\n\n while (index < itemsLength) array[index] = items[index++];\n while (index < arrayLength) deletePropertyOrThrow(array, index++);\n\n return array;\n }\n});\n","var userAgent = require('../internals/engine-user-agent');\n\nvar webkit = userAgent.match(/AppleWebKit\\/(\\d+)\\./);\n\nmodule.exports = !!webkit && +webkit[1];\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"container\"},[_c('transition',[_c('div',[_c('BaseHeader',{staticClass:\"header mb-5\",attrs:{\"title\":\"Dashboard\",\"data-anima\":\"top\"}},[(_vm.ambassadorEnabled && _vm.ambassadorAcceptedTerms)?_c('button',{directives:[{name:\"b-modal\",rawName:\"v-b-modal.links-new\",modifiers:{\"links-new\":true}}],staticClass:\"btn p-2\",staticStyle:{\"background-color\":\"#eee\"},on:{\"click\":_vm.openComissions}},[_c('b-row',{staticClass:\"align-items-center\",staticStyle:{\"color\":\"#32455f\",\"font-weight\":\"500\"}},[_c('img',{staticClass:\"pr-2\",attrs:{\"src\":require(\"@/assets/img/icons/my-comission-blue.svg\")}}),_vm._v(\" \"+_vm._s(_vm.$t(\"views.seller.links.text_1141\"))+\" \")])],1):_vm._e()]),_c('div',{staticClass:\"conteudo\"},[_c('div',{staticClass:\"center\"},[(\n _vm.isMobile &&\n (!_vm.status_validation.status ||\n _vm.status_validation.status == 'INITIATED' ||\n _vm.status_validation.status == 'DISAPPROVED')\n )?_c('div',{staticClass:\"card-validation\"},[_c('p',[_vm._v(\" \"+_vm._s(_vm.$t(\"views.dashboard.text_986\"))+\" \")]),_c('BaseButton',{attrs:{\"variant\":\"info2\"},on:{\"click\":_vm.openVerification}},[_vm._v(_vm._s(_vm.$t(\"views.dashboard.text_987\")))])],1):_vm._e(),(!_vm.openBannerInModal)?_c('a',{staticClass:\"banner\",attrs:{\"href\":_vm.updatedUrlRedirect,\"target\":\"_blank\",\"data-anima\":\"bottom\"}},[(_vm.banner_url !== '')?_c('img',{attrs:{\"src\":_vm.banner_url,\"alt\":\"banner\"}}):_c('div',{staticClass:\"banner-default-loading banner\",attrs:{\"alt\":\"banner\"}},[_c('b-spinner',{attrs:{\"label\":\"Loading...\"}})],1)]):[_c('div',{staticClass:\"banner\",staticStyle:{\"cursor\":\"pointer\"},attrs:{\"data-anima\":\"bottom\"},on:{\"click\":_vm.openNpsForm}},[(_vm.banner_url !== '')?_c('img',{attrs:{\"src\":_vm.banner_url,\"alt\":\"banner\"}}):_c('div',{staticClass:\"banner-default-loading banner\",attrs:{\"alt\":\"banner\"}},[_c('b-spinner',{attrs:{\"label\":\"Loading...\"}})],1)]),_c('modal-banner',{attrs:{\"url\":_vm.updatedUrlRedirect,\"is-mobile\":_vm.isMobile}})],_c('div',{staticClass:\"indicadores\"},[_c('div',{staticClass:\"item\"},[_c('img',{attrs:{\"src\":require(\"@/assets/img/icons/bag-sale.svg\")}}),_c('p',[_vm._v(_vm._s(_vm.$t(\"views.dashboard.text_988\")))]),(_vm.statementsToday)?_c('div',[(_vm.saldoOk)?_c('h4',[_vm._v(\" \"+_vm._s(_vm.currency.currency_symbol)+\" \"+_vm._s(_vm.formatMoney(_vm.statementsToday))+\" \")]):_c('h4',{attrs:{\"id\":\"no-saldo\"}},[_vm._v(\"-\")])]):_c('div',[(_vm.saldoOk)?_c('h4',[_vm._v(_vm._s(_vm.currency.currency_symbol)+\" 0,00\")]):_c('h4',{attrs:{\"id\":\"no-saldo\"}},[_vm._v(\"-\")])])]),_c('div',{staticClass:\"item\"},[_c('img',{attrs:{\"src\":require(\"@/assets/img/icons/wallet.svg\")}}),_c('p',[_vm._v(_vm._s(_vm.$t(\"views.dashboard.text_989\")))]),(_vm.statementsLastMonth)?_c('div',[(_vm.saldoOk)?_c('h4',[_vm._v(\" \"+_vm._s(_vm.currency.currency_symbol)+\" \"+_vm._s(_vm.formatMoney(_vm.statementsLastMonth))+\" \")]):_c('h4',{attrs:{\"id\":\"no-saldo\"}},[_vm._v(\"-\")])]):_c('div',[(_vm.saldoOk)?_c('h4',[_vm._v(_vm._s(_vm.currency.currency_symbol)+\" 0,00\")]):_c('h4',{attrs:{\"id\":\"no-saldo\"}},[_vm._v(\"-\")])])])]),(_vm.isMobile)?_c('div',{staticClass:\"card-transacoes mt-4 mb-4\"},[_c('div',{staticClass:\"saldos\"},[_c('div',{staticClass:\"mb-3 d-flex justify-content-between align-items-center\"},[_c('span',[_vm._v(_vm._s(_vm.$t(\"views.dashboard.text_990\")))]),_c('SelectCurrency',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.interAccess),expression:\"interAccess\"}],attrs:{\"currency\":_vm.currency},on:{\"update-coin\":_vm.updateCoin}})],1),_c('div',{staticClass:\"saldo-livre\"},[(_vm.statementsAvailableCount)?_c('div',[(_vm.saldoOk)?_c('h5',[_vm._v(\" \"+_vm._s(_vm.currency.currency_symbol)+\" \"+_vm._s(_vm.formatMoney(_vm.statementsAvailableCount))+\" \")]):_c('h5',{attrs:{\"id\":\"no-saldo\"}},[_vm._v(\"-\")])]):_c('div',[(_vm.saldoOk)?_c('h5',[_vm._v(_vm._s(_vm.currency.currency_symbol)+\" 0,00\")]):_c('h5',{attrs:{\"id\":\"no-saldo\"}},[_vm._v(\"-\")])]),_c('div',{staticClass:\"btn-esconde\",class:{ ativo: _vm.saldoOk },on:{\"click\":function($event){_vm.saldoOk = !_vm.saldoOk}}})]),_c('div',{staticClass:\"saldo-block\"},[_c('span',[_vm._v(_vm._s(_vm.$t(\"views.dashboard.text_991\")))]),(_vm.statementsBlockCount)?_c('div',[(_vm.saldoOk)?_c('h5',[_vm._v(\" \"+_vm._s(_vm.currency.currency_symbol)+\" \"+_vm._s(_vm.formatMoney(_vm.statementsBlockCount))+\" \")]):_c('h5',{staticClass:\"block-prelod\",attrs:{\"id\":\"no-saldo\"}},[_vm._v(\"-\")])]):_c('div',[(_vm.saldoOk)?_c('h5',[_vm._v(_vm._s(_vm.currency.currency_symbol)+\" 0,00\")]):_c('h5',{staticClass:\"block-prelod\",attrs:{\"id\":\"no-saldo\"}},[_vm._v(\"-\")])])])]),_c('div',{staticClass:\"titulo-grafico\"},[_c('span',[_vm._v(_vm._s(_vm.$t(\"views.dashboard.text_992\")))]),_c('span',{staticClass:\"periodo-grafico\"},[_vm._v(_vm._s(_vm.$t(\"views.dashboard.text_993\"))+\" \")])]),_c('div',{staticClass:\"grafico-bar\"},[_c('BarChart',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.loading_statements),expression:\"!loading_statements\"}],attrs:{\"vendas_device\":_vm.vendas_device}}),(_vm.loading_statements)?_c('div',{staticClass:\"container-loading\"},[_c('b-spinner',{attrs:{\"label\":\"Loading...\"}})],1):_vm._e()],1),_c('div',{staticClass:\"transacoes-recentes\"},[_c('div',{staticClass:\"titulo\"},[_c('span',[_vm._v(_vm._s(_vm.$t(\"views.dashboard.text_994\")))]),_c('img',{attrs:{\"src\":require(\"@/assets/img/icons/transacoes.svg\")}})]),_c('div',{staticClass:\"transacao\"},[(_vm.vendas_recentes.length)?_vm._l((_vm.vendas_recentes),function(venda){return _c('div',{key:venda.id,staticClass:\"item\",on:{\"click\":function($event){return _vm.openSale(venda.id)}}},[_c('div',{staticClass:\"dados-transacao\"},[(venda.product && venda.product.images.length)?_c('img',{staticClass:\"icone\",attrs:{\"src\":venda.product.images[0].path}}):_c('div',{staticClass:\"icone\"},[_c('img',{staticClass:\"erro-img\",attrs:{\"src\":require(\"@/assets/img/icons/imagem-modal.svg\")}})]),_c('div',{staticClass:\"dado\"},[_c('div',{staticClass:\"up\"},[_c('h5',[_vm._v(\" \"+_vm._s(venda.product.name.length > 22 ? venda.product.name.substr(0, 22) + \"...\" : venda.product.name)+\" \")]),_c('span',[_vm._v(_vm._s(_vm.currency.currency_symbol)+\" \"+_vm._s(_vm.formatMoney(venda.seller_balance))+\" \")])]),_c('div',{staticClass:\"down\"},[_c('span',[_vm._v(_vm._s(_vm.nameClient(venda.client.name)))]),_c('span',[_vm._v(_vm._s(_vm._f(\"moment\")(venda.created_at)))])])])])])}):_vm._e(),_c('router-link',{staticClass:\"button ver-vendas\",attrs:{\"to\":\"/vendas\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"views.dashboard.text_995\"))+\" \")])],2),(_vm.vendas_recentes_load)?_c('div',{staticClass:\"transacao\"},[_c('div',{staticClass:\"item load\"},[_c('div',{staticClass:\"dados-transacao\"},[_c('div',{staticClass:\"icone\"}),_c('div',{staticClass:\"dado\"},[_c('div',{staticClass:\"up\"},[_c('h5',[_vm._v(\"-\")]),_c('span',[_vm._v(\"-\")])]),_c('div',{staticClass:\"down\"},[_c('span',[_vm._v(\"-\")]),_c('span',[_vm._v(\"-\")])])])])]),_c('div',{staticClass:\"item load\"},[_c('div',{staticClass:\"dados-transacao\"},[_c('div',{staticClass:\"icone\"}),_c('div',{staticClass:\"dado\"},[_c('div',{staticClass:\"up\"},[_c('h5',[_vm._v(\"-\")]),_c('span',[_vm._v(\"-\")])]),_c('div',{staticClass:\"down\"},[_c('span',[_vm._v(\"-\")]),_c('span',[_vm._v(\"-\")])])])])]),_c('div',{staticClass:\"item load\"},[_c('div',{staticClass:\"dados-transacao\"},[_c('div',{staticClass:\"icone\"}),_c('div',{staticClass:\"dado\"},[_c('div',{staticClass:\"up\"},[_c('h5',[_vm._v(\"-\")]),_c('span',[_vm._v(\"-\")])]),_c('div',{staticClass:\"down\"},[_c('span',[_vm._v(\"-\")]),_c('span',[_vm._v(\"-\")])])])])])]):_vm._e()])]):_vm._e(),_c('span',{staticClass:\"info-week\"},[_vm._v(_vm._s(_vm.$t(\"views.dashboard.text_993\")))]),_c('div',{staticClass:\"grafico-area\"},[(!_vm.loading_statements)?_c('AreaChart',{ref:\"areaChart\",attrs:{\"currency\":_vm.currency.currency_symbol}}):_vm._e(),(_vm.loading_statements)?_c('div',{staticClass:\"container-loading\"},[_c('b-spinner',{attrs:{\"label\":\"Loading...\"}})],1):_vm._e()],1),(_vm.top_products.length)?_c('div',{staticClass:\"top\"},[_c('h4',[_vm._v(_vm._s(_vm.$t(\"views.dashboard.text_996\")))]),_vm._l((_vm.top_products),function(produto,index){return _c('div',{key:index,staticClass:\"top-lista\"},[_c('div',{staticClass:\"dados-produto\"},[(\n produto.product &&\n produto.product.images &&\n produto.product.images.length\n )?_c('img',{staticClass:\"icone-imagem\",attrs:{\"src\":produto.product.images[0].path}}):_c('div',{staticClass:\"icone-imagem\"},[_c('img',{staticClass:\"erro-img\",attrs:{\"src\":require(\"@/assets/img/icons/imagem-modal.svg\")}})]),(produto.product)?_c('div',{staticClass:\"dado\"},[_c('h5',[_vm._v(_vm._s(produto.product.name))]),_c('span',[_vm._v(_vm._s(produto.product.category.name))])]):_c('div',[_c('h5',[_vm._v(_vm._s(_vm.$t(\"views.dashboard.text_997\")))]),_c('span',[_vm._v(\"-\")])])]),_c('div',{staticClass:\"valores\"},[(produto.total)?_c('h5',[_vm._v(\" \"+_vm._s(_vm.currency.currency_symbol)+\" \"+_vm._s(_vm.formatMoney(produto.total))+\" \")]):_vm._e(),(!produto.total)?_c('h5',[_vm._v(\" \"+_vm._s(_vm.currency.currency_symbol)+\" 0,00 \")]):_vm._e(),_c('span',[_vm._v(\" \"+_vm._s(produto.count)+\" \"+_vm._s(_vm.$t(\"views.dashboard.text_2377\")))])])])})],2):_vm._e(),(_vm.top_products_load)?_c('div',{staticClass:\"top\"},[_c('div',{staticClass:\"top-lista load\"},[_c('div',{staticClass:\"dados-produto\"},[_c('img',{staticClass:\"icone\",attrs:{\"src\":\"\"}}),_c('div',{staticClass:\"dado\"},[_c('h5',[_vm._v(\"-\")]),_c('span',[_vm._v(\"-\")])])]),_c('div',{staticClass:\"valores\"},[_c('h5',[_vm._v(\"-\")]),_c('span',[_vm._v(\"-\")])])]),_c('div',{staticClass:\"top-lista load\"},[_c('div',{staticClass:\"dados-produto\"},[_c('img',{staticClass:\"icone\",attrs:{\"src\":\"\"}}),_c('div',{staticClass:\"dado\"},[_c('h5',[_vm._v(\"-\")]),_c('span',[_vm._v(\"-\")])])]),_c('div',{staticClass:\"valores\"},[_c('h5',[_vm._v(\"-\")]),_c('span',[_vm._v(\"-\")])])]),_c('div',{staticClass:\"top-lista load\"},[_c('div',{staticClass:\"dados-produto\"},[_c('img',{staticClass:\"icone\",attrs:{\"src\":\"\"}}),_c('div',{staticClass:\"dado\"},[_c('h5',[_vm._v(\"-\")]),_c('span',[_vm._v(\"-\")])])]),_c('div',{staticClass:\"valores\"},[_c('h5',[_vm._v(\"-\")]),_c('span',[_vm._v(\"-\")])])])]):_vm._e()],2),_c('div',[(\n !_vm.status_validation.status ||\n _vm.status_validation.status == 'INITIATED' ||\n _vm.status_validation.status == 'DISAPPROVED'\n )?_c('div',{staticClass:\"card-validation\",attrs:{\"data-anima\":\"top\"}},[_c('p',[_vm._v(\" \"+_vm._s(_vm.$t(\"views.dashboard.text_986\"))+\" \")]),_c('BaseButton',{attrs:{\"variant\":\"info2\"},on:{\"click\":_vm.openVerification}},[_vm._v(\" \"+_vm._s(_vm.$t(\"views.dashboard.text_987\"))+\" \")])],1):_vm._e(),(_vm.isBetaSeller)?_c('card-pending-documentation'):_vm._e(),(!_vm.isMobile)?_c('div',{staticClass:\"card-transacoes\"},[_c('div',{staticClass:\"saldos\"},[_c('div',{staticClass:\"d-flex justify-content-between align-items-center\"},[_c('span',[_vm._v(_vm._s(_vm.$t(\"views.dashboard.text_990\")))]),_c('SelectCurrency',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.interAccess),expression:\"interAccess\"}],attrs:{\"currency\":_vm.currency},on:{\"update-coin\":_vm.updateCoin}})],1),_c('div',{staticClass:\"saldo-livre\"},[(_vm.statementsAvailableCount)?_c('div',[(_vm.saldoOk)?_c('h5',[_vm._v(\" \"+_vm._s(_vm.currency.currency_symbol)+\" \"+_vm._s(_vm.formatMoney(_vm.statementsAvailableCount))+\" \")]):_c('h5',{attrs:{\"id\":\"no-saldo\"}},[_vm._v(\"-\")])]):_c('div',[(_vm.saldoOk)?_c('h5',[_vm._v(_vm._s(_vm.currency.currency_symbol)+\" 0,00\")]):_c('h5',{attrs:{\"id\":\"no-saldo\"}},[_vm._v(\"-\")])]),_c('div',{staticClass:\"btn-esconde\",class:{ ativo: _vm.saldoOk },on:{\"click\":function($event){_vm.saldoOk = !_vm.saldoOk}}})]),_c('div',{staticClass:\"saldo-block\"},[_c('span',[_vm._v(_vm._s(_vm.$t(\"views.dashboard.text_991\")))]),(_vm.statementsBlockCount)?_c('div',[(_vm.saldoOk)?_c('h5',[_vm._v(\" \"+_vm._s(_vm.currency.currency_symbol)+\" \"+_vm._s(_vm.formatMoney(_vm.statementsBlockCount))+\" \")]):_c('h5',{staticClass:\"block-prelod\",attrs:{\"id\":\"no-saldo\"}},[_vm._v(\"-\")])]):_c('div',[(_vm.saldoOk)?_c('h5',[_vm._v(_vm._s(_vm.currency.currency_symbol)+\" 0,00\")]):_c('h5',{staticClass:\"block-prelod\",attrs:{\"id\":\"no-saldo\"}},[_vm._v(\"-\")])])])]),_c('div',{staticClass:\"titulo-grafico\"},[_c('span',[_vm._v(_vm._s(_vm.$t(\"views.dashboard.text_992\")))]),_c('span',{staticClass:\"periodo-grafico\"},[_vm._v(_vm._s(_vm.$t(\"views.dashboard.text_993\"))+\" \")])]),_c('div',{staticClass:\"grafico-bar\"},[_c('BarChart',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.loading_statements),expression:\"!loading_statements\"}],attrs:{\"vendas_device\":_vm.vendas_device}}),(_vm.loading_statements)?_c('div',{staticClass:\"container-loading\"},[_c('b-spinner',{attrs:{\"label\":\"Loading...\"}})],1):_vm._e()],1),_c('div',{staticClass:\"transacoes-recentes\"},[_c('div',{staticClass:\"titulo\"},[_c('span',[_vm._v(_vm._s(_vm.$t(\"views.dashboard.text_2378\")))])]),_c('div',{staticClass:\"transacao\"},[(_vm.vendas_recentes.length)?_vm._l((_vm.vendas_recentes),function(venda){return _c('div',{key:venda.id,staticClass:\"item\",on:{\"click\":function($event){return _vm.openSale(venda.id)}}},[_c('div',{staticClass:\"dados-transacao\"},[(venda.product.images.length)?_c('img',{staticClass:\"icone\",attrs:{\"src\":venda.product.images[0].path}}):_c('div',{staticClass:\"icone\"},[_c('img',{staticClass:\"erro-img\",attrs:{\"src\":require(\"@/assets/img/icons/imagem-modal.svg\")}})]),_c('div',{staticClass:\"dado\"},[_c('div',{staticClass:\"up\"},[_c('h5',[_vm._v(\" \"+_vm._s(venda.product.name.length > 22 ? venda.product.name.substr(0, 22) + \"...\" : venda.product.name)+\" \")]),_c('span',[_vm._v(_vm._s(_vm.currency.currency_symbol)+\" \"+_vm._s(_vm.formatMoney(venda.seller_balance))+\" \")])]),_c('div',{staticClass:\"down\"},[_c('span',[_vm._v(_vm._s(_vm.nameClient(venda.client.name)))]),_c('span',[_vm._v(_vm._s(_vm._f(\"moment\")(venda.created_at)))])])])])])}):_vm._e(),_c('router-link',{staticClass:\"button ver-vendas\",attrs:{\"to\":\"/vendas\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"views.dashboard.text_2379\"))+\" \")])],2),(_vm.vendas_recentes_load)?_c('div',{staticClass:\"transacao\"},[_c('div',{staticClass:\"item load\"},[_c('div',{staticClass:\"dados-transacao\"},[_c('div',{staticClass:\"icone\"}),_c('div',{staticClass:\"dado\"},[_c('div',{staticClass:\"up\"},[_c('h5',[_vm._v(\"-\")]),_c('span',[_vm._v(\"-\")])]),_c('div',{staticClass:\"down\"},[_c('span',[_vm._v(\"-\")]),_c('span',[_vm._v(\"-\")])])])])]),_c('div',{staticClass:\"item load\"},[_c('div',{staticClass:\"dados-transacao\"},[_c('div',{staticClass:\"icone\"}),_c('div',{staticClass:\"dado\"},[_c('div',{staticClass:\"up\"},[_c('h5',[_vm._v(\"-\")]),_c('span',[_vm._v(\"-\")])]),_c('div',{staticClass:\"down\"},[_c('span',[_vm._v(\"-\")]),_c('span',[_vm._v(\"-\")])])])])]),_c('div',{staticClass:\"item load\"},[_c('div',{staticClass:\"dados-transacao\"},[_c('div',{staticClass:\"icone\"}),_c('div',{staticClass:\"dado\"},[_c('div',{staticClass:\"up\"},[_c('h5',[_vm._v(\"-\")]),_c('span',[_vm._v(\"-\")])]),_c('div',{staticClass:\"down\"},[_c('span',[_vm._v(\"-\")]),_c('span',[_vm._v(\"-\")])])])])])]):_vm._e()])]):_vm._e()],1)])],1)]),(_vm.isBetaSeller)?_c('Informative'):_vm._e(),(_vm.isBetaSeller)?_c('ModalValidation',{on:{\"close\":_vm.getStatusValidation}}):_vm._e(),(_vm.isBetaSeller)?_c('ModalPendingDocumentation'):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Dashboard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Dashboard.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Dashboard.vue?vue&type=template&id=b8b4c1bc&scoped=true&\"\nimport script from \"./Dashboard.vue?vue&type=script&lang=js&\"\nexport * from \"./Dashboard.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Dashboard.vue?vue&type=style&index=0&id=b8b4c1bc&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b8b4c1bc\",\n null\n \n)\n\nexport default component.exports","module.exports = __webpack_public_path__ + \"img/man-at-office.16252e23.jpeg\";","// ┌───────────────────────────────────────────────────────────────────────────────────────────────────────┐ \\\\\n// │ Raphaël 2.3.0 - JavaScript Vector Library │ \\\\\n// ├───────────────────────────────────────────────────────────────────────────────────────────────────────┤ \\\\\n// │ Copyright © 2008-2016 Dmitry Baranovskiy (http://raphaeljs.com) │ \\\\\n// │ Copyright © 2008-2016 Sencha Labs (http://sencha.com) │ \\\\\n// ├───────────────────────────────────────────────────────────────────────────────────────────────────────┤ \\\\\n// │ Licensed under the MIT (https://github.com/DmitryBaranovskiy/raphael/blob/master/license.txt) license.│ \\\\\n// └───────────────────────────────────────────────────────────────────────────────────────────────────────┘ \\\\\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[\"Raphael\"] = factory();\n\telse\n\t\troot[\"Raphael\"] = factory();\n})(window, 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, { 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 = \"./dev/raphael.amd.js\");\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ \"./dev/raphael.amd.js\":\n/*!****************************!*\\\n !*** ./dev/raphael.amd.js ***!\n \\****************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ./raphael.core */ \"./dev/raphael.core.js\"), __webpack_require__(/*! ./raphael.svg */ \"./dev/raphael.svg.js\"), __webpack_require__(/*! ./raphael.vml */ \"./dev/raphael.vml.js\")], __WEBPACK_AMD_DEFINE_RESULT__ = (function(R) {\n\n return R;\n\n}).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n\n/***/ \"./dev/raphael.core.js\":\n/*!*****************************!*\\\n !*** ./dev/raphael.core.js ***!\n \\*****************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! eve */ \"./node_modules/eve-raphael/eve.js\")], __WEBPACK_AMD_DEFINE_RESULT__ = (function(eve) {\n\n /*\\\n * Raphael\n [ method ]\n **\n * Creates a canvas object on which to draw.\n * You must do this first, as all future calls to drawing methods\n * from this instance will be bound to this canvas.\n > Parameters\n **\n - container (HTMLElement|string) DOM element or its ID which is going to be a parent for drawing surface\n - width (number)\n - height (number)\n - callback (function) #optional callback function which is going to be executed in the context of newly created paper\n * or\n - x (number)\n - y (number)\n - width (number)\n - height (number)\n - callback (function) #optional callback function which is going to be executed in the context of newly created paper\n * or\n - all (array) (first 3 or 4 elements in the array are equal to [containerID, width, height] or [x, y, width, height]. The rest are element descriptions in format {type: type, }). See @Paper.add.\n - callback (function) #optional callback function which is going to be executed in the context of newly created paper\n * or\n - onReadyCallback (function) function that is going to be called on DOM ready event. You can also subscribe to this event via Eve’s “DOMLoad” event. In this case method returns `undefined`.\n = (object) @Paper\n > Usage\n | // Each of the following examples create a canvas\n | // that is 320px wide by 200px high.\n | // Canvas is created at the viewport’s 10,50 coordinate.\n | var paper = Raphael(10, 50, 320, 200);\n | // Canvas is created at the top left corner of the #notepad element\n | // (or its top right corner in dir=\"rtl\" elements)\n | var paper = Raphael(document.getElementById(\"notepad\"), 320, 200);\n | // Same as above\n | var paper = Raphael(\"notepad\", 320, 200);\n | // Image dump\n | var set = Raphael([\"notepad\", 320, 200, {\n | type: \"rect\",\n | x: 10,\n | y: 10,\n | width: 25,\n | height: 25,\n | stroke: \"#f00\"\n | }, {\n | type: \"text\",\n | x: 30,\n | y: 40,\n | text: \"Dump\"\n | }]);\n \\*/\n function R(first) {\n if (R.is(first, \"function\")) {\n return loaded ? first() : eve.on(\"raphael.DOMload\", first);\n } else if (R.is(first, array)) {\n return R._engine.create[apply](R, first.splice(0, 3 + R.is(first[0], nu))).add(first);\n } else {\n var args = Array.prototype.slice.call(arguments, 0);\n if (R.is(args[args.length - 1], \"function\")) {\n var f = args.pop();\n return loaded ? f.call(R._engine.create[apply](R, args)) : eve.on(\"raphael.DOMload\", function () {\n f.call(R._engine.create[apply](R, args));\n });\n } else {\n return R._engine.create[apply](R, arguments);\n }\n }\n }\n R.version = \"2.3.0\";\n R.eve = eve;\n var loaded,\n separator = /[, ]+/,\n elements = {circle: 1, rect: 1, path: 1, ellipse: 1, text: 1, image: 1},\n formatrg = /\\{(\\d+)\\}/g,\n proto = \"prototype\",\n has = \"hasOwnProperty\",\n g = {\n doc: document,\n win: window\n },\n oldRaphael = {\n was: Object.prototype[has].call(g.win, \"Raphael\"),\n is: g.win.Raphael\n },\n Paper = function () {\n /*\\\n * Paper.ca\n [ property (object) ]\n **\n * Shortcut for @Paper.customAttributes\n \\*/\n /*\\\n * Paper.customAttributes\n [ property (object) ]\n **\n * If you have a set of attributes that you would like to represent\n * as a function of some number you can do it easily with custom attributes:\n > Usage\n | paper.customAttributes.hue = function (num) {\n | num = num % 1;\n | return {fill: \"hsb(\" + num + \", 0.75, 1)\"};\n | };\n | // Custom attribute “hue” will change fill\n | // to be given hue with fixed saturation and brightness.\n | // Now you can use it like this:\n | var c = paper.circle(10, 10, 10).attr({hue: .45});\n | // or even like this:\n | c.animate({hue: 1}, 1e3);\n |\n | // You could also create custom attribute\n | // with multiple parameters:\n | paper.customAttributes.hsb = function (h, s, b) {\n | return {fill: \"hsb(\" + [h, s, b].join(\",\") + \")\"};\n | };\n | c.attr({hsb: \"0.5 .8 1\"});\n | c.animate({hsb: [1, 0, 0.5]}, 1e3);\n \\*/\n this.ca = this.customAttributes = {};\n },\n paperproto,\n appendChild = \"appendChild\",\n apply = \"apply\",\n concat = \"concat\",\n //taken from Modernizr touch test: https://github.com/Modernizr/Modernizr/blob/master/feature-detects/touchevents.js#L40\n supportsTouch = ('ontouchstart' in window) || window.TouchEvent || window.DocumentTouch && document instanceof DocumentTouch,\n E = \"\",\n S = \" \",\n Str = String,\n split = \"split\",\n events = \"click dblclick mousedown mousemove mouseout mouseover mouseup touchstart touchmove touchend touchcancel\"[split](S),\n touchMap = {\n mousedown: \"touchstart\",\n mousemove: \"touchmove\",\n mouseup: \"touchend\"\n },\n lowerCase = Str.prototype.toLowerCase,\n math = Math,\n mmax = math.max,\n mmin = math.min,\n abs = math.abs,\n pow = math.pow,\n PI = math.PI,\n nu = \"number\",\n string = \"string\",\n array = \"array\",\n toString = \"toString\",\n fillString = \"fill\",\n objectToString = Object.prototype.toString,\n paper = {},\n push = \"push\",\n ISURL = R._ISURL = /^url\\(['\"]?(.+?)['\"]?\\)$/i,\n colourRegExp = /^\\s*((#[a-f\\d]{6})|(#[a-f\\d]{3})|rgba?\\(\\s*([\\d\\.]+%?\\s*,\\s*[\\d\\.]+%?\\s*,\\s*[\\d\\.]+%?(?:\\s*,\\s*[\\d\\.]+%?)?)\\s*\\)|hsba?\\(\\s*([\\d\\.]+(?:deg|\\xb0|%)?\\s*,\\s*[\\d\\.]+%?\\s*,\\s*[\\d\\.]+(?:%?\\s*,\\s*[\\d\\.]+)?)%?\\s*\\)|hsla?\\(\\s*([\\d\\.]+(?:deg|\\xb0|%)?\\s*,\\s*[\\d\\.]+%?\\s*,\\s*[\\d\\.]+(?:%?\\s*,\\s*[\\d\\.]+)?)%?\\s*\\))\\s*$/i,\n isnan = {\"NaN\": 1, \"Infinity\": 1, \"-Infinity\": 1},\n bezierrg = /^(?:cubic-)?bezier\\(([^,]+),([^,]+),([^,]+),([^\\)]+)\\)/,\n round = math.round,\n setAttribute = \"setAttribute\",\n toFloat = parseFloat,\n toInt = parseInt,\n upperCase = Str.prototype.toUpperCase,\n availableAttrs = R._availableAttrs = {\n \"arrow-end\": \"none\",\n \"arrow-start\": \"none\",\n blur: 0,\n \"clip-rect\": \"0 0 1e9 1e9\",\n cursor: \"default\",\n cx: 0,\n cy: 0,\n fill: \"#fff\",\n \"fill-opacity\": 1,\n font: '10px \"Arial\"',\n \"font-family\": '\"Arial\"',\n \"font-size\": \"10\",\n \"font-style\": \"normal\",\n \"font-weight\": 400,\n gradient: 0,\n height: 0,\n href: \"http://raphaeljs.com/\",\n \"letter-spacing\": 0,\n opacity: 1,\n path: \"M0,0\",\n r: 0,\n rx: 0,\n ry: 0,\n src: \"\",\n stroke: \"#000\",\n \"stroke-dasharray\": \"\",\n \"stroke-linecap\": \"butt\",\n \"stroke-linejoin\": \"butt\",\n \"stroke-miterlimit\": 0,\n \"stroke-opacity\": 1,\n \"stroke-width\": 1,\n target: \"_blank\",\n \"text-anchor\": \"middle\",\n title: \"Raphael\",\n transform: \"\",\n width: 0,\n x: 0,\n y: 0,\n \"class\": \"\"\n },\n availableAnimAttrs = R._availableAnimAttrs = {\n blur: nu,\n \"clip-rect\": \"csv\",\n cx: nu,\n cy: nu,\n fill: \"colour\",\n \"fill-opacity\": nu,\n \"font-size\": nu,\n height: nu,\n opacity: nu,\n path: \"path\",\n r: nu,\n rx: nu,\n ry: nu,\n stroke: \"colour\",\n \"stroke-opacity\": nu,\n \"stroke-width\": nu,\n transform: \"transform\",\n width: nu,\n x: nu,\n y: nu\n },\n whitespace = /[\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\xa0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029]/g,\n commaSpaces = /[\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\xa0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029]*,[\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\xa0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029]*/,\n hsrg = {hs: 1, rg: 1},\n p2s = /,?([achlmqrstvxz]),?/gi,\n pathCommand = /([achlmrqstvz])[\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\xa0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029,]*((-?\\d*\\.?\\d*(?:e[\\-+]?\\d+)?[\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\xa0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029]*,?[\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\xa0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029]*)+)/ig,\n tCommand = /([rstm])[\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\xa0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029,]*((-?\\d*\\.?\\d*(?:e[\\-+]?\\d+)?[\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\xa0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029]*,?[\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\xa0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029]*)+)/ig,\n pathValues = /(-?\\d*\\.?\\d*(?:e[\\-+]?\\d+)?)[\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\xa0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029]*,?[\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\xa0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029]*/ig,\n radial_gradient = R._radial_gradient = /^r(?:\\(([^,]+?)[\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\xa0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029]*,[\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\xa0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029]*([^\\)]+?)\\))?/,\n eldata = {},\n sortByKey = function (a, b) {\n return a.key - b.key;\n },\n sortByNumber = function (a, b) {\n return toFloat(a) - toFloat(b);\n },\n fun = function () {},\n pipe = function (x) {\n return x;\n },\n rectPath = R._rectPath = function (x, y, w, h, r) {\n if (r) {\n return [[\"M\", x + r, y], [\"l\", w - r * 2, 0], [\"a\", r, r, 0, 0, 1, r, r], [\"l\", 0, h - r * 2], [\"a\", r, r, 0, 0, 1, -r, r], [\"l\", r * 2 - w, 0], [\"a\", r, r, 0, 0, 1, -r, -r], [\"l\", 0, r * 2 - h], [\"a\", r, r, 0, 0, 1, r, -r], [\"z\"]];\n }\n return [[\"M\", x, y], [\"l\", w, 0], [\"l\", 0, h], [\"l\", -w, 0], [\"z\"]];\n },\n ellipsePath = function (x, y, rx, ry) {\n if (ry == null) {\n ry = rx;\n }\n return [[\"M\", x, y], [\"m\", 0, -ry], [\"a\", rx, ry, 0, 1, 1, 0, 2 * ry], [\"a\", rx, ry, 0, 1, 1, 0, -2 * ry], [\"z\"]];\n },\n getPath = R._getPath = {\n path: function (el) {\n return el.attr(\"path\");\n },\n circle: function (el) {\n var a = el.attrs;\n return ellipsePath(a.cx, a.cy, a.r);\n },\n ellipse: function (el) {\n var a = el.attrs;\n return ellipsePath(a.cx, a.cy, a.rx, a.ry);\n },\n rect: function (el) {\n var a = el.attrs;\n return rectPath(a.x, a.y, a.width, a.height, a.r);\n },\n image: function (el) {\n var a = el.attrs;\n return rectPath(a.x, a.y, a.width, a.height);\n },\n text: function (el) {\n var bbox = el._getBBox();\n return rectPath(bbox.x, bbox.y, bbox.width, bbox.height);\n },\n set : function(el) {\n var bbox = el._getBBox();\n return rectPath(bbox.x, bbox.y, bbox.width, bbox.height);\n }\n },\n /*\\\n * Raphael.mapPath\n [ method ]\n **\n * Transform the path string with given matrix.\n > Parameters\n - path (string) path string\n - matrix (object) see @Matrix\n = (string) transformed path string\n \\*/\n mapPath = R.mapPath = function (path, matrix) {\n if (!matrix) {\n return path;\n }\n var x, y, i, j, ii, jj, pathi;\n path = path2curve(path);\n for (i = 0, ii = path.length; i < ii; i++) {\n pathi = path[i];\n for (j = 1, jj = pathi.length; j < jj; j += 2) {\n x = matrix.x(pathi[j], pathi[j + 1]);\n y = matrix.y(pathi[j], pathi[j + 1]);\n pathi[j] = x;\n pathi[j + 1] = y;\n }\n }\n return path;\n };\n\n R._g = g;\n /*\\\n * Raphael.type\n [ property (string) ]\n **\n * Can be “SVG”, “VML” or empty, depending on browser support.\n \\*/\n R.type = (g.win.SVGAngle || g.doc.implementation.hasFeature(\"http://www.w3.org/TR/SVG11/feature#BasicStructure\", \"1.1\") ? \"SVG\" : \"VML\");\n if (R.type == \"VML\") {\n var d = g.doc.createElement(\"div\"),\n b;\n d.innerHTML = '';\n b = d.firstChild;\n b.style.behavior = \"url(#default#VML)\";\n if (!(b && typeof b.adj == \"object\")) {\n return (R.type = E);\n }\n d = null;\n }\n /*\\\n * Raphael.svg\n [ property (boolean) ]\n **\n * `true` if browser supports SVG.\n \\*/\n /*\\\n * Raphael.vml\n [ property (boolean) ]\n **\n * `true` if browser supports VML.\n \\*/\n R.svg = !(R.vml = R.type == \"VML\");\n R._Paper = Paper;\n /*\\\n * Raphael.fn\n [ property (object) ]\n **\n * You can add your own method to the canvas. For example if you want to draw a pie chart,\n * you can create your own pie chart function and ship it as a Raphaël plugin. To do this\n * you need to extend the `Raphael.fn` object. You should modify the `fn` object before a\n * Raphaël instance is created, otherwise it will take no effect. Please note that the\n * ability for namespaced plugins was removed in Raphael 2.0. It is up to the plugin to\n * ensure any namespacing ensures proper context.\n > Usage\n | Raphael.fn.arrow = function (x1, y1, x2, y2, size) {\n | return this.path( ... );\n | };\n | // or create namespace\n | Raphael.fn.mystuff = {\n | arrow: function () {…},\n | star: function () {…},\n | // etc…\n | };\n | var paper = Raphael(10, 10, 630, 480);\n | // then use it\n | paper.arrow(10, 10, 30, 30, 5).attr({fill: \"#f00\"});\n | paper.mystuff.arrow();\n | paper.mystuff.star();\n \\*/\n R.fn = paperproto = Paper.prototype = R.prototype;\n R._id = 0;\n /*\\\n * Raphael.is\n [ method ]\n **\n * Handful of replacements for `typeof` operator.\n > Parameters\n - o (…) any object or primitive\n - type (string) name of the type, i.e. “string”, “function”, “number”, etc.\n = (boolean) is given value is of given type\n \\*/\n R.is = function (o, type) {\n type = lowerCase.call(type);\n if (type == \"finite\") {\n return !isnan[has](+o);\n }\n if (type == \"array\") {\n return o instanceof Array;\n }\n return (type == \"null\" && o === null) ||\n (type == typeof o && o !== null) ||\n (type == \"object\" && o === Object(o)) ||\n (type == \"array\" && Array.isArray && Array.isArray(o)) ||\n objectToString.call(o).slice(8, -1).toLowerCase() == type;\n };\n\n function clone(obj) {\n if (typeof obj == \"function\" || Object(obj) !== obj) {\n return obj;\n }\n var res = new obj.constructor;\n for (var key in obj) if (obj[has](key)) {\n res[key] = clone(obj[key]);\n }\n return res;\n }\n\n /*\\\n * Raphael.angle\n [ method ]\n **\n * Returns angle between two or three points\n > Parameters\n - x1 (number) x coord of first point\n - y1 (number) y coord of first point\n - x2 (number) x coord of second point\n - y2 (number) y coord of second point\n - x3 (number) #optional x coord of third point\n - y3 (number) #optional y coord of third point\n = (number) angle in degrees.\n \\*/\n R.angle = function (x1, y1, x2, y2, x3, y3) {\n if (x3 == null) {\n var x = x1 - x2,\n y = y1 - y2;\n if (!x && !y) {\n return 0;\n }\n return (180 + math.atan2(-y, -x) * 180 / PI + 360) % 360;\n } else {\n return R.angle(x1, y1, x3, y3) - R.angle(x2, y2, x3, y3);\n }\n };\n /*\\\n * Raphael.rad\n [ method ]\n **\n * Transform angle to radians\n > Parameters\n - deg (number) angle in degrees\n = (number) angle in radians.\n \\*/\n R.rad = function (deg) {\n return deg % 360 * PI / 180;\n };\n /*\\\n * Raphael.deg\n [ method ]\n **\n * Transform angle to degrees\n > Parameters\n - rad (number) angle in radians\n = (number) angle in degrees.\n \\*/\n R.deg = function (rad) {\n return Math.round ((rad * 180 / PI% 360)* 1000) / 1000;\n };\n /*\\\n * Raphael.snapTo\n [ method ]\n **\n * Snaps given value to given grid.\n > Parameters\n - values (array|number) given array of values or step of the grid\n - value (number) value to adjust\n - tolerance (number) #optional tolerance for snapping. Default is `10`.\n = (number) adjusted value.\n \\*/\n R.snapTo = function (values, value, tolerance) {\n tolerance = R.is(tolerance, \"finite\") ? tolerance : 10;\n if (R.is(values, array)) {\n var i = values.length;\n while (i--) if (abs(values[i] - value) <= tolerance) {\n return values[i];\n }\n } else {\n values = +values;\n var rem = value % values;\n if (rem < tolerance) {\n return value - rem;\n }\n if (rem > values - tolerance) {\n return value - rem + values;\n }\n }\n return value;\n };\n\n /*\\\n * Raphael.createUUID\n [ method ]\n **\n * Returns RFC4122, version 4 ID\n \\*/\n var createUUID = R.createUUID = (function (uuidRegEx, uuidReplacer) {\n return function () {\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(uuidRegEx, uuidReplacer).toUpperCase();\n };\n })(/[xy]/g, function (c) {\n var r = math.random() * 16 | 0,\n v = c == \"x\" ? r : (r & 3 | 8);\n return v.toString(16);\n });\n\n /*\\\n * Raphael.setWindow\n [ method ]\n **\n * Used when you need to draw in `<iframe>`. Switched window to the iframe one.\n > Parameters\n - newwin (window) new window object\n \\*/\n R.setWindow = function (newwin) {\n eve(\"raphael.setWindow\", R, g.win, newwin);\n g.win = newwin;\n g.doc = g.win.document;\n if (R._engine.initWin) {\n R._engine.initWin(g.win);\n }\n };\n var toHex = function (color) {\n if (R.vml) {\n // http://dean.edwards.name/weblog/2009/10/convert-any-colour-value-to-hex-in-msie/\n var trim = /^\\s+|\\s+$/g;\n var bod;\n try {\n var docum = new ActiveXObject(\"htmlfile\");\n docum.write(\"\");\n docum.close();\n bod = docum.body;\n } catch(e) {\n bod = createPopup().document.body;\n }\n var range = bod.createTextRange();\n toHex = cacher(function (color) {\n try {\n bod.style.color = Str(color).replace(trim, E);\n var value = range.queryCommandValue(\"ForeColor\");\n value = ((value & 255) << 16) | (value & 65280) | ((value & 16711680) >>> 16);\n return \"#\" + (\"000000\" + value.toString(16)).slice(-6);\n } catch(e) {\n return \"none\";\n }\n });\n } else {\n var i = g.doc.createElement(\"i\");\n i.title = \"Rapha\\xebl Colour Picker\";\n i.style.display = \"none\";\n g.doc.body.appendChild(i);\n toHex = cacher(function (color) {\n i.style.color = color;\n return g.doc.defaultView.getComputedStyle(i, E).getPropertyValue(\"color\");\n });\n }\n return toHex(color);\n },\n hsbtoString = function () {\n return \"hsb(\" + [this.h, this.s, this.b] + \")\";\n },\n hsltoString = function () {\n return \"hsl(\" + [this.h, this.s, this.l] + \")\";\n },\n rgbtoString = function () {\n return this.hex;\n },\n prepareRGB = function (r, g, b) {\n if (g == null && R.is(r, \"object\") && \"r\" in r && \"g\" in r && \"b\" in r) {\n b = r.b;\n g = r.g;\n r = r.r;\n }\n if (g == null && R.is(r, string)) {\n var clr = R.getRGB(r);\n r = clr.r;\n g = clr.g;\n b = clr.b;\n }\n if (r > 1 || g > 1 || b > 1) {\n r /= 255;\n g /= 255;\n b /= 255;\n }\n\n return [r, g, b];\n },\n packageRGB = function (r, g, b, o) {\n r *= 255;\n g *= 255;\n b *= 255;\n var rgb = {\n r: r,\n g: g,\n b: b,\n hex: R.rgb(r, g, b),\n toString: rgbtoString\n };\n R.is(o, \"finite\") && (rgb.opacity = o);\n return rgb;\n };\n\n /*\\\n * Raphael.color\n [ method ]\n **\n * Parses the color string and returns object with all values for the given color.\n > Parameters\n - clr (string) color string in one of the supported formats (see @Raphael.getRGB)\n = (object) Combined RGB & HSB object in format:\n o {\n o r (number) red,\n o g (number) green,\n o b (number) blue,\n o hex (string) color in HTML/CSS format: #••••••,\n o error (boolean) `true` if string can’t be parsed,\n o h (number) hue,\n o s (number) saturation,\n o v (number) value (brightness),\n o l (number) lightness\n o }\n \\*/\n R.color = function (clr) {\n var rgb;\n if (R.is(clr, \"object\") && \"h\" in clr && \"s\" in clr && \"b\" in clr) {\n rgb = R.hsb2rgb(clr);\n clr.r = rgb.r;\n clr.g = rgb.g;\n clr.b = rgb.b;\n clr.hex = rgb.hex;\n } else if (R.is(clr, \"object\") && \"h\" in clr && \"s\" in clr && \"l\" in clr) {\n rgb = R.hsl2rgb(clr);\n clr.r = rgb.r;\n clr.g = rgb.g;\n clr.b = rgb.b;\n clr.hex = rgb.hex;\n } else {\n if (R.is(clr, \"string\")) {\n clr = R.getRGB(clr);\n }\n if (R.is(clr, \"object\") && \"r\" in clr && \"g\" in clr && \"b\" in clr) {\n rgb = R.rgb2hsl(clr);\n clr.h = rgb.h;\n clr.s = rgb.s;\n clr.l = rgb.l;\n rgb = R.rgb2hsb(clr);\n clr.v = rgb.b;\n } else {\n clr = {hex: \"none\"};\n clr.r = clr.g = clr.b = clr.h = clr.s = clr.v = clr.l = -1;\n }\n }\n clr.toString = rgbtoString;\n return clr;\n };\n /*\\\n * Raphael.hsb2rgb\n [ method ]\n **\n * Converts HSB values to RGB object.\n > Parameters\n - h (number) hue\n - s (number) saturation\n - v (number) value or brightness\n = (object) RGB object in format:\n o {\n o r (number) red,\n o g (number) green,\n o b (number) blue,\n o hex (string) color in HTML/CSS format: #••••••\n o }\n \\*/\n R.hsb2rgb = function (h, s, v, o) {\n if (this.is(h, \"object\") && \"h\" in h && \"s\" in h && \"b\" in h) {\n v = h.b;\n s = h.s;\n o = h.o;\n h = h.h;\n }\n h *= 360;\n var R, G, B, X, C;\n h = (h % 360) / 60;\n C = v * s;\n X = C * (1 - abs(h % 2 - 1));\n R = G = B = v - C;\n\n h = ~~h;\n R += [C, X, 0, 0, X, C][h];\n G += [X, C, C, X, 0, 0][h];\n B += [0, 0, X, C, C, X][h];\n return packageRGB(R, G, B, o);\n };\n /*\\\n * Raphael.hsl2rgb\n [ method ]\n **\n * Converts HSL values to RGB object.\n > Parameters\n - h (number) hue\n - s (number) saturation\n - l (number) luminosity\n = (object) RGB object in format:\n o {\n o r (number) red,\n o g (number) green,\n o b (number) blue,\n o hex (string) color in HTML/CSS format: #••••••\n o }\n \\*/\n R.hsl2rgb = function (h, s, l, o) {\n if (this.is(h, \"object\") && \"h\" in h && \"s\" in h && \"l\" in h) {\n l = h.l;\n s = h.s;\n h = h.h;\n }\n if (h > 1 || s > 1 || l > 1) {\n h /= 360;\n s /= 100;\n l /= 100;\n }\n h *= 360;\n var R, G, B, X, C;\n h = (h % 360) / 60;\n C = 2 * s * (l < .5 ? l : 1 - l);\n X = C * (1 - abs(h % 2 - 1));\n R = G = B = l - C / 2;\n\n h = ~~h;\n R += [C, X, 0, 0, X, C][h];\n G += [X, C, C, X, 0, 0][h];\n B += [0, 0, X, C, C, X][h];\n return packageRGB(R, G, B, o);\n };\n /*\\\n * Raphael.rgb2hsb\n [ method ]\n **\n * Converts RGB values to HSB object.\n > Parameters\n - r (number) red\n - g (number) green\n - b (number) blue\n = (object) HSB object in format:\n o {\n o h (number) hue\n o s (number) saturation\n o b (number) brightness\n o }\n \\*/\n R.rgb2hsb = function (r, g, b) {\n b = prepareRGB(r, g, b);\n r = b[0];\n g = b[1];\n b = b[2];\n\n var H, S, V, C;\n V = mmax(r, g, b);\n C = V - mmin(r, g, b);\n H = (C == 0 ? null :\n V == r ? (g - b) / C :\n V == g ? (b - r) / C + 2 :\n (r - g) / C + 4\n );\n H = ((H + 360) % 6) * 60 / 360;\n S = C == 0 ? 0 : C / V;\n return {h: H, s: S, b: V, toString: hsbtoString};\n };\n /*\\\n * Raphael.rgb2hsl\n [ method ]\n **\n * Converts RGB values to HSL object.\n > Parameters\n - r (number) red\n - g (number) green\n - b (number) blue\n = (object) HSL object in format:\n o {\n o h (number) hue\n o s (number) saturation\n o l (number) luminosity\n o }\n \\*/\n R.rgb2hsl = function (r, g, b) {\n b = prepareRGB(r, g, b);\n r = b[0];\n g = b[1];\n b = b[2];\n\n var H, S, L, M, m, C;\n M = mmax(r, g, b);\n m = mmin(r, g, b);\n C = M - m;\n H = (C == 0 ? null :\n M == r ? (g - b) / C :\n M == g ? (b - r) / C + 2 :\n (r - g) / C + 4);\n H = ((H + 360) % 6) * 60 / 360;\n L = (M + m) / 2;\n S = (C == 0 ? 0 :\n L < .5 ? C / (2 * L) :\n C / (2 - 2 * L));\n return {h: H, s: S, l: L, toString: hsltoString};\n };\n R._path2string = function () {\n return this.join(\",\").replace(p2s, \"$1\");\n };\n function repush(array, item) {\n for (var i = 0, ii = array.length; i < ii; i++) if (array[i] === item) {\n return array.push(array.splice(i, 1)[0]);\n }\n }\n function cacher(f, scope, postprocessor) {\n function newf() {\n var arg = Array.prototype.slice.call(arguments, 0),\n args = arg.join(\"\\u2400\"),\n cache = newf.cache = newf.cache || {},\n count = newf.count = newf.count || [];\n if (cache[has](args)) {\n repush(count, args);\n return postprocessor ? postprocessor(cache[args]) : cache[args];\n }\n count.length >= 1e3 && delete cache[count.shift()];\n count.push(args);\n cache[args] = f[apply](scope, arg);\n return postprocessor ? postprocessor(cache[args]) : cache[args];\n }\n return newf;\n }\n\n var preload = R._preload = function (src, f) {\n var img = g.doc.createElement(\"img\");\n img.style.cssText = \"position:absolute;left:-9999em;top:-9999em\";\n img.onload = function () {\n f.call(this);\n this.onload = null;\n g.doc.body.removeChild(this);\n };\n img.onerror = function () {\n g.doc.body.removeChild(this);\n };\n g.doc.body.appendChild(img);\n img.src = src;\n };\n\n function clrToString() {\n return this.hex;\n }\n\n /*\\\n * Raphael.getRGB\n [ method ]\n **\n * Parses colour string as RGB object\n > Parameters\n - colour (string) colour string in one of formats:\n # \n = (object) RGB object in format:\n o {\n o r (number) red,\n o g (number) green,\n o b (number) blue\n o hex (string) color in HTML/CSS format: #••••••,\n o error (boolean) true if string can’t be parsed\n o }\n \\*/\n R.getRGB = cacher(function (colour) {\n if (!colour || !!((colour = Str(colour)).indexOf(\"-\") + 1)) {\n return {r: -1, g: -1, b: -1, hex: \"none\", error: 1, toString: clrToString};\n }\n if (colour == \"none\") {\n return {r: -1, g: -1, b: -1, hex: \"none\", toString: clrToString};\n }\n !(hsrg[has](colour.toLowerCase().substring(0, 2)) || colour.charAt() == \"#\") && (colour = toHex(colour));\n var res,\n red,\n green,\n blue,\n opacity,\n t,\n values,\n rgb = colour.match(colourRegExp);\n if (rgb) {\n if (rgb[2]) {\n blue = toInt(rgb[2].substring(5), 16);\n green = toInt(rgb[2].substring(3, 5), 16);\n red = toInt(rgb[2].substring(1, 3), 16);\n }\n if (rgb[3]) {\n blue = toInt((t = rgb[3].charAt(3)) + t, 16);\n green = toInt((t = rgb[3].charAt(2)) + t, 16);\n red = toInt((t = rgb[3].charAt(1)) + t, 16);\n }\n if (rgb[4]) {\n values = rgb[4][split](commaSpaces);\n red = toFloat(values[0]);\n values[0].slice(-1) == \"%\" && (red *= 2.55);\n green = toFloat(values[1]);\n values[1].slice(-1) == \"%\" && (green *= 2.55);\n blue = toFloat(values[2]);\n values[2].slice(-1) == \"%\" && (blue *= 2.55);\n rgb[1].toLowerCase().slice(0, 4) == \"rgba\" && (opacity = toFloat(values[3]));\n values[3] && values[3].slice(-1) == \"%\" && (opacity /= 100);\n }\n if (rgb[5]) {\n values = rgb[5][split](commaSpaces);\n red = toFloat(values[0]);\n values[0].slice(-1) == \"%\" && (red *= 2.55);\n green = toFloat(values[1]);\n values[1].slice(-1) == \"%\" && (green *= 2.55);\n blue = toFloat(values[2]);\n values[2].slice(-1) == \"%\" && (blue *= 2.55);\n (values[0].slice(-3) == \"deg\" || values[0].slice(-1) == \"\\xb0\") && (red /= 360);\n rgb[1].toLowerCase().slice(0, 4) == \"hsba\" && (opacity = toFloat(values[3]));\n values[3] && values[3].slice(-1) == \"%\" && (opacity /= 100);\n return R.hsb2rgb(red, green, blue, opacity);\n }\n if (rgb[6]) {\n values = rgb[6][split](commaSpaces);\n red = toFloat(values[0]);\n values[0].slice(-1) == \"%\" && (red *= 2.55);\n green = toFloat(values[1]);\n values[1].slice(-1) == \"%\" && (green *= 2.55);\n blue = toFloat(values[2]);\n values[2].slice(-1) == \"%\" && (blue *= 2.55);\n (values[0].slice(-3) == \"deg\" || values[0].slice(-1) == \"\\xb0\") && (red /= 360);\n rgb[1].toLowerCase().slice(0, 4) == \"hsla\" && (opacity = toFloat(values[3]));\n values[3] && values[3].slice(-1) == \"%\" && (opacity /= 100);\n return R.hsl2rgb(red, green, blue, opacity);\n }\n rgb = {r: red, g: green, b: blue, toString: clrToString};\n rgb.hex = \"#\" + (16777216 | blue | (green << 8) | (red << 16)).toString(16).slice(1);\n R.is(opacity, \"finite\") && (rgb.opacity = opacity);\n return rgb;\n }\n return {r: -1, g: -1, b: -1, hex: \"none\", error: 1, toString: clrToString};\n }, R);\n /*\\\n * Raphael.hsb\n [ method ]\n **\n * Converts HSB values to hex representation of the colour.\n > Parameters\n - h (number) hue\n - s (number) saturation\n - b (number) value or brightness\n = (string) hex representation of the colour.\n \\*/\n R.hsb = cacher(function (h, s, b) {\n return R.hsb2rgb(h, s, b).hex;\n });\n /*\\\n * Raphael.hsl\n [ method ]\n **\n * Converts HSL values to hex representation of the colour.\n > Parameters\n - h (number) hue\n - s (number) saturation\n - l (number) luminosity\n = (string) hex representation of the colour.\n \\*/\n R.hsl = cacher(function (h, s, l) {\n return R.hsl2rgb(h, s, l).hex;\n });\n /*\\\n * Raphael.rgb\n [ method ]\n **\n * Converts RGB values to hex representation of the colour.\n > Parameters\n - r (number) red\n - g (number) green\n - b (number) blue\n = (string) hex representation of the colour.\n \\*/\n R.rgb = cacher(function (r, g, b) {\n function round(x) { return (x + 0.5) | 0; }\n return \"#\" + (16777216 | round(b) | (round(g) << 8) | (round(r) << 16)).toString(16).slice(1);\n });\n /*\\\n * Raphael.getColor\n [ method ]\n **\n * On each call returns next colour in the spectrum. To reset it back to red call @Raphael.getColor.reset\n > Parameters\n - value (number) #optional brightness, default is `0.75`\n = (string) hex representation of the colour.\n \\*/\n R.getColor = function (value) {\n var start = this.getColor.start = this.getColor.start || {h: 0, s: 1, b: value || .75},\n rgb = this.hsb2rgb(start.h, start.s, start.b);\n start.h += .075;\n if (start.h > 1) {\n start.h = 0;\n start.s -= .2;\n start.s <= 0 && (this.getColor.start = {h: 0, s: 1, b: start.b});\n }\n return rgb.hex;\n };\n /*\\\n * Raphael.getColor.reset\n [ method ]\n **\n * Resets spectrum position for @Raphael.getColor back to red.\n \\*/\n R.getColor.reset = function () {\n delete this.start;\n };\n\n // http://schepers.cc/getting-to-the-point\n function catmullRom2bezier(crp, z) {\n var d = [];\n for (var i = 0, iLen = crp.length; iLen - 2 * !z > i; i += 2) {\n var p = [\n {x: +crp[i - 2], y: +crp[i - 1]},\n {x: +crp[i], y: +crp[i + 1]},\n {x: +crp[i + 2], y: +crp[i + 3]},\n {x: +crp[i + 4], y: +crp[i + 5]}\n ];\n if (z) {\n if (!i) {\n p[0] = {x: +crp[iLen - 2], y: +crp[iLen - 1]};\n } else if (iLen - 4 == i) {\n p[3] = {x: +crp[0], y: +crp[1]};\n } else if (iLen - 2 == i) {\n p[2] = {x: +crp[0], y: +crp[1]};\n p[3] = {x: +crp[2], y: +crp[3]};\n }\n } else {\n if (iLen - 4 == i) {\n p[3] = p[2];\n } else if (!i) {\n p[0] = {x: +crp[i], y: +crp[i + 1]};\n }\n }\n d.push([\"C\",\n (-p[0].x + 6 * p[1].x + p[2].x) / 6,\n (-p[0].y + 6 * p[1].y + p[2].y) / 6,\n (p[1].x + 6 * p[2].x - p[3].x) / 6,\n (p[1].y + 6*p[2].y - p[3].y) / 6,\n p[2].x,\n p[2].y\n ]);\n }\n\n return d;\n }\n /*\\\n * Raphael.parsePathString\n [ method ]\n **\n * Utility method\n **\n * Parses given path string into an array of arrays of path segments.\n > Parameters\n - pathString (string|array) path string or array of segments (in the last case it will be returned straight away)\n = (array) array of segments.\n \\*/\n R.parsePathString = function (pathString) {\n if (!pathString) {\n return null;\n }\n var pth = paths(pathString);\n if (pth.arr) {\n return pathClone(pth.arr);\n }\n\n var paramCounts = {a: 7, c: 6, h: 1, l: 2, m: 2, r: 4, q: 4, s: 4, t: 2, v: 1, z: 0},\n data = [];\n if (R.is(pathString, array) && R.is(pathString[0], array)) { // rough assumption\n data = pathClone(pathString);\n }\n if (!data.length) {\n Str(pathString).replace(pathCommand, function (a, b, c) {\n var params = [],\n name = b.toLowerCase();\n c.replace(pathValues, function (a, b) {\n b && params.push(+b);\n });\n if (name == \"m\" && params.length > 2) {\n data.push([b][concat](params.splice(0, 2)));\n name = \"l\";\n b = b == \"m\" ? \"l\" : \"L\";\n }\n if (name == \"r\") {\n data.push([b][concat](params));\n } else while (params.length >= paramCounts[name]) {\n data.push([b][concat](params.splice(0, paramCounts[name])));\n if (!paramCounts[name]) {\n break;\n }\n }\n });\n }\n data.toString = R._path2string;\n pth.arr = pathClone(data);\n return data;\n };\n /*\\\n * Raphael.parseTransformString\n [ method ]\n **\n * Utility method\n **\n * Parses given path string into an array of transformations.\n > Parameters\n - TString (string|array) transform string or array of transformations (in the last case it will be returned straight away)\n = (array) array of transformations.\n \\*/\n R.parseTransformString = cacher(function (TString) {\n if (!TString) {\n return null;\n }\n var paramCounts = {r: 3, s: 4, t: 2, m: 6},\n data = [];\n if (R.is(TString, array) && R.is(TString[0], array)) { // rough assumption\n data = pathClone(TString);\n }\n if (!data.length) {\n Str(TString).replace(tCommand, function (a, b, c) {\n var params = [],\n name = lowerCase.call(b);\n c.replace(pathValues, function (a, b) {\n b && params.push(+b);\n });\n data.push([b][concat](params));\n });\n }\n data.toString = R._path2string;\n return data;\n }, this, function(elem) {\n if (!elem) return elem;\n var newData = [];\n for (var i = 0; i < elem.length; i++) {\n var newLevel = [];\n for (var j = 0; j < elem[i].length; j++) {\n newLevel.push(elem[i][j]);\n }\n newData.push(newLevel);\n }\n return newData; } );\n // PATHS\n var paths = function (ps) {\n var p = paths.ps = paths.ps || {};\n if (p[ps]) {\n p[ps].sleep = 100;\n } else {\n p[ps] = {\n sleep: 100\n };\n }\n setTimeout(function () {\n for (var key in p) if (p[has](key) && key != ps) {\n p[key].sleep--;\n !p[key].sleep && delete p[key];\n }\n });\n return p[ps];\n };\n /*\\\n * Raphael.findDotsAtSegment\n [ method ]\n **\n * Utility method\n **\n * Find dot coordinates on the given cubic bezier curve at the given t.\n > Parameters\n - p1x (number) x of the first point of the curve\n - p1y (number) y of the first point of the curve\n - c1x (number) x of the first anchor of the curve\n - c1y (number) y of the first anchor of the curve\n - c2x (number) x of the second anchor of the curve\n - c2y (number) y of the second anchor of the curve\n - p2x (number) x of the second point of the curve\n - p2y (number) y of the second point of the curve\n - t (number) position on the curve (0..1)\n = (object) point information in format:\n o {\n o x: (number) x coordinate of the point\n o y: (number) y coordinate of the point\n o m: {\n o x: (number) x coordinate of the left anchor\n o y: (number) y coordinate of the left anchor\n o }\n o n: {\n o x: (number) x coordinate of the right anchor\n o y: (number) y coordinate of the right anchor\n o }\n o start: {\n o x: (number) x coordinate of the start of the curve\n o y: (number) y coordinate of the start of the curve\n o }\n o end: {\n o x: (number) x coordinate of the end of the curve\n o y: (number) y coordinate of the end of the curve\n o }\n o alpha: (number) angle of the curve derivative at the point\n o }\n \\*/\n R.findDotsAtSegment = function (p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, t) {\n var t1 = 1 - t,\n t13 = pow(t1, 3),\n t12 = pow(t1, 2),\n t2 = t * t,\n t3 = t2 * t,\n x = t13 * p1x + t12 * 3 * t * c1x + t1 * 3 * t * t * c2x + t3 * p2x,\n y = t13 * p1y + t12 * 3 * t * c1y + t1 * 3 * t * t * c2y + t3 * p2y,\n mx = p1x + 2 * t * (c1x - p1x) + t2 * (c2x - 2 * c1x + p1x),\n my = p1y + 2 * t * (c1y - p1y) + t2 * (c2y - 2 * c1y + p1y),\n nx = c1x + 2 * t * (c2x - c1x) + t2 * (p2x - 2 * c2x + c1x),\n ny = c1y + 2 * t * (c2y - c1y) + t2 * (p2y - 2 * c2y + c1y),\n ax = t1 * p1x + t * c1x,\n ay = t1 * p1y + t * c1y,\n cx = t1 * c2x + t * p2x,\n cy = t1 * c2y + t * p2y,\n alpha = (90 - math.atan2(mx - nx, my - ny) * 180 / PI);\n (mx > nx || my < ny) && (alpha += 180);\n return {\n x: x,\n y: y,\n m: {x: mx, y: my},\n n: {x: nx, y: ny},\n start: {x: ax, y: ay},\n end: {x: cx, y: cy},\n alpha: alpha\n };\n };\n /*\\\n * Raphael.bezierBBox\n [ method ]\n **\n * Utility method\n **\n * Return bounding box of a given cubic bezier curve\n > Parameters\n - p1x (number) x of the first point of the curve\n - p1y (number) y of the first point of the curve\n - c1x (number) x of the first anchor of the curve\n - c1y (number) y of the first anchor of the curve\n - c2x (number) x of the second anchor of the curve\n - c2y (number) y of the second anchor of the curve\n - p2x (number) x of the second point of the curve\n - p2y (number) y of the second point of the curve\n * or\n - bez (array) array of six points for bezier curve\n = (object) point information in format:\n o {\n o min: {\n o x: (number) x coordinate of the left point\n o y: (number) y coordinate of the top point\n o }\n o max: {\n o x: (number) x coordinate of the right point\n o y: (number) y coordinate of the bottom point\n o }\n o }\n \\*/\n R.bezierBBox = function (p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y) {\n if (!R.is(p1x, \"array\")) {\n p1x = [p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y];\n }\n var bbox = curveDim.apply(null, p1x);\n return {\n x: bbox.min.x,\n y: bbox.min.y,\n x2: bbox.max.x,\n y2: bbox.max.y,\n width: bbox.max.x - bbox.min.x,\n height: bbox.max.y - bbox.min.y\n };\n };\n /*\\\n * Raphael.isPointInsideBBox\n [ method ]\n **\n * Utility method\n **\n * Returns `true` if given point is inside bounding boxes.\n > Parameters\n - bbox (string) bounding box\n - x (string) x coordinate of the point\n - y (string) y coordinate of the point\n = (boolean) `true` if point inside\n \\*/\n R.isPointInsideBBox = function (bbox, x, y) {\n return x >= bbox.x && x <= bbox.x2 && y >= bbox.y && y <= bbox.y2;\n };\n /*\\\n * Raphael.isBBoxIntersect\n [ method ]\n **\n * Utility method\n **\n * Returns `true` if two bounding boxes intersect\n > Parameters\n - bbox1 (string) first bounding box\n - bbox2 (string) second bounding box\n = (boolean) `true` if they intersect\n \\*/\n R.isBBoxIntersect = function (bbox1, bbox2) {\n var i = R.isPointInsideBBox;\n return i(bbox2, bbox1.x, bbox1.y)\n || i(bbox2, bbox1.x2, bbox1.y)\n || i(bbox2, bbox1.x, bbox1.y2)\n || i(bbox2, bbox1.x2, bbox1.y2)\n || i(bbox1, bbox2.x, bbox2.y)\n || i(bbox1, bbox2.x2, bbox2.y)\n || i(bbox1, bbox2.x, bbox2.y2)\n || i(bbox1, bbox2.x2, bbox2.y2)\n || (bbox1.x < bbox2.x2 && bbox1.x > bbox2.x || bbox2.x < bbox1.x2 && bbox2.x > bbox1.x)\n && (bbox1.y < bbox2.y2 && bbox1.y > bbox2.y || bbox2.y < bbox1.y2 && bbox2.y > bbox1.y);\n };\n function base3(t, p1, p2, p3, p4) {\n var t1 = -3 * p1 + 9 * p2 - 9 * p3 + 3 * p4,\n t2 = t * t1 + 6 * p1 - 12 * p2 + 6 * p3;\n return t * t2 - 3 * p1 + 3 * p2;\n }\n function bezlen(x1, y1, x2, y2, x3, y3, x4, y4, z) {\n if (z == null) {\n z = 1;\n }\n z = z > 1 ? 1 : z < 0 ? 0 : z;\n var z2 = z / 2,\n n = 12,\n Tvalues = [-0.1252,0.1252,-0.3678,0.3678,-0.5873,0.5873,-0.7699,0.7699,-0.9041,0.9041,-0.9816,0.9816],\n Cvalues = [0.2491,0.2491,0.2335,0.2335,0.2032,0.2032,0.1601,0.1601,0.1069,0.1069,0.0472,0.0472],\n sum = 0;\n for (var i = 0; i < n; i++) {\n var ct = z2 * Tvalues[i] + z2,\n xbase = base3(ct, x1, x2, x3, x4),\n ybase = base3(ct, y1, y2, y3, y4),\n comb = xbase * xbase + ybase * ybase;\n sum += Cvalues[i] * math.sqrt(comb);\n }\n return z2 * sum;\n }\n function getTatLen(x1, y1, x2, y2, x3, y3, x4, y4, ll) {\n if (ll < 0 || bezlen(x1, y1, x2, y2, x3, y3, x4, y4) < ll) {\n return;\n }\n var t = 1,\n step = t / 2,\n t2 = t - step,\n l,\n e = .01;\n l = bezlen(x1, y1, x2, y2, x3, y3, x4, y4, t2);\n while (abs(l - ll) > e) {\n step /= 2;\n t2 += (l < ll ? 1 : -1) * step;\n l = bezlen(x1, y1, x2, y2, x3, y3, x4, y4, t2);\n }\n return t2;\n }\n function intersect(x1, y1, x2, y2, x3, y3, x4, y4) {\n if (\n mmax(x1, x2) < mmin(x3, x4) ||\n mmin(x1, x2) > mmax(x3, x4) ||\n mmax(y1, y2) < mmin(y3, y4) ||\n mmin(y1, y2) > mmax(y3, y4)\n ) {\n return;\n }\n var nx = (x1 * y2 - y1 * x2) * (x3 - x4) - (x1 - x2) * (x3 * y4 - y3 * x4),\n ny = (x1 * y2 - y1 * x2) * (y3 - y4) - (y1 - y2) * (x3 * y4 - y3 * x4),\n denominator = (x1 - x2) * (y3 - y4) - (y1 - y2) * (x3 - x4);\n\n if (!denominator) {\n return;\n }\n var px = nx / denominator,\n py = ny / denominator,\n px2 = +px.toFixed(2),\n py2 = +py.toFixed(2);\n if (\n px2 < +mmin(x1, x2).toFixed(2) ||\n px2 > +mmax(x1, x2).toFixed(2) ||\n px2 < +mmin(x3, x4).toFixed(2) ||\n px2 > +mmax(x3, x4).toFixed(2) ||\n py2 < +mmin(y1, y2).toFixed(2) ||\n py2 > +mmax(y1, y2).toFixed(2) ||\n py2 < +mmin(y3, y4).toFixed(2) ||\n py2 > +mmax(y3, y4).toFixed(2)\n ) {\n return;\n }\n return {x: px, y: py};\n }\n function inter(bez1, bez2) {\n return interHelper(bez1, bez2);\n }\n function interCount(bez1, bez2) {\n return interHelper(bez1, bez2, 1);\n }\n function interHelper(bez1, bez2, justCount) {\n var bbox1 = R.bezierBBox(bez1),\n bbox2 = R.bezierBBox(bez2);\n if (!R.isBBoxIntersect(bbox1, bbox2)) {\n return justCount ? 0 : [];\n }\n var l1 = bezlen.apply(0, bez1),\n l2 = bezlen.apply(0, bez2),\n n1 = mmax(~~(l1 / 5), 1),\n n2 = mmax(~~(l2 / 5), 1),\n dots1 = [],\n dots2 = [],\n xy = {},\n res = justCount ? 0 : [];\n for (var i = 0; i < n1 + 1; i++) {\n var p = R.findDotsAtSegment.apply(R, bez1.concat(i / n1));\n dots1.push({x: p.x, y: p.y, t: i / n1});\n }\n for (i = 0; i < n2 + 1; i++) {\n p = R.findDotsAtSegment.apply(R, bez2.concat(i / n2));\n dots2.push({x: p.x, y: p.y, t: i / n2});\n }\n for (i = 0; i < n1; i++) {\n for (var j = 0; j < n2; j++) {\n var di = dots1[i],\n di1 = dots1[i + 1],\n dj = dots2[j],\n dj1 = dots2[j + 1],\n ci = abs(di1.x - di.x) < .001 ? \"y\" : \"x\",\n cj = abs(dj1.x - dj.x) < .001 ? \"y\" : \"x\",\n is = intersect(di.x, di.y, di1.x, di1.y, dj.x, dj.y, dj1.x, dj1.y);\n if (is) {\n if (xy[is.x.toFixed(4)] == is.y.toFixed(4)) {\n continue;\n }\n xy[is.x.toFixed(4)] = is.y.toFixed(4);\n var t1 = di.t + abs((is[ci] - di[ci]) / (di1[ci] - di[ci])) * (di1.t - di.t),\n t2 = dj.t + abs((is[cj] - dj[cj]) / (dj1[cj] - dj[cj])) * (dj1.t - dj.t);\n if (t1 >= 0 && t1 <= 1.001 && t2 >= 0 && t2 <= 1.001) {\n if (justCount) {\n res++;\n } else {\n res.push({\n x: is.x,\n y: is.y,\n t1: mmin(t1, 1),\n t2: mmin(t2, 1)\n });\n }\n }\n }\n }\n }\n return res;\n }\n /*\\\n * Raphael.pathIntersection\n [ method ]\n **\n * Utility method\n **\n * Finds intersections of two paths\n > Parameters\n - path1 (string) path string\n - path2 (string) path string\n = (array) dots of intersection\n o [\n o {\n o x: (number) x coordinate of the point\n o y: (number) y coordinate of the point\n o t1: (number) t value for segment of path1\n o t2: (number) t value for segment of path2\n o segment1: (number) order number for segment of path1\n o segment2: (number) order number for segment of path2\n o bez1: (array) eight coordinates representing beziér curve for the segment of path1\n o bez2: (array) eight coordinates representing beziér curve for the segment of path2\n o }\n o ]\n \\*/\n R.pathIntersection = function (path1, path2) {\n return interPathHelper(path1, path2);\n };\n R.pathIntersectionNumber = function (path1, path2) {\n return interPathHelper(path1, path2, 1);\n };\n function interPathHelper(path1, path2, justCount) {\n path1 = R._path2curve(path1);\n path2 = R._path2curve(path2);\n var x1, y1, x2, y2, x1m, y1m, x2m, y2m, bez1, bez2,\n res = justCount ? 0 : [];\n for (var i = 0, ii = path1.length; i < ii; i++) {\n var pi = path1[i];\n if (pi[0] == \"M\") {\n x1 = x1m = pi[1];\n y1 = y1m = pi[2];\n } else {\n if (pi[0] == \"C\") {\n bez1 = [x1, y1].concat(pi.slice(1));\n x1 = bez1[6];\n y1 = bez1[7];\n } else {\n bez1 = [x1, y1, x1, y1, x1m, y1m, x1m, y1m];\n x1 = x1m;\n y1 = y1m;\n }\n for (var j = 0, jj = path2.length; j < jj; j++) {\n var pj = path2[j];\n if (pj[0] == \"M\") {\n x2 = x2m = pj[1];\n y2 = y2m = pj[2];\n } else {\n if (pj[0] == \"C\") {\n bez2 = [x2, y2].concat(pj.slice(1));\n x2 = bez2[6];\n y2 = bez2[7];\n } else {\n bez2 = [x2, y2, x2, y2, x2m, y2m, x2m, y2m];\n x2 = x2m;\n y2 = y2m;\n }\n var intr = interHelper(bez1, bez2, justCount);\n if (justCount) {\n res += intr;\n } else {\n for (var k = 0, kk = intr.length; k < kk; k++) {\n intr[k].segment1 = i;\n intr[k].segment2 = j;\n intr[k].bez1 = bez1;\n intr[k].bez2 = bez2;\n }\n res = res.concat(intr);\n }\n }\n }\n }\n }\n return res;\n }\n /*\\\n * Raphael.isPointInsidePath\n [ method ]\n **\n * Utility method\n **\n * Returns `true` if given point is inside a given closed path.\n > Parameters\n - path (string) path string\n - x (number) x of the point\n - y (number) y of the point\n = (boolean) true, if point is inside the path\n \\*/\n R.isPointInsidePath = function (path, x, y) {\n var bbox = R.pathBBox(path);\n return R.isPointInsideBBox(bbox, x, y) &&\n interPathHelper(path, [[\"M\", x, y], [\"H\", bbox.x2 + 10]], 1) % 2 == 1;\n };\n R._removedFactory = function (methodname) {\n return function () {\n eve(\"raphael.log\", null, \"Rapha\\xebl: you are calling to method \\u201c\" + methodname + \"\\u201d of removed object\", methodname);\n };\n };\n /*\\\n * Raphael.pathBBox\n [ method ]\n **\n * Utility method\n **\n * Return bounding box of a given path\n > Parameters\n - path (string) path string\n = (object) bounding box\n o {\n o x: (number) x coordinate of the left top point of the box\n o y: (number) y coordinate of the left top point of the box\n o x2: (number) x coordinate of the right bottom point of the box\n o y2: (number) y coordinate of the right bottom point of the box\n o width: (number) width of the box\n o height: (number) height of the box\n o cx: (number) x coordinate of the center of the box\n o cy: (number) y coordinate of the center of the box\n o }\n \\*/\n var pathDimensions = R.pathBBox = function (path) {\n var pth = paths(path);\n if (pth.bbox) {\n return clone(pth.bbox);\n }\n if (!path) {\n return {x: 0, y: 0, width: 0, height: 0, x2: 0, y2: 0};\n }\n path = path2curve(path);\n var x = 0,\n y = 0,\n X = [],\n Y = [],\n p;\n for (var i = 0, ii = path.length; i < ii; i++) {\n p = path[i];\n if (p[0] == \"M\") {\n x = p[1];\n y = p[2];\n X.push(x);\n Y.push(y);\n } else {\n var dim = curveDim(x, y, p[1], p[2], p[3], p[4], p[5], p[6]);\n X = X[concat](dim.min.x, dim.max.x);\n Y = Y[concat](dim.min.y, dim.max.y);\n x = p[5];\n y = p[6];\n }\n }\n var xmin = mmin[apply](0, X),\n ymin = mmin[apply](0, Y),\n xmax = mmax[apply](0, X),\n ymax = mmax[apply](0, Y),\n width = xmax - xmin,\n height = ymax - ymin,\n bb = {\n x: xmin,\n y: ymin,\n x2: xmax,\n y2: ymax,\n width: width,\n height: height,\n cx: xmin + width / 2,\n cy: ymin + height / 2\n };\n pth.bbox = clone(bb);\n return bb;\n },\n pathClone = function (pathArray) {\n var res = clone(pathArray);\n res.toString = R._path2string;\n return res;\n },\n pathToRelative = R._pathToRelative = function (pathArray) {\n var pth = paths(pathArray);\n if (pth.rel) {\n return pathClone(pth.rel);\n }\n if (!R.is(pathArray, array) || !R.is(pathArray && pathArray[0], array)) { // rough assumption\n pathArray = R.parsePathString(pathArray);\n }\n var res = [],\n x = 0,\n y = 0,\n mx = 0,\n my = 0,\n start = 0;\n if (pathArray[0][0] == \"M\") {\n x = pathArray[0][1];\n y = pathArray[0][2];\n mx = x;\n my = y;\n start++;\n res.push([\"M\", x, y]);\n }\n for (var i = start, ii = pathArray.length; i < ii; i++) {\n var r = res[i] = [],\n pa = pathArray[i];\n if (pa[0] != lowerCase.call(pa[0])) {\n r[0] = lowerCase.call(pa[0]);\n switch (r[0]) {\n case \"a\":\n r[1] = pa[1];\n r[2] = pa[2];\n r[3] = pa[3];\n r[4] = pa[4];\n r[5] = pa[5];\n r[6] = +(pa[6] - x).toFixed(3);\n r[7] = +(pa[7] - y).toFixed(3);\n break;\n case \"v\":\n r[1] = +(pa[1] - y).toFixed(3);\n break;\n case \"m\":\n mx = pa[1];\n my = pa[2];\n default:\n for (var j = 1, jj = pa.length; j < jj; j++) {\n r[j] = +(pa[j] - ((j % 2) ? x : y)).toFixed(3);\n }\n }\n } else {\n r = res[i] = [];\n if (pa[0] == \"m\") {\n mx = pa[1] + x;\n my = pa[2] + y;\n }\n for (var k = 0, kk = pa.length; k < kk; k++) {\n res[i][k] = pa[k];\n }\n }\n var len = res[i].length;\n switch (res[i][0]) {\n case \"z\":\n x = mx;\n y = my;\n break;\n case \"h\":\n x += +res[i][len - 1];\n break;\n case \"v\":\n y += +res[i][len - 1];\n break;\n default:\n x += +res[i][len - 2];\n y += +res[i][len - 1];\n }\n }\n res.toString = R._path2string;\n pth.rel = pathClone(res);\n return res;\n },\n pathToAbsolute = R._pathToAbsolute = function (pathArray) {\n var pth = paths(pathArray);\n if (pth.abs) {\n return pathClone(pth.abs);\n }\n if (!R.is(pathArray, array) || !R.is(pathArray && pathArray[0], array)) { // rough assumption\n pathArray = R.parsePathString(pathArray);\n }\n if (!pathArray || !pathArray.length) {\n return [[\"M\", 0, 0]];\n }\n var res = [],\n x = 0,\n y = 0,\n mx = 0,\n my = 0,\n start = 0;\n if (pathArray[0][0] == \"M\") {\n x = +pathArray[0][1];\n y = +pathArray[0][2];\n mx = x;\n my = y;\n start++;\n res[0] = [\"M\", x, y];\n }\n var crz = pathArray.length == 3 && pathArray[0][0] == \"M\" && pathArray[1][0].toUpperCase() == \"R\" && pathArray[2][0].toUpperCase() == \"Z\";\n for (var r, pa, i = start, ii = pathArray.length; i < ii; i++) {\n res.push(r = []);\n pa = pathArray[i];\n if (pa[0] != upperCase.call(pa[0])) {\n r[0] = upperCase.call(pa[0]);\n switch (r[0]) {\n case \"A\":\n r[1] = pa[1];\n r[2] = pa[2];\n r[3] = pa[3];\n r[4] = pa[4];\n r[5] = pa[5];\n r[6] = +(pa[6] + x);\n r[7] = +(pa[7] + y);\n break;\n case \"V\":\n r[1] = +pa[1] + y;\n break;\n case \"H\":\n r[1] = +pa[1] + x;\n break;\n case \"R\":\n var dots = [x, y][concat](pa.slice(1));\n for (var j = 2, jj = dots.length; j < jj; j++) {\n dots[j] = +dots[j] + x;\n dots[++j] = +dots[j] + y;\n }\n res.pop();\n res = res[concat](catmullRom2bezier(dots, crz));\n break;\n case \"M\":\n mx = +pa[1] + x;\n my = +pa[2] + y;\n default:\n for (j = 1, jj = pa.length; j < jj; j++) {\n r[j] = +pa[j] + ((j % 2) ? x : y);\n }\n }\n } else if (pa[0] == \"R\") {\n dots = [x, y][concat](pa.slice(1));\n res.pop();\n res = res[concat](catmullRom2bezier(dots, crz));\n r = [\"R\"][concat](pa.slice(-2));\n } else {\n for (var k = 0, kk = pa.length; k < kk; k++) {\n r[k] = pa[k];\n }\n }\n switch (r[0]) {\n case \"Z\":\n x = mx;\n y = my;\n break;\n case \"H\":\n x = r[1];\n break;\n case \"V\":\n y = r[1];\n break;\n case \"M\":\n mx = r[r.length - 2];\n my = r[r.length - 1];\n default:\n x = r[r.length - 2];\n y = r[r.length - 1];\n }\n }\n res.toString = R._path2string;\n pth.abs = pathClone(res);\n return res;\n },\n l2c = function (x1, y1, x2, y2) {\n return [x1, y1, x2, y2, x2, y2];\n },\n q2c = function (x1, y1, ax, ay, x2, y2) {\n var _13 = 1 / 3,\n _23 = 2 / 3;\n return [\n _13 * x1 + _23 * ax,\n _13 * y1 + _23 * ay,\n _13 * x2 + _23 * ax,\n _13 * y2 + _23 * ay,\n x2,\n y2\n ];\n },\n a2c = function (x1, y1, rx, ry, angle, large_arc_flag, sweep_flag, x2, y2, recursive) {\n // for more information of where this math came from visit:\n // http://www.w3.org/TR/SVG11/implnote.html#ArcImplementationNotes\n var _120 = PI * 120 / 180,\n rad = PI / 180 * (+angle || 0),\n res = [],\n xy,\n rotate = cacher(function (x, y, rad) {\n var X = x * math.cos(rad) - y * math.sin(rad),\n Y = x * math.sin(rad) + y * math.cos(rad);\n return {x: X, y: Y};\n });\n if (!recursive) {\n xy = rotate(x1, y1, -rad);\n x1 = xy.x;\n y1 = xy.y;\n xy = rotate(x2, y2, -rad);\n x2 = xy.x;\n y2 = xy.y;\n var cos = math.cos(PI / 180 * angle),\n sin = math.sin(PI / 180 * angle),\n x = (x1 - x2) / 2,\n y = (y1 - y2) / 2;\n var h = (x * x) / (rx * rx) + (y * y) / (ry * ry);\n if (h > 1) {\n h = math.sqrt(h);\n rx = h * rx;\n ry = h * ry;\n }\n var rx2 = rx * rx,\n ry2 = ry * ry,\n k = (large_arc_flag == sweep_flag ? -1 : 1) *\n math.sqrt(abs((rx2 * ry2 - rx2 * y * y - ry2 * x * x) / (rx2 * y * y + ry2 * x * x))),\n cx = k * rx * y / ry + (x1 + x2) / 2,\n cy = k * -ry * x / rx + (y1 + y2) / 2,\n f1 = math.asin(((y1 - cy) / ry).toFixed(9)),\n f2 = math.asin(((y2 - cy) / ry).toFixed(9));\n\n f1 = x1 < cx ? PI - f1 : f1;\n f2 = x2 < cx ? PI - f2 : f2;\n f1 < 0 && (f1 = PI * 2 + f1);\n f2 < 0 && (f2 = PI * 2 + f2);\n if (sweep_flag && f1 > f2) {\n f1 = f1 - PI * 2;\n }\n if (!sweep_flag && f2 > f1) {\n f2 = f2 - PI * 2;\n }\n } else {\n f1 = recursive[0];\n f2 = recursive[1];\n cx = recursive[2];\n cy = recursive[3];\n }\n var df = f2 - f1;\n if (abs(df) > _120) {\n var f2old = f2,\n x2old = x2,\n y2old = y2;\n f2 = f1 + _120 * (sweep_flag && f2 > f1 ? 1 : -1);\n x2 = cx + rx * math.cos(f2);\n y2 = cy + ry * math.sin(f2);\n res = a2c(x2, y2, rx, ry, angle, 0, sweep_flag, x2old, y2old, [f2, f2old, cx, cy]);\n }\n df = f2 - f1;\n var c1 = math.cos(f1),\n s1 = math.sin(f1),\n c2 = math.cos(f2),\n s2 = math.sin(f2),\n t = math.tan(df / 4),\n hx = 4 / 3 * rx * t,\n hy = 4 / 3 * ry * t,\n m1 = [x1, y1],\n m2 = [x1 + hx * s1, y1 - hy * c1],\n m3 = [x2 + hx * s2, y2 - hy * c2],\n m4 = [x2, y2];\n m2[0] = 2 * m1[0] - m2[0];\n m2[1] = 2 * m1[1] - m2[1];\n if (recursive) {\n return [m2, m3, m4][concat](res);\n } else {\n res = [m2, m3, m4][concat](res).join()[split](\",\");\n var newres = [];\n for (var i = 0, ii = res.length; i < ii; i++) {\n newres[i] = i % 2 ? rotate(res[i - 1], res[i], rad).y : rotate(res[i], res[i + 1], rad).x;\n }\n return newres;\n }\n },\n findDotAtSegment = function (p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, t) {\n var t1 = 1 - t;\n return {\n x: pow(t1, 3) * p1x + pow(t1, 2) * 3 * t * c1x + t1 * 3 * t * t * c2x + pow(t, 3) * p2x,\n y: pow(t1, 3) * p1y + pow(t1, 2) * 3 * t * c1y + t1 * 3 * t * t * c2y + pow(t, 3) * p2y\n };\n },\n curveDim = cacher(function (p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y) {\n var a = (c2x - 2 * c1x + p1x) - (p2x - 2 * c2x + c1x),\n b = 2 * (c1x - p1x) - 2 * (c2x - c1x),\n c = p1x - c1x,\n t1 = (-b + math.sqrt(b * b - 4 * a * c)) / 2 / a,\n t2 = (-b - math.sqrt(b * b - 4 * a * c)) / 2 / a,\n y = [p1y, p2y],\n x = [p1x, p2x],\n dot;\n abs(t1) > \"1e12\" && (t1 = .5);\n abs(t2) > \"1e12\" && (t2 = .5);\n if (t1 > 0 && t1 < 1) {\n dot = findDotAtSegment(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, t1);\n x.push(dot.x);\n y.push(dot.y);\n }\n if (t2 > 0 && t2 < 1) {\n dot = findDotAtSegment(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, t2);\n x.push(dot.x);\n y.push(dot.y);\n }\n a = (c2y - 2 * c1y + p1y) - (p2y - 2 * c2y + c1y);\n b = 2 * (c1y - p1y) - 2 * (c2y - c1y);\n c = p1y - c1y;\n t1 = (-b + math.sqrt(b * b - 4 * a * c)) / 2 / a;\n t2 = (-b - math.sqrt(b * b - 4 * a * c)) / 2 / a;\n abs(t1) > \"1e12\" && (t1 = .5);\n abs(t2) > \"1e12\" && (t2 = .5);\n if (t1 > 0 && t1 < 1) {\n dot = findDotAtSegment(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, t1);\n x.push(dot.x);\n y.push(dot.y);\n }\n if (t2 > 0 && t2 < 1) {\n dot = findDotAtSegment(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, t2);\n x.push(dot.x);\n y.push(dot.y);\n }\n return {\n min: {x: mmin[apply](0, x), y: mmin[apply](0, y)},\n max: {x: mmax[apply](0, x), y: mmax[apply](0, y)}\n };\n }),\n path2curve = R._path2curve = cacher(function (path, path2) {\n var pth = !path2 && paths(path);\n if (!path2 && pth.curve) {\n return pathClone(pth.curve);\n }\n var p = pathToAbsolute(path),\n p2 = path2 && pathToAbsolute(path2),\n attrs = {x: 0, y: 0, bx: 0, by: 0, X: 0, Y: 0, qx: null, qy: null},\n attrs2 = {x: 0, y: 0, bx: 0, by: 0, X: 0, Y: 0, qx: null, qy: null},\n processPath = function (path, d, pcom) {\n var nx, ny, tq = {T:1, Q:1};\n if (!path) {\n return [\"C\", d.x, d.y, d.x, d.y, d.x, d.y];\n }\n !(path[0] in tq) && (d.qx = d.qy = null);\n switch (path[0]) {\n case \"M\":\n d.X = path[1];\n d.Y = path[2];\n break;\n case \"A\":\n path = [\"C\"][concat](a2c[apply](0, [d.x, d.y][concat](path.slice(1))));\n break;\n case \"S\":\n if (pcom == \"C\" || pcom == \"S\") { // In \"S\" case we have to take into account, if the previous command is C/S.\n nx = d.x * 2 - d.bx; // And reflect the previous\n ny = d.y * 2 - d.by; // command's control point relative to the current point.\n }\n else { // or some else or nothing\n nx = d.x;\n ny = d.y;\n }\n path = [\"C\", nx, ny][concat](path.slice(1));\n break;\n case \"T\":\n if (pcom == \"Q\" || pcom == \"T\") { // In \"T\" case we have to take into account, if the previous command is Q/T.\n d.qx = d.x * 2 - d.qx; // And make a reflection similar\n d.qy = d.y * 2 - d.qy; // to case \"S\".\n }\n else { // or something else or nothing\n d.qx = d.x;\n d.qy = d.y;\n }\n path = [\"C\"][concat](q2c(d.x, d.y, d.qx, d.qy, path[1], path[2]));\n break;\n case \"Q\":\n d.qx = path[1];\n d.qy = path[2];\n path = [\"C\"][concat](q2c(d.x, d.y, path[1], path[2], path[3], path[4]));\n break;\n case \"L\":\n path = [\"C\"][concat](l2c(d.x, d.y, path[1], path[2]));\n break;\n case \"H\":\n path = [\"C\"][concat](l2c(d.x, d.y, path[1], d.y));\n break;\n case \"V\":\n path = [\"C\"][concat](l2c(d.x, d.y, d.x, path[1]));\n break;\n case \"Z\":\n path = [\"C\"][concat](l2c(d.x, d.y, d.X, d.Y));\n break;\n }\n return path;\n },\n fixArc = function (pp, i) {\n if (pp[i].length > 7) {\n pp[i].shift();\n var pi = pp[i];\n while (pi.length) {\n pcoms1[i]=\"A\"; // if created multiple C:s, their original seg is saved\n p2 && (pcoms2[i]=\"A\"); // the same as above\n pp.splice(i++, 0, [\"C\"][concat](pi.splice(0, 6)));\n }\n pp.splice(i, 1);\n ii = mmax(p.length, p2 && p2.length || 0);\n }\n },\n fixM = function (path1, path2, a1, a2, i) {\n if (path1 && path2 && path1[i][0] == \"M\" && path2[i][0] != \"M\") {\n path2.splice(i, 0, [\"M\", a2.x, a2.y]);\n a1.bx = 0;\n a1.by = 0;\n a1.x = path1[i][1];\n a1.y = path1[i][2];\n ii = mmax(p.length, p2 && p2.length || 0);\n }\n },\n pcoms1 = [], // path commands of original path p\n pcoms2 = [], // path commands of original path p2\n pfirst = \"\", // temporary holder for original path command\n pcom = \"\"; // holder for previous path command of original path\n for (var i = 0, ii = mmax(p.length, p2 && p2.length || 0); i < ii; i++) {\n p[i] && (pfirst = p[i][0]); // save current path command\n\n if (pfirst != \"C\") // C is not saved yet, because it may be result of conversion\n {\n pcoms1[i] = pfirst; // Save current path command\n i && ( pcom = pcoms1[i-1]); // Get previous path command pcom\n }\n p[i] = processPath(p[i], attrs, pcom); // Previous path command is inputted to processPath\n\n if (pcoms1[i] != \"A\" && pfirst == \"C\") pcoms1[i] = \"C\"; // A is the only command\n // which may produce multiple C:s\n // so we have to make sure that C is also C in original path\n\n fixArc(p, i); // fixArc adds also the right amount of A:s to pcoms1\n\n if (p2) { // the same procedures is done to p2\n p2[i] && (pfirst = p2[i][0]);\n if (pfirst != \"C\")\n {\n pcoms2[i] = pfirst;\n i && (pcom = pcoms2[i-1]);\n }\n p2[i] = processPath(p2[i], attrs2, pcom);\n\n if (pcoms2[i]!=\"A\" && pfirst==\"C\") pcoms2[i]=\"C\";\n\n fixArc(p2, i);\n }\n fixM(p, p2, attrs, attrs2, i);\n fixM(p2, p, attrs2, attrs, i);\n var seg = p[i],\n seg2 = p2 && p2[i],\n seglen = seg.length,\n seg2len = p2 && seg2.length;\n attrs.x = seg[seglen - 2];\n attrs.y = seg[seglen - 1];\n attrs.bx = toFloat(seg[seglen - 4]) || attrs.x;\n attrs.by = toFloat(seg[seglen - 3]) || attrs.y;\n attrs2.bx = p2 && (toFloat(seg2[seg2len - 4]) || attrs2.x);\n attrs2.by = p2 && (toFloat(seg2[seg2len - 3]) || attrs2.y);\n attrs2.x = p2 && seg2[seg2len - 2];\n attrs2.y = p2 && seg2[seg2len - 1];\n }\n if (!p2) {\n pth.curve = pathClone(p);\n }\n return p2 ? [p, p2] : p;\n }, null, pathClone),\n parseDots = R._parseDots = cacher(function (gradient) {\n var dots = [];\n for (var i = 0, ii = gradient.length; i < ii; i++) {\n var dot = {},\n par = gradient[i].match(/^([^:]*):?([\\d\\.]*)/);\n dot.color = R.getRGB(par[1]);\n if (dot.color.error) {\n return null;\n }\n dot.opacity = dot.color.opacity;\n dot.color = dot.color.hex;\n par[2] && (dot.offset = par[2] + \"%\");\n dots.push(dot);\n }\n for (i = 1, ii = dots.length - 1; i < ii; i++) {\n if (!dots[i].offset) {\n var start = toFloat(dots[i - 1].offset || 0),\n end = 0;\n for (var j = i + 1; j < ii; j++) {\n if (dots[j].offset) {\n end = dots[j].offset;\n break;\n }\n }\n if (!end) {\n end = 100;\n j = ii;\n }\n end = toFloat(end);\n var d = (end - start) / (j - i + 1);\n for (; i < j; i++) {\n start += d;\n dots[i].offset = start + \"%\";\n }\n }\n }\n return dots;\n }),\n tear = R._tear = function (el, paper) {\n el == paper.top && (paper.top = el.prev);\n el == paper.bottom && (paper.bottom = el.next);\n el.next && (el.next.prev = el.prev);\n el.prev && (el.prev.next = el.next);\n },\n tofront = R._tofront = function (el, paper) {\n if (paper.top === el) {\n return;\n }\n tear(el, paper);\n el.next = null;\n el.prev = paper.top;\n paper.top.next = el;\n paper.top = el;\n },\n toback = R._toback = function (el, paper) {\n if (paper.bottom === el) {\n return;\n }\n tear(el, paper);\n el.next = paper.bottom;\n el.prev = null;\n paper.bottom.prev = el;\n paper.bottom = el;\n },\n insertafter = R._insertafter = function (el, el2, paper) {\n tear(el, paper);\n el2 == paper.top && (paper.top = el);\n el2.next && (el2.next.prev = el);\n el.next = el2.next;\n el.prev = el2;\n el2.next = el;\n },\n insertbefore = R._insertbefore = function (el, el2, paper) {\n tear(el, paper);\n el2 == paper.bottom && (paper.bottom = el);\n el2.prev && (el2.prev.next = el);\n el.prev = el2.prev;\n el2.prev = el;\n el.next = el2;\n },\n /*\\\n * Raphael.toMatrix\n [ method ]\n **\n * Utility method\n **\n * Returns matrix of transformations applied to a given path\n > Parameters\n - path (string) path string\n - transform (string|array) transformation string\n = (object) @Matrix\n \\*/\n toMatrix = R.toMatrix = function (path, transform) {\n var bb = pathDimensions(path),\n el = {\n _: {\n transform: E\n },\n getBBox: function () {\n return bb;\n }\n };\n extractTransform(el, transform);\n return el.matrix;\n },\n /*\\\n * Raphael.transformPath\n [ method ]\n **\n * Utility method\n **\n * Returns path transformed by a given transformation\n > Parameters\n - path (string) path string\n - transform (string|array) transformation string\n = (string) path\n \\*/\n transformPath = R.transformPath = function (path, transform) {\n return mapPath(path, toMatrix(path, transform));\n },\n extractTransform = R._extractTransform = function (el, tstr) {\n if (tstr == null) {\n return el._.transform;\n }\n tstr = Str(tstr).replace(/\\.{3}|\\u2026/g, el._.transform || E);\n var tdata = R.parseTransformString(tstr),\n deg = 0,\n dx = 0,\n dy = 0,\n sx = 1,\n sy = 1,\n _ = el._,\n m = new Matrix;\n _.transform = tdata || [];\n if (tdata) {\n for (var i = 0, ii = tdata.length; i < ii; i++) {\n var t = tdata[i],\n tlen = t.length,\n command = Str(t[0]).toLowerCase(),\n absolute = t[0] != command,\n inver = absolute ? m.invert() : 0,\n x1,\n y1,\n x2,\n y2,\n bb;\n if (command == \"t\" && tlen == 3) {\n if (absolute) {\n x1 = inver.x(0, 0);\n y1 = inver.y(0, 0);\n x2 = inver.x(t[1], t[2]);\n y2 = inver.y(t[1], t[2]);\n m.translate(x2 - x1, y2 - y1);\n } else {\n m.translate(t[1], t[2]);\n }\n } else if (command == \"r\") {\n if (tlen == 2) {\n bb = bb || el.getBBox(1);\n m.rotate(t[1], bb.x + bb.width / 2, bb.y + bb.height / 2);\n deg += t[1];\n } else if (tlen == 4) {\n if (absolute) {\n x2 = inver.x(t[2], t[3]);\n y2 = inver.y(t[2], t[3]);\n m.rotate(t[1], x2, y2);\n } else {\n m.rotate(t[1], t[2], t[3]);\n }\n deg += t[1];\n }\n } else if (command == \"s\") {\n if (tlen == 2 || tlen == 3) {\n bb = bb || el.getBBox(1);\n m.scale(t[1], t[tlen - 1], bb.x + bb.width / 2, bb.y + bb.height / 2);\n sx *= t[1];\n sy *= t[tlen - 1];\n } else if (tlen == 5) {\n if (absolute) {\n x2 = inver.x(t[3], t[4]);\n y2 = inver.y(t[3], t[4]);\n m.scale(t[1], t[2], x2, y2);\n } else {\n m.scale(t[1], t[2], t[3], t[4]);\n }\n sx *= t[1];\n sy *= t[2];\n }\n } else if (command == \"m\" && tlen == 7) {\n m.add(t[1], t[2], t[3], t[4], t[5], t[6]);\n }\n _.dirtyT = 1;\n el.matrix = m;\n }\n }\n\n /*\\\n * Element.matrix\n [ property (object) ]\n **\n * Keeps @Matrix object, which represents element transformation\n \\*/\n el.matrix = m;\n\n _.sx = sx;\n _.sy = sy;\n _.deg = deg;\n _.dx = dx = m.e;\n _.dy = dy = m.f;\n\n if (sx == 1 && sy == 1 && !deg && _.bbox) {\n _.bbox.x += +dx;\n _.bbox.y += +dy;\n } else {\n _.dirtyT = 1;\n }\n },\n getEmpty = function (item) {\n var l = item[0];\n switch (l.toLowerCase()) {\n case \"t\": return [l, 0, 0];\n case \"m\": return [l, 1, 0, 0, 1, 0, 0];\n case \"r\": if (item.length == 4) {\n return [l, 0, item[2], item[3]];\n } else {\n return [l, 0];\n }\n case \"s\": if (item.length == 5) {\n return [l, 1, 1, item[3], item[4]];\n } else if (item.length == 3) {\n return [l, 1, 1];\n } else {\n return [l, 1];\n }\n }\n },\n equaliseTransform = R._equaliseTransform = function (t1, t2) {\n t2 = Str(t2).replace(/\\.{3}|\\u2026/g, t1);\n t1 = R.parseTransformString(t1) || [];\n t2 = R.parseTransformString(t2) || [];\n var maxlength = mmax(t1.length, t2.length),\n from = [],\n to = [],\n i = 0, j, jj,\n tt1, tt2;\n for (; i < maxlength; i++) {\n tt1 = t1[i] || getEmpty(t2[i]);\n tt2 = t2[i] || getEmpty(tt1);\n if ((tt1[0] != tt2[0]) ||\n (tt1[0].toLowerCase() == \"r\" && (tt1[2] != tt2[2] || tt1[3] != tt2[3])) ||\n (tt1[0].toLowerCase() == \"s\" && (tt1[3] != tt2[3] || tt1[4] != tt2[4]))\n ) {\n return;\n }\n from[i] = [];\n to[i] = [];\n for (j = 0, jj = mmax(tt1.length, tt2.length); j < jj; j++) {\n j in tt1 && (from[i][j] = tt1[j]);\n j in tt2 && (to[i][j] = tt2[j]);\n }\n }\n return {\n from: from,\n to: to\n };\n };\n R._getContainer = function (x, y, w, h) {\n var container;\n container = h == null && !R.is(x, \"object\") ? g.doc.getElementById(x) : x;\n if (container == null) {\n return;\n }\n if (container.tagName) {\n if (y == null) {\n return {\n container: container,\n width: container.style.pixelWidth || container.offsetWidth,\n height: container.style.pixelHeight || container.offsetHeight\n };\n } else {\n return {\n container: container,\n width: y,\n height: w\n };\n }\n }\n return {\n container: 1,\n x: x,\n y: y,\n width: w,\n height: h\n };\n };\n /*\\\n * Raphael.pathToRelative\n [ method ]\n **\n * Utility method\n **\n * Converts path to relative form\n > Parameters\n - pathString (string|array) path string or array of segments\n = (array) array of segments.\n \\*/\n R.pathToRelative = pathToRelative;\n R._engine = {};\n /*\\\n * Raphael.path2curve\n [ method ]\n **\n * Utility method\n **\n * Converts path to a new path where all segments are cubic bezier curves.\n > Parameters\n - pathString (string|array) path string or array of segments\n = (array) array of segments.\n \\*/\n R.path2curve = path2curve;\n /*\\\n * Raphael.matrix\n [ method ]\n **\n * Utility method\n **\n * Returns matrix based on given parameters.\n > Parameters\n - a (number)\n - b (number)\n - c (number)\n - d (number)\n - e (number)\n - f (number)\n = (object) @Matrix\n \\*/\n R.matrix = function (a, b, c, d, e, f) {\n return new Matrix(a, b, c, d, e, f);\n };\n function Matrix(a, b, c, d, e, f) {\n if (a != null) {\n this.a = +a;\n this.b = +b;\n this.c = +c;\n this.d = +d;\n this.e = +e;\n this.f = +f;\n } else {\n this.a = 1;\n this.b = 0;\n this.c = 0;\n this.d = 1;\n this.e = 0;\n this.f = 0;\n }\n }\n (function (matrixproto) {\n /*\\\n * Matrix.add\n [ method ]\n **\n * Adds given matrix to existing one.\n > Parameters\n - a (number)\n - b (number)\n - c (number)\n - d (number)\n - e (number)\n - f (number)\n or\n - matrix (object) @Matrix\n \\*/\n matrixproto.add = function (a, b, c, d, e, f) {\n var out = [[], [], []],\n m = [[this.a, this.c, this.e], [this.b, this.d, this.f], [0, 0, 1]],\n matrix = [[a, c, e], [b, d, f], [0, 0, 1]],\n x, y, z, res;\n\n if (a && a instanceof Matrix) {\n matrix = [[a.a, a.c, a.e], [a.b, a.d, a.f], [0, 0, 1]];\n }\n\n for (x = 0; x < 3; x++) {\n for (y = 0; y < 3; y++) {\n res = 0;\n for (z = 0; z < 3; z++) {\n res += m[x][z] * matrix[z][y];\n }\n out[x][y] = res;\n }\n }\n this.a = out[0][0];\n this.b = out[1][0];\n this.c = out[0][1];\n this.d = out[1][1];\n this.e = out[0][2];\n this.f = out[1][2];\n };\n /*\\\n * Matrix.invert\n [ method ]\n **\n * Returns inverted version of the matrix\n = (object) @Matrix\n \\*/\n matrixproto.invert = function () {\n var me = this,\n x = me.a * me.d - me.b * me.c;\n return new Matrix(me.d / x, -me.b / x, -me.c / x, me.a / x, (me.c * me.f - me.d * me.e) / x, (me.b * me.e - me.a * me.f) / x);\n };\n /*\\\n * Matrix.clone\n [ method ]\n **\n * Returns copy of the matrix\n = (object) @Matrix\n \\*/\n matrixproto.clone = function () {\n return new Matrix(this.a, this.b, this.c, this.d, this.e, this.f);\n };\n /*\\\n * Matrix.translate\n [ method ]\n **\n * Translate the matrix\n > Parameters\n - x (number)\n - y (number)\n \\*/\n matrixproto.translate = function (x, y) {\n this.add(1, 0, 0, 1, x, y);\n };\n /*\\\n * Matrix.scale\n [ method ]\n **\n * Scales the matrix\n > Parameters\n - x (number)\n - y (number) #optional\n - cx (number) #optional\n - cy (number) #optional\n \\*/\n matrixproto.scale = function (x, y, cx, cy) {\n y == null && (y = x);\n (cx || cy) && this.add(1, 0, 0, 1, cx, cy);\n this.add(x, 0, 0, y, 0, 0);\n (cx || cy) && this.add(1, 0, 0, 1, -cx, -cy);\n };\n /*\\\n * Matrix.rotate\n [ method ]\n **\n * Rotates the matrix\n > Parameters\n - a (number)\n - x (number)\n - y (number)\n \\*/\n matrixproto.rotate = function (a, x, y) {\n a = R.rad(a);\n x = x || 0;\n y = y || 0;\n var cos = +math.cos(a).toFixed(9),\n sin = +math.sin(a).toFixed(9);\n this.add(cos, sin, -sin, cos, x, y);\n this.add(1, 0, 0, 1, -x, -y);\n };\n /*\\\n * Matrix.x\n [ method ]\n **\n * Return x coordinate for given point after transformation described by the matrix. See also @Matrix.y\n > Parameters\n - x (number)\n - y (number)\n = (number) x\n \\*/\n matrixproto.x = function (x, y) {\n return x * this.a + y * this.c + this.e;\n };\n /*\\\n * Matrix.y\n [ method ]\n **\n * Return y coordinate for given point after transformation described by the matrix. See also @Matrix.x\n > Parameters\n - x (number)\n - y (number)\n = (number) y\n \\*/\n matrixproto.y = function (x, y) {\n return x * this.b + y * this.d + this.f;\n };\n matrixproto.get = function (i) {\n return +this[Str.fromCharCode(97 + i)].toFixed(4);\n };\n matrixproto.toString = function () {\n return R.svg ?\n \"matrix(\" + [this.get(0), this.get(1), this.get(2), this.get(3), this.get(4), this.get(5)].join() + \")\" :\n [this.get(0), this.get(2), this.get(1), this.get(3), 0, 0].join();\n };\n matrixproto.toFilter = function () {\n return \"progid:DXImageTransform.Microsoft.Matrix(M11=\" + this.get(0) +\n \", M12=\" + this.get(2) + \", M21=\" + this.get(1) + \", M22=\" + this.get(3) +\n \", Dx=\" + this.get(4) + \", Dy=\" + this.get(5) + \", sizingmethod='auto expand')\";\n };\n matrixproto.offset = function () {\n return [this.e.toFixed(4), this.f.toFixed(4)];\n };\n function norm(a) {\n return a[0] * a[0] + a[1] * a[1];\n }\n function normalize(a) {\n var mag = math.sqrt(norm(a));\n a[0] && (a[0] /= mag);\n a[1] && (a[1] /= mag);\n }\n /*\\\n * Matrix.split\n [ method ]\n **\n * Splits matrix into primitive transformations\n = (object) in format:\n o dx (number) translation by x\n o dy (number) translation by y\n o scalex (number) scale by x\n o scaley (number) scale by y\n o shear (number) shear\n o rotate (number) rotation in deg\n o isSimple (boolean) could it be represented via simple transformations\n \\*/\n matrixproto.split = function () {\n var out = {};\n // translation\n out.dx = this.e;\n out.dy = this.f;\n\n // scale and shear\n var row = [[this.a, this.c], [this.b, this.d]];\n out.scalex = math.sqrt(norm(row[0]));\n normalize(row[0]);\n\n out.shear = row[0][0] * row[1][0] + row[0][1] * row[1][1];\n row[1] = [row[1][0] - row[0][0] * out.shear, row[1][1] - row[0][1] * out.shear];\n\n out.scaley = math.sqrt(norm(row[1]));\n normalize(row[1]);\n out.shear /= out.scaley;\n\n // rotation\n var sin = -row[0][1],\n cos = row[1][1];\n if (cos < 0) {\n out.rotate = R.deg(math.acos(cos));\n if (sin < 0) {\n out.rotate = 360 - out.rotate;\n }\n } else {\n out.rotate = R.deg(math.asin(sin));\n }\n\n out.isSimple = !+out.shear.toFixed(9) && (out.scalex.toFixed(9) == out.scaley.toFixed(9) || !out.rotate);\n out.isSuperSimple = !+out.shear.toFixed(9) && out.scalex.toFixed(9) == out.scaley.toFixed(9) && !out.rotate;\n out.noRotation = !+out.shear.toFixed(9) && !out.rotate;\n return out;\n };\n /*\\\n * Matrix.toTransformString\n [ method ]\n **\n * Return transform string that represents given matrix\n = (string) transform string\n \\*/\n matrixproto.toTransformString = function (shorter) {\n var s = shorter || this[split]();\n if (s.isSimple) {\n s.scalex = +s.scalex.toFixed(4);\n s.scaley = +s.scaley.toFixed(4);\n s.rotate = +s.rotate.toFixed(4);\n return (s.dx || s.dy ? \"t\" + [s.dx, s.dy] : E) +\n (s.scalex != 1 || s.scaley != 1 ? \"s\" + [s.scalex, s.scaley, 0, 0] : E) +\n (s.rotate ? \"r\" + [s.rotate, 0, 0] : E);\n } else {\n return \"m\" + [this.get(0), this.get(1), this.get(2), this.get(3), this.get(4), this.get(5)];\n }\n };\n })(Matrix.prototype);\n\n var preventDefault = function () {\n this.returnValue = false;\n },\n preventTouch = function () {\n return this.originalEvent.preventDefault();\n },\n stopPropagation = function () {\n this.cancelBubble = true;\n },\n stopTouch = function () {\n return this.originalEvent.stopPropagation();\n },\n getEventPosition = function (e) {\n var scrollY = g.doc.documentElement.scrollTop || g.doc.body.scrollTop,\n scrollX = g.doc.documentElement.scrollLeft || g.doc.body.scrollLeft;\n\n return {\n x: e.clientX + scrollX,\n y: e.clientY + scrollY\n };\n },\n addEvent = (function () {\n if (g.doc.addEventListener) {\n return function (obj, type, fn, element) {\n var f = function (e) {\n var pos = getEventPosition(e);\n return fn.call(element, e, pos.x, pos.y);\n };\n obj.addEventListener(type, f, false);\n\n if (supportsTouch && touchMap[type]) {\n var _f = function (e) {\n var pos = getEventPosition(e),\n olde = e;\n\n for (var i = 0, ii = e.targetTouches && e.targetTouches.length; i < ii; i++) {\n if (e.targetTouches[i].target == obj) {\n e = e.targetTouches[i];\n e.originalEvent = olde;\n e.preventDefault = preventTouch;\n e.stopPropagation = stopTouch;\n break;\n }\n }\n\n return fn.call(element, e, pos.x, pos.y);\n };\n obj.addEventListener(touchMap[type], _f, false);\n }\n\n return function () {\n obj.removeEventListener(type, f, false);\n\n if (supportsTouch && touchMap[type])\n obj.removeEventListener(touchMap[type], _f, false);\n\n return true;\n };\n };\n } else if (g.doc.attachEvent) {\n return function (obj, type, fn, element) {\n var f = function (e) {\n e = e || g.win.event;\n var scrollY = g.doc.documentElement.scrollTop || g.doc.body.scrollTop,\n scrollX = g.doc.documentElement.scrollLeft || g.doc.body.scrollLeft,\n x = e.clientX + scrollX,\n y = e.clientY + scrollY;\n e.preventDefault = e.preventDefault || preventDefault;\n e.stopPropagation = e.stopPropagation || stopPropagation;\n return fn.call(element, e, x, y);\n };\n obj.attachEvent(\"on\" + type, f);\n var detacher = function () {\n obj.detachEvent(\"on\" + type, f);\n return true;\n };\n return detacher;\n };\n }\n })(),\n drag = [],\n dragMove = function (e) {\n var x = e.clientX,\n y = e.clientY,\n scrollY = g.doc.documentElement.scrollTop || g.doc.body.scrollTop,\n scrollX = g.doc.documentElement.scrollLeft || g.doc.body.scrollLeft,\n dragi,\n j = drag.length;\n while (j--) {\n dragi = drag[j];\n if (supportsTouch && e.touches) {\n var i = e.touches.length,\n touch;\n while (i--) {\n touch = e.touches[i];\n if (touch.identifier == dragi.el._drag.id) {\n x = touch.clientX;\n y = touch.clientY;\n (e.originalEvent ? e.originalEvent : e).preventDefault();\n break;\n }\n }\n } else {\n e.preventDefault();\n }\n var node = dragi.el.node,\n o,\n next = node.nextSibling,\n parent = node.parentNode,\n display = node.style.display;\n g.win.opera && parent.removeChild(node);\n node.style.display = \"none\";\n o = dragi.el.paper.getElementByPoint(x, y);\n node.style.display = display;\n g.win.opera && (next ? parent.insertBefore(node, next) : parent.appendChild(node));\n o && eve(\"raphael.drag.over.\" + dragi.el.id, dragi.el, o);\n x += scrollX;\n y += scrollY;\n eve(\"raphael.drag.move.\" + dragi.el.id, dragi.move_scope || dragi.el, x - dragi.el._drag.x, y - dragi.el._drag.y, x, y, e);\n }\n },\n dragUp = function (e) {\n R.unmousemove(dragMove).unmouseup(dragUp);\n var i = drag.length,\n dragi;\n while (i--) {\n dragi = drag[i];\n dragi.el._drag = {};\n eve(\"raphael.drag.end.\" + dragi.el.id, dragi.end_scope || dragi.start_scope || dragi.move_scope || dragi.el, e);\n }\n drag = [];\n },\n /*\\\n * Raphael.el\n [ property (object) ]\n **\n * You can add your own method to elements. This is useful when you want to hack default functionality or\n * want to wrap some common transformation or attributes in one method. In difference to canvas methods,\n * you can redefine element method at any time. Expending element methods wouldn’t affect set.\n > Usage\n | Raphael.el.red = function () {\n | this.attr({fill: \"#f00\"});\n | };\n | // then use it\n | paper.circle(100, 100, 20).red();\n \\*/\n elproto = R.el = {};\n /*\\\n * Element.click\n [ method ]\n **\n * Adds event handler for click for the element.\n > Parameters\n - handler (function) handler for the event\n = (object) @Element\n \\*/\n /*\\\n * Element.unclick\n [ method ]\n **\n * Removes event handler for click for the element.\n > Parameters\n - handler (function) #optional handler for the event\n = (object) @Element\n \\*/\n\n /*\\\n * Element.dblclick\n [ method ]\n **\n * Adds event handler for double click for the element.\n > Parameters\n - handler (function) handler for the event\n = (object) @Element\n \\*/\n /*\\\n * Element.undblclick\n [ method ]\n **\n * Removes event handler for double click for the element.\n > Parameters\n - handler (function) #optional handler for the event\n = (object) @Element\n \\*/\n\n /*\\\n * Element.mousedown\n [ method ]\n **\n * Adds event handler for mousedown for the element.\n > Parameters\n - handler (function) handler for the event\n = (object) @Element\n \\*/\n /*\\\n * Element.unmousedown\n [ method ]\n **\n * Removes event handler for mousedown for the element.\n > Parameters\n - handler (function) #optional handler for the event\n = (object) @Element\n \\*/\n\n /*\\\n * Element.mousemove\n [ method ]\n **\n * Adds event handler for mousemove for the element.\n > Parameters\n - handler (function) handler for the event\n = (object) @Element\n \\*/\n /*\\\n * Element.unmousemove\n [ method ]\n **\n * Removes event handler for mousemove for the element.\n > Parameters\n - handler (function) #optional handler for the event\n = (object) @Element\n \\*/\n\n /*\\\n * Element.mouseout\n [ method ]\n **\n * Adds event handler for mouseout for the element.\n > Parameters\n - handler (function) handler for the event\n = (object) @Element\n \\*/\n /*\\\n * Element.unmouseout\n [ method ]\n **\n * Removes event handler for mouseout for the element.\n > Parameters\n - handler (function) #optional handler for the event\n = (object) @Element\n \\*/\n\n /*\\\n * Element.mouseover\n [ method ]\n **\n * Adds event handler for mouseover for the element.\n > Parameters\n - handler (function) handler for the event\n = (object) @Element\n \\*/\n /*\\\n * Element.unmouseover\n [ method ]\n **\n * Removes event handler for mouseover for the element.\n > Parameters\n - handler (function) #optional handler for the event\n = (object) @Element\n \\*/\n\n /*\\\n * Element.mouseup\n [ method ]\n **\n * Adds event handler for mouseup for the element.\n > Parameters\n - handler (function) handler for the event\n = (object) @Element\n \\*/\n /*\\\n * Element.unmouseup\n [ method ]\n **\n * Removes event handler for mouseup for the element.\n > Parameters\n - handler (function) #optional handler for the event\n = (object) @Element\n \\*/\n\n /*\\\n * Element.touchstart\n [ method ]\n **\n * Adds event handler for touchstart for the element.\n > Parameters\n - handler (function) handler for the event\n = (object) @Element\n \\*/\n /*\\\n * Element.untouchstart\n [ method ]\n **\n * Removes event handler for touchstart for the element.\n > Parameters\n - handler (function) #optional handler for the event\n = (object) @Element\n \\*/\n\n /*\\\n * Element.touchmove\n [ method ]\n **\n * Adds event handler for touchmove for the element.\n > Parameters\n - handler (function) handler for the event\n = (object) @Element\n \\*/\n /*\\\n * Element.untouchmove\n [ method ]\n **\n * Removes event handler for touchmove for the element.\n > Parameters\n - handler (function) #optional handler for the event\n = (object) @Element\n \\*/\n\n /*\\\n * Element.touchend\n [ method ]\n **\n * Adds event handler for touchend for the element.\n > Parameters\n - handler (function) handler for the event\n = (object) @Element\n \\*/\n /*\\\n * Element.untouchend\n [ method ]\n **\n * Removes event handler for touchend for the element.\n > Parameters\n - handler (function) #optional handler for the event\n = (object) @Element\n \\*/\n\n /*\\\n * Element.touchcancel\n [ method ]\n **\n * Adds event handler for touchcancel for the element.\n > Parameters\n - handler (function) handler for the event\n = (object) @Element\n \\*/\n /*\\\n * Element.untouchcancel\n [ method ]\n **\n * Removes event handler for touchcancel for the element.\n > Parameters\n - handler (function) #optional handler for the event\n = (object) @Element\n \\*/\n for (var i = events.length; i--;) {\n (function (eventName) {\n R[eventName] = elproto[eventName] = function (fn, scope) {\n if (R.is(fn, \"function\")) {\n this.events = this.events || [];\n this.events.push({name: eventName, f: fn, unbind: addEvent(this.shape || this.node || g.doc, eventName, fn, scope || this)});\n }\n return this;\n };\n R[\"un\" + eventName] = elproto[\"un\" + eventName] = function (fn) {\n var events = this.events || [],\n l = events.length;\n while (l--){\n if (events[l].name == eventName && (R.is(fn, \"undefined\") || events[l].f == fn)) {\n events[l].unbind();\n events.splice(l, 1);\n !events.length && delete this.events;\n }\n }\n return this;\n };\n })(events[i]);\n }\n\n /*\\\n * Element.data\n [ method ]\n **\n * Adds or retrieves given value associated with given key.\n **\n * See also @Element.removeData\n > Parameters\n - key (string) key to store data\n - value (any) #optional value to store\n = (object) @Element\n * or, if value is not specified:\n = (any) value\n * or, if key and value are not specified:\n = (object) Key/value pairs for all the data associated with the element.\n > Usage\n | for (var i = 0, i < 5, i++) {\n | paper.circle(10 + 15 * i, 10, 10)\n | .attr({fill: \"#000\"})\n | .data(\"i\", i)\n | .click(function () {\n | alert(this.data(\"i\"));\n | });\n | }\n \\*/\n elproto.data = function (key, value) {\n var data = eldata[this.id] = eldata[this.id] || {};\n if (arguments.length == 0) {\n return data;\n }\n if (arguments.length == 1) {\n if (R.is(key, \"object\")) {\n for (var i in key) if (key[has](i)) {\n this.data(i, key[i]);\n }\n return this;\n }\n eve(\"raphael.data.get.\" + this.id, this, data[key], key);\n return data[key];\n }\n data[key] = value;\n eve(\"raphael.data.set.\" + this.id, this, value, key);\n return this;\n };\n /*\\\n * Element.removeData\n [ method ]\n **\n * Removes value associated with an element by given key.\n * If key is not provided, removes all the data of the element.\n > Parameters\n - key (string) #optional key\n = (object) @Element\n \\*/\n elproto.removeData = function (key) {\n if (key == null) {\n delete eldata[this.id];\n } else {\n eldata[this.id] && delete eldata[this.id][key];\n }\n return this;\n };\n /*\\\n * Element.getData\n [ method ]\n **\n * Retrieves the element data\n = (object) data\n \\*/\n elproto.getData = function () {\n return clone(eldata[this.id] || {});\n };\n /*\\\n * Element.hover\n [ method ]\n **\n * Adds event handlers for hover for the element.\n > Parameters\n - f_in (function) handler for hover in\n - f_out (function) handler for hover out\n - icontext (object) #optional context for hover in handler\n - ocontext (object) #optional context for hover out handler\n = (object) @Element\n \\*/\n elproto.hover = function (f_in, f_out, scope_in, scope_out) {\n return this.mouseover(f_in, scope_in).mouseout(f_out, scope_out || scope_in);\n };\n /*\\\n * Element.unhover\n [ method ]\n **\n * Removes event handlers for hover for the element.\n > Parameters\n - f_in (function) handler for hover in\n - f_out (function) handler for hover out\n = (object) @Element\n \\*/\n elproto.unhover = function (f_in, f_out) {\n return this.unmouseover(f_in).unmouseout(f_out);\n };\n var draggable = [];\n /*\\\n * Element.drag\n [ method ]\n **\n * Adds event handlers for drag of the element.\n > Parameters\n - onmove (function) handler for moving\n - onstart (function) handler for drag start\n - onend (function) handler for drag end\n - mcontext (object) #optional context for moving handler\n - scontext (object) #optional context for drag start handler\n - econtext (object) #optional context for drag end handler\n * Additionally following `drag` events will be triggered: `drag.start.` on start,\n * `drag.end.` on end and `drag.move.` on every move. When element will be dragged over another element\n * `drag.over.` will be fired as well.\n *\n * Start event and start handler will be called in specified context or in context of the element with following parameters:\n o x (number) x position of the mouse\n o y (number) y position of the mouse\n o event (object) DOM event object\n * Move event and move handler will be called in specified context or in context of the element with following parameters:\n o dx (number) shift by x from the start point\n o dy (number) shift by y from the start point\n o x (number) x position of the mouse\n o y (number) y position of the mouse\n o event (object) DOM event object\n * End event and end handler will be called in specified context or in context of the element with following parameters:\n o event (object) DOM event object\n = (object) @Element\n \\*/\n elproto.drag = function (onmove, onstart, onend, move_scope, start_scope, end_scope) {\n function start(e) {\n (e.originalEvent || e).preventDefault();\n var x = e.clientX,\n y = e.clientY,\n scrollY = g.doc.documentElement.scrollTop || g.doc.body.scrollTop,\n scrollX = g.doc.documentElement.scrollLeft || g.doc.body.scrollLeft;\n this._drag.id = e.identifier;\n if (supportsTouch && e.touches) {\n var i = e.touches.length, touch;\n while (i--) {\n touch = e.touches[i];\n this._drag.id = touch.identifier;\n if (touch.identifier == this._drag.id) {\n x = touch.clientX;\n y = touch.clientY;\n break;\n }\n }\n }\n this._drag.x = x + scrollX;\n this._drag.y = y + scrollY;\n !drag.length && R.mousemove(dragMove).mouseup(dragUp);\n drag.push({el: this, move_scope: move_scope, start_scope: start_scope, end_scope: end_scope});\n onstart && eve.on(\"raphael.drag.start.\" + this.id, onstart);\n onmove && eve.on(\"raphael.drag.move.\" + this.id, onmove);\n onend && eve.on(\"raphael.drag.end.\" + this.id, onend);\n eve(\"raphael.drag.start.\" + this.id, start_scope || move_scope || this, this._drag.x, this._drag.y, e);\n }\n this._drag = {};\n draggable.push({el: this, start: start});\n this.mousedown(start);\n return this;\n };\n /*\\\n * Element.onDragOver\n [ method ]\n **\n * Shortcut for assigning event handler for `drag.over.` event, where id is id of the element (see @Element.id).\n > Parameters\n - f (function) handler for event, first argument would be the element you are dragging over\n \\*/\n elproto.onDragOver = function (f) {\n f ? eve.on(\"raphael.drag.over.\" + this.id, f) : eve.unbind(\"raphael.drag.over.\" + this.id);\n };\n /*\\\n * Element.undrag\n [ method ]\n **\n * Removes all drag event handlers from given element.\n \\*/\n elproto.undrag = function () {\n var i = draggable.length;\n while (i--) if (draggable[i].el == this) {\n this.unmousedown(draggable[i].start);\n draggable.splice(i, 1);\n eve.unbind(\"raphael.drag.*.\" + this.id);\n }\n !draggable.length && R.unmousemove(dragMove).unmouseup(dragUp);\n drag = [];\n };\n /*\\\n * Paper.circle\n [ method ]\n **\n * Draws a circle.\n **\n > Parameters\n **\n - x (number) x coordinate of the centre\n - y (number) y coordinate of the centre\n - r (number) radius\n = (object) Raphaël element object with type “circle”\n **\n > Usage\n | var c = paper.circle(50, 50, 40);\n \\*/\n paperproto.circle = function (x, y, r) {\n var out = R._engine.circle(this, x || 0, y || 0, r || 0);\n this.__set__ && this.__set__.push(out);\n return out;\n };\n /*\\\n * Paper.rect\n [ method ]\n *\n * Draws a rectangle.\n **\n > Parameters\n **\n - x (number) x coordinate of the top left corner\n - y (number) y coordinate of the top left corner\n - width (number) width\n - height (number) height\n - r (number) #optional radius for rounded corners, default is 0\n = (object) Raphaël element object with type “rect”\n **\n > Usage\n | // regular rectangle\n | var c = paper.rect(10, 10, 50, 50);\n | // rectangle with rounded corners\n | var c = paper.rect(40, 40, 50, 50, 10);\n \\*/\n paperproto.rect = function (x, y, w, h, r) {\n var out = R._engine.rect(this, x || 0, y || 0, w || 0, h || 0, r || 0);\n this.__set__ && this.__set__.push(out);\n return out;\n };\n /*\\\n * Paper.ellipse\n [ method ]\n **\n * Draws an ellipse.\n **\n > Parameters\n **\n - x (number) x coordinate of the centre\n - y (number) y coordinate of the centre\n - rx (number) horizontal radius\n - ry (number) vertical radius\n = (object) Raphaël element object with type “ellipse”\n **\n > Usage\n | var c = paper.ellipse(50, 50, 40, 20);\n \\*/\n paperproto.ellipse = function (x, y, rx, ry) {\n var out = R._engine.ellipse(this, x || 0, y || 0, rx || 0, ry || 0);\n this.__set__ && this.__set__.push(out);\n return out;\n };\n /*\\\n * Paper.path\n [ method ]\n **\n * Creates a path element by given path data string.\n > Parameters\n - pathString (string) #optional path string in SVG format.\n * Path string consists of one-letter commands, followed by comma seprarated arguments in numercal form. Example:\n | \"M10,20L30,40\"\n * Here we can see two commands: “M”, with arguments `(10, 20)` and “L” with arguments `(30, 40)`. Upper case letter mean command is absolute, lower case—relative.\n *\n #

Here is short list of commands available, for more details see SVG path string format.

\n # \n # \n # \n # \n # \n # \n # \n # \n # \n # \n # \n #
CommandNameParameters
Mmoveto(x y)+
Zclosepath(none)
Llineto(x y)+
Hhorizontal linetox+
Vvertical linetoy+
Ccurveto(x1 y1 x2 y2 x y)+
Ssmooth curveto(x2 y2 x y)+
Qquadratic Bézier curveto(x1 y1 x y)+
Tsmooth quadratic Bézier curveto(x y)+
Aelliptical arc(rx ry x-axis-rotation large-arc-flag sweep-flag x y)+
RCatmull-Rom curveto*x1 y1 (x y)+
\n * * “Catmull-Rom curveto” is a not standard SVG command and added in 2.0 to make life easier.\n * Note: there is a special case when path consist of just three commands: “M10,10R…z”. In this case path will smoothly connects to its beginning.\n > Usage\n | var c = paper.path(\"M10 10L90 90\");\n | // draw a diagonal line:\n | // move to 10,10, line to 90,90\n * For example of path strings, check out these icons: http://raphaeljs.com/icons/\n \\*/\n paperproto.path = function (pathString) {\n pathString && !R.is(pathString, string) && !R.is(pathString[0], array) && (pathString += E);\n var out = R._engine.path(R.format[apply](R, arguments), this);\n this.__set__ && this.__set__.push(out);\n return out;\n };\n /*\\\n * Paper.image\n [ method ]\n **\n * Embeds an image into the surface.\n **\n > Parameters\n **\n - src (string) URI of the source image\n - x (number) x coordinate position\n - y (number) y coordinate position\n - width (number) width of the image\n - height (number) height of the image\n = (object) Raphaël element object with type “image”\n **\n > Usage\n | var c = paper.image(\"apple.png\", 10, 10, 80, 80);\n \\*/\n paperproto.image = function (src, x, y, w, h) {\n var out = R._engine.image(this, src || \"about:blank\", x || 0, y || 0, w || 0, h || 0);\n this.__set__ && this.__set__.push(out);\n return out;\n };\n /*\\\n * Paper.text\n [ method ]\n **\n * Draws a text string. If you need line breaks, put “\\n” in the string.\n **\n > Parameters\n **\n - x (number) x coordinate position\n - y (number) y coordinate position\n - text (string) The text string to draw\n = (object) Raphaël element object with type “text”\n **\n > Usage\n | var t = paper.text(50, 50, \"Raphaël\\nkicks\\nbutt!\");\n \\*/\n paperproto.text = function (x, y, text) {\n var out = R._engine.text(this, x || 0, y || 0, Str(text));\n this.__set__ && this.__set__.push(out);\n return out;\n };\n /*\\\n * Paper.set\n [ method ]\n **\n * Creates array-like object to keep and operate several elements at once.\n * Warning: it doesn’t create any elements for itself in the page, it just groups existing elements.\n * Sets act as pseudo elements — all methods available to an element can be used on a set.\n = (object) array-like object that represents set of elements\n **\n > Usage\n | var st = paper.set();\n | st.push(\n | paper.circle(10, 10, 5),\n | paper.circle(30, 10, 5)\n | );\n | st.attr({fill: \"red\"}); // changes the fill of both circles\n \\*/\n paperproto.set = function (itemsArray) {\n !R.is(itemsArray, \"array\") && (itemsArray = Array.prototype.splice.call(arguments, 0, arguments.length));\n var out = new Set(itemsArray);\n this.__set__ && this.__set__.push(out);\n out[\"paper\"] = this;\n out[\"type\"] = \"set\";\n return out;\n };\n /*\\\n * Paper.setStart\n [ method ]\n **\n * Creates @Paper.set. All elements that will be created after calling this method and before calling\n * @Paper.setFinish will be added to the set.\n **\n > Usage\n | paper.setStart();\n | paper.circle(10, 10, 5),\n | paper.circle(30, 10, 5)\n | var st = paper.setFinish();\n | st.attr({fill: \"red\"}); // changes the fill of both circles\n \\*/\n paperproto.setStart = function (set) {\n this.__set__ = set || this.set();\n };\n /*\\\n * Paper.setFinish\n [ method ]\n **\n * See @Paper.setStart. This method finishes catching and returns resulting set.\n **\n = (object) set\n \\*/\n paperproto.setFinish = function (set) {\n var out = this.__set__;\n delete this.__set__;\n return out;\n };\n /*\\\n * Paper.getSize\n [ method ]\n **\n * Obtains current paper actual size.\n **\n = (object)\n \\*/\n paperproto.getSize = function () {\n var container = this.canvas.parentNode;\n return {\n width: container.offsetWidth,\n height: container.offsetHeight\n };\n };\n /*\\\n * Paper.setSize\n [ method ]\n **\n * If you need to change dimensions of the canvas call this method\n **\n > Parameters\n **\n - width (number) new width of the canvas\n - height (number) new height of the canvas\n \\*/\n paperproto.setSize = function (width, height) {\n return R._engine.setSize.call(this, width, height);\n };\n /*\\\n * Paper.setViewBox\n [ method ]\n **\n * Sets the view box of the paper. Practically it gives you ability to zoom and pan whole paper surface by\n * specifying new boundaries.\n **\n > Parameters\n **\n - x (number) new x position, default is `0`\n - y (number) new y position, default is `0`\n - w (number) new width of the canvas\n - h (number) new height of the canvas\n - fit (boolean) `true` if you want graphics to fit into new boundary box\n \\*/\n paperproto.setViewBox = function (x, y, w, h, fit) {\n return R._engine.setViewBox.call(this, x, y, w, h, fit);\n };\n /*\\\n * Paper.top\n [ property ]\n **\n * Points to the topmost element on the paper\n \\*/\n /*\\\n * Paper.bottom\n [ property ]\n **\n * Points to the bottom element on the paper\n \\*/\n paperproto.top = paperproto.bottom = null;\n /*\\\n * Paper.raphael\n [ property ]\n **\n * Points to the @Raphael object/function\n \\*/\n paperproto.raphael = R;\n var getOffset = function (elem) {\n var box = elem.getBoundingClientRect(),\n doc = elem.ownerDocument,\n body = doc.body,\n docElem = doc.documentElement,\n clientTop = docElem.clientTop || body.clientTop || 0, clientLeft = docElem.clientLeft || body.clientLeft || 0,\n top = box.top + (g.win.pageYOffset || docElem.scrollTop || body.scrollTop ) - clientTop,\n left = box.left + (g.win.pageXOffset || docElem.scrollLeft || body.scrollLeft) - clientLeft;\n return {\n y: top,\n x: left\n };\n };\n /*\\\n * Paper.getElementByPoint\n [ method ]\n **\n * Returns you topmost element under given point.\n **\n = (object) Raphaël element object\n > Parameters\n **\n - x (number) x coordinate from the top left corner of the window\n - y (number) y coordinate from the top left corner of the window\n > Usage\n | paper.getElementByPoint(mouseX, mouseY).attr({stroke: \"#f00\"});\n \\*/\n paperproto.getElementByPoint = function (x, y) {\n var paper = this,\n svg = paper.canvas,\n target = g.doc.elementFromPoint(x, y);\n if (g.win.opera && target.tagName == \"svg\") {\n var so = getOffset(svg),\n sr = svg.createSVGRect();\n sr.x = x - so.x;\n sr.y = y - so.y;\n sr.width = sr.height = 1;\n var hits = svg.getIntersectionList(sr, null);\n if (hits.length) {\n target = hits[hits.length - 1];\n }\n }\n if (!target) {\n return null;\n }\n while (target.parentNode && target != svg.parentNode && !target.raphael) {\n target = target.parentNode;\n }\n target == paper.canvas.parentNode && (target = svg);\n target = target && target.raphael ? paper.getById(target.raphaelid) : null;\n return target;\n };\n\n /*\\\n * Paper.getElementsByBBox\n [ method ]\n **\n * Returns set of elements that have an intersecting bounding box\n **\n > Parameters\n **\n - bbox (object) bbox to check with\n = (object) @Set\n \\*/\n paperproto.getElementsByBBox = function (bbox) {\n var set = this.set();\n this.forEach(function (el) {\n if (R.isBBoxIntersect(el.getBBox(), bbox)) {\n set.push(el);\n }\n });\n return set;\n };\n\n /*\\\n * Paper.getById\n [ method ]\n **\n * Returns you element by its internal ID.\n **\n > Parameters\n **\n - id (number) id\n = (object) Raphaël element object\n \\*/\n paperproto.getById = function (id) {\n var bot = this.bottom;\n while (bot) {\n if (bot.id == id) {\n return bot;\n }\n bot = bot.next;\n }\n return null;\n };\n /*\\\n * Paper.forEach\n [ method ]\n **\n * Executes given function for each element on the paper\n *\n * If callback function returns `false` it will stop loop running.\n **\n > Parameters\n **\n - callback (function) function to run\n - thisArg (object) context object for the callback\n = (object) Paper object\n > Usage\n | paper.forEach(function (el) {\n | el.attr({ stroke: \"blue\" });\n | });\n \\*/\n paperproto.forEach = function (callback, thisArg) {\n var bot = this.bottom;\n while (bot) {\n if (callback.call(thisArg, bot) === false) {\n return this;\n }\n bot = bot.next;\n }\n return this;\n };\n /*\\\n * Paper.getElementsByPoint\n [ method ]\n **\n * Returns set of elements that have common point inside\n **\n > Parameters\n **\n - x (number) x coordinate of the point\n - y (number) y coordinate of the point\n = (object) @Set\n \\*/\n paperproto.getElementsByPoint = function (x, y) {\n var set = this.set();\n this.forEach(function (el) {\n if (el.isPointInside(x, y)) {\n set.push(el);\n }\n });\n return set;\n };\n function x_y() {\n return this.x + S + this.y;\n }\n function x_y_w_h() {\n return this.x + S + this.y + S + this.width + \" \\xd7 \" + this.height;\n }\n /*\\\n * Element.isPointInside\n [ method ]\n **\n * Determine if given point is inside this element’s shape\n **\n > Parameters\n **\n - x (number) x coordinate of the point\n - y (number) y coordinate of the point\n = (boolean) `true` if point inside the shape\n \\*/\n elproto.isPointInside = function (x, y) {\n var rp = this.realPath = getPath[this.type](this);\n if (this.attr('transform') && this.attr('transform').length) {\n rp = R.transformPath(rp, this.attr('transform'));\n }\n return R.isPointInsidePath(rp, x, y);\n };\n /*\\\n * Element.getBBox\n [ method ]\n **\n * Return bounding box for a given element\n **\n > Parameters\n **\n - isWithoutTransform (boolean) flag, `true` if you want to have bounding box before transformations. Default is `false`.\n = (object) Bounding box object:\n o {\n o x: (number) top left corner x\n o y: (number) top left corner y\n o x2: (number) bottom right corner x\n o y2: (number) bottom right corner y\n o width: (number) width\n o height: (number) height\n o }\n \\*/\n elproto.getBBox = function (isWithoutTransform) {\n if (this.removed) {\n return {};\n }\n var _ = this._;\n if (isWithoutTransform) {\n if (_.dirty || !_.bboxwt) {\n this.realPath = getPath[this.type](this);\n _.bboxwt = pathDimensions(this.realPath);\n _.bboxwt.toString = x_y_w_h;\n _.dirty = 0;\n }\n return _.bboxwt;\n }\n if (_.dirty || _.dirtyT || !_.bbox) {\n if (_.dirty || !this.realPath) {\n _.bboxwt = 0;\n this.realPath = getPath[this.type](this);\n }\n _.bbox = pathDimensions(mapPath(this.realPath, this.matrix));\n _.bbox.toString = x_y_w_h;\n _.dirty = _.dirtyT = 0;\n }\n return _.bbox;\n };\n /*\\\n * Element.clone\n [ method ]\n **\n = (object) clone of a given element\n **\n \\*/\n elproto.clone = function () {\n if (this.removed) {\n return null;\n }\n var out = this.paper[this.type]().attr(this.attr());\n this.__set__ && this.__set__.push(out);\n return out;\n };\n /*\\\n * Element.glow\n [ method ]\n **\n * Return set of elements that create glow-like effect around given element. See @Paper.set.\n *\n * Note: Glow is not connected to the element. If you change element attributes it won’t adjust itself.\n **\n > Parameters\n **\n - glow (object) #optional parameters object with all properties optional:\n o {\n o width (number) size of the glow, default is `10`\n o fill (boolean) will it be filled, default is `false`\n o opacity (number) opacity, default is `0.5`\n o offsetx (number) horizontal offset, default is `0`\n o offsety (number) vertical offset, default is `0`\n o color (string) glow colour, default is `black`\n o }\n = (object) @Paper.set of elements that represents glow\n \\*/\n elproto.glow = function (glow) {\n if (this.type == \"text\") {\n return null;\n }\n glow = glow || {};\n var s = {\n width: (glow.width || 10) + (+this.attr(\"stroke-width\") || 1),\n fill: glow.fill || false,\n opacity: glow.opacity == null ? .5 : glow.opacity,\n offsetx: glow.offsetx || 0,\n offsety: glow.offsety || 0,\n color: glow.color || \"#000\"\n },\n c = s.width / 2,\n r = this.paper,\n out = r.set(),\n path = this.realPath || getPath[this.type](this);\n path = this.matrix ? mapPath(path, this.matrix) : path;\n for (var i = 1; i < c + 1; i++) {\n out.push(r.path(path).attr({\n stroke: s.color,\n fill: s.fill ? s.color : \"none\",\n \"stroke-linejoin\": \"round\",\n \"stroke-linecap\": \"round\",\n \"stroke-width\": +(s.width / c * i).toFixed(3),\n opacity: +(s.opacity / c).toFixed(3)\n }));\n }\n return out.insertBefore(this).translate(s.offsetx, s.offsety);\n };\n var curveslengths = {},\n getPointAtSegmentLength = function (p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, length) {\n if (length == null) {\n return bezlen(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y);\n } else {\n return R.findDotsAtSegment(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, getTatLen(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, length));\n }\n },\n getLengthFactory = function (istotal, subpath) {\n return function (path, length, onlystart) {\n path = path2curve(path);\n var x, y, p, l, sp = \"\", subpaths = {}, point,\n len = 0;\n for (var i = 0, ii = path.length; i < ii; i++) {\n p = path[i];\n if (p[0] == \"M\") {\n x = +p[1];\n y = +p[2];\n } else {\n l = getPointAtSegmentLength(x, y, p[1], p[2], p[3], p[4], p[5], p[6]);\n if (len + l > length) {\n if (subpath && !subpaths.start) {\n point = getPointAtSegmentLength(x, y, p[1], p[2], p[3], p[4], p[5], p[6], length - len);\n sp += [\"C\" + point.start.x, point.start.y, point.m.x, point.m.y, point.x, point.y];\n if (onlystart) {return sp;}\n subpaths.start = sp;\n sp = [\"M\" + point.x, point.y + \"C\" + point.n.x, point.n.y, point.end.x, point.end.y, p[5], p[6]].join();\n len += l;\n x = +p[5];\n y = +p[6];\n continue;\n }\n if (!istotal && !subpath) {\n point = getPointAtSegmentLength(x, y, p[1], p[2], p[3], p[4], p[5], p[6], length - len);\n return {x: point.x, y: point.y, alpha: point.alpha};\n }\n }\n len += l;\n x = +p[5];\n y = +p[6];\n }\n sp += p.shift() + p;\n }\n subpaths.end = sp;\n point = istotal ? len : subpath ? subpaths : R.findDotsAtSegment(x, y, p[0], p[1], p[2], p[3], p[4], p[5], 1);\n point.alpha && (point = {x: point.x, y: point.y, alpha: point.alpha});\n return point;\n };\n };\n var getTotalLength = getLengthFactory(1),\n getPointAtLength = getLengthFactory(),\n getSubpathsAtLength = getLengthFactory(0, 1);\n /*\\\n * Raphael.getTotalLength\n [ method ]\n **\n * Returns length of the given path in pixels.\n **\n > Parameters\n **\n - path (string) SVG path string.\n **\n = (number) length.\n \\*/\n R.getTotalLength = getTotalLength;\n /*\\\n * Raphael.getPointAtLength\n [ method ]\n **\n * Return coordinates of the point located at the given length on the given path.\n **\n > Parameters\n **\n - path (string) SVG path string\n - length (number)\n **\n = (object) representation of the point:\n o {\n o x: (number) x coordinate\n o y: (number) y coordinate\n o alpha: (number) angle of derivative\n o }\n \\*/\n R.getPointAtLength = getPointAtLength;\n /*\\\n * Raphael.getSubpath\n [ method ]\n **\n * Return subpath of a given path from given length to given length.\n **\n > Parameters\n **\n - path (string) SVG path string\n - from (number) position of the start of the segment\n - to (number) position of the end of the segment\n **\n = (string) pathstring for the segment\n \\*/\n R.getSubpath = function (path, from, to) {\n if (this.getTotalLength(path) - to < 1e-6) {\n return getSubpathsAtLength(path, from).end;\n }\n var a = getSubpathsAtLength(path, to, 1);\n return from ? getSubpathsAtLength(a, from).end : a;\n };\n /*\\\n * Element.getTotalLength\n [ method ]\n **\n * Returns length of the path in pixels. Only works for element of “path” type.\n = (number) length.\n \\*/\n elproto.getTotalLength = function () {\n var path = this.getPath();\n if (!path) {\n return;\n }\n\n if (this.node.getTotalLength) {\n return this.node.getTotalLength();\n }\n\n return getTotalLength(path);\n };\n /*\\\n * Element.getPointAtLength\n [ method ]\n **\n * Return coordinates of the point located at the given length on the given path. Only works for element of “path” type.\n **\n > Parameters\n **\n - length (number)\n **\n = (object) representation of the point:\n o {\n o x: (number) x coordinate\n o y: (number) y coordinate\n o alpha: (number) angle of derivative\n o }\n \\*/\n elproto.getPointAtLength = function (length) {\n var path = this.getPath();\n if (!path) {\n return;\n }\n\n return getPointAtLength(path, length);\n };\n /*\\\n * Element.getPath\n [ method ]\n **\n * Returns path of the element. Only works for elements of “path” type and simple elements like circle.\n = (object) path\n **\n \\*/\n elproto.getPath = function () {\n var path,\n getPath = R._getPath[this.type];\n\n if (this.type == \"text\" || this.type == \"set\") {\n return;\n }\n\n if (getPath) {\n path = getPath(this);\n }\n\n return path;\n };\n /*\\\n * Element.getSubpath\n [ method ]\n **\n * Return subpath of a given element from given length to given length. Only works for element of “path” type.\n **\n > Parameters\n **\n - from (number) position of the start of the segment\n - to (number) position of the end of the segment\n **\n = (string) pathstring for the segment\n \\*/\n elproto.getSubpath = function (from, to) {\n var path = this.getPath();\n if (!path) {\n return;\n }\n\n return R.getSubpath(path, from, to);\n };\n /*\\\n * Raphael.easing_formulas\n [ property ]\n **\n * Object that contains easing formulas for animation. You could extend it with your own. By default it has following list of easing:\n #
    \n #
  • “linear”
  • \n #
  • “<” or “easeIn” or “ease-in”
  • \n #
  • “>” or “easeOut” or “ease-out”
  • \n #
  • “<>” or “easeInOut” or “ease-in-out”
  • \n #
  • “backIn” or “back-in”
  • \n #
  • “backOut” or “back-out”
  • \n #
  • “elastic”
  • \n #
  • “bounce”
  • \n #
\n #

See also Easing demo.

\n \\*/\n var ef = R.easing_formulas = {\n linear: function (n) {\n return n;\n },\n \"<\": function (n) {\n return pow(n, 1.7);\n },\n \">\": function (n) {\n return pow(n, .48);\n },\n \"<>\": function (n) {\n var q = .48 - n / 1.04,\n Q = math.sqrt(.1734 + q * q),\n x = Q - q,\n X = pow(abs(x), 1 / 3) * (x < 0 ? -1 : 1),\n y = -Q - q,\n Y = pow(abs(y), 1 / 3) * (y < 0 ? -1 : 1),\n t = X + Y + .5;\n return (1 - t) * 3 * t * t + t * t * t;\n },\n backIn: function (n) {\n var s = 1.70158;\n return n * n * ((s + 1) * n - s);\n },\n backOut: function (n) {\n n = n - 1;\n var s = 1.70158;\n return n * n * ((s + 1) * n + s) + 1;\n },\n elastic: function (n) {\n if (n == !!n) {\n return n;\n }\n return pow(2, -10 * n) * math.sin((n - .075) * (2 * PI) / .3) + 1;\n },\n bounce: function (n) {\n var s = 7.5625,\n p = 2.75,\n l;\n if (n < (1 / p)) {\n l = s * n * n;\n } else {\n if (n < (2 / p)) {\n n -= (1.5 / p);\n l = s * n * n + .75;\n } else {\n if (n < (2.5 / p)) {\n n -= (2.25 / p);\n l = s * n * n + .9375;\n } else {\n n -= (2.625 / p);\n l = s * n * n + .984375;\n }\n }\n }\n return l;\n }\n };\n ef.easeIn = ef[\"ease-in\"] = ef[\"<\"];\n ef.easeOut = ef[\"ease-out\"] = ef[\">\"];\n ef.easeInOut = ef[\"ease-in-out\"] = ef[\"<>\"];\n ef[\"back-in\"] = ef.backIn;\n ef[\"back-out\"] = ef.backOut;\n\n var animationElements = [],\n requestAnimFrame = window.requestAnimationFrame ||\n window.webkitRequestAnimationFrame ||\n window.mozRequestAnimationFrame ||\n window.oRequestAnimationFrame ||\n window.msRequestAnimationFrame ||\n function (callback) {\n setTimeout(callback, 16);\n },\n animation = function () {\n var Now = +new Date,\n l = 0;\n for (; l < animationElements.length; l++) {\n var e = animationElements[l];\n if (e.el.removed || e.paused) {\n continue;\n }\n var time = Now - e.start,\n ms = e.ms,\n easing = e.easing,\n from = e.from,\n diff = e.diff,\n to = e.to,\n t = e.t,\n that = e.el,\n set = {},\n now,\n init = {},\n key;\n if (e.initstatus) {\n time = (e.initstatus * e.anim.top - e.prev) / (e.percent - e.prev) * ms;\n e.status = e.initstatus;\n delete e.initstatus;\n e.stop && animationElements.splice(l--, 1);\n } else {\n e.status = (e.prev + (e.percent - e.prev) * (time / ms)) / e.anim.top;\n }\n if (time < 0) {\n continue;\n }\n if (time < ms) {\n var pos = easing(time / ms);\n for (var attr in from) if (from[has](attr)) {\n switch (availableAnimAttrs[attr]) {\n case nu:\n now = +from[attr] + pos * ms * diff[attr];\n break;\n case \"colour\":\n now = \"rgb(\" + [\n upto255(round(from[attr].r + pos * ms * diff[attr].r)),\n upto255(round(from[attr].g + pos * ms * diff[attr].g)),\n upto255(round(from[attr].b + pos * ms * diff[attr].b))\n ].join(\",\") + \")\";\n break;\n case \"path\":\n now = [];\n for (var i = 0, ii = from[attr].length; i < ii; i++) {\n now[i] = [from[attr][i][0]];\n for (var j = 1, jj = from[attr][i].length; j < jj; j++) {\n now[i][j] = +from[attr][i][j] + pos * ms * diff[attr][i][j];\n }\n now[i] = now[i].join(S);\n }\n now = now.join(S);\n break;\n case \"transform\":\n if (diff[attr].real) {\n now = [];\n for (i = 0, ii = from[attr].length; i < ii; i++) {\n now[i] = [from[attr][i][0]];\n for (j = 1, jj = from[attr][i].length; j < jj; j++) {\n now[i][j] = from[attr][i][j] + pos * ms * diff[attr][i][j];\n }\n }\n } else {\n var get = function (i) {\n return +from[attr][i] + pos * ms * diff[attr][i];\n };\n // now = [[\"r\", get(2), 0, 0], [\"t\", get(3), get(4)], [\"s\", get(0), get(1), 0, 0]];\n now = [[\"m\", get(0), get(1), get(2), get(3), get(4), get(5)]];\n }\n break;\n case \"csv\":\n if (attr == \"clip-rect\") {\n now = [];\n i = 4;\n while (i--) {\n now[i] = +from[attr][i] + pos * ms * diff[attr][i];\n }\n }\n break;\n default:\n var from2 = [][concat](from[attr]);\n now = [];\n i = that.paper.customAttributes[attr].length;\n while (i--) {\n now[i] = +from2[i] + pos * ms * diff[attr][i];\n }\n break;\n }\n set[attr] = now;\n }\n that.attr(set);\n (function (id, that, anim) {\n setTimeout(function () {\n eve(\"raphael.anim.frame.\" + id, that, anim);\n });\n })(that.id, that, e.anim);\n } else {\n (function(f, el, a) {\n setTimeout(function() {\n eve(\"raphael.anim.frame.\" + el.id, el, a);\n eve(\"raphael.anim.finish.\" + el.id, el, a);\n R.is(f, \"function\") && f.call(el);\n });\n })(e.callback, that, e.anim);\n that.attr(to);\n animationElements.splice(l--, 1);\n if (e.repeat > 1 && !e.next) {\n for (key in to) if (to[has](key)) {\n init[key] = e.totalOrigin[key];\n }\n e.el.attr(init);\n runAnimation(e.anim, e.el, e.anim.percents[0], null, e.totalOrigin, e.repeat - 1);\n }\n if (e.next && !e.stop) {\n runAnimation(e.anim, e.el, e.next, null, e.totalOrigin, e.repeat);\n }\n }\n }\n animationElements.length && requestAnimFrame(animation);\n },\n upto255 = function (color) {\n return color > 255 ? 255 : color < 0 ? 0 : color;\n };\n /*\\\n * Element.animateWith\n [ method ]\n **\n * Acts similar to @Element.animate, but ensure that given animation runs in sync with another given element.\n **\n > Parameters\n **\n - el (object) element to sync with\n - anim (object) animation to sync with\n - params (object) #optional final attributes for the element, see also @Element.attr\n - ms (number) #optional number of milliseconds for animation to run\n - easing (string) #optional easing type. Accept on of @Raphael.easing_formulas or CSS format: `cubic‐bezier(XX, XX, XX, XX)`\n - callback (function) #optional callback function. Will be called at the end of animation.\n * or\n - element (object) element to sync with\n - anim (object) animation to sync with\n - animation (object) #optional animation object, see @Raphael.animation\n **\n = (object) original element\n \\*/\n elproto.animateWith = function (el, anim, params, ms, easing, callback) {\n var element = this;\n if (element.removed) {\n callback && callback.call(element);\n return element;\n }\n var a = params instanceof Animation ? params : R.animation(params, ms, easing, callback),\n x, y;\n runAnimation(a, element, a.percents[0], null, element.attr());\n for (var i = 0, ii = animationElements.length; i < ii; i++) {\n if (animationElements[i].anim == anim && animationElements[i].el == el) {\n animationElements[ii - 1].start = animationElements[i].start;\n break;\n }\n }\n return element;\n //\n //\n // var a = params ? R.animation(params, ms, easing, callback) : anim,\n // status = element.status(anim);\n // return this.animate(a).status(a, status * anim.ms / a.ms);\n };\n function CubicBezierAtTime(t, p1x, p1y, p2x, p2y, duration) {\n var cx = 3 * p1x,\n bx = 3 * (p2x - p1x) - cx,\n ax = 1 - cx - bx,\n cy = 3 * p1y,\n by = 3 * (p2y - p1y) - cy,\n ay = 1 - cy - by;\n function sampleCurveX(t) {\n return ((ax * t + bx) * t + cx) * t;\n }\n function solve(x, epsilon) {\n var t = solveCurveX(x, epsilon);\n return ((ay * t + by) * t + cy) * t;\n }\n function solveCurveX(x, epsilon) {\n var t0, t1, t2, x2, d2, i;\n for(t2 = x, i = 0; i < 8; i++) {\n x2 = sampleCurveX(t2) - x;\n if (abs(x2) < epsilon) {\n return t2;\n }\n d2 = (3 * ax * t2 + 2 * bx) * t2 + cx;\n if (abs(d2) < 1e-6) {\n break;\n }\n t2 = t2 - x2 / d2;\n }\n t0 = 0;\n t1 = 1;\n t2 = x;\n if (t2 < t0) {\n return t0;\n }\n if (t2 > t1) {\n return t1;\n }\n while (t0 < t1) {\n x2 = sampleCurveX(t2);\n if (abs(x2 - x) < epsilon) {\n return t2;\n }\n if (x > x2) {\n t0 = t2;\n } else {\n t1 = t2;\n }\n t2 = (t1 - t0) / 2 + t0;\n }\n return t2;\n }\n return solve(t, 1 / (200 * duration));\n }\n elproto.onAnimation = function (f) {\n f ? eve.on(\"raphael.anim.frame.\" + this.id, f) : eve.unbind(\"raphael.anim.frame.\" + this.id);\n return this;\n };\n function Animation(anim, ms) {\n var percents = [],\n newAnim = {};\n this.ms = ms;\n this.times = 1;\n if (anim) {\n for (var attr in anim) if (anim[has](attr)) {\n newAnim[toFloat(attr)] = anim[attr];\n percents.push(toFloat(attr));\n }\n percents.sort(sortByNumber);\n }\n this.anim = newAnim;\n this.top = percents[percents.length - 1];\n this.percents = percents;\n }\n /*\\\n * Animation.delay\n [ method ]\n **\n * Creates a copy of existing animation object with given delay.\n **\n > Parameters\n **\n - delay (number) number of ms to pass between animation start and actual animation\n **\n = (object) new altered Animation object\n | var anim = Raphael.animation({cx: 10, cy: 20}, 2e3);\n | circle1.animate(anim); // run the given animation immediately\n | circle2.animate(anim.delay(500)); // run the given animation after 500 ms\n \\*/\n Animation.prototype.delay = function (delay) {\n var a = new Animation(this.anim, this.ms);\n a.times = this.times;\n a.del = +delay || 0;\n return a;\n };\n /*\\\n * Animation.repeat\n [ method ]\n **\n * Creates a copy of existing animation object with given repetition.\n **\n > Parameters\n **\n - repeat (number) number iterations of animation. For infinite animation pass `Infinity`\n **\n = (object) new altered Animation object\n \\*/\n Animation.prototype.repeat = function (times) {\n var a = new Animation(this.anim, this.ms);\n a.del = this.del;\n a.times = math.floor(mmax(times, 0)) || 1;\n return a;\n };\n function runAnimation(anim, element, percent, status, totalOrigin, times) {\n percent = toFloat(percent);\n var params,\n isInAnim,\n isInAnimSet,\n percents = [],\n next,\n prev,\n timestamp,\n ms = anim.ms,\n from = {},\n to = {},\n diff = {};\n if (status) {\n for (i = 0, ii = animationElements.length; i < ii; i++) {\n var e = animationElements[i];\n if (e.el.id == element.id && e.anim == anim) {\n if (e.percent != percent) {\n animationElements.splice(i, 1);\n isInAnimSet = 1;\n } else {\n isInAnim = e;\n }\n element.attr(e.totalOrigin);\n break;\n }\n }\n } else {\n status = +to; // NaN\n }\n for (var i = 0, ii = anim.percents.length; i < ii; i++) {\n if (anim.percents[i] == percent || anim.percents[i] > status * anim.top) {\n percent = anim.percents[i];\n prev = anim.percents[i - 1] || 0;\n ms = ms / anim.top * (percent - prev);\n next = anim.percents[i + 1];\n params = anim.anim[percent];\n break;\n } else if (status) {\n element.attr(anim.anim[anim.percents[i]]);\n }\n }\n if (!params) {\n return;\n }\n if (!isInAnim) {\n for (var attr in params) if (params[has](attr)) {\n if (availableAnimAttrs[has](attr) || element.paper.customAttributes[has](attr)) {\n from[attr] = element.attr(attr);\n (from[attr] == null) && (from[attr] = availableAttrs[attr]);\n to[attr] = params[attr];\n switch (availableAnimAttrs[attr]) {\n case nu:\n diff[attr] = (to[attr] - from[attr]) / ms;\n break;\n case \"colour\":\n from[attr] = R.getRGB(from[attr]);\n var toColour = R.getRGB(to[attr]);\n diff[attr] = {\n r: (toColour.r - from[attr].r) / ms,\n g: (toColour.g - from[attr].g) / ms,\n b: (toColour.b - from[attr].b) / ms\n };\n break;\n case \"path\":\n var pathes = path2curve(from[attr], to[attr]),\n toPath = pathes[1];\n from[attr] = pathes[0];\n diff[attr] = [];\n for (i = 0, ii = from[attr].length; i < ii; i++) {\n diff[attr][i] = [0];\n for (var j = 1, jj = from[attr][i].length; j < jj; j++) {\n diff[attr][i][j] = (toPath[i][j] - from[attr][i][j]) / ms;\n }\n }\n break;\n case \"transform\":\n var _ = element._,\n eq = equaliseTransform(_[attr], to[attr]);\n if (eq) {\n from[attr] = eq.from;\n to[attr] = eq.to;\n diff[attr] = [];\n diff[attr].real = true;\n for (i = 0, ii = from[attr].length; i < ii; i++) {\n diff[attr][i] = [from[attr][i][0]];\n for (j = 1, jj = from[attr][i].length; j < jj; j++) {\n diff[attr][i][j] = (to[attr][i][j] - from[attr][i][j]) / ms;\n }\n }\n } else {\n var m = (element.matrix || new Matrix),\n to2 = {\n _: {transform: _.transform},\n getBBox: function () {\n return element.getBBox(1);\n }\n };\n from[attr] = [\n m.a,\n m.b,\n m.c,\n m.d,\n m.e,\n m.f\n ];\n extractTransform(to2, to[attr]);\n to[attr] = to2._.transform;\n diff[attr] = [\n (to2.matrix.a - m.a) / ms,\n (to2.matrix.b - m.b) / ms,\n (to2.matrix.c - m.c) / ms,\n (to2.matrix.d - m.d) / ms,\n (to2.matrix.e - m.e) / ms,\n (to2.matrix.f - m.f) / ms\n ];\n // from[attr] = [_.sx, _.sy, _.deg, _.dx, _.dy];\n // var to2 = {_:{}, getBBox: function () { return element.getBBox(); }};\n // extractTransform(to2, to[attr]);\n // diff[attr] = [\n // (to2._.sx - _.sx) / ms,\n // (to2._.sy - _.sy) / ms,\n // (to2._.deg - _.deg) / ms,\n // (to2._.dx - _.dx) / ms,\n // (to2._.dy - _.dy) / ms\n // ];\n }\n break;\n case \"csv\":\n var values = Str(params[attr])[split](separator),\n from2 = Str(from[attr])[split](separator);\n if (attr == \"clip-rect\") {\n from[attr] = from2;\n diff[attr] = [];\n i = from2.length;\n while (i--) {\n diff[attr][i] = (values[i] - from[attr][i]) / ms;\n }\n }\n to[attr] = values;\n break;\n default:\n values = [][concat](params[attr]);\n from2 = [][concat](from[attr]);\n diff[attr] = [];\n i = element.paper.customAttributes[attr].length;\n while (i--) {\n diff[attr][i] = ((values[i] || 0) - (from2[i] || 0)) / ms;\n }\n break;\n }\n }\n }\n var easing = params.easing,\n easyeasy = R.easing_formulas[easing];\n if (!easyeasy) {\n easyeasy = Str(easing).match(bezierrg);\n if (easyeasy && easyeasy.length == 5) {\n var curve = easyeasy;\n easyeasy = function (t) {\n return CubicBezierAtTime(t, +curve[1], +curve[2], +curve[3], +curve[4], ms);\n };\n } else {\n easyeasy = pipe;\n }\n }\n timestamp = params.start || anim.start || +new Date;\n e = {\n anim: anim,\n percent: percent,\n timestamp: timestamp,\n start: timestamp + (anim.del || 0),\n status: 0,\n initstatus: status || 0,\n stop: false,\n ms: ms,\n easing: easyeasy,\n from: from,\n diff: diff,\n to: to,\n el: element,\n callback: params.callback,\n prev: prev,\n next: next,\n repeat: times || anim.times,\n origin: element.attr(),\n totalOrigin: totalOrigin\n };\n animationElements.push(e);\n if (status && !isInAnim && !isInAnimSet) {\n e.stop = true;\n e.start = new Date - ms * status;\n if (animationElements.length == 1) {\n return animation();\n }\n }\n if (isInAnimSet) {\n e.start = new Date - e.ms * status;\n }\n animationElements.length == 1 && requestAnimFrame(animation);\n } else {\n isInAnim.initstatus = status;\n isInAnim.start = new Date - isInAnim.ms * status;\n }\n eve(\"raphael.anim.start.\" + element.id, element, anim);\n }\n /*\\\n * Raphael.animation\n [ method ]\n **\n * Creates an animation object that can be passed to the @Element.animate or @Element.animateWith methods.\n * See also @Animation.delay and @Animation.repeat methods.\n **\n > Parameters\n **\n - params (object) final attributes for the element, see also @Element.attr\n - ms (number) number of milliseconds for animation to run\n - easing (string) #optional easing type. Accept one of @Raphael.easing_formulas or CSS format: `cubic‐bezier(XX, XX, XX, XX)`\n - callback (function) #optional callback function. Will be called at the end of animation.\n **\n = (object) @Animation\n \\*/\n R.animation = function (params, ms, easing, callback) {\n if (params instanceof Animation) {\n return params;\n }\n if (R.is(easing, \"function\") || !easing) {\n callback = callback || easing || null;\n easing = null;\n }\n params = Object(params);\n ms = +ms || 0;\n var p = {},\n json,\n attr;\n for (attr in params) if (params[has](attr) && toFloat(attr) != attr && toFloat(attr) + \"%\" != attr) {\n json = true;\n p[attr] = params[attr];\n }\n if (!json) {\n // if percent-like syntax is used and end-of-all animation callback used\n if(callback){\n // find the last one\n var lastKey = 0;\n for(var i in params){\n var percent = toInt(i);\n if(params[has](i) && percent > lastKey){\n lastKey = percent;\n }\n }\n lastKey += '%';\n // if already defined callback in the last keyframe, skip\n !params[lastKey].callback && (params[lastKey].callback = callback);\n }\n return new Animation(params, ms);\n } else {\n easing && (p.easing = easing);\n callback && (p.callback = callback);\n return new Animation({100: p}, ms);\n }\n };\n /*\\\n * Element.animate\n [ method ]\n **\n * Creates and starts animation for given element.\n **\n > Parameters\n **\n - params (object) final attributes for the element, see also @Element.attr\n - ms (number) number of milliseconds for animation to run\n - easing (string) #optional easing type. Accept one of @Raphael.easing_formulas or CSS format: `cubic‐bezier(XX, XX, XX, XX)`\n - callback (function) #optional callback function. Will be called at the end of animation.\n * or\n - animation (object) animation object, see @Raphael.animation\n **\n = (object) original element\n \\*/\n elproto.animate = function (params, ms, easing, callback) {\n var element = this;\n if (element.removed) {\n callback && callback.call(element);\n return element;\n }\n var anim = params instanceof Animation ? params : R.animation(params, ms, easing, callback);\n runAnimation(anim, element, anim.percents[0], null, element.attr());\n return element;\n };\n /*\\\n * Element.setTime\n [ method ]\n **\n * Sets the status of animation of the element in milliseconds. Similar to @Element.status method.\n **\n > Parameters\n **\n - anim (object) animation object\n - value (number) number of milliseconds from the beginning of the animation\n **\n = (object) original element if `value` is specified\n * Note, that during animation following events are triggered:\n *\n * On each animation frame event `anim.frame.`, on start `anim.start.` and on end `anim.finish.`.\n \\*/\n elproto.setTime = function (anim, value) {\n if (anim && value != null) {\n this.status(anim, mmin(value, anim.ms) / anim.ms);\n }\n return this;\n };\n /*\\\n * Element.status\n [ method ]\n **\n * Gets or sets the status of animation of the element.\n **\n > Parameters\n **\n - anim (object) #optional animation object\n - value (number) #optional 0 – 1. If specified, method works like a setter and sets the status of a given animation to the value. This will cause animation to jump to the given position.\n **\n = (number) status\n * or\n = (array) status if `anim` is not specified. Array of objects in format:\n o {\n o anim: (object) animation object\n o status: (number) status\n o }\n * or\n = (object) original element if `value` is specified\n \\*/\n elproto.status = function (anim, value) {\n var out = [],\n i = 0,\n len,\n e;\n if (value != null) {\n runAnimation(anim, this, -1, mmin(value, 1));\n return this;\n } else {\n len = animationElements.length;\n for (; i < len; i++) {\n e = animationElements[i];\n if (e.el.id == this.id && (!anim || e.anim == anim)) {\n if (anim) {\n return e.status;\n }\n out.push({\n anim: e.anim,\n status: e.status\n });\n }\n }\n if (anim) {\n return 0;\n }\n return out;\n }\n };\n /*\\\n * Element.pause\n [ method ]\n **\n * Stops animation of the element with ability to resume it later on.\n **\n > Parameters\n **\n - anim (object) #optional animation object\n **\n = (object) original element\n \\*/\n elproto.pause = function (anim) {\n for (var i = 0; i < animationElements.length; i++) if (animationElements[i].el.id == this.id && (!anim || animationElements[i].anim == anim)) {\n if (eve(\"raphael.anim.pause.\" + this.id, this, animationElements[i].anim) !== false) {\n animationElements[i].paused = true;\n }\n }\n return this;\n };\n /*\\\n * Element.resume\n [ method ]\n **\n * Resumes animation if it was paused with @Element.pause method.\n **\n > Parameters\n **\n - anim (object) #optional animation object\n **\n = (object) original element\n \\*/\n elproto.resume = function (anim) {\n for (var i = 0; i < animationElements.length; i++) if (animationElements[i].el.id == this.id && (!anim || animationElements[i].anim == anim)) {\n var e = animationElements[i];\n if (eve(\"raphael.anim.resume.\" + this.id, this, e.anim) !== false) {\n delete e.paused;\n this.status(e.anim, e.status);\n }\n }\n return this;\n };\n /*\\\n * Element.stop\n [ method ]\n **\n * Stops animation of the element.\n **\n > Parameters\n **\n - anim (object) #optional animation object\n **\n = (object) original element\n \\*/\n elproto.stop = function (anim) {\n for (var i = 0; i < animationElements.length; i++) if (animationElements[i].el.id == this.id && (!anim || animationElements[i].anim == anim)) {\n if (eve(\"raphael.anim.stop.\" + this.id, this, animationElements[i].anim) !== false) {\n animationElements.splice(i--, 1);\n }\n }\n return this;\n };\n function stopAnimation(paper) {\n for (var i = 0; i < animationElements.length; i++) if (animationElements[i].el.paper == paper) {\n animationElements.splice(i--, 1);\n }\n }\n eve.on(\"raphael.remove\", stopAnimation);\n eve.on(\"raphael.clear\", stopAnimation);\n elproto.toString = function () {\n return \"Rapha\\xebl\\u2019s object\";\n };\n\n // Set\n var Set = function (items) {\n this.items = [];\n this.length = 0;\n this.type = \"set\";\n if (items) {\n for (var i = 0, ii = items.length; i < ii; i++) {\n if (items[i] && (items[i].constructor == elproto.constructor || items[i].constructor == Set)) {\n this[this.items.length] = this.items[this.items.length] = items[i];\n this.length++;\n }\n }\n }\n },\n setproto = Set.prototype;\n /*\\\n * Set.push\n [ method ]\n **\n * Adds each argument to the current set.\n = (object) original element\n \\*/\n setproto.push = function () {\n var item,\n len;\n for (var i = 0, ii = arguments.length; i < ii; i++) {\n item = arguments[i];\n if (item && (item.constructor == elproto.constructor || item.constructor == Set)) {\n len = this.items.length;\n this[len] = this.items[len] = item;\n this.length++;\n }\n }\n return this;\n };\n /*\\\n * Set.pop\n [ method ]\n **\n * Removes last element and returns it.\n = (object) element\n \\*/\n setproto.pop = function () {\n this.length && delete this[this.length--];\n return this.items.pop();\n };\n /*\\\n * Set.forEach\n [ method ]\n **\n * Executes given function for each element in the set.\n *\n * If function returns `false` it will stop loop running.\n **\n > Parameters\n **\n - callback (function) function to run\n - thisArg (object) context object for the callback\n = (object) Set object\n \\*/\n setproto.forEach = function (callback, thisArg) {\n for (var i = 0, ii = this.items.length; i < ii; i++) {\n if (callback.call(thisArg, this.items[i], i) === false) {\n return this;\n }\n }\n return this;\n };\n for (var method in elproto) if (elproto[has](method)) {\n setproto[method] = (function (methodname) {\n return function () {\n var arg = arguments;\n return this.forEach(function (el) {\n el[methodname][apply](el, arg);\n });\n };\n })(method);\n }\n setproto.attr = function (name, value) {\n if (name && R.is(name, array) && R.is(name[0], \"object\")) {\n for (var j = 0, jj = name.length; j < jj; j++) {\n this.items[j].attr(name[j]);\n }\n } else {\n for (var i = 0, ii = this.items.length; i < ii; i++) {\n this.items[i].attr(name, value);\n }\n }\n return this;\n };\n /*\\\n * Set.clear\n [ method ]\n **\n * Removes all elements from the set\n \\*/\n setproto.clear = function () {\n while (this.length) {\n this.pop();\n }\n };\n /*\\\n * Set.splice\n [ method ]\n **\n * Removes given element from the set\n **\n > Parameters\n **\n - index (number) position of the deletion\n - count (number) number of element to remove\n - insertion… (object) #optional elements to insert\n = (object) set elements that were deleted\n \\*/\n setproto.splice = function (index, count, insertion) {\n index = index < 0 ? mmax(this.length + index, 0) : index;\n count = mmax(0, mmin(this.length - index, count));\n var tail = [],\n todel = [],\n args = [],\n i;\n for (i = 2; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n for (i = 0; i < count; i++) {\n todel.push(this[index + i]);\n }\n for (; i < this.length - index; i++) {\n tail.push(this[index + i]);\n }\n var arglen = args.length;\n for (i = 0; i < arglen + tail.length; i++) {\n this.items[index + i] = this[index + i] = i < arglen ? args[i] : tail[i - arglen];\n }\n i = this.items.length = this.length -= count - arglen;\n while (this[i]) {\n delete this[i++];\n }\n return new Set(todel);\n };\n /*\\\n * Set.exclude\n [ method ]\n **\n * Removes given element from the set\n **\n > Parameters\n **\n - element (object) element to remove\n = (boolean) `true` if object was found & removed from the set\n \\*/\n setproto.exclude = function (el) {\n for (var i = 0, ii = this.length; i < ii; i++) if (this[i] == el) {\n this.splice(i, 1);\n return true;\n }\n };\n setproto.animate = function (params, ms, easing, callback) {\n (R.is(easing, \"function\") || !easing) && (callback = easing || null);\n var len = this.items.length,\n i = len,\n item,\n set = this,\n collector;\n if (!len) {\n return this;\n }\n callback && (collector = function () {\n !--len && callback.call(set);\n });\n easing = R.is(easing, string) ? easing : collector;\n var anim = R.animation(params, ms, easing, collector);\n item = this.items[--i].animate(anim);\n while (i--) {\n this.items[i] && !this.items[i].removed && this.items[i].animateWith(item, anim, anim);\n (this.items[i] && !this.items[i].removed) || len--;\n }\n return this;\n };\n setproto.insertAfter = function (el) {\n var i = this.items.length;\n while (i--) {\n this.items[i].insertAfter(el);\n }\n return this;\n };\n setproto.getBBox = function () {\n var x = [],\n y = [],\n x2 = [],\n y2 = [];\n for (var i = this.items.length; i--;) if (!this.items[i].removed) {\n var box = this.items[i].getBBox();\n x.push(box.x);\n y.push(box.y);\n x2.push(box.x + box.width);\n y2.push(box.y + box.height);\n }\n x = mmin[apply](0, x);\n y = mmin[apply](0, y);\n x2 = mmax[apply](0, x2);\n y2 = mmax[apply](0, y2);\n return {\n x: x,\n y: y,\n x2: x2,\n y2: y2,\n width: x2 - x,\n height: y2 - y\n };\n };\n setproto.clone = function (s) {\n s = this.paper.set();\n for (var i = 0, ii = this.items.length; i < ii; i++) {\n s.push(this.items[i].clone());\n }\n return s;\n };\n setproto.toString = function () {\n return \"Rapha\\xebl\\u2018s set\";\n };\n\n setproto.glow = function(glowConfig) {\n var ret = this.paper.set();\n this.forEach(function(shape, index){\n var g = shape.glow(glowConfig);\n if(g != null){\n g.forEach(function(shape2, index2){\n ret.push(shape2);\n });\n }\n });\n return ret;\n };\n\n\n /*\\\n * Set.isPointInside\n [ method ]\n **\n * Determine if given point is inside this set’s elements\n **\n > Parameters\n **\n - x (number) x coordinate of the point\n - y (number) y coordinate of the point\n = (boolean) `true` if point is inside any of the set's elements\n \\*/\n setproto.isPointInside = function (x, y) {\n var isPointInside = false;\n this.forEach(function (el) {\n if (el.isPointInside(x, y)) {\n isPointInside = true;\n return false; // stop loop\n }\n });\n return isPointInside;\n };\n\n /*\\\n * Raphael.registerFont\n [ method ]\n **\n * Adds given font to the registered set of fonts for Raphaël. Should be used as an internal call from within Cufón’s font file.\n * Returns original parameter, so it could be used with chaining.\n # More about Cufón and how to convert your font form TTF, OTF, etc to JavaScript file.\n **\n > Parameters\n **\n - font (object) the font to register\n = (object) the font you passed in\n > Usage\n | Cufon.registerFont(Raphael.registerFont({…}));\n \\*/\n R.registerFont = function (font) {\n if (!font.face) {\n return font;\n }\n this.fonts = this.fonts || {};\n var fontcopy = {\n w: font.w,\n face: {},\n glyphs: {}\n },\n family = font.face[\"font-family\"];\n for (var prop in font.face) if (font.face[has](prop)) {\n fontcopy.face[prop] = font.face[prop];\n }\n if (this.fonts[family]) {\n this.fonts[family].push(fontcopy);\n } else {\n this.fonts[family] = [fontcopy];\n }\n if (!font.svg) {\n fontcopy.face[\"units-per-em\"] = toInt(font.face[\"units-per-em\"], 10);\n for (var glyph in font.glyphs) if (font.glyphs[has](glyph)) {\n var path = font.glyphs[glyph];\n fontcopy.glyphs[glyph] = {\n w: path.w,\n k: {},\n d: path.d && \"M\" + path.d.replace(/[mlcxtrv]/g, function (command) {\n return {l: \"L\", c: \"C\", x: \"z\", t: \"m\", r: \"l\", v: \"c\"}[command] || \"M\";\n }) + \"z\"\n };\n if (path.k) {\n for (var k in path.k) if (path[has](k)) {\n fontcopy.glyphs[glyph].k[k] = path.k[k];\n }\n }\n }\n }\n return font;\n };\n /*\\\n * Paper.getFont\n [ method ]\n **\n * Finds font object in the registered fonts by given parameters. You could specify only one word from the font name, like “Myriad” for “Myriad Pro”.\n **\n > Parameters\n **\n - family (string) font family name or any word from it\n - weight (string) #optional font weight\n - style (string) #optional font style\n - stretch (string) #optional font stretch\n = (object) the font object\n > Usage\n | paper.print(100, 100, \"Test string\", paper.getFont(\"Times\", 800), 30);\n \\*/\n paperproto.getFont = function (family, weight, style, stretch) {\n stretch = stretch || \"normal\";\n style = style || \"normal\";\n weight = +weight || {normal: 400, bold: 700, lighter: 300, bolder: 800}[weight] || 400;\n if (!R.fonts) {\n return;\n }\n var font = R.fonts[family];\n if (!font) {\n var name = new RegExp(\"(^|\\\\s)\" + family.replace(/[^\\w\\d\\s+!~.:_-]/g, E) + \"(\\\\s|$)\", \"i\");\n for (var fontName in R.fonts) if (R.fonts[has](fontName)) {\n if (name.test(fontName)) {\n font = R.fonts[fontName];\n break;\n }\n }\n }\n var thefont;\n if (font) {\n for (var i = 0, ii = font.length; i < ii; i++) {\n thefont = font[i];\n if (thefont.face[\"font-weight\"] == weight && (thefont.face[\"font-style\"] == style || !thefont.face[\"font-style\"]) && thefont.face[\"font-stretch\"] == stretch) {\n break;\n }\n }\n }\n return thefont;\n };\n /*\\\n * Paper.print\n [ method ]\n **\n * Creates path that represent given text written using given font at given position with given size.\n * Result of the method is path element that contains whole text as a separate path.\n **\n > Parameters\n **\n - x (number) x position of the text\n - y (number) y position of the text\n - string (string) text to print\n - font (object) font object, see @Paper.getFont\n - size (number) #optional size of the font, default is `16`\n - origin (string) #optional could be `\"baseline\"` or `\"middle\"`, default is `\"middle\"`\n - letter_spacing (number) #optional number in range `-1..1`, default is `0`\n - line_spacing (number) #optional number in range `1..3`, default is `1`\n = (object) resulting path element, which consist of all letters\n > Usage\n | var txt = r.print(10, 50, \"print\", r.getFont(\"Museo\"), 30).attr({fill: \"#fff\"});\n \\*/\n paperproto.print = function (x, y, string, font, size, origin, letter_spacing, line_spacing) {\n origin = origin || \"middle\"; // baseline|middle\n letter_spacing = mmax(mmin(letter_spacing || 0, 1), -1);\n line_spacing = mmax(mmin(line_spacing || 1, 3), 1);\n var letters = Str(string)[split](E),\n shift = 0,\n notfirst = 0,\n path = E,\n scale;\n R.is(font, \"string\") && (font = this.getFont(font));\n if (font) {\n scale = (size || 16) / font.face[\"units-per-em\"];\n var bb = font.face.bbox[split](separator),\n top = +bb[0],\n lineHeight = bb[3] - bb[1],\n shifty = 0,\n height = +bb[1] + (origin == \"baseline\" ? lineHeight + (+font.face.descent) : lineHeight / 2);\n for (var i = 0, ii = letters.length; i < ii; i++) {\n if (letters[i] == \"\\n\") {\n shift = 0;\n curr = 0;\n notfirst = 0;\n shifty += lineHeight * line_spacing;\n } else {\n var prev = notfirst && font.glyphs[letters[i - 1]] || {},\n curr = font.glyphs[letters[i]];\n shift += notfirst ? (prev.w || font.w) + (prev.k && prev.k[letters[i]] || 0) + (font.w * letter_spacing) : 0;\n notfirst = 1;\n }\n if (curr && curr.d) {\n path += R.transformPath(curr.d, [\"t\", shift * scale, shifty * scale, \"s\", scale, scale, top, height, \"t\", (x - top) / scale, (y - height) / scale]);\n }\n }\n }\n return this.path(path).attr({\n fill: \"#000\",\n stroke: \"none\"\n });\n };\n\n /*\\\n * Paper.add\n [ method ]\n **\n * Imports elements in JSON array in format `{type: type, }`\n **\n > Parameters\n **\n - json (array)\n = (object) resulting set of imported elements\n > Usage\n | paper.add([\n | {\n | type: \"circle\",\n | cx: 10,\n | cy: 10,\n | r: 5\n | },\n | {\n | type: \"rect\",\n | x: 10,\n | y: 10,\n | width: 10,\n | height: 10,\n | fill: \"#fc0\"\n | }\n | ]);\n \\*/\n paperproto.add = function (json) {\n if (R.is(json, \"array\")) {\n var res = this.set(),\n i = 0,\n ii = json.length,\n j;\n for (; i < ii; i++) {\n j = json[i] || {};\n elements[has](j.type) && res.push(this[j.type]().attr(j));\n }\n }\n return res;\n };\n\n /*\\\n * Raphael.format\n [ method ]\n **\n * Simple format function. Replaces construction of type “`{}`” to the corresponding argument.\n **\n > Parameters\n **\n - token (string) string to format\n - … (string) rest of arguments will be treated as parameters for replacement\n = (string) formated string\n > Usage\n | var x = 10,\n | y = 20,\n | width = 40,\n | height = 50;\n | // this will draw a rectangular shape equivalent to \"M10,20h40v50h-40z\"\n | paper.path(Raphael.format(\"M{0},{1}h{2}v{3}h{4}z\", x, y, width, height, -width));\n \\*/\n R.format = function (token, params) {\n var args = R.is(params, array) ? [0][concat](params) : arguments;\n token && R.is(token, string) && args.length - 1 && (token = token.replace(formatrg, function (str, i) {\n return args[++i] == null ? E : args[i];\n }));\n return token || E;\n };\n /*\\\n * Raphael.fullfill\n [ method ]\n **\n * A little bit more advanced format function than @Raphael.format. Replaces construction of type “`{}`” to the corresponding argument.\n **\n > Parameters\n **\n - token (string) string to format\n - json (object) object which properties will be used as a replacement\n = (string) formated string\n > Usage\n | // this will draw a rectangular shape equivalent to \"M10,20h40v50h-40z\"\n | paper.path(Raphael.fullfill(\"M{x},{y}h{dim.width}v{dim.height}h{dim['negative width']}z\", {\n | x: 10,\n | y: 20,\n | dim: {\n | width: 40,\n | height: 50,\n | \"negative width\": -40\n | }\n | }));\n \\*/\n R.fullfill = (function () {\n var tokenRegex = /\\{([^\\}]+)\\}/g,\n objNotationRegex = /(?:(?:^|\\.)(.+?)(?=\\[|\\.|$|\\()|\\[('|\")(.+?)\\2\\])(\\(\\))?/g, // matches .xxxxx or [\"xxxxx\"] to run over object properties\n replacer = function (all, key, obj) {\n var res = obj;\n key.replace(objNotationRegex, function (all, name, quote, quotedName, isFunc) {\n name = name || quotedName;\n if (res) {\n if (name in res) {\n res = res[name];\n }\n typeof res == \"function\" && isFunc && (res = res());\n }\n });\n res = (res == null || res == obj ? all : res) + \"\";\n return res;\n };\n return function (str, obj) {\n return String(str).replace(tokenRegex, function (all, key) {\n return replacer(all, key, obj);\n });\n };\n })();\n /*\\\n * Raphael.ninja\n [ method ]\n **\n * If you want to leave no trace of Raphaël (Well, Raphaël creates only one global variable `Raphael`, but anyway.) You can use `ninja` method.\n * Beware, that in this case plugins could stop working, because they are depending on global variable existence.\n **\n = (object) Raphael object\n > Usage\n | (function (local_raphael) {\n | var paper = local_raphael(10, 10, 320, 200);\n | …\n | })(Raphael.ninja());\n \\*/\n R.ninja = function () {\n if (oldRaphael.was) {\n g.win.Raphael = oldRaphael.is;\n } else {\n // IE8 raises an error when deleting window property\n window.Raphael = undefined;\n try {\n delete window.Raphael;\n } catch(e) {}\n }\n return R;\n };\n /*\\\n * Raphael.st\n [ property (object) ]\n **\n * You can add your own method to elements and sets. It is wise to add a set method for each element method\n * you added, so you will be able to call the same method on sets too.\n **\n * See also @Raphael.el.\n > Usage\n | Raphael.el.red = function () {\n | this.attr({fill: \"#f00\"});\n | };\n | Raphael.st.red = function () {\n | this.forEach(function (el) {\n | el.red();\n | });\n | };\n | // then use it\n | paper.set(paper.circle(100, 100, 20), paper.circle(110, 100, 20)).red();\n \\*/\n R.st = setproto;\n\n eve.on(\"raphael.DOMload\", function () {\n loaded = true;\n });\n\n // Firefox <3.6 fix: http://webreflection.blogspot.com/2009/11/195-chars-to-help-lazy-loading.html\n (function (doc, loaded, f) {\n if (doc.readyState == null && doc.addEventListener){\n doc.addEventListener(loaded, f = function () {\n doc.removeEventListener(loaded, f, false);\n doc.readyState = \"complete\";\n }, false);\n doc.readyState = \"loading\";\n }\n function isLoaded() {\n (/in/).test(doc.readyState) ? setTimeout(isLoaded, 9) : R.eve(\"raphael.DOMload\");\n }\n isLoaded();\n })(document, \"DOMContentLoaded\");\n\n return R;\n}).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/***/ }),\n\n/***/ \"./dev/raphael.svg.js\":\n/*!****************************!*\\\n !*** ./dev/raphael.svg.js ***!\n \\****************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ./raphael.core */ \"./dev/raphael.core.js\")], __WEBPACK_AMD_DEFINE_RESULT__ = (function(R) {\n if (R && !R.svg) {\n return;\n }\n\n var has = \"hasOwnProperty\",\n Str = String,\n toFloat = parseFloat,\n toInt = parseInt,\n math = Math,\n mmax = math.max,\n abs = math.abs,\n pow = math.pow,\n separator = /[, ]+/,\n eve = R.eve,\n E = \"\",\n S = \" \";\n var xlink = \"http://www.w3.org/1999/xlink\",\n markers = {\n block: \"M5,0 0,2.5 5,5z\",\n classic: \"M5,0 0,2.5 5,5 3.5,3 3.5,2z\",\n diamond: \"M2.5,0 5,2.5 2.5,5 0,2.5z\",\n open: \"M6,1 1,3.5 6,6\",\n oval: \"M2.5,0A2.5,2.5,0,0,1,2.5,5 2.5,2.5,0,0,1,2.5,0z\"\n },\n markerCounter = {};\n R.toString = function () {\n return \"Your browser supports SVG.\\nYou are running Rapha\\xebl \" + this.version;\n };\n var $ = function (el, attr) {\n if (attr) {\n if (typeof el == \"string\") {\n el = $(el);\n }\n for (var key in attr) if (attr[has](key)) {\n if (key.substring(0, 6) == \"xlink:\") {\n el.setAttributeNS(xlink, key.substring(6), Str(attr[key]));\n } else {\n el.setAttribute(key, Str(attr[key]));\n }\n }\n } else {\n el = R._g.doc.createElementNS(\"http://www.w3.org/2000/svg\", el);\n el.style && (el.style.webkitTapHighlightColor = \"rgba(0,0,0,0)\");\n }\n return el;\n },\n addGradientFill = function (element, gradient) {\n var type = \"linear\",\n id = element.id + gradient,\n fx = .5, fy = .5,\n o = element.node,\n SVG = element.paper,\n s = o.style,\n el = R._g.doc.getElementById(id);\n if (!el) {\n gradient = Str(gradient).replace(R._radial_gradient, function (all, _fx, _fy) {\n type = \"radial\";\n if (_fx && _fy) {\n fx = toFloat(_fx);\n fy = toFloat(_fy);\n var dir = ((fy > .5) * 2 - 1);\n pow(fx - .5, 2) + pow(fy - .5, 2) > .25 &&\n (fy = math.sqrt(.25 - pow(fx - .5, 2)) * dir + .5) &&\n fy != .5 &&\n (fy = fy.toFixed(5) - 1e-5 * dir);\n }\n return E;\n });\n gradient = gradient.split(/\\s*\\-\\s*/);\n if (type == \"linear\") {\n var angle = gradient.shift();\n angle = -toFloat(angle);\n if (isNaN(angle)) {\n return null;\n }\n var vector = [0, 0, math.cos(R.rad(angle)), math.sin(R.rad(angle))],\n max = 1 / (mmax(abs(vector[2]), abs(vector[3])) || 1);\n vector[2] *= max;\n vector[3] *= max;\n if (vector[2] < 0) {\n vector[0] = -vector[2];\n vector[2] = 0;\n }\n if (vector[3] < 0) {\n vector[1] = -vector[3];\n vector[3] = 0;\n }\n }\n var dots = R._parseDots(gradient);\n if (!dots) {\n return null;\n }\n id = id.replace(/[\\(\\)\\s,\\xb0#]/g, \"_\");\n\n if (element.gradient && id != element.gradient.id) {\n SVG.defs.removeChild(element.gradient);\n delete element.gradient;\n }\n\n if (!element.gradient) {\n el = $(type + \"Gradient\", {id: id});\n element.gradient = el;\n $(el, type == \"radial\" ? {\n fx: fx,\n fy: fy\n } : {\n x1: vector[0],\n y1: vector[1],\n x2: vector[2],\n y2: vector[3],\n gradientTransform: element.matrix.invert()\n });\n SVG.defs.appendChild(el);\n for (var i = 0, ii = dots.length; i < ii; i++) {\n el.appendChild($(\"stop\", {\n offset: dots[i].offset ? dots[i].offset : i ? \"100%\" : \"0%\",\n \"stop-color\": dots[i].color || \"#fff\",\n \"stop-opacity\": isFinite(dots[i].opacity) ? dots[i].opacity : 1\n }));\n }\n }\n }\n $(o, {\n fill: fillurl(id),\n opacity: 1,\n \"fill-opacity\": 1\n });\n s.fill = E;\n s.opacity = 1;\n s.fillOpacity = 1;\n return 1;\n },\n isIE9or10 = function () {\n var mode = document.documentMode;\n return mode && (mode === 9 || mode === 10);\n },\n fillurl = function (id) {\n if (isIE9or10()) {\n return \"url('#\" + id + \"')\";\n }\n var location = document.location;\n var locationString = (\n location.protocol + '//' +\n location.host +\n location.pathname +\n location.search\n );\n return \"url('\" + locationString + \"#\" + id + \"')\";\n },\n updatePosition = function (o) {\n var bbox = o.getBBox(1);\n $(o.pattern, {patternTransform: o.matrix.invert() + \" translate(\" + bbox.x + \",\" + bbox.y + \")\"});\n },\n addArrow = function (o, value, isEnd) {\n if (o.type == \"path\") {\n var values = Str(value).toLowerCase().split(\"-\"),\n p = o.paper,\n se = isEnd ? \"end\" : \"start\",\n node = o.node,\n attrs = o.attrs,\n stroke = attrs[\"stroke-width\"],\n i = values.length,\n type = \"classic\",\n from,\n to,\n dx,\n refX,\n attr,\n w = 3,\n h = 3,\n t = 5;\n while (i--) {\n switch (values[i]) {\n case \"block\":\n case \"classic\":\n case \"oval\":\n case \"diamond\":\n case \"open\":\n case \"none\":\n type = values[i];\n break;\n case \"wide\": h = 5; break;\n case \"narrow\": h = 2; break;\n case \"long\": w = 5; break;\n case \"short\": w = 2; break;\n }\n }\n if (type == \"open\") {\n w += 2;\n h += 2;\n t += 2;\n dx = 1;\n refX = isEnd ? 4 : 1;\n attr = {\n fill: \"none\",\n stroke: attrs.stroke\n };\n } else {\n refX = dx = w / 2;\n attr = {\n fill: attrs.stroke,\n stroke: \"none\"\n };\n }\n if (o._.arrows) {\n if (isEnd) {\n o._.arrows.endPath && markerCounter[o._.arrows.endPath]--;\n o._.arrows.endMarker && markerCounter[o._.arrows.endMarker]--;\n } else {\n o._.arrows.startPath && markerCounter[o._.arrows.startPath]--;\n o._.arrows.startMarker && markerCounter[o._.arrows.startMarker]--;\n }\n } else {\n o._.arrows = {};\n }\n if (type != \"none\") {\n var pathId = \"raphael-marker-\" + type,\n markerId = \"raphael-marker-\" + se + type + w + h + \"-obj\" + o.id;\n if (!R._g.doc.getElementById(pathId)) {\n p.defs.appendChild($($(\"path\"), {\n \"stroke-linecap\": \"round\",\n d: markers[type],\n id: pathId\n }));\n markerCounter[pathId] = 1;\n } else {\n markerCounter[pathId]++;\n }\n var marker = R._g.doc.getElementById(markerId),\n use;\n if (!marker) {\n marker = $($(\"marker\"), {\n id: markerId,\n markerHeight: h,\n markerWidth: w,\n orient: \"auto\",\n refX: refX,\n refY: h / 2\n });\n use = $($(\"use\"), {\n \"xlink:href\": \"#\" + pathId,\n transform: (isEnd ? \"rotate(180 \" + w / 2 + \" \" + h / 2 + \") \" : E) + \"scale(\" + w / t + \",\" + h / t + \")\",\n \"stroke-width\": (1 / ((w / t + h / t) / 2)).toFixed(4)\n });\n marker.appendChild(use);\n p.defs.appendChild(marker);\n markerCounter[markerId] = 1;\n } else {\n markerCounter[markerId]++;\n use = marker.getElementsByTagName(\"use\")[0];\n }\n $(use, attr);\n var delta = dx * (type != \"diamond\" && type != \"oval\");\n if (isEnd) {\n from = o._.arrows.startdx * stroke || 0;\n to = R.getTotalLength(attrs.path) - delta * stroke;\n } else {\n from = delta * stroke;\n to = R.getTotalLength(attrs.path) - (o._.arrows.enddx * stroke || 0);\n }\n attr = {};\n attr[\"marker-\" + se] = \"url(#\" + markerId + \")\";\n if (to || from) {\n attr.d = R.getSubpath(attrs.path, from, to);\n }\n $(node, attr);\n o._.arrows[se + \"Path\"] = pathId;\n o._.arrows[se + \"Marker\"] = markerId;\n o._.arrows[se + \"dx\"] = delta;\n o._.arrows[se + \"Type\"] = type;\n o._.arrows[se + \"String\"] = value;\n } else {\n if (isEnd) {\n from = o._.arrows.startdx * stroke || 0;\n to = R.getTotalLength(attrs.path) - from;\n } else {\n from = 0;\n to = R.getTotalLength(attrs.path) - (o._.arrows.enddx * stroke || 0);\n }\n o._.arrows[se + \"Path\"] && $(node, {d: R.getSubpath(attrs.path, from, to)});\n delete o._.arrows[se + \"Path\"];\n delete o._.arrows[se + \"Marker\"];\n delete o._.arrows[se + \"dx\"];\n delete o._.arrows[se + \"Type\"];\n delete o._.arrows[se + \"String\"];\n }\n for (attr in markerCounter) if (markerCounter[has](attr) && !markerCounter[attr]) {\n var item = R._g.doc.getElementById(attr);\n item && item.parentNode.removeChild(item);\n }\n }\n },\n dasharray = {\n \"-\": [3, 1],\n \".\": [1, 1],\n \"-.\": [3, 1, 1, 1],\n \"-..\": [3, 1, 1, 1, 1, 1],\n \". \": [1, 3],\n \"- \": [4, 3],\n \"--\": [8, 3],\n \"- .\": [4, 3, 1, 3],\n \"--.\": [8, 3, 1, 3],\n \"--..\": [8, 3, 1, 3, 1, 3]\n },\n addDashes = function (o, value, params) {\n value = dasharray[Str(value).toLowerCase()];\n if (value) {\n var width = o.attrs[\"stroke-width\"] || \"1\",\n butt = {round: width, square: width, butt: 0}[o.attrs[\"stroke-linecap\"] || params[\"stroke-linecap\"]] || 0,\n dashes = [],\n i = value.length;\n while (i--) {\n dashes[i] = value[i] * width + ((i % 2) ? 1 : -1) * butt;\n }\n $(o.node, {\"stroke-dasharray\": dashes.join(\",\")});\n }\n else {\n $(o.node, {\"stroke-dasharray\": \"none\"});\n }\n },\n setFillAndStroke = function (o, params) {\n var node = o.node,\n attrs = o.attrs,\n vis = node.style.visibility;\n node.style.visibility = \"hidden\";\n for (var att in params) {\n if (params[has](att)) {\n if (!R._availableAttrs[has](att)) {\n continue;\n }\n var value = params[att];\n attrs[att] = value;\n switch (att) {\n case \"blur\":\n o.blur(value);\n break;\n case \"title\":\n var title = node.getElementsByTagName(\"title\");\n\n // Use the existing .\n if (title.length && (title = title[0])) {\n title.firstChild.nodeValue = value;\n } else {\n title = $(\"title\");\n var val = R._g.doc.createTextNode(value);\n title.appendChild(val);\n node.appendChild(title);\n }\n break;\n case \"href\":\n case \"target\":\n var pn = node.parentNode;\n if (pn.tagName.toLowerCase() != \"a\") {\n var hl = $(\"a\");\n pn.insertBefore(hl, node);\n hl.appendChild(node);\n pn = hl;\n }\n if (att == \"target\") {\n pn.setAttributeNS(xlink, \"show\", value == \"blank\" ? \"new\" : value);\n } else {\n pn.setAttributeNS(xlink, att, value);\n }\n break;\n case \"cursor\":\n node.style.cursor = value;\n break;\n case \"transform\":\n o.transform(value);\n break;\n case \"arrow-start\":\n addArrow(o, value);\n break;\n case \"arrow-end\":\n addArrow(o, value, 1);\n break;\n case \"clip-rect\":\n var rect = Str(value).split(separator);\n if (rect.length == 4) {\n o.clip && o.clip.parentNode.parentNode.removeChild(o.clip.parentNode);\n var el = $(\"clipPath\"),\n rc = $(\"rect\");\n el.id = R.createUUID();\n $(rc, {\n x: rect[0],\n y: rect[1],\n width: rect[2],\n height: rect[3]\n });\n el.appendChild(rc);\n o.paper.defs.appendChild(el);\n $(node, {\"clip-path\": \"url(#\" + el.id + \")\"});\n o.clip = rc;\n }\n if (!value) {\n var path = node.getAttribute(\"clip-path\");\n if (path) {\n var clip = R._g.doc.getElementById(path.replace(/(^url\\(#|\\)$)/g, E));\n clip && clip.parentNode.removeChild(clip);\n $(node, {\"clip-path\": E});\n delete o.clip;\n }\n }\n break;\n case \"path\":\n if (o.type == \"path\") {\n $(node, {d: value ? attrs.path = R._pathToAbsolute(value) : \"M0,0\"});\n o._.dirty = 1;\n if (o._.arrows) {\n \"startString\" in o._.arrows && addArrow(o, o._.arrows.startString);\n \"endString\" in o._.arrows && addArrow(o, o._.arrows.endString, 1);\n }\n }\n break;\n case \"width\":\n node.setAttribute(att, value);\n o._.dirty = 1;\n if (attrs.fx) {\n att = \"x\";\n value = attrs.x;\n } else {\n break;\n }\n case \"x\":\n if (attrs.fx) {\n value = -attrs.x - (attrs.width || 0);\n }\n case \"rx\":\n if (att == \"rx\" && o.type == \"rect\") {\n break;\n }\n case \"cx\":\n node.setAttribute(att, value);\n o.pattern && updatePosition(o);\n o._.dirty = 1;\n break;\n case \"height\":\n node.setAttribute(att, value);\n o._.dirty = 1;\n if (attrs.fy) {\n att = \"y\";\n value = attrs.y;\n } else {\n break;\n }\n case \"y\":\n if (attrs.fy) {\n value = -attrs.y - (attrs.height || 0);\n }\n case \"ry\":\n if (att == \"ry\" && o.type == \"rect\") {\n break;\n }\n case \"cy\":\n node.setAttribute(att, value);\n o.pattern && updatePosition(o);\n o._.dirty = 1;\n break;\n case \"r\":\n if (o.type == \"rect\") {\n $(node, {rx: value, ry: value});\n } else {\n node.setAttribute(att, value);\n }\n o._.dirty = 1;\n break;\n case \"src\":\n if (o.type == \"image\") {\n node.setAttributeNS(xlink, \"href\", value);\n }\n break;\n case \"stroke-width\":\n if (o._.sx != 1 || o._.sy != 1) {\n value /= mmax(abs(o._.sx), abs(o._.sy)) || 1;\n }\n node.setAttribute(att, value);\n if (attrs[\"stroke-dasharray\"]) {\n addDashes(o, attrs[\"stroke-dasharray\"], params);\n }\n if (o._.arrows) {\n \"startString\" in o._.arrows && addArrow(o, o._.arrows.startString);\n \"endString\" in o._.arrows && addArrow(o, o._.arrows.endString, 1);\n }\n break;\n case \"stroke-dasharray\":\n addDashes(o, value, params);\n break;\n case \"fill\":\n var isURL = Str(value).match(R._ISURL);\n if (isURL) {\n el = $(\"pattern\");\n var ig = $(\"image\");\n el.id = R.createUUID();\n $(el, {x: 0, y: 0, patternUnits: \"userSpaceOnUse\", height: 1, width: 1});\n $(ig, {x: 0, y: 0, \"xlink:href\": isURL[1]});\n el.appendChild(ig);\n\n (function (el) {\n R._preload(isURL[1], function () {\n var w = this.offsetWidth,\n h = this.offsetHeight;\n $(el, {width: w, height: h});\n $(ig, {width: w, height: h});\n });\n })(el);\n o.paper.defs.appendChild(el);\n $(node, {fill: \"url(#\" + el.id + \")\"});\n o.pattern = el;\n o.pattern && updatePosition(o);\n break;\n }\n var clr = R.getRGB(value);\n if (!clr.error) {\n delete params.gradient;\n delete attrs.gradient;\n !R.is(attrs.opacity, \"undefined\") &&\n R.is(params.opacity, \"undefined\") &&\n $(node, {opacity: attrs.opacity});\n !R.is(attrs[\"fill-opacity\"], \"undefined\") &&\n R.is(params[\"fill-opacity\"], \"undefined\") &&\n $(node, {\"fill-opacity\": attrs[\"fill-opacity\"]});\n } else if ((o.type == \"circle\" || o.type == \"ellipse\" || Str(value).charAt() != \"r\") && addGradientFill(o, value)) {\n if (\"opacity\" in attrs || \"fill-opacity\" in attrs) {\n var gradient = R._g.doc.getElementById(node.getAttribute(\"fill\").replace(/^url\\(#|\\)$/g, E));\n if (gradient) {\n var stops = gradient.getElementsByTagName(\"stop\");\n $(stops[stops.length - 1], {\"stop-opacity\": (\"opacity\" in attrs ? attrs.opacity : 1) * (\"fill-opacity\" in attrs ? attrs[\"fill-opacity\"] : 1)});\n }\n }\n attrs.gradient = value;\n attrs.fill = \"none\";\n break;\n }\n clr[has](\"opacity\") && $(node, {\"fill-opacity\": clr.opacity > 1 ? clr.opacity / 100 : clr.opacity});\n case \"stroke\":\n clr = R.getRGB(value);\n node.setAttribute(att, clr.hex);\n att == \"stroke\" && clr[has](\"opacity\") && $(node, {\"stroke-opacity\": clr.opacity > 1 ? clr.opacity / 100 : clr.opacity});\n if (att == \"stroke\" && o._.arrows) {\n \"startString\" in o._.arrows && addArrow(o, o._.arrows.startString);\n \"endString\" in o._.arrows && addArrow(o, o._.arrows.endString, 1);\n }\n break;\n case \"gradient\":\n (o.type == \"circle\" || o.type == \"ellipse\" || Str(value).charAt() != \"r\") && addGradientFill(o, value);\n break;\n case \"opacity\":\n if (attrs.gradient && !attrs[has](\"stroke-opacity\")) {\n $(node, {\"stroke-opacity\": value > 1 ? value / 100 : value});\n }\n // fall\n case \"fill-opacity\":\n if (attrs.gradient) {\n gradient = R._g.doc.getElementById(node.getAttribute(\"fill\").replace(/^url\\(#|\\)$/g, E));\n if (gradient) {\n stops = gradient.getElementsByTagName(\"stop\");\n $(stops[stops.length - 1], {\"stop-opacity\": value});\n }\n break;\n }\n default:\n att == \"font-size\" && (value = toInt(value, 10) + \"px\");\n var cssrule = att.replace(/(\\-.)/g, function (w) {\n return w.substring(1).toUpperCase();\n });\n node.style[cssrule] = value;\n o._.dirty = 1;\n node.setAttribute(att, value);\n break;\n }\n }\n }\n\n tuneText(o, params);\n node.style.visibility = vis;\n },\n leading = 1.2,\n tuneText = function (el, params) {\n if (el.type != \"text\" || !(params[has](\"text\") || params[has](\"font\") || params[has](\"font-size\") || params[has](\"x\") || params[has](\"y\"))) {\n return;\n }\n var a = el.attrs,\n node = el.node,\n fontSize = node.firstChild ? toInt(R._g.doc.defaultView.getComputedStyle(node.firstChild, E).getPropertyValue(\"font-size\"), 10) : 10;\n\n if (params[has](\"text\")) {\n a.text = params.text;\n while (node.firstChild) {\n node.removeChild(node.firstChild);\n }\n var texts = Str(params.text).split(\"\\n\"),\n tspans = [],\n tspan;\n for (var i = 0, ii = texts.length; i < ii; i++) {\n tspan = $(\"tspan\");\n i && $(tspan, {dy: fontSize * leading, x: a.x});\n tspan.appendChild(R._g.doc.createTextNode(texts[i]));\n node.appendChild(tspan);\n tspans[i] = tspan;\n }\n } else {\n tspans = node.getElementsByTagName(\"tspan\");\n for (i = 0, ii = tspans.length; i < ii; i++) if (i) {\n $(tspans[i], {dy: fontSize * leading, x: a.x});\n } else {\n $(tspans[0], {dy: 0});\n }\n }\n $(node, {x: a.x, y: a.y});\n el._.dirty = 1;\n var bb = el._getBBox(),\n dif = a.y - (bb.y + bb.height / 2);\n dif && R.is(dif, \"finite\") && $(tspans[0], {dy: dif});\n },\n getRealNode = function (node) {\n if (node.parentNode && node.parentNode.tagName.toLowerCase() === \"a\") {\n return node.parentNode;\n } else {\n return node;\n }\n },\n Element = function (node, svg) {\n var X = 0,\n Y = 0;\n /*\\\n * Element.node\n [ property (object) ]\n **\n * Gives you a reference to the DOM object, so you can assign event handlers or just mess around.\n **\n * Note: Don’t mess with it.\n > Usage\n | // draw a circle at coordinate 10,10 with radius of 10\n | var c = paper.circle(10, 10, 10);\n | c.node.onclick = function () {\n | c.attr(\"fill\", \"red\");\n | };\n \\*/\n this[0] = this.node = node;\n /*\\\n * Element.raphael\n [ property (object) ]\n **\n * Internal reference to @Raphael object. In case it is not available.\n > Usage\n | Raphael.el.red = function () {\n | var hsb = this.paper.raphael.rgb2hsb(this.attr(\"fill\"));\n | hsb.h = 1;\n | this.attr({fill: this.paper.raphael.hsb2rgb(hsb).hex});\n | }\n \\*/\n node.raphael = true;\n /*\\\n * Element.id\n [ property (number) ]\n **\n * Unique id of the element. Especially useful when you want to listen to events of the element,\n * because all events are fired in format `<module>.<action>.<id>`. Also useful for @Paper.getById method.\n \\*/\n this.id = guid();\n node.raphaelid = this.id;\n\n /**\n * Method that returns a 5 letter/digit id, enough for 36^5 = 60466176 elements\n * @returns {string} id\n */\n function guid() {\n return (\"0000\" + (Math.random()*Math.pow(36,5) << 0).toString(36)).slice(-5);\n }\n\n this.matrix = R.matrix();\n this.realPath = null;\n /*\\\n * Element.paper\n [ property (object) ]\n **\n * Internal reference to “paper” where object drawn. Mainly for use in plugins and element extensions.\n > Usage\n | Raphael.el.cross = function () {\n | this.attr({fill: \"red\"});\n | this.paper.path(\"M10,10L50,50M50,10L10,50\")\n | .attr({stroke: \"red\"});\n | }\n \\*/\n this.paper = svg;\n this.attrs = this.attrs || {};\n this._ = {\n transform: [],\n sx: 1,\n sy: 1,\n deg: 0,\n dx: 0,\n dy: 0,\n dirty: 1\n };\n !svg.bottom && (svg.bottom = this);\n /*\\\n * Element.prev\n [ property (object) ]\n **\n * Reference to the previous element in the hierarchy.\n \\*/\n this.prev = svg.top;\n svg.top && (svg.top.next = this);\n svg.top = this;\n /*\\\n * Element.next\n [ property (object) ]\n **\n * Reference to the next element in the hierarchy.\n \\*/\n this.next = null;\n },\n elproto = R.el;\n\n Element.prototype = elproto;\n elproto.constructor = Element;\n\n R._engine.path = function (pathString, SVG) {\n var el = $(\"path\");\n SVG.canvas && SVG.canvas.appendChild(el);\n var p = new Element(el, SVG);\n p.type = \"path\";\n setFillAndStroke(p, {\n fill: \"none\",\n stroke: \"#000\",\n path: pathString\n });\n return p;\n };\n /*\\\n * Element.rotate\n [ method ]\n **\n * Deprecated! Use @Element.transform instead.\n * Adds rotation by given angle around given point to the list of\n * transformations of the element.\n > Parameters\n - deg (number) angle in degrees\n - cx (number) #optional x coordinate of the centre of rotation\n - cy (number) #optional y coordinate of the centre of rotation\n * If cx & cy aren’t specified centre of the shape is used as a point of rotation.\n = (object) @Element\n \\*/\n elproto.rotate = function (deg, cx, cy) {\n if (this.removed) {\n return this;\n }\n deg = Str(deg).split(separator);\n if (deg.length - 1) {\n cx = toFloat(deg[1]);\n cy = toFloat(deg[2]);\n }\n deg = toFloat(deg[0]);\n (cy == null) && (cx = cy);\n if (cx == null || cy == null) {\n var bbox = this.getBBox(1);\n cx = bbox.x + bbox.width / 2;\n cy = bbox.y + bbox.height / 2;\n }\n this.transform(this._.transform.concat([[\"r\", deg, cx, cy]]));\n return this;\n };\n /*\\\n * Element.scale\n [ method ]\n **\n * Deprecated! Use @Element.transform instead.\n * Adds scale by given amount relative to given point to the list of\n * transformations of the element.\n > Parameters\n - sx (number) horisontal scale amount\n - sy (number) vertical scale amount\n - cx (number) #optional x coordinate of the centre of scale\n - cy (number) #optional y coordinate of the centre of scale\n * If cx & cy aren’t specified centre of the shape is used instead.\n = (object) @Element\n \\*/\n elproto.scale = function (sx, sy, cx, cy) {\n if (this.removed) {\n return this;\n }\n sx = Str(sx).split(separator);\n if (sx.length - 1) {\n sy = toFloat(sx[1]);\n cx = toFloat(sx[2]);\n cy = toFloat(sx[3]);\n }\n sx = toFloat(sx[0]);\n (sy == null) && (sy = sx);\n (cy == null) && (cx = cy);\n if (cx == null || cy == null) {\n var bbox = this.getBBox(1);\n }\n cx = cx == null ? bbox.x + bbox.width / 2 : cx;\n cy = cy == null ? bbox.y + bbox.height / 2 : cy;\n this.transform(this._.transform.concat([[\"s\", sx, sy, cx, cy]]));\n return this;\n };\n /*\\\n * Element.translate\n [ method ]\n **\n * Deprecated! Use @Element.transform instead.\n * Adds translation by given amount to the list of transformations of the element.\n > Parameters\n - dx (number) horisontal shift\n - dy (number) vertical shift\n = (object) @Element\n \\*/\n elproto.translate = function (dx, dy) {\n if (this.removed) {\n return this;\n }\n dx = Str(dx).split(separator);\n if (dx.length - 1) {\n dy = toFloat(dx[1]);\n }\n dx = toFloat(dx[0]) || 0;\n dy = +dy || 0;\n this.transform(this._.transform.concat([[\"t\", dx, dy]]));\n return this;\n };\n /*\\\n * Element.transform\n [ method ]\n **\n * Adds transformation to the element which is separate to other attributes,\n * i.e. translation doesn’t change `x` or `y` of the rectange. The format\n * of transformation string is similar to the path string syntax:\n | \"t100,100r30,100,100s2,2,100,100r45s1.5\"\n * Each letter is a command. There are four commands: `t` is for translate, `r` is for rotate, `s` is for\n * scale and `m` is for matrix.\n *\n * There are also alternative “absolute” translation, rotation and scale: `T`, `R` and `S`. They will not take previous transformation into account. For example, `...T100,0` will always move element 100 px horisontally, while `...t100,0` could move it vertically if there is `r90` before. Just compare results of `r90t100,0` and `r90T100,0`.\n *\n * So, the example line above could be read like “translate by 100, 100; rotate 30° around 100, 100; scale twice around 100, 100;\n * rotate 45° around centre; scale 1.5 times relative to centre”. As you can see rotate and scale commands have origin\n * coordinates as optional parameters, the default is the centre point of the element.\n * Matrix accepts six parameters.\n > Usage\n | var el = paper.rect(10, 20, 300, 200);\n | // translate 100, 100, rotate 45°, translate -100, 0\n | el.transform(\"t100,100r45t-100,0\");\n | // if you want you can append or prepend transformations\n | el.transform(\"...t50,50\");\n | el.transform(\"s2...\");\n | // or even wrap\n | el.transform(\"t50,50...t-50-50\");\n | // to reset transformation call method with empty string\n | el.transform(\"\");\n | // to get current value call it without parameters\n | console.log(el.transform());\n > Parameters\n - tstr (string) #optional transformation string\n * If tstr isn’t specified\n = (string) current transformation string\n * else\n = (object) @Element\n \\*/\n elproto.transform = function (tstr) {\n var _ = this._;\n if (tstr == null) {\n return _.transform;\n }\n R._extractTransform(this, tstr);\n\n this.clip && $(this.clip, {transform: this.matrix.invert()});\n this.pattern && updatePosition(this);\n this.node && $(this.node, {transform: this.matrix});\n\n if (_.sx != 1 || _.sy != 1) {\n var sw = this.attrs[has](\"stroke-width\") ? this.attrs[\"stroke-width\"] : 1;\n this.attr({\"stroke-width\": sw});\n }\n\n return this;\n };\n /*\\\n * Element.hide\n [ method ]\n **\n * Makes element invisible. See @Element.show.\n = (object) @Element\n \\*/\n elproto.hide = function () {\n if(!this.removed) this.node.style.display = \"none\";\n return this;\n };\n /*\\\n * Element.show\n [ method ]\n **\n * Makes element visible. See @Element.hide.\n = (object) @Element\n \\*/\n elproto.show = function () {\n if(!this.removed) this.node.style.display = \"\";\n return this;\n };\n /*\\\n * Element.remove\n [ method ]\n **\n * Removes element from the paper.\n \\*/\n elproto.remove = function () {\n var node = getRealNode(this.node);\n if (this.removed || !node.parentNode) {\n return;\n }\n var paper = this.paper;\n paper.__set__ && paper.__set__.exclude(this);\n eve.unbind(\"raphael.*.*.\" + this.id);\n if (this.gradient) {\n paper.defs.removeChild(this.gradient);\n }\n R._tear(this, paper);\n\n node.parentNode.removeChild(node);\n\n // Remove custom data for element\n this.removeData();\n\n for (var i in this) {\n this[i] = typeof this[i] == \"function\" ? R._removedFactory(i) : null;\n }\n this.removed = true;\n };\n elproto._getBBox = function () {\n if (this.node.style.display == \"none\") {\n this.show();\n var hide = true;\n }\n var canvasHidden = false,\n containerStyle;\n if (this.paper.canvas.parentElement) {\n containerStyle = this.paper.canvas.parentElement.style;\n } //IE10+ can't find parentElement\n else if (this.paper.canvas.parentNode) {\n containerStyle = this.paper.canvas.parentNode.style;\n }\n\n if(containerStyle && containerStyle.display == \"none\") {\n canvasHidden = true;\n containerStyle.display = \"\";\n }\n var bbox = {};\n try {\n bbox = this.node.getBBox();\n } catch(e) {\n // Firefox 3.0.x, 25.0.1 (probably more versions affected) play badly here - possible fix\n bbox = {\n x: this.node.clientLeft,\n y: this.node.clientTop,\n width: this.node.clientWidth,\n height: this.node.clientHeight\n }\n } finally {\n bbox = bbox || {};\n if(canvasHidden){\n containerStyle.display = \"none\";\n }\n }\n hide && this.hide();\n return bbox;\n };\n /*\\\n * Element.attr\n [ method ]\n **\n * Sets the attributes of the element.\n > Parameters\n - attrName (string) attribute’s name\n - value (string) value\n * or\n - params (object) object of name/value pairs\n * or\n - attrName (string) attribute’s name\n * or\n - attrNames (array) in this case method returns array of current values for given attribute names\n = (object) @Element if attrsName & value or params are passed in.\n = (...) value of the attribute if only attrsName is passed in.\n = (array) array of values of the attribute if attrsNames is passed in.\n = (object) object of attributes if nothing is passed in.\n > Possible parameters\n # <p>Please refer to the <a href=\"http://www.w3.org/TR/SVG/\" title=\"The W3C Recommendation for the SVG language describes these properties in detail.\">SVG specification</a> for an explanation of these parameters.</p>\n o arrow-end (string) arrowhead on the end of the path. The format for string is `<type>[-<width>[-<length>]]`. Possible types: `classic`, `block`, `open`, `oval`, `diamond`, `none`, width: `wide`, `narrow`, `medium`, length: `long`, `short`, `midium`.\n o clip-rect (string) comma or space separated values: x, y, width and height\n o cursor (string) CSS type of the cursor\n o cx (number) the x-axis coordinate of the center of the circle, or ellipse\n o cy (number) the y-axis coordinate of the center of the circle, or ellipse\n o fill (string) colour, gradient or image\n o fill-opacity (number)\n o font (string)\n o font-family (string)\n o font-size (number) font size in pixels\n o font-weight (string)\n o height (number)\n o href (string) URL, if specified element behaves as hyperlink\n o opacity (number)\n o path (string) SVG path string format\n o r (number) radius of the circle, ellipse or rounded corner on the rect\n o rx (number) horisontal radius of the ellipse\n o ry (number) vertical radius of the ellipse\n o src (string) image URL, only works for @Element.image element\n o stroke (string) stroke colour\n o stroke-dasharray (string) [“”, “none”, “`-`”, “`.`”, “`-.`”, “`-..`”, “`. `”, “`- `”, “`--`”, “`- .`”, “`--.`”, “`--..`”]\n o stroke-linecap (string) [“`butt`”, “`square`”, “`round`”]\n o stroke-linejoin (string) [“`bevel`”, “`round`”, “`miter`”]\n o stroke-miterlimit (number)\n o stroke-opacity (number)\n o stroke-width (number) stroke width in pixels, default is '1'\n o target (string) used with href\n o text (string) contents of the text element. Use `\\n` for multiline text\n o text-anchor (string) [“`start`”, “`middle`”, “`end`”], default is “`middle`”\n o title (string) will create tooltip with a given text\n o transform (string) see @Element.transform\n o width (number)\n o x (number)\n o y (number)\n > Gradients\n * Linear gradient format: “`‹angle›-‹colour›[-‹colour›[:‹offset›]]*-‹colour›`”, example: “`90-#fff-#000`” – 90°\n * gradient from white to black or “`0-#fff-#f00:20-#000`” – 0° gradient from white via red (at 20%) to black.\n *\n * radial gradient: “`r[(‹fx›, ‹fy›)]‹colour›[-‹colour›[:‹offset›]]*-‹colour›`”, example: “`r#fff-#000`” –\n * gradient from white to black or “`r(0.25, 0.75)#fff-#000`” – gradient from white to black with focus point\n * at 0.25, 0.75. Focus point coordinates are in 0..1 range. Radial gradients can only be applied to circles and ellipses.\n > Path String\n # <p>Please refer to <a href=\"http://www.w3.org/TR/SVG/paths.html#PathData\" title=\"Details of a path’s data attribute’s format are described in the SVG specification.\">SVG documentation regarding path string</a>. Raphaël fully supports it.</p>\n > Colour Parsing\n # <ul>\n # <li>Colour name (“<code>red</code>”, “<code>green</code>”, “<code>cornflowerblue</code>”, etc)</li>\n # <li>#••• — shortened HTML colour: (“<code>#000</code>”, “<code>#fc0</code>”, etc)</li>\n # <li>#•••••• — full length HTML colour: (“<code>#000000</code>”, “<code>#bd2300</code>”)</li>\n # <li>rgb(•••, •••, •••) — red, green and blue channels’ values: (“<code>rgb(200, 100, 0)</code>”)</li>\n # <li>rgb(•••%, •••%, •••%) — same as above, but in %: (“<code>rgb(100%, 175%, 0%)</code>”)</li>\n # <li>rgba(•••, •••, •••, •••) — red, green and blue channels’ values: (“<code>rgba(200, 100, 0, .5)</code>”)</li>\n # <li>rgba(•••%, •••%, •••%, •••%) — same as above, but in %: (“<code>rgba(100%, 175%, 0%, 50%)</code>”)</li>\n # <li>hsb(•••, •••, •••) — hue, saturation and brightness values: (“<code>hsb(0.5, 0.25, 1)</code>”)</li>\n # <li>hsb(•••%, •••%, •••%) — same as above, but in %</li>\n # <li>hsba(•••, •••, •••, •••) — same as above, but with opacity</li>\n # <li>hsl(•••, •••, •••) — almost the same as hsb, see <a href=\"http://en.wikipedia.org/wiki/HSL_and_HSV\" title=\"HSL and HSV - Wikipedia, the free encyclopedia\">Wikipedia page</a></li>\n # <li>hsl(•••%, •••%, •••%) — same as above, but in %</li>\n # <li>hsla(•••, •••, •••, •••) — same as above, but with opacity</li>\n # <li>Optionally for hsb and hsl you could specify hue as a degree: “<code>hsl(240deg, 1, .5)</code>” or, if you want to go fancy, “<code>hsl(240°, 1, .5)</code>”</li>\n # </ul>\n \\*/\n elproto.attr = function (name, value) {\n if (this.removed) {\n return this;\n }\n if (name == null) {\n var res = {};\n for (var a in this.attrs) if (this.attrs[has](a)) {\n res[a] = this.attrs[a];\n }\n res.gradient && res.fill == \"none\" && (res.fill = res.gradient) && delete res.gradient;\n res.transform = this._.transform;\n return res;\n }\n if (value == null && R.is(name, \"string\")) {\n if (name == \"fill\" && this.attrs.fill == \"none\" && this.attrs.gradient) {\n return this.attrs.gradient;\n }\n if (name == \"transform\") {\n return this._.transform;\n }\n var names = name.split(separator),\n out = {};\n for (var i = 0, ii = names.length; i < ii; i++) {\n name = names[i];\n if (name in this.attrs) {\n out[name] = this.attrs[name];\n } else if (R.is(this.paper.customAttributes[name], \"function\")) {\n out[name] = this.paper.customAttributes[name].def;\n } else {\n out[name] = R._availableAttrs[name];\n }\n }\n return ii - 1 ? out : out[names[0]];\n }\n if (value == null && R.is(name, \"array\")) {\n out = {};\n for (i = 0, ii = name.length; i < ii; i++) {\n out[name[i]] = this.attr(name[i]);\n }\n return out;\n }\n if (value != null) {\n var params = {};\n params[name] = value;\n } else if (name != null && R.is(name, \"object\")) {\n params = name;\n }\n for (var key in params) {\n eve(\"raphael.attr.\" + key + \".\" + this.id, this, params[key]);\n }\n for (key in this.paper.customAttributes) if (this.paper.customAttributes[has](key) && params[has](key) && R.is(this.paper.customAttributes[key], \"function\")) {\n var par = this.paper.customAttributes[key].apply(this, [].concat(params[key]));\n this.attrs[key] = params[key];\n for (var subkey in par) if (par[has](subkey)) {\n params[subkey] = par[subkey];\n }\n }\n setFillAndStroke(this, params);\n return this;\n };\n /*\\\n * Element.toFront\n [ method ]\n **\n * Moves the element so it is the closest to the viewer’s eyes, on top of other elements.\n = (object) @Element\n \\*/\n elproto.toFront = function () {\n if (this.removed) {\n return this;\n }\n var node = getRealNode(this.node);\n node.parentNode.appendChild(node);\n var svg = this.paper;\n svg.top != this && R._tofront(this, svg);\n return this;\n };\n /*\\\n * Element.toBack\n [ method ]\n **\n * Moves the element so it is the furthest from the viewer’s eyes, behind other elements.\n = (object) @Element\n \\*/\n elproto.toBack = function () {\n if (this.removed) {\n return this;\n }\n var node = getRealNode(this.node);\n var parentNode = node.parentNode;\n parentNode.insertBefore(node, parentNode.firstChild);\n R._toback(this, this.paper);\n var svg = this.paper;\n return this;\n };\n /*\\\n * Element.insertAfter\n [ method ]\n **\n * Inserts current object after the given one.\n = (object) @Element\n \\*/\n elproto.insertAfter = function (element) {\n if (this.removed || !element) {\n return this;\n }\n\n var node = getRealNode(this.node);\n var afterNode = getRealNode(element.node || element[element.length - 1].node);\n if (afterNode.nextSibling) {\n afterNode.parentNode.insertBefore(node, afterNode.nextSibling);\n } else {\n afterNode.parentNode.appendChild(node);\n }\n R._insertafter(this, element, this.paper);\n return this;\n };\n /*\\\n * Element.insertBefore\n [ method ]\n **\n * Inserts current object before the given one.\n = (object) @Element\n \\*/\n elproto.insertBefore = function (element) {\n if (this.removed || !element) {\n return this;\n }\n\n var node = getRealNode(this.node);\n var beforeNode = getRealNode(element.node || element[0].node);\n beforeNode.parentNode.insertBefore(node, beforeNode);\n R._insertbefore(this, element, this.paper);\n return this;\n };\n elproto.blur = function (size) {\n // Experimental. No Safari support. Use it on your own risk.\n var t = this;\n if (+size !== 0) {\n var fltr = $(\"filter\"),\n blur = $(\"feGaussianBlur\");\n t.attrs.blur = size;\n fltr.id = R.createUUID();\n $(blur, {stdDeviation: +size || 1.5});\n fltr.appendChild(blur);\n t.paper.defs.appendChild(fltr);\n t._blur = fltr;\n $(t.node, {filter: \"url(#\" + fltr.id + \")\"});\n } else {\n if (t._blur) {\n t._blur.parentNode.removeChild(t._blur);\n delete t._blur;\n delete t.attrs.blur;\n }\n t.node.removeAttribute(\"filter\");\n }\n return t;\n };\n R._engine.circle = function (svg, x, y, r) {\n var el = $(\"circle\");\n svg.canvas && svg.canvas.appendChild(el);\n var res = new Element(el, svg);\n res.attrs = {cx: x, cy: y, r: r, fill: \"none\", stroke: \"#000\"};\n res.type = \"circle\";\n $(el, res.attrs);\n return res;\n };\n R._engine.rect = function (svg, x, y, w, h, r) {\n var el = $(\"rect\");\n svg.canvas && svg.canvas.appendChild(el);\n var res = new Element(el, svg);\n res.attrs = {x: x, y: y, width: w, height: h, rx: r || 0, ry: r || 0, fill: \"none\", stroke: \"#000\"};\n res.type = \"rect\";\n $(el, res.attrs);\n return res;\n };\n R._engine.ellipse = function (svg, x, y, rx, ry) {\n var el = $(\"ellipse\");\n svg.canvas && svg.canvas.appendChild(el);\n var res = new Element(el, svg);\n res.attrs = {cx: x, cy: y, rx: rx, ry: ry, fill: \"none\", stroke: \"#000\"};\n res.type = \"ellipse\";\n $(el, res.attrs);\n return res;\n };\n R._engine.image = function (svg, src, x, y, w, h) {\n var el = $(\"image\");\n $(el, {x: x, y: y, width: w, height: h, preserveAspectRatio: \"none\"});\n el.setAttributeNS(xlink, \"href\", src);\n svg.canvas && svg.canvas.appendChild(el);\n var res = new Element(el, svg);\n res.attrs = {x: x, y: y, width: w, height: h, src: src};\n res.type = \"image\";\n return res;\n };\n R._engine.text = function (svg, x, y, text) {\n var el = $(\"text\");\n svg.canvas && svg.canvas.appendChild(el);\n var res = new Element(el, svg);\n res.attrs = {\n x: x,\n y: y,\n \"text-anchor\": \"middle\",\n text: text,\n \"font-family\": R._availableAttrs[\"font-family\"],\n \"font-size\": R._availableAttrs[\"font-size\"],\n stroke: \"none\",\n fill: \"#000\"\n };\n res.type = \"text\";\n setFillAndStroke(res, res.attrs);\n return res;\n };\n R._engine.setSize = function (width, height) {\n this.width = width || this.width;\n this.height = height || this.height;\n this.canvas.setAttribute(\"width\", this.width);\n this.canvas.setAttribute(\"height\", this.height);\n if (this._viewBox) {\n this.setViewBox.apply(this, this._viewBox);\n }\n return this;\n };\n R._engine.create = function () {\n var con = R._getContainer.apply(0, arguments),\n container = con && con.container;\n if (!container) {\n throw new Error(\"SVG container not found.\");\n }\n var x = con.x,\n y = con.y,\n width = con.width,\n height = con.height,\n cnvs = $(\"svg\"),\n css = \"overflow:hidden;\",\n isFloating;\n x = x || 0;\n y = y || 0;\n width = width || 512;\n height = height || 342;\n $(cnvs, {\n height: height,\n version: 1.1,\n width: width,\n xmlns: \"http://www.w3.org/2000/svg\",\n \"xmlns:xlink\": \"http://www.w3.org/1999/xlink\"\n });\n if (container == 1) {\n cnvs.style.cssText = css + \"position:absolute;left:\" + x + \"px;top:\" + y + \"px\";\n R._g.doc.body.appendChild(cnvs);\n isFloating = 1;\n } else {\n cnvs.style.cssText = css + \"position:relative\";\n if (container.firstChild) {\n container.insertBefore(cnvs, container.firstChild);\n } else {\n container.appendChild(cnvs);\n }\n }\n container = new R._Paper;\n container.width = width;\n container.height = height;\n container.canvas = cnvs;\n container.clear();\n container._left = container._top = 0;\n isFloating && (container.renderfix = function () {});\n container.renderfix();\n return container;\n };\n R._engine.setViewBox = function (x, y, w, h, fit) {\n eve(\"raphael.setViewBox\", this, this._viewBox, [x, y, w, h, fit]);\n var paperSize = this.getSize(),\n size = mmax(w / paperSize.width, h / paperSize.height),\n top = this.top,\n aspectRatio = fit ? \"xMidYMid meet\" : \"xMinYMin\",\n vb,\n sw;\n if (x == null) {\n if (this._vbSize) {\n size = 1;\n }\n delete this._vbSize;\n vb = \"0 0 \" + this.width + S + this.height;\n } else {\n this._vbSize = size;\n vb = x + S + y + S + w + S + h;\n }\n $(this.canvas, {\n viewBox: vb,\n preserveAspectRatio: aspectRatio\n });\n while (size && top) {\n sw = \"stroke-width\" in top.attrs ? top.attrs[\"stroke-width\"] : 1;\n top.attr({\"stroke-width\": sw});\n top._.dirty = 1;\n top._.dirtyT = 1;\n top = top.prev;\n }\n this._viewBox = [x, y, w, h, !!fit];\n return this;\n };\n /*\\\n * Paper.renderfix\n [ method ]\n **\n * Fixes the issue of Firefox and IE9 regarding subpixel rendering. If paper is dependent\n * on other elements after reflow it could shift half pixel which cause for lines to lost their crispness.\n * This method fixes the issue.\n **\n Special thanks to Mariusz Nowak (http://www.medikoo.com/) for this method.\n \\*/\n R.prototype.renderfix = function () {\n var cnvs = this.canvas,\n s = cnvs.style,\n pos;\n try {\n pos = cnvs.getScreenCTM() || cnvs.createSVGMatrix();\n } catch (e) {\n pos = cnvs.createSVGMatrix();\n }\n var left = -pos.e % 1,\n top = -pos.f % 1;\n if (left || top) {\n if (left) {\n this._left = (this._left + left) % 1;\n s.left = this._left + \"px\";\n }\n if (top) {\n this._top = (this._top + top) % 1;\n s.top = this._top + \"px\";\n }\n }\n };\n /*\\\n * Paper.clear\n [ method ]\n **\n * Clears the paper, i.e. removes all the elements.\n \\*/\n R.prototype.clear = function () {\n R.eve(\"raphael.clear\", this);\n var c = this.canvas;\n while (c.firstChild) {\n c.removeChild(c.firstChild);\n }\n this.bottom = this.top = null;\n (this.desc = $(\"desc\")).appendChild(R._g.doc.createTextNode(\"Created with Rapha\\xebl \" + R.version));\n c.appendChild(this.desc);\n c.appendChild(this.defs = $(\"defs\"));\n };\n /*\\\n * Paper.remove\n [ method ]\n **\n * Removes the paper from the DOM.\n \\*/\n R.prototype.remove = function () {\n eve(\"raphael.remove\", this);\n this.canvas.parentNode && this.canvas.parentNode.removeChild(this.canvas);\n for (var i in this) {\n this[i] = typeof this[i] == \"function\" ? R._removedFactory(i) : null;\n }\n };\n var setproto = R.st;\n for (var method in elproto) if (elproto[has](method) && !setproto[has](method)) {\n setproto[method] = (function (methodname) {\n return function () {\n var arg = arguments;\n return this.forEach(function (el) {\n el[methodname].apply(el, arg);\n });\n };\n })(method);\n }\n}).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/***/ }),\n\n/***/ \"./dev/raphael.vml.js\":\n/*!****************************!*\\\n !*** ./dev/raphael.vml.js ***!\n \\****************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ./raphael.core */ \"./dev/raphael.core.js\")], __WEBPACK_AMD_DEFINE_RESULT__ = (function(R) {\n if (R && !R.vml) {\n return;\n }\n\n var has = \"hasOwnProperty\",\n Str = String,\n toFloat = parseFloat,\n math = Math,\n round = math.round,\n mmax = math.max,\n mmin = math.min,\n abs = math.abs,\n fillString = \"fill\",\n separator = /[, ]+/,\n eve = R.eve,\n ms = \" progid:DXImageTransform.Microsoft\",\n S = \" \",\n E = \"\",\n map = {M: \"m\", L: \"l\", C: \"c\", Z: \"x\", m: \"t\", l: \"r\", c: \"v\", z: \"x\"},\n bites = /([clmz]),?([^clmz]*)/gi,\n blurregexp = / progid:\\S+Blur\\([^\\)]+\\)/g,\n val = /-?[^,\\s-]+/g,\n cssDot = \"position:absolute;left:0;top:0;width:1px;height:1px;behavior:url(#default#VML)\",\n zoom = 21600,\n pathTypes = {path: 1, rect: 1, image: 1},\n ovalTypes = {circle: 1, ellipse: 1},\n path2vml = function (path) {\n var total = /[ahqstv]/ig,\n command = R._pathToAbsolute;\n Str(path).match(total) && (command = R._path2curve);\n total = /[clmz]/g;\n if (command == R._pathToAbsolute && !Str(path).match(total)) {\n var res = Str(path).replace(bites, function (all, command, args) {\n var vals = [],\n isMove = command.toLowerCase() == \"m\",\n res = map[command];\n args.replace(val, function (value) {\n if (isMove && vals.length == 2) {\n res += vals + map[command == \"m\" ? \"l\" : \"L\"];\n vals = [];\n }\n vals.push(round(value * zoom));\n });\n return res + vals;\n });\n return res;\n }\n var pa = command(path), p, r;\n res = [];\n for (var i = 0, ii = pa.length; i < ii; i++) {\n p = pa[i];\n r = pa[i][0].toLowerCase();\n r == \"z\" && (r = \"x\");\n for (var j = 1, jj = p.length; j < jj; j++) {\n r += round(p[j] * zoom) + (j != jj - 1 ? \",\" : E);\n }\n res.push(r);\n }\n return res.join(S);\n },\n compensation = function (deg, dx, dy) {\n var m = R.matrix();\n m.rotate(-deg, .5, .5);\n return {\n dx: m.x(dx, dy),\n dy: m.y(dx, dy)\n };\n },\n setCoords = function (p, sx, sy, dx, dy, deg) {\n var _ = p._,\n m = p.matrix,\n fillpos = _.fillpos,\n o = p.node,\n s = o.style,\n y = 1,\n flip = \"\",\n dxdy,\n kx = zoom / sx,\n ky = zoom / sy;\n s.visibility = \"hidden\";\n if (!sx || !sy) {\n return;\n }\n o.coordsize = abs(kx) + S + abs(ky);\n s.rotation = deg * (sx * sy < 0 ? -1 : 1);\n if (deg) {\n var c = compensation(deg, dx, dy);\n dx = c.dx;\n dy = c.dy;\n }\n sx < 0 && (flip += \"x\");\n sy < 0 && (flip += \" y\") && (y = -1);\n s.flip = flip;\n o.coordorigin = (dx * -kx) + S + (dy * -ky);\n if (fillpos || _.fillsize) {\n var fill = o.getElementsByTagName(fillString);\n fill = fill && fill[0];\n o.removeChild(fill);\n if (fillpos) {\n c = compensation(deg, m.x(fillpos[0], fillpos[1]), m.y(fillpos[0], fillpos[1]));\n fill.position = c.dx * y + S + c.dy * y;\n }\n if (_.fillsize) {\n fill.size = _.fillsize[0] * abs(sx) + S + _.fillsize[1] * abs(sy);\n }\n o.appendChild(fill);\n }\n s.visibility = \"visible\";\n };\n R.toString = function () {\n return \"Your browser doesn\\u2019t support SVG. Falling down to VML.\\nYou are running Rapha\\xebl \" + this.version;\n };\n var addArrow = function (o, value, isEnd) {\n var values = Str(value).toLowerCase().split(\"-\"),\n se = isEnd ? \"end\" : \"start\",\n i = values.length,\n type = \"classic\",\n w = \"medium\",\n h = \"medium\";\n while (i--) {\n switch (values[i]) {\n case \"block\":\n case \"classic\":\n case \"oval\":\n case \"diamond\":\n case \"open\":\n case \"none\":\n type = values[i];\n break;\n case \"wide\":\n case \"narrow\": h = values[i]; break;\n case \"long\":\n case \"short\": w = values[i]; break;\n }\n }\n var stroke = o.node.getElementsByTagName(\"stroke\")[0];\n stroke[se + \"arrow\"] = type;\n stroke[se + \"arrowlength\"] = w;\n stroke[se + \"arrowwidth\"] = h;\n },\n setFillAndStroke = function (o, params) {\n // o.paper.canvas.style.display = \"none\";\n o.attrs = o.attrs || {};\n var node = o.node,\n a = o.attrs,\n s = node.style,\n xy,\n newpath = pathTypes[o.type] && (params.x != a.x || params.y != a.y || params.width != a.width || params.height != a.height || params.cx != a.cx || params.cy != a.cy || params.rx != a.rx || params.ry != a.ry || params.r != a.r),\n isOval = ovalTypes[o.type] && (a.cx != params.cx || a.cy != params.cy || a.r != params.r || a.rx != params.rx || a.ry != params.ry),\n res = o;\n\n\n for (var par in params) if (params[has](par)) {\n a[par] = params[par];\n }\n if (newpath) {\n a.path = R._getPath[o.type](o);\n o._.dirty = 1;\n }\n params.href && (node.href = params.href);\n params.title && (node.title = params.title);\n params.target && (node.target = params.target);\n params.cursor && (s.cursor = params.cursor);\n \"blur\" in params && o.blur(params.blur);\n if (params.path && o.type == \"path\" || newpath) {\n node.path = path2vml(~Str(a.path).toLowerCase().indexOf(\"r\") ? R._pathToAbsolute(a.path) : a.path);\n o._.dirty = 1;\n if (o.type == \"image\") {\n o._.fillpos = [a.x, a.y];\n o._.fillsize = [a.width, a.height];\n setCoords(o, 1, 1, 0, 0, 0);\n }\n }\n \"transform\" in params && o.transform(params.transform);\n if (isOval) {\n var cx = +a.cx,\n cy = +a.cy,\n rx = +a.rx || +a.r || 0,\n ry = +a.ry || +a.r || 0;\n node.path = R.format(\"ar{0},{1},{2},{3},{4},{1},{4},{1}x\", round((cx - rx) * zoom), round((cy - ry) * zoom), round((cx + rx) * zoom), round((cy + ry) * zoom), round(cx * zoom));\n o._.dirty = 1;\n }\n if (\"clip-rect\" in params) {\n var rect = Str(params[\"clip-rect\"]).split(separator);\n if (rect.length == 4) {\n rect[2] = +rect[2] + (+rect[0]);\n rect[3] = +rect[3] + (+rect[1]);\n var div = node.clipRect || R._g.doc.createElement(\"div\"),\n dstyle = div.style;\n dstyle.clip = R.format(\"rect({1}px {2}px {3}px {0}px)\", rect);\n if (!node.clipRect) {\n dstyle.position = \"absolute\";\n dstyle.top = 0;\n dstyle.left = 0;\n dstyle.width = o.paper.width + \"px\";\n dstyle.height = o.paper.height + \"px\";\n node.parentNode.insertBefore(div, node);\n div.appendChild(node);\n node.clipRect = div;\n }\n }\n if (!params[\"clip-rect\"]) {\n node.clipRect && (node.clipRect.style.clip = \"auto\");\n }\n }\n if (o.textpath) {\n var textpathStyle = o.textpath.style;\n params.font && (textpathStyle.font = params.font);\n params[\"font-family\"] && (textpathStyle.fontFamily = '\"' + params[\"font-family\"].split(\",\")[0].replace(/^['\"]+|['\"]+$/g, E) + '\"');\n params[\"font-size\"] && (textpathStyle.fontSize = params[\"font-size\"]);\n params[\"font-weight\"] && (textpathStyle.fontWeight = params[\"font-weight\"]);\n params[\"font-style\"] && (textpathStyle.fontStyle = params[\"font-style\"]);\n }\n if (\"arrow-start\" in params) {\n addArrow(res, params[\"arrow-start\"]);\n }\n if (\"arrow-end\" in params) {\n addArrow(res, params[\"arrow-end\"], 1);\n }\n if (params.opacity != null ||\n params.fill != null ||\n params.src != null ||\n params.stroke != null ||\n params[\"stroke-width\"] != null ||\n params[\"stroke-opacity\"] != null ||\n params[\"fill-opacity\"] != null ||\n params[\"stroke-dasharray\"] != null ||\n params[\"stroke-miterlimit\"] != null ||\n params[\"stroke-linejoin\"] != null ||\n params[\"stroke-linecap\"] != null) {\n var fill = node.getElementsByTagName(fillString),\n newfill = false;\n fill = fill && fill[0];\n !fill && (newfill = fill = createNode(fillString));\n if (o.type == \"image\" && params.src) {\n fill.src = params.src;\n }\n params.fill && (fill.on = true);\n if (fill.on == null || params.fill == \"none\" || params.fill === null) {\n fill.on = false;\n }\n if (fill.on && params.fill) {\n var isURL = Str(params.fill).match(R._ISURL);\n if (isURL) {\n fill.parentNode == node && node.removeChild(fill);\n fill.rotate = true;\n fill.src = isURL[1];\n fill.type = \"tile\";\n var bbox = o.getBBox(1);\n fill.position = bbox.x + S + bbox.y;\n o._.fillpos = [bbox.x, bbox.y];\n\n R._preload(isURL[1], function () {\n o._.fillsize = [this.offsetWidth, this.offsetHeight];\n });\n } else {\n fill.color = R.getRGB(params.fill).hex;\n fill.src = E;\n fill.type = \"solid\";\n if (R.getRGB(params.fill).error && (res.type in {circle: 1, ellipse: 1} || Str(params.fill).charAt() != \"r\") && addGradientFill(res, params.fill, fill)) {\n a.fill = \"none\";\n a.gradient = params.fill;\n fill.rotate = false;\n }\n }\n }\n if (\"fill-opacity\" in params || \"opacity\" in params) {\n var opacity = ((+a[\"fill-opacity\"] + 1 || 2) - 1) * ((+a.opacity + 1 || 2) - 1) * ((+R.getRGB(params.fill).o + 1 || 2) - 1);\n opacity = mmin(mmax(opacity, 0), 1);\n fill.opacity = opacity;\n if (fill.src) {\n fill.color = \"none\";\n }\n }\n node.appendChild(fill);\n var stroke = (node.getElementsByTagName(\"stroke\") && node.getElementsByTagName(\"stroke\")[0]),\n newstroke = false;\n !stroke && (newstroke = stroke = createNode(\"stroke\"));\n if ((params.stroke && params.stroke != \"none\") ||\n params[\"stroke-width\"] ||\n params[\"stroke-opacity\"] != null ||\n params[\"stroke-dasharray\"] ||\n params[\"stroke-miterlimit\"] ||\n params[\"stroke-linejoin\"] ||\n params[\"stroke-linecap\"]) {\n stroke.on = true;\n }\n (params.stroke == \"none\" || params.stroke === null || stroke.on == null || params.stroke == 0 || params[\"stroke-width\"] == 0) && (stroke.on = false);\n var strokeColor = R.getRGB(params.stroke);\n stroke.on && params.stroke && (stroke.color = strokeColor.hex);\n opacity = ((+a[\"stroke-opacity\"] + 1 || 2) - 1) * ((+a.opacity + 1 || 2) - 1) * ((+strokeColor.o + 1 || 2) - 1);\n var width = (toFloat(params[\"stroke-width\"]) || 1) * .75;\n opacity = mmin(mmax(opacity, 0), 1);\n params[\"stroke-width\"] == null && (width = a[\"stroke-width\"]);\n params[\"stroke-width\"] && (stroke.weight = width);\n width && width < 1 && (opacity *= width) && (stroke.weight = 1);\n stroke.opacity = opacity;\n\n params[\"stroke-linejoin\"] && (stroke.joinstyle = params[\"stroke-linejoin\"] || \"miter\");\n stroke.miterlimit = params[\"stroke-miterlimit\"] || 8;\n params[\"stroke-linecap\"] && (stroke.endcap = params[\"stroke-linecap\"] == \"butt\" ? \"flat\" : params[\"stroke-linecap\"] == \"square\" ? \"square\" : \"round\");\n if (\"stroke-dasharray\" in params) {\n var dasharray = {\n \"-\": \"shortdash\",\n \".\": \"shortdot\",\n \"-.\": \"shortdashdot\",\n \"-..\": \"shortdashdotdot\",\n \". \": \"dot\",\n \"- \": \"dash\",\n \"--\": \"longdash\",\n \"- .\": \"dashdot\",\n \"--.\": \"longdashdot\",\n \"--..\": \"longdashdotdot\"\n };\n stroke.dashstyle = dasharray[has](params[\"stroke-dasharray\"]) ? dasharray[params[\"stroke-dasharray\"]] : E;\n }\n newstroke && node.appendChild(stroke);\n }\n if (res.type == \"text\") {\n res.paper.canvas.style.display = E;\n var span = res.paper.span,\n m = 100,\n fontSize = a.font && a.font.match(/\\d+(?:\\.\\d*)?(?=px)/);\n s = span.style;\n a.font && (s.font = a.font);\n a[\"font-family\"] && (s.fontFamily = a[\"font-family\"]);\n a[\"font-weight\"] && (s.fontWeight = a[\"font-weight\"]);\n a[\"font-style\"] && (s.fontStyle = a[\"font-style\"]);\n fontSize = toFloat(a[\"font-size\"] || fontSize && fontSize[0]) || 10;\n s.fontSize = fontSize * m + \"px\";\n res.textpath.string && (span.innerHTML = Str(res.textpath.string).replace(/</g, \"<\").replace(/&/g, \"&\").replace(/\\n/g, \"<br>\"));\n var brect = span.getBoundingClientRect();\n res.W = a.w = (brect.right - brect.left) / m;\n res.H = a.h = (brect.bottom - brect.top) / m;\n // res.paper.canvas.style.display = \"none\";\n res.X = a.x;\n res.Y = a.y + res.H / 2;\n\n (\"x\" in params || \"y\" in params) && (res.path.v = R.format(\"m{0},{1}l{2},{1}\", round(a.x * zoom), round(a.y * zoom), round(a.x * zoom) + 1));\n var dirtyattrs = [\"x\", \"y\", \"text\", \"font\", \"font-family\", \"font-weight\", \"font-style\", \"font-size\"];\n for (var d = 0, dd = dirtyattrs.length; d < dd; d++) if (dirtyattrs[d] in params) {\n res._.dirty = 1;\n break;\n }\n\n // text-anchor emulation\n switch (a[\"text-anchor\"]) {\n case \"start\":\n res.textpath.style[\"v-text-align\"] = \"left\";\n res.bbx = res.W / 2;\n break;\n case \"end\":\n res.textpath.style[\"v-text-align\"] = \"right\";\n res.bbx = -res.W / 2;\n break;\n default:\n res.textpath.style[\"v-text-align\"] = \"center\";\n res.bbx = 0;\n break;\n }\n res.textpath.style[\"v-text-kern\"] = true;\n }\n // res.paper.canvas.style.display = E;\n },\n addGradientFill = function (o, gradient, fill) {\n o.attrs = o.attrs || {};\n var attrs = o.attrs,\n pow = Math.pow,\n opacity,\n oindex,\n type = \"linear\",\n fxfy = \".5 .5\";\n o.attrs.gradient = gradient;\n gradient = Str(gradient).replace(R._radial_gradient, function (all, fx, fy) {\n type = \"radial\";\n if (fx && fy) {\n fx = toFloat(fx);\n fy = toFloat(fy);\n pow(fx - .5, 2) + pow(fy - .5, 2) > .25 && (fy = math.sqrt(.25 - pow(fx - .5, 2)) * ((fy > .5) * 2 - 1) + .5);\n fxfy = fx + S + fy;\n }\n return E;\n });\n gradient = gradient.split(/\\s*\\-\\s*/);\n if (type == \"linear\") {\n var angle = gradient.shift();\n angle = -toFloat(angle);\n if (isNaN(angle)) {\n return null;\n }\n }\n var dots = R._parseDots(gradient);\n if (!dots) {\n return null;\n }\n o = o.shape || o.node;\n if (dots.length) {\n o.removeChild(fill);\n fill.on = true;\n fill.method = \"none\";\n fill.color = dots[0].color;\n fill.color2 = dots[dots.length - 1].color;\n var clrs = [];\n for (var i = 0, ii = dots.length; i < ii; i++) {\n dots[i].offset && clrs.push(dots[i].offset + S + dots[i].color);\n }\n fill.colors = clrs.length ? clrs.join() : \"0% \" + fill.color;\n if (type == \"radial\") {\n fill.type = \"gradientTitle\";\n fill.focus = \"100%\";\n fill.focussize = \"0 0\";\n fill.focusposition = fxfy;\n fill.angle = 0;\n } else {\n // fill.rotate= true;\n fill.type = \"gradient\";\n fill.angle = (270 - angle) % 360;\n }\n o.appendChild(fill);\n }\n return 1;\n },\n Element = function (node, vml) {\n this[0] = this.node = node;\n node.raphael = true;\n this.id = R._oid++;\n node.raphaelid = this.id;\n this.X = 0;\n this.Y = 0;\n this.attrs = {};\n this.paper = vml;\n this.matrix = R.matrix();\n this._ = {\n transform: [],\n sx: 1,\n sy: 1,\n dx: 0,\n dy: 0,\n deg: 0,\n dirty: 1,\n dirtyT: 1\n };\n !vml.bottom && (vml.bottom = this);\n this.prev = vml.top;\n vml.top && (vml.top.next = this);\n vml.top = this;\n this.next = null;\n };\n var elproto = R.el;\n\n Element.prototype = elproto;\n elproto.constructor = Element;\n elproto.transform = function (tstr) {\n if (tstr == null) {\n return this._.transform;\n }\n var vbs = this.paper._viewBoxShift,\n vbt = vbs ? \"s\" + [vbs.scale, vbs.scale] + \"-1-1t\" + [vbs.dx, vbs.dy] : E,\n oldt;\n if (vbs) {\n oldt = tstr = Str(tstr).replace(/\\.{3}|\\u2026/g, this._.transform || E);\n }\n R._extractTransform(this, vbt + tstr);\n var matrix = this.matrix.clone(),\n skew = this.skew,\n o = this.node,\n split,\n isGrad = ~Str(this.attrs.fill).indexOf(\"-\"),\n isPatt = !Str(this.attrs.fill).indexOf(\"url(\");\n matrix.translate(1, 1);\n if (isPatt || isGrad || this.type == \"image\") {\n skew.matrix = \"1 0 0 1\";\n skew.offset = \"0 0\";\n split = matrix.split();\n if ((isGrad && split.noRotation) || !split.isSimple) {\n o.style.filter = matrix.toFilter();\n var bb = this.getBBox(),\n bbt = this.getBBox(1),\n dx = bb.x - bbt.x,\n dy = bb.y - bbt.y;\n o.coordorigin = (dx * -zoom) + S + (dy * -zoom);\n setCoords(this, 1, 1, dx, dy, 0);\n } else {\n o.style.filter = E;\n setCoords(this, split.scalex, split.scaley, split.dx, split.dy, split.rotate);\n }\n } else {\n o.style.filter = E;\n skew.matrix = Str(matrix);\n skew.offset = matrix.offset();\n }\n if (oldt !== null) { // empty string value is true as well\n this._.transform = oldt;\n R._extractTransform(this, oldt);\n }\n return this;\n };\n elproto.rotate = function (deg, cx, cy) {\n if (this.removed) {\n return this;\n }\n if (deg == null) {\n return;\n }\n deg = Str(deg).split(separator);\n if (deg.length - 1) {\n cx = toFloat(deg[1]);\n cy = toFloat(deg[2]);\n }\n deg = toFloat(deg[0]);\n (cy == null) && (cx = cy);\n if (cx == null || cy == null) {\n var bbox = this.getBBox(1);\n cx = bbox.x + bbox.width / 2;\n cy = bbox.y + bbox.height / 2;\n }\n this._.dirtyT = 1;\n this.transform(this._.transform.concat([[\"r\", deg, cx, cy]]));\n return this;\n };\n elproto.translate = function (dx, dy) {\n if (this.removed) {\n return this;\n }\n dx = Str(dx).split(separator);\n if (dx.length - 1) {\n dy = toFloat(dx[1]);\n }\n dx = toFloat(dx[0]) || 0;\n dy = +dy || 0;\n if (this._.bbox) {\n this._.bbox.x += dx;\n this._.bbox.y += dy;\n }\n this.transform(this._.transform.concat([[\"t\", dx, dy]]));\n return this;\n };\n elproto.scale = function (sx, sy, cx, cy) {\n if (this.removed) {\n return this;\n }\n sx = Str(sx).split(separator);\n if (sx.length - 1) {\n sy = toFloat(sx[1]);\n cx = toFloat(sx[2]);\n cy = toFloat(sx[3]);\n isNaN(cx) && (cx = null);\n isNaN(cy) && (cy = null);\n }\n sx = toFloat(sx[0]);\n (sy == null) && (sy = sx);\n (cy == null) && (cx = cy);\n if (cx == null || cy == null) {\n var bbox = this.getBBox(1);\n }\n cx = cx == null ? bbox.x + bbox.width / 2 : cx;\n cy = cy == null ? bbox.y + bbox.height / 2 : cy;\n\n this.transform(this._.transform.concat([[\"s\", sx, sy, cx, cy]]));\n this._.dirtyT = 1;\n return this;\n };\n elproto.hide = function () {\n !this.removed && (this.node.style.display = \"none\");\n return this;\n };\n elproto.show = function () {\n !this.removed && (this.node.style.display = E);\n return this;\n };\n // Needed to fix the vml setViewBox issues\n elproto.auxGetBBox = R.el.getBBox;\n elproto.getBBox = function(){\n var b = this.auxGetBBox();\n if (this.paper && this.paper._viewBoxShift)\n {\n var c = {};\n var z = 1/this.paper._viewBoxShift.scale;\n c.x = b.x - this.paper._viewBoxShift.dx;\n c.x *= z;\n c.y = b.y - this.paper._viewBoxShift.dy;\n c.y *= z;\n c.width = b.width * z;\n c.height = b.height * z;\n c.x2 = c.x + c.width;\n c.y2 = c.y + c.height;\n return c;\n }\n return b;\n };\n elproto._getBBox = function () {\n if (this.removed) {\n return {};\n }\n return {\n x: this.X + (this.bbx || 0) - this.W / 2,\n y: this.Y - this.H,\n width: this.W,\n height: this.H\n };\n };\n elproto.remove = function () {\n if (this.removed || !this.node.parentNode) {\n return;\n }\n this.paper.__set__ && this.paper.__set__.exclude(this);\n R.eve.unbind(\"raphael.*.*.\" + this.id);\n R._tear(this, this.paper);\n this.node.parentNode.removeChild(this.node);\n this.shape && this.shape.parentNode.removeChild(this.shape);\n for (var i in this) {\n this[i] = typeof this[i] == \"function\" ? R._removedFactory(i) : null;\n }\n this.removed = true;\n };\n elproto.attr = function (name, value) {\n if (this.removed) {\n return this;\n }\n if (name == null) {\n var res = {};\n for (var a in this.attrs) if (this.attrs[has](a)) {\n res[a] = this.attrs[a];\n }\n res.gradient && res.fill == \"none\" && (res.fill = res.gradient) && delete res.gradient;\n res.transform = this._.transform;\n return res;\n }\n if (value == null && R.is(name, \"string\")) {\n if (name == fillString && this.attrs.fill == \"none\" && this.attrs.gradient) {\n return this.attrs.gradient;\n }\n var names = name.split(separator),\n out = {};\n for (var i = 0, ii = names.length; i < ii; i++) {\n name = names[i];\n if (name in this.attrs) {\n out[name] = this.attrs[name];\n } else if (R.is(this.paper.customAttributes[name], \"function\")) {\n out[name] = this.paper.customAttributes[name].def;\n } else {\n out[name] = R._availableAttrs[name];\n }\n }\n return ii - 1 ? out : out[names[0]];\n }\n if (this.attrs && value == null && R.is(name, \"array\")) {\n out = {};\n for (i = 0, ii = name.length; i < ii; i++) {\n out[name[i]] = this.attr(name[i]);\n }\n return out;\n }\n var params;\n if (value != null) {\n params = {};\n params[name] = value;\n }\n value == null && R.is(name, \"object\") && (params = name);\n for (var key in params) {\n eve(\"raphael.attr.\" + key + \".\" + this.id, this, params[key]);\n }\n if (params) {\n for (key in this.paper.customAttributes) if (this.paper.customAttributes[has](key) && params[has](key) && R.is(this.paper.customAttributes[key], \"function\")) {\n var par = this.paper.customAttributes[key].apply(this, [].concat(params[key]));\n this.attrs[key] = params[key];\n for (var subkey in par) if (par[has](subkey)) {\n params[subkey] = par[subkey];\n }\n }\n // this.paper.canvas.style.display = \"none\";\n if (params.text && this.type == \"text\") {\n this.textpath.string = params.text;\n }\n setFillAndStroke(this, params);\n // this.paper.canvas.style.display = E;\n }\n return this;\n };\n elproto.toFront = function () {\n !this.removed && this.node.parentNode.appendChild(this.node);\n this.paper && this.paper.top != this && R._tofront(this, this.paper);\n return this;\n };\n elproto.toBack = function () {\n if (this.removed) {\n return this;\n }\n if (this.node.parentNode.firstChild != this.node) {\n this.node.parentNode.insertBefore(this.node, this.node.parentNode.firstChild);\n R._toback(this, this.paper);\n }\n return this;\n };\n elproto.insertAfter = function (element) {\n if (this.removed) {\n return this;\n }\n if (element.constructor == R.st.constructor) {\n element = element[element.length - 1];\n }\n if (element.node.nextSibling) {\n element.node.parentNode.insertBefore(this.node, element.node.nextSibling);\n } else {\n element.node.parentNode.appendChild(this.node);\n }\n R._insertafter(this, element, this.paper);\n return this;\n };\n elproto.insertBefore = function (element) {\n if (this.removed) {\n return this;\n }\n if (element.constructor == R.st.constructor) {\n element = element[0];\n }\n element.node.parentNode.insertBefore(this.node, element.node);\n R._insertbefore(this, element, this.paper);\n return this;\n };\n elproto.blur = function (size) {\n var s = this.node.runtimeStyle,\n f = s.filter;\n f = f.replace(blurregexp, E);\n if (+size !== 0) {\n this.attrs.blur = size;\n s.filter = f + S + ms + \".Blur(pixelradius=\" + (+size || 1.5) + \")\";\n s.margin = R.format(\"-{0}px 0 0 -{0}px\", round(+size || 1.5));\n } else {\n s.filter = f;\n s.margin = 0;\n delete this.attrs.blur;\n }\n return this;\n };\n\n R._engine.path = function (pathString, vml) {\n var el = createNode(\"shape\");\n el.style.cssText = cssDot;\n el.coordsize = zoom + S + zoom;\n el.coordorigin = vml.coordorigin;\n var p = new Element(el, vml),\n attr = {fill: \"none\", stroke: \"#000\"};\n pathString && (attr.path = pathString);\n p.type = \"path\";\n p.path = [];\n p.Path = E;\n setFillAndStroke(p, attr);\n vml.canvas && vml.canvas.appendChild(el);\n var skew = createNode(\"skew\");\n skew.on = true;\n el.appendChild(skew);\n p.skew = skew;\n p.transform(E);\n return p;\n };\n R._engine.rect = function (vml, x, y, w, h, r) {\n var path = R._rectPath(x, y, w, h, r),\n res = vml.path(path),\n a = res.attrs;\n res.X = a.x = x;\n res.Y = a.y = y;\n res.W = a.width = w;\n res.H = a.height = h;\n a.r = r;\n a.path = path;\n res.type = \"rect\";\n return res;\n };\n R._engine.ellipse = function (vml, x, y, rx, ry) {\n var res = vml.path(),\n a = res.attrs;\n res.X = x - rx;\n res.Y = y - ry;\n res.W = rx * 2;\n res.H = ry * 2;\n res.type = \"ellipse\";\n setFillAndStroke(res, {\n cx: x,\n cy: y,\n rx: rx,\n ry: ry\n });\n return res;\n };\n R._engine.circle = function (vml, x, y, r) {\n var res = vml.path(),\n a = res.attrs;\n res.X = x - r;\n res.Y = y - r;\n res.W = res.H = r * 2;\n res.type = \"circle\";\n setFillAndStroke(res, {\n cx: x,\n cy: y,\n r: r\n });\n return res;\n };\n R._engine.image = function (vml, src, x, y, w, h) {\n var path = R._rectPath(x, y, w, h),\n res = vml.path(path).attr({stroke: \"none\"}),\n a = res.attrs,\n node = res.node,\n fill = node.getElementsByTagName(fillString)[0];\n a.src = src;\n res.X = a.x = x;\n res.Y = a.y = y;\n res.W = a.width = w;\n res.H = a.height = h;\n a.path = path;\n res.type = \"image\";\n fill.parentNode == node && node.removeChild(fill);\n fill.rotate = true;\n fill.src = src;\n fill.type = \"tile\";\n res._.fillpos = [x, y];\n res._.fillsize = [w, h];\n node.appendChild(fill);\n setCoords(res, 1, 1, 0, 0, 0);\n return res;\n };\n R._engine.text = function (vml, x, y, text) {\n var el = createNode(\"shape\"),\n path = createNode(\"path\"),\n o = createNode(\"textpath\");\n x = x || 0;\n y = y || 0;\n text = text || \"\";\n path.v = R.format(\"m{0},{1}l{2},{1}\", round(x * zoom), round(y * zoom), round(x * zoom) + 1);\n path.textpathok = true;\n o.string = Str(text);\n o.on = true;\n el.style.cssText = cssDot;\n el.coordsize = zoom + S + zoom;\n el.coordorigin = \"0 0\";\n var p = new Element(el, vml),\n attr = {\n fill: \"#000\",\n stroke: \"none\",\n font: R._availableAttrs.font,\n text: text\n };\n p.shape = el;\n p.path = path;\n p.textpath = o;\n p.type = \"text\";\n p.attrs.text = Str(text);\n p.attrs.x = x;\n p.attrs.y = y;\n p.attrs.w = 1;\n p.attrs.h = 1;\n setFillAndStroke(p, attr);\n el.appendChild(o);\n el.appendChild(path);\n vml.canvas.appendChild(el);\n var skew = createNode(\"skew\");\n skew.on = true;\n el.appendChild(skew);\n p.skew = skew;\n p.transform(E);\n return p;\n };\n R._engine.setSize = function (width, height) {\n var cs = this.canvas.style;\n this.width = width;\n this.height = height;\n width == +width && (width += \"px\");\n height == +height && (height += \"px\");\n cs.width = width;\n cs.height = height;\n cs.clip = \"rect(0 \" + width + \" \" + height + \" 0)\";\n if (this._viewBox) {\n R._engine.setViewBox.apply(this, this._viewBox);\n }\n return this;\n };\n R._engine.setViewBox = function (x, y, w, h, fit) {\n R.eve(\"raphael.setViewBox\", this, this._viewBox, [x, y, w, h, fit]);\n var paperSize = this.getSize(),\n width = paperSize.width,\n height = paperSize.height,\n H, W;\n if (fit) {\n H = height / h;\n W = width / w;\n if (w * H < width) {\n x -= (width - w * H) / 2 / H;\n }\n if (h * W < height) {\n y -= (height - h * W) / 2 / W;\n }\n }\n this._viewBox = [x, y, w, h, !!fit];\n this._viewBoxShift = {\n dx: -x,\n dy: -y,\n scale: paperSize\n };\n this.forEach(function (el) {\n el.transform(\"...\");\n });\n return this;\n };\n var createNode;\n R._engine.initWin = function (win) {\n var doc = win.document;\n if (doc.styleSheets.length < 31) {\n doc.createStyleSheet().addRule(\".rvml\", \"behavior:url(#default#VML)\");\n } else {\n // no more room, add to the existing one\n // http://msdn.microsoft.com/en-us/library/ms531194%28VS.85%29.aspx\n doc.styleSheets[0].addRule(\".rvml\", \"behavior:url(#default#VML)\");\n }\n try {\n !doc.namespaces.rvml && doc.namespaces.add(\"rvml\", \"urn:schemas-microsoft-com:vml\");\n createNode = function (tagName) {\n return doc.createElement('<rvml:' + tagName + ' class=\"rvml\">');\n };\n } catch (e) {\n createNode = function (tagName) {\n return doc.createElement('<' + tagName + ' xmlns=\"urn:schemas-microsoft.com:vml\" class=\"rvml\">');\n };\n }\n };\n R._engine.initWin(R._g.win);\n R._engine.create = function () {\n var con = R._getContainer.apply(0, arguments),\n container = con.container,\n height = con.height,\n s,\n width = con.width,\n x = con.x,\n y = con.y;\n if (!container) {\n throw new Error(\"VML container not found.\");\n }\n var res = new R._Paper,\n c = res.canvas = R._g.doc.createElement(\"div\"),\n cs = c.style;\n x = x || 0;\n y = y || 0;\n width = width || 512;\n height = height || 342;\n res.width = width;\n res.height = height;\n width == +width && (width += \"px\");\n height == +height && (height += \"px\");\n res.coordsize = zoom * 1e3 + S + zoom * 1e3;\n res.coordorigin = \"0 0\";\n res.span = R._g.doc.createElement(\"span\");\n res.span.style.cssText = \"position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;\";\n c.appendChild(res.span);\n cs.cssText = R.format(\"top:0;left:0;width:{0};height:{1};display:inline-block;position:relative;clip:rect(0 {0} {1} 0);overflow:hidden\", width, height);\n if (container == 1) {\n R._g.doc.body.appendChild(c);\n cs.left = x + \"px\";\n cs.top = y + \"px\";\n cs.position = \"absolute\";\n } else {\n if (container.firstChild) {\n container.insertBefore(c, container.firstChild);\n } else {\n container.appendChild(c);\n }\n }\n res.renderfix = function () {};\n return res;\n };\n R.prototype.clear = function () {\n R.eve(\"raphael.clear\", this);\n this.canvas.innerHTML = E;\n this.span = R._g.doc.createElement(\"span\");\n this.span.style.cssText = \"position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;display:inline;\";\n this.canvas.appendChild(this.span);\n this.bottom = this.top = null;\n };\n R.prototype.remove = function () {\n R.eve(\"raphael.remove\", this);\n this.canvas.parentNode.removeChild(this.canvas);\n for (var i in this) {\n this[i] = typeof this[i] == \"function\" ? R._removedFactory(i) : null;\n }\n return true;\n };\n\n var setproto = R.st;\n for (var method in elproto) if (elproto[has](method) && !setproto[has](method)) {\n setproto[method] = (function (methodname) {\n return function () {\n var arg = arguments;\n return this.forEach(function (el) {\n el[methodname].apply(el, arg);\n });\n };\n })(method);\n }\n}).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/***/ }),\n\n/***/ \"./node_modules/eve-raphael/eve.js\":\n/*!*****************************************!*\\\n !*** ./node_modules/eve-raphael/eve.js ***!\n \\*****************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// Copyright (c) 2013 Adobe Systems Incorporated. All rights reserved.\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// │ Eve 0.5.0 - JavaScript Events Library │ \\\\\n// ├────────────────────────────────────────────────────────────┤ \\\\\n// │ Author Dmitry Baranovskiy (http://dmitry.baranovskiy.com/) │ \\\\\n// └────────────────────────────────────────────────────────────┘ \\\\\n\n(function (glob) {\n var version = \"0.5.0\",\n has = \"hasOwnProperty\",\n separator = /[\\.\\/]/,\n comaseparator = /\\s*,\\s*/,\n wildcard = \"*\",\n fun = function () {},\n numsort = function (a, b) {\n return a - b;\n },\n current_event,\n stop,\n events = {n: {}},\n firstDefined = function () {\n for (var i = 0, ii = this.length; i < ii; i++) {\n if (typeof this[i] != \"undefined\") {\n return this[i];\n }\n }\n },\n lastDefined = function () {\n var i = this.length;\n while (--i) {\n if (typeof this[i] != \"undefined\") {\n return this[i];\n }\n }\n },\n objtos = Object.prototype.toString,\n Str = String,\n isArray = Array.isArray || function (ar) {\n return ar instanceof Array || objtos.call(ar) == \"[object Array]\";\n };\n /*\\\n * eve\n [ method ]\n\n * Fires event with given `name`, given scope and other parameters.\n\n > Arguments\n\n - name (string) name of the *event*, dot (`.`) or slash (`/`) separated\n - scope (object) context for the event handlers\n - varargs (...) the rest of arguments will be sent to event handlers\n\n = (object) array of returned values from the listeners. Array has two methods `.firstDefined()` and `.lastDefined()` to get first or last not `undefined` value.\n \\*/\n var eve = function (name, scope) {\n var e = events,\n oldstop = stop,\n args = Array.prototype.slice.call(arguments, 2),\n listeners = eve.listeners(name),\n z = 0,\n f = false,\n l,\n indexed = [],\n queue = {},\n out = [],\n ce = current_event,\n errors = [];\n out.firstDefined = firstDefined;\n out.lastDefined = lastDefined;\n current_event = name;\n stop = 0;\n for (var i = 0, ii = listeners.length; i < ii; i++) if (\"zIndex\" in listeners[i]) {\n indexed.push(listeners[i].zIndex);\n if (listeners[i].zIndex < 0) {\n queue[listeners[i].zIndex] = listeners[i];\n }\n }\n indexed.sort(numsort);\n while (indexed[z] < 0) {\n l = queue[indexed[z++]];\n out.push(l.apply(scope, args));\n if (stop) {\n stop = oldstop;\n return out;\n }\n }\n for (i = 0; i < ii; i++) {\n l = listeners[i];\n if (\"zIndex\" in l) {\n if (l.zIndex == indexed[z]) {\n out.push(l.apply(scope, args));\n if (stop) {\n break;\n }\n do {\n z++;\n l = queue[indexed[z]];\n l && out.push(l.apply(scope, args));\n if (stop) {\n break;\n }\n } while (l)\n } else {\n queue[l.zIndex] = l;\n }\n } else {\n out.push(l.apply(scope, args));\n if (stop) {\n break;\n }\n }\n }\n stop = oldstop;\n current_event = ce;\n return out;\n };\n // Undocumented. Debug only.\n eve._events = events;\n /*\\\n * eve.listeners\n [ method ]\n\n * Internal method which gives you array of all event handlers that will be triggered by the given `name`.\n\n > Arguments\n\n - name (string) name of the event, dot (`.`) or slash (`/`) separated\n\n = (array) array of event handlers\n \\*/\n eve.listeners = function (name) {\n var names = isArray(name) ? name : name.split(separator),\n e = events,\n item,\n items,\n k,\n i,\n ii,\n j,\n jj,\n nes,\n es = [e],\n out = [];\n for (i = 0, ii = names.length; i < ii; i++) {\n nes = [];\n for (j = 0, jj = es.length; j < jj; j++) {\n e = es[j].n;\n items = [e[names[i]], e[wildcard]];\n k = 2;\n while (k--) {\n item = items[k];\n if (item) {\n nes.push(item);\n out = out.concat(item.f || []);\n }\n }\n }\n es = nes;\n }\n return out;\n };\n /*\\\n * eve.separator\n [ method ]\n\n * If for some reasons you don’t like default separators (`.` or `/`) you can specify yours\n * here. Be aware that if you pass a string longer than one character it will be treated as\n * a list of characters.\n\n - separator (string) new separator. Empty string resets to default: `.` or `/`.\n \\*/\n eve.separator = function (sep) {\n if (sep) {\n sep = Str(sep).replace(/(?=[\\.\\^\\]\\[\\-])/g, \"\\\\\");\n sep = \"[\" + sep + \"]\";\n separator = new RegExp(sep);\n } else {\n separator = /[\\.\\/]/;\n }\n };\n /*\\\n * eve.on\n [ method ]\n **\n * Binds given event handler with a given name. You can use wildcards “`*`” for the names:\n | eve.on(\"*.under.*\", f);\n | eve(\"mouse.under.floor\"); // triggers f\n * Use @eve to trigger the listener.\n **\n - name (string) name of the event, dot (`.`) or slash (`/`) separated, with optional wildcards\n - f (function) event handler function\n **\n - name (array) if you don’t want to use separators, you can use array of strings\n - f (function) event handler function\n **\n = (function) returned function accepts a single numeric parameter that represents z-index of the handler. It is an optional feature and only used when you need to ensure that some subset of handlers will be invoked in a given order, despite of the order of assignment. \n > Example:\n | eve.on(\"mouse\", eatIt)(2);\n | eve.on(\"mouse\", scream);\n | eve.on(\"mouse\", catchIt)(1);\n * This will ensure that `catchIt` function will be called before `eatIt`.\n *\n * If you want to put your handler before non-indexed handlers, specify a negative value.\n * Note: I assume most of the time you don’t need to worry about z-index, but it’s nice to have this feature “just in case”.\n \\*/\n eve.on = function (name, f) {\n if (typeof f != \"function\") {\n return function () {};\n }\n var names = isArray(name) ? (isArray(name[0]) ? name : [name]) : Str(name).split(comaseparator);\n for (var i = 0, ii = names.length; i < ii; i++) {\n (function (name) {\n var names = isArray(name) ? name : Str(name).split(separator),\n e = events,\n exist;\n for (var i = 0, ii = names.length; i < ii; i++) {\n e = e.n;\n e = e.hasOwnProperty(names[i]) && e[names[i]] || (e[names[i]] = {n: {}});\n }\n e.f = e.f || [];\n for (i = 0, ii = e.f.length; i < ii; i++) if (e.f[i] == f) {\n exist = true;\n break;\n }\n !exist && e.f.push(f);\n }(names[i]));\n }\n return function (zIndex) {\n if (+zIndex == +zIndex) {\n f.zIndex = +zIndex;\n }\n };\n };\n /*\\\n * eve.f\n [ method ]\n **\n * Returns function that will fire given event with optional arguments.\n * Arguments that will be passed to the result function will be also\n * concated to the list of final arguments.\n | el.onclick = eve.f(\"click\", 1, 2);\n | eve.on(\"click\", function (a, b, c) {\n | console.log(a, b, c); // 1, 2, [event object]\n | });\n > Arguments\n - event (string) event name\n - varargs (…) and any other arguments\n = (function) possible event handler function\n \\*/\n eve.f = function (event) {\n var attrs = [].slice.call(arguments, 1);\n return function () {\n eve.apply(null, [event, null].concat(attrs).concat([].slice.call(arguments, 0)));\n };\n };\n /*\\\n * eve.stop\n [ method ]\n **\n * Is used inside an event handler to stop the event, preventing any subsequent listeners from firing.\n \\*/\n eve.stop = function () {\n stop = 1;\n };\n /*\\\n * eve.nt\n [ method ]\n **\n * Could be used inside event handler to figure out actual name of the event.\n **\n > Arguments\n **\n - subname (string) #optional subname of the event\n **\n = (string) name of the event, if `subname` is not specified\n * or\n = (boolean) `true`, if current event’s name contains `subname`\n \\*/\n eve.nt = function (subname) {\n var cur = isArray(current_event) ? current_event.join(\".\") : current_event;\n if (subname) {\n return new RegExp(\"(?:\\\\.|\\\\/|^)\" + subname + \"(?:\\\\.|\\\\/|$)\").test(cur);\n }\n return cur;\n };\n /*\\\n * eve.nts\n [ method ]\n **\n * Could be used inside event handler to figure out actual name of the event.\n **\n **\n = (array) names of the event\n \\*/\n eve.nts = function () {\n return isArray(current_event) ? current_event : current_event.split(separator);\n };\n /*\\\n * eve.off\n [ method ]\n **\n * Removes given function from the list of event listeners assigned to given name.\n * If no arguments specified all the events will be cleared.\n **\n > Arguments\n **\n - name (string) name of the event, dot (`.`) or slash (`/`) separated, with optional wildcards\n - f (function) event handler function\n \\*/\n /*\\\n * eve.unbind\n [ method ]\n **\n * See @eve.off\n \\*/\n eve.off = eve.unbind = function (name, f) {\n if (!name) {\n eve._events = events = {n: {}};\n return;\n }\n var names = isArray(name) ? (isArray(name[0]) ? name : [name]) : Str(name).split(comaseparator);\n if (names.length > 1) {\n for (var i = 0, ii = names.length; i < ii; i++) {\n eve.off(names[i], f);\n }\n return;\n }\n names = isArray(name) ? name : Str(name).split(separator);\n var e,\n key,\n splice,\n i, ii, j, jj,\n cur = [events];\n for (i = 0, ii = names.length; i < ii; i++) {\n for (j = 0; j < cur.length; j += splice.length - 2) {\n splice = [j, 1];\n e = cur[j].n;\n if (names[i] != wildcard) {\n if (e[names[i]]) {\n splice.push(e[names[i]]);\n }\n } else {\n for (key in e) if (e[has](key)) {\n splice.push(e[key]);\n }\n }\n cur.splice.apply(cur, splice);\n }\n }\n for (i = 0, ii = cur.length; i < ii; i++) {\n e = cur[i];\n while (e.n) {\n if (f) {\n if (e.f) {\n for (j = 0, jj = e.f.length; j < jj; j++) if (e.f[j] == f) {\n e.f.splice(j, 1);\n break;\n }\n !e.f.length && delete e.f;\n }\n for (key in e.n) if (e.n[has](key) && e.n[key].f) {\n var funcs = e.n[key].f;\n for (j = 0, jj = funcs.length; j < jj; j++) if (funcs[j] == f) {\n funcs.splice(j, 1);\n break;\n }\n !funcs.length && delete e.n[key].f;\n }\n } else {\n delete e.f;\n for (key in e.n) if (e.n[has](key) && e.n[key].f) {\n delete e.n[key].f;\n }\n }\n e = e.n;\n }\n }\n };\n /*\\\n * eve.once\n [ method ]\n **\n * Binds given event handler with a given name to only run once then unbind itself.\n | eve.once(\"login\", f);\n | eve(\"login\"); // triggers f\n | eve(\"login\"); // no listeners\n * Use @eve to trigger the listener.\n **\n > Arguments\n **\n - name (string) name of the event, dot (`.`) or slash (`/`) separated, with optional wildcards\n - f (function) event handler function\n **\n = (function) same return function as @eve.on\n \\*/\n eve.once = function (name, f) {\n var f2 = function () {\n eve.off(name, f2);\n return f.apply(this, arguments);\n };\n return eve.on(name, f2);\n };\n /*\\\n * eve.version\n [ property (string) ]\n **\n * Current version of the library.\n \\*/\n eve.version = version;\n eve.toString = function () {\n return \"You are running Eve \" + version;\n };\n ( true && module.exports) ? (module.exports = eve) : ( true ? (!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function() { return eve; }).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__))) : (undefined));\n})(this);\n\n\n/***/ })\n\n/******/ });\n});","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.isVisible)?_c('div',{staticClass:\"modal-banner\"},[_c('b-modal',{attrs:{\"id\":\"modal-banner\",\"size\":_vm.isMobile ? 'sm' : 'lg',\"hide-footer\":\"\",\"hide-header\":\"\",\"title\":`${_vm.$t('modals.modal_banner')}`},model:{value:(_vm.showModal),callback:function ($$v) {_vm.showModal=$$v},expression:\"showModal\"}},[_c('div',{staticClass:\"fast-modal\"},[_c('button',{staticClass:\"close-button\",on:{\"click\":function($event){_vm.showModalBanner = _vm.showModal = false}}},[_vm._v(\"×\")]),(_vm.url)?_c('div',{staticClass:\"fast-modal-container\"},[_c('iframe',{staticStyle:{\"height\":\"100%\",\"width\":\"100%\",\"transform\":\"scale(1)\",\"border\":\"none\"},attrs:{\"id\":\"fastframeBanner\",\"width\":\"800\",\"height\":\"800\",\"src\":_vm.url}})]):_vm._e()])])],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <div class=\"modal-banner\" v-if=\"isVisible\">\n <!-- Modal do Banner -->\n <b-modal id=\"modal-banner\" v-model=\"showModal\" :size=\"isMobile ? 'sm' : 'lg'\" hide-footer hide-header\n :title=\"`${$t('modals.modal_banner')}`\">\n <div class=\"fast-modal\">\n <button class=\"close-button\" @click=\"showModalBanner = showModal = false\">×</button>\n <div v-if=\"url\" class=\"fast-modal-container\">\n <iframe \n id=\"fastframeBanner\" \n width=\"800\" \n height=\"800\" \n style=\"height: 100%; width: 100%; transform: scale(1); border: none;\"\n :src=\"url\"\n />\n </div>\n </div>\n </b-modal>\n </div>\n</template>\n\n<script>\nimport { mapGetters } from 'vuex';\nimport utils from '@/mixins/utils';\n\nexport default {\n name: 'ModalBanner',\n mixins: [utils],\n props: {\n url: {\n type: String,\n default: false\n },\n isMobile: {\n type: Boolean,\n default: false\n }\n },\n data() {\n return {\n isVisible: false,\n showModal: false,\n }\n },\n computed: {\n ...mapGetters(['isAuthenticated']),\n },\n methods: {\n changeModalBanner() {\n this.showModal = !this.showModal;\n }\n },\n mounted() {\n this.isVisible = this.isAuthenticated;\n },\n watch: {\n isAuthenticated(newVal) {\n this.isVisible = newVal;\n }\n },\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.modal-banner {\n position: fixed;\n bottom: 20px;\n right: 20px;\n z-index: 999;\n\n}\n\n.close-button {\n position: absolute;\n top: -15px;\n right: -15px;\n width: 30px;\n height: 30px;\n background: white;\n border: none;\n color: #333;\n font-size: 24px;\n font-weight: 300;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n z-index: 9999;\n transition: all 0.2s ease;\n border-radius: 4px;\n\n &:hover {\n transform: rotate(90deg);\n color: #000;\n }\n\n &:focus {\n outline: none;\n }\n}\n\n.fast-modal {\n width: 100%;\n}\n\n.fast-modal-container {\n padding: 0px;\n height: 800px;\n display: flex;\n justify-content: center;\n\n @media screen and (max-width: 768px) {\n height: 500px;\n }\n}\n\n.fast-modal-iframe {\n display: flex;\n justify-content: center;\n}\n\n:deep(.modal-dialog) {\n @media screen and (max-width: 768px) {\n margin-top: 80px;\n }\n}\n</style>","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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ModalBanner.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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ModalBanner.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ModalBanner.vue?vue&type=template&id=7701828f&scoped=true&\"\nimport script from \"./ModalBanner.vue?vue&type=script&lang=js&\"\nexport * from \"./ModalBanner.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ModalBanner.vue?vue&type=style&index=0&id=7701828f&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7701828f\",\n null\n \n)\n\nexport default component.exports","<template>\n <div class=\"container\"> \n <transition>\n <div>\n <BaseHeader title=\"Dashboard\" class=\"header mb-5\" data-anima=\"top\">\n <button v-if=\"ambassadorEnabled && ambassadorAcceptedTerms\" v-b-modal.links-new @click=\"openComissions\"\n class=\"btn p-2\" style=\"background-color: #eee\">\n <b-row class=\"align-items-center\" style=\"color: #32455f; font-weight: 500\">\n <img src=\"@/assets/img/icons/my-comission-blue.svg\" class=\"pr-2\" />\n {{ $t(\"views.seller.links.text_1141\") }}\n </b-row>\n </button>\n </BaseHeader>\n <div class=\"conteudo\">\n <div class=\"center\">\n <div class=\"card-validation\" v-if=\"\n isMobile &&\n (!status_validation.status ||\n status_validation.status == 'INITIATED' ||\n status_validation.status == 'DISAPPROVED')\n \">\n <p>\n {{ $t(\"views.dashboard.text_986\") }}\n </p>\n <BaseButton variant=\"info2\" @click=\"openVerification\">{{\n $t(\"views.dashboard.text_987\")\n }}</BaseButton>\n </div>\n <a v-if=\"!openBannerInModal\" :href=\"updatedUrlRedirect\" target=\"_blank\" class=\"banner\" data-anima=\"bottom\">\n <img v-if=\"banner_url !== ''\" :src=\"banner_url\" alt=\"banner\" />\n <div v-else class=\"banner-default-loading banner\" alt=\"banner\">\n <b-spinner label=\"Loading...\"></b-spinner>\n </div>\n </a>\n <template v-else>\n <div class=\"banner\" data-anima=\"bottom\" @click=\"openNpsForm\" style=\"cursor:pointer\">\n <img v-if=\"banner_url !== ''\" :src=\"banner_url\" alt=\"banner\" />\n <div v-else class=\"banner-default-loading banner\" alt=\"banner\">\n <b-spinner label=\"Loading...\"></b-spinner>\n </div>\n </div>\n <modal-banner :url=\"updatedUrlRedirect\" :is-mobile=\"isMobile\" />\n </template>\n <!-- Today Sales -->\n <div class=\"indicadores\">\n <div class=\"item\">\n <img src=\"@/assets/img/icons/bag-sale.svg\" />\n <p>{{ $t(\"views.dashboard.text_988\") }}</p>\n <div v-if=\"statementsToday\">\n <h4 v-if=\"saldoOk\">\n {{ currency.currency_symbol }}\n {{ formatMoney(statementsToday) }}\n </h4>\n <h4 v-else id=\"no-saldo\">-</h4>\n </div>\n <div v-else>\n <h4 v-if=\"saldoOk\">{{ currency.currency_symbol }} 0,00</h4>\n <h4 v-else id=\"no-saldo\">-</h4>\n </div>\n </div>\n\n <div class=\"item\">\n <img src=\"@/assets/img/icons/wallet.svg\" />\n <p>{{ $t(\"views.dashboard.text_989\") }}</p>\n <div v-if=\"statementsLastMonth\">\n <h4 v-if=\"saldoOk\">\n {{ currency.currency_symbol }}\n {{ formatMoney(statementsLastMonth) }}\n </h4>\n <h4 v-else id=\"no-saldo\">-</h4>\n </div>\n <div v-else>\n <h4 v-if=\"saldoOk\">{{ currency.currency_symbol }} 0,00</h4>\n <h4 v-else id=\"no-saldo\">-</h4>\n </div>\n </div>\n </div>\n\n <div class=\"card-transacoes mt-4 mb-4\" v-if=\"isMobile\">\n <div class=\"saldos\">\n <!-- My Balance -->\n <div class=\"mb-3 d-flex justify-content-between align-items-center\">\n <span>{{ $t(\"views.dashboard.text_990\") }}</span>\n <SelectCurrency v-show=\"interAccess\" :currency=\"currency\" @update-coin=\"updateCoin\" />\n </div>\n <div class=\"saldo-livre\">\n <div v-if=\"statementsAvailableCount\">\n <h5 v-if=\"saldoOk\">\n {{ currency.currency_symbol }}\n {{ formatMoney(statementsAvailableCount) }}\n </h5>\n <h5 v-else id=\"no-saldo\">-</h5>\n </div>\n <div v-else>\n <h5 v-if=\"saldoOk\">{{ currency.currency_symbol }} 0,00</h5>\n <h5 v-else id=\"no-saldo\">-</h5>\n </div>\n\n <div @click=\"saldoOk = !saldoOk\" class=\"btn-esconde\" :class=\"{ ativo: saldoOk }\"></div>\n </div>\n <!-- Blocked Balance -->\n <div class=\"saldo-block\">\n <span>{{ $t(\"views.dashboard.text_991\") }}</span>\n <div v-if=\"statementsBlockCount\">\n <h5 v-if=\"saldoOk\">\n {{ currency.currency_symbol }}\n {{ formatMoney(statementsBlockCount) }}\n </h5>\n <h5 v-else id=\"no-saldo\" class=\"block-prelod\">-</h5>\n </div>\n <div v-else>\n <h5 v-if=\"saldoOk\">{{ currency.currency_symbol }} 0,00</h5>\n <h5 v-else id=\"no-saldo\" class=\"block-prelod\">-</h5>\n </div>\n </div>\n </div>\n <!-- Bar/Circle Chart Title -->\n <div class=\"titulo-grafico\">\n <span>{{ $t(\"views.dashboard.text_992\") }}</span>\n <span class=\"periodo-grafico\">{{ $t(\"views.dashboard.text_993\") }}\n </span>\n </div>\n <!-- Bar/Circle Chart -->\n <div class=\"grafico-bar\">\n <BarChart :vendas_device=\"vendas_device\" v-show=\"!loading_statements\" />\n <!-- Loading -->\n <div class=\"container-loading\" v-if=\"loading_statements\">\n <b-spinner label=\"Loading...\"></b-spinner>\n </div>\n </div>\n <!-- Recent Sales -->\n <div class=\"transacoes-recentes\">\n <div class=\"titulo\">\n <span>{{ $t(\"views.dashboard.text_994\") }}</span>\n <img src=\"@/assets/img/icons/transacoes.svg\" />\n </div>\n <div class=\"transacao\">\n <template v-if=\"vendas_recentes.length\">\n <div v-for=\"venda in vendas_recentes\" :key=\"venda.id\" class=\"item\" @click=\"openSale(venda.id)\">\n <div class=\"dados-transacao\">\n <img v-if=\"venda.product && venda.product.images.length\" :src=\"venda.product.images[0].path\"\n class=\"icone\" />\n <div v-else class=\"icone\">\n <img src=\"@/assets/img/icons/imagem-modal.svg\" class=\"erro-img\" />\n </div>\n\n <div class=\"dado\">\n <div class=\"up\">\n <h5>\n {{\n venda.product.name.length > 22\n ? venda.product.name.substr(0, 22) + \"...\"\n : venda.product.name\n }}\n </h5>\n <span\n >{{ currency.currency_symbol }}\n {{ formatMoney(venda.seller_balance) }}\n </span>\n </div>\n <div class=\"down\">\n <span>{{ nameClient(venda.client.name) }}</span>\n <span>{{ venda.created_at | moment }}</span>\n </div>\n </div>\n </div>\n </div>\n </template>\n <router-link to=\"/vendas\" class=\"button ver-vendas\">\n {{ $t(\"views.dashboard.text_995\") }}\n </router-link>\n </div>\n <div class=\"transacao\" v-if=\"vendas_recentes_load\">\n <div class=\"item load\">\n <div class=\"dados-transacao\">\n <div class=\"icone\"></div>\n <div class=\"dado\">\n <div class=\"up\">\n <h5>-</h5>\n <span>-</span>\n </div>\n <div class=\"down\">\n <span>-</span>\n <span>-</span>\n </div>\n </div>\n </div>\n </div>\n <div class=\"item load\">\n <div class=\"dados-transacao\">\n <div class=\"icone\"></div>\n <div class=\"dado\">\n <div class=\"up\">\n <h5>-</h5>\n <span>-</span>\n </div>\n <div class=\"down\">\n <span>-</span>\n <span>-</span>\n </div>\n </div>\n </div>\n </div>\n <div class=\"item load\">\n <div class=\"dados-transacao\">\n <div class=\"icone\"></div>\n <div class=\"dado\">\n <div class=\"up\">\n <h5>-</h5>\n <span>-</span>\n </div>\n <div class=\"down\">\n <span>-</span>\n <span>-</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <span class=\"info-week\">{{ $t(\"views.dashboard.text_993\") }}</span>\n\n <div class=\"grafico-area\">\n <AreaChart ref=\"areaChart\" v-if=\"!loading_statements\" :currency=\"currency.currency_symbol\" />\n <!-- Loading -->\n <div class=\"container-loading\" v-if=\"loading_statements\">\n <b-spinner label=\"Loading...\"></b-spinner>\n </div>\n </div>\n <!-- Top 5 Products -->\n <div class=\"top\" v-if=\"top_products.length\">\n <h4>{{ $t(\"views.dashboard.text_996\") }}</h4>\n <div v-for=\"(produto, index) in top_products\" :key=\"index\" class=\"top-lista\">\n <div class=\"dados-produto\">\n <img v-if=\"\n produto.product &&\n produto.product.images &&\n produto.product.images.length\n \" :src=\"produto.product.images[0].path\" class=\"icone-imagem\" />\n <div v-else class=\"icone-imagem\">\n <img src=\"@/assets/img/icons/imagem-modal.svg\" class=\"erro-img\" />\n </div>\n <div class=\"dado\" v-if=\"produto.product\">\n <h5>{{ produto.product.name }}</h5>\n <span>{{ produto.product.category.name }}</span>\n </div>\n <div v-else>\n <h5>{{ $t(\"views.dashboard.text_997\") }}</h5>\n <span>-</span>\n </div>\n </div>\n\n <!-- <div class=\"valores\" v-if=\"produto.product\"> -->\n <div class=\"valores\">\n <h5 v-if=\"produto.total\">\n {{ currency.currency_symbol }}\n {{ formatMoney(produto.total) }}\n </h5>\n <h5 v-if=\"!produto.total\">\n {{ currency.currency_symbol }} 0,00\n </h5>\n\n <span>\n {{ produto.count }}\n {{ $t(\"views.dashboard.text_2377\") }}</span>\n </div>\n </div>\n </div>\n <div v-if=\"top_products_load\" class=\"top\">\n <div class=\"top-lista load\">\n <div class=\"dados-produto\">\n <img src=\"\" class=\"icone\" />\n <div class=\"dado\">\n <h5>-</h5>\n <span>-</span>\n </div>\n </div>\n\n <!-- <div class=\"valores\" v-if=\"produto.product\"> -->\n <div class=\"valores\">\n <h5>-</h5>\n <span>-</span>\n </div>\n </div>\n <div class=\"top-lista load\">\n <div class=\"dados-produto\">\n <img src=\"\" class=\"icone\" />\n <div class=\"dado\">\n <h5>-</h5>\n <span>-</span>\n </div>\n </div>\n\n <!-- <div class=\"valores\" v-if=\"produto.product\"> -->\n <div class=\"valores\">\n <h5>-</h5>\n <span>-</span>\n </div>\n </div>\n <div class=\"top-lista load\">\n <div class=\"dados-produto\">\n <img src=\"\" class=\"icone\" />\n <div class=\"dado\">\n <h5>-</h5>\n <span>-</span>\n </div>\n </div>\n\n <!-- <div class=\"valores\" v-if=\"produto.product\"> -->\n <div class=\"valores\">\n <h5>-</h5>\n <span>-</span>\n </div>\n </div>\n </div>\n </div>\n\n <div>\n <div class=\"card-validation\" data-anima=\"top\" v-if=\"\n !status_validation.status ||\n status_validation.status == 'INITIATED' ||\n status_validation.status == 'DISAPPROVED'\n \">\n <p>\n {{ $t(\"views.dashboard.text_986\") }}\n </p>\n <BaseButton variant=\"info2\" @click=\"openVerification\">\n {{ $t(\"views.dashboard.text_987\") }}\n </BaseButton>\n </div>\n \n <card-pending-documentation v-if=\"isBetaSeller\"/>\n\n <div class=\"card-transacoes\" v-if=\"!isMobile\">\n <div class=\"saldos\">\n <!-- My Balance -->\n <div class=\"d-flex justify-content-between align-items-center\">\n <span>{{ $t(\"views.dashboard.text_990\") }}</span>\n <SelectCurrency v-show=\"interAccess\" :currency=\"currency\" @update-coin=\"updateCoin\" />\n </div>\n <!-- Free Balance -->\n <div class=\"saldo-livre\">\n <div v-if=\"statementsAvailableCount\">\n <h5 v-if=\"saldoOk\">\n {{ currency.currency_symbol }}\n {{ formatMoney(statementsAvailableCount) }}\n </h5>\n <h5 v-else id=\"no-saldo\">-</h5>\n </div>\n <div v-else>\n <h5 v-if=\"saldoOk\">{{ currency.currency_symbol }} 0,00</h5>\n <h5 v-else id=\"no-saldo\">-</h5>\n </div>\n\n <div @click=\"saldoOk = !saldoOk\" class=\"btn-esconde\" :class=\"{ ativo: saldoOk }\"></div>\n </div>\n <!-- Blocked Balance -->\n <div class=\"saldo-block\">\n <span>{{ $t(\"views.dashboard.text_991\") }}</span>\n <div v-if=\"statementsBlockCount\">\n <h5 v-if=\"saldoOk\">\n {{ currency.currency_symbol }}\n {{ formatMoney(statementsBlockCount) }}\n </h5>\n <h5 v-else id=\"no-saldo\" class=\"block-prelod\">-</h5>\n </div>\n <div v-else>\n <h5 v-if=\"saldoOk\">{{ currency.currency_symbol }} 0,00</h5>\n <h5 v-else id=\"no-saldo\" class=\"block-prelod\">-</h5>\n </div>\n </div>\n </div>\n <!-- Bar/Circle Chart Title -->\n <div class=\"titulo-grafico\">\n <span>{{ $t(\"views.dashboard.text_992\") }}</span>\n <span class=\"periodo-grafico\">{{ $t(\"views.dashboard.text_993\") }}\n </span>\n </div>\n <!-- Bar/Circle Chart -->\n <div class=\"grafico-bar\">\n <BarChart :vendas_device=\"vendas_device\" v-show=\"!loading_statements\" />\n <!-- Loading -->\n <div class=\"container-loading\" v-if=\"loading_statements\">\n <b-spinner label=\"Loading...\"></b-spinner>\n </div>\n </div>\n\n <div class=\"transacoes-recentes\">\n <!-- Recent Sales Title-->\n <div class=\"titulo\">\n <span>{{ $t(\"views.dashboard.text_2378\") }}</span>\n </div>\n <div class=\"transacao\">\n <!-- Recent Sales List -->\n <template v-if=\"vendas_recentes.length\">\n <div v-for=\"venda in vendas_recentes\" :key=\"venda.id\" class=\"item\" @click=\"openSale(venda.id)\">\n <div class=\"dados-transacao\">\n <img v-if=\"venda.product.images.length\" :src=\"venda.product.images[0].path\" class=\"icone\" />\n <div v-else class=\"icone\">\n <img src=\"@/assets/img/icons/imagem-modal.svg\" class=\"erro-img\" />\n </div>\n <div class=\"dado\">\n <div class=\"up\">\n <h5>\n {{\n venda.product.name.length > 22\n ? venda.product.name.substr(0, 22) + \"...\"\n : venda.product.name\n }}\n </h5>\n <span\n >{{ currency.currency_symbol }}\n {{ formatMoney(venda.seller_balance) }}\n </span>\n </div>\n <div class=\"down\">\n <span>{{ nameClient(venda.client.name) }}</span>\n <span>{{ venda.created_at | moment }}</span>\n </div>\n </div>\n </div>\n </div>\n </template>\n <!-- All Sales -->\n <router-link to=\"/vendas\" class=\"button ver-vendas\">\n {{ $t(\"views.dashboard.text_2379\") }}\n </router-link>\n </div>\n <!-- Loading -->\n <div class=\"transacao\" v-if=\"vendas_recentes_load\">\n <div class=\"item load\">\n <div class=\"dados-transacao\">\n <div class=\"icone\"></div>\n <div class=\"dado\">\n <div class=\"up\">\n <h5>-</h5>\n <span>-</span>\n </div>\n <div class=\"down\">\n <span>-</span>\n <span>-</span>\n </div>\n </div>\n </div>\n </div>\n <div class=\"item load\">\n <div class=\"dados-transacao\">\n <div class=\"icone\"></div>\n <div class=\"dado\">\n <div class=\"up\">\n <h5>-</h5>\n <span>-</span>\n </div>\n <div class=\"down\">\n <span>-</span>\n <span>-</span>\n </div>\n </div>\n </div>\n </div>\n <div class=\"item load\">\n <div class=\"dados-transacao\">\n <div class=\"icone\"></div>\n <div class=\"dado\">\n <div class=\"up\">\n <h5>-</h5>\n <span>-</span>\n </div>\n <div class=\"down\">\n <span>-</span>\n <span>-</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </transition>\n\n <Informative v-if=\"isBetaSeller\" />\n <ModalValidation v-if=\"isBetaSeller\" @close=\"getStatusValidation\" />\n <ModalPendingDocumentation v-if=\"isBetaSeller\"></ModalPendingDocumentation>\n <!--<CallEvaluation /> -->\n </div>\n</template>\n\n<script>\n\nimport AreaChart from \"@/components/chart/AreaChart.vue\";\nimport BarChart from \"@/components/chart/BarChart.vue\";\nimport Informative from \"@/components/informative\";\nimport SelectCurrency from \"@/components/SelectCurrency.vue\";\nimport ModalBanner from '@/components/shared/ModalBanner.vue';\nimport Money from \"@/mixins/money\";\nimport Utils from \"@/mixins/utils\";\nimport _ from \"lodash\";\nimport moment from \"moment-timezone\";\n\nimport AuthServiceClub from \"@/services/resources/AuthServiceClub\";\nimport AuthServiceEnvios from \"@/services/resources/AuthServiceEnvios\";\nimport DashboardService from \"@/services/resources/DashboardService\";\nimport MetaService from \"@/services/resources/MetaService\";\nimport SubUserService from \"@/services/resources/SubUsersService\";\nimport UserService from \"@/services/resources/UserService\";\nimport ValidationService from \"@/services/resources/ValidationService\";\n\nimport Raphael from \"raphael/raphael\";\nglobal.Raphael = Raphael;\n\nconst serviceUser = UserService.build();\nconst serviceMeta = MetaService.build();\nconst serviceSubUser = SubUserService.build();\nconst serviceValidation = ValidationService.build();\nconst serviceClub = AuthServiceClub.build();\nconst serviceEnvios = AuthServiceEnvios.build();\nconst serviceDashboard = DashboardService.build();\n\nimport Cookies from \"js-cookie\";\nimport ModalPendingDocumentation from \"@/components/Seller/Dashboard/modals/ModalPendingDocumentation\";\nimport CardPendingDocumentation from '@/components/shared/CardPendingDocumentation.vue';\n\nexport default {\n name: \"Dashboard\",\n mixins: [Utils,Money],\n components: {\n AreaChart,\n BarChart,\n Informative,\n SelectCurrency,\n ModalBanner,\n ModalPendingDocumentation,\n CardPendingDocumentation\n },\n data() {\n return {\n banner_url: \"\",\n openBannerInModal: false,\n url_redirect: \"\",\n loading: true,\n loading_statements: false,\n status_validation: {\n status: \"status\",\n observation: \"\",\n },\n floatApp: true,\n vendas_semana: [],\n vendas_device: [],\n top_products: [],\n top_products_load: false,\n statementsBlockCount: 0,\n statementsAvailableCount: 0,\n statementsToday: 0,\n statementsLastMonth: 0,\n vendas_recentes: [],\n vendas_recentes_load: false,\n saldoOk: true,\n client: {\n width: 0,\n },\n currency: {\n id: 1,\n name: \"Real Brasileiro\",\n currency: \"BRL\",\n currency_symbol: \"R$\",\n },\n interAccess: false,\n doesUserHavePendingDocumentation: false,\n isBetaSeller: false,\n };\n },\n filters: {\n moment: function (date) {\n return moment(date).format(\"DD/MM/YY HH:mm\");\n },\n },\n computed: {\n updatedUrlRedirect() {\n return this.replaceDynamicParams(this.url_redirect);\n },\n isMobile() {\n return this.client.width <= 768;\n },\n getPermissionsCommissions() {\n return this.$store.getters.getAllPermissionsNames && this.$store.getters.getAllPermissionsNames.length > 0 ? this.$store.getters.getAllPermissionsNames.includes('Commissions') : false;\n },\n isLoadingStatements() {\n if(this.loading_statements) this.statementsToday = 0;\n },\n },\n\n methods: {\n async checkBetaSeller() {\n await this.$store.dispatch('checkBetaSeller')\n this.isBetaSeller = this.$store.getters.isBetaSeller\n },\n openNpsForm() {\n this.showModalBanner = !this.showModalBanner;\n this.$children.forEach(function(child) {\n if (typeof child.changeModalBanner === 'function') {\n child.changeModalBanner();\n }\n });\n },\n replaceDynamicParams(url) {\n // Substitui todas as variáveis dinâmicas na URL\n const params = {\n userID: this.userID,\n location: this.$route.name,\n // Adicione outros parâmetros dinâmicos aqui, se necessário\n };\n\n // Substitui cada variável na URL\n return url.replace(/{{(\\w+)}}/g, (match, key) => {\n return params[key] !== undefined ? params[key] : 0; // Substitui por 0 se não existir\n });\n },\n checkInvite() {\n\n const code = Cookies.get('child_code');\n const parent_id = Cookies.get('parent_user_id');\n\n if (code && parent_id) {\n let dataInvite = {\n id: \"invite/accept\",\n code: code,\n parent_id: parent_id,\n };\n\n if (dataInvite.code && dataInvite.parent_id) {\n serviceSubUser\n .createId(dataInvite)\n .then((response) => {\n this.$emit(\"close\");\n this.$root.$emit(\"updateListUser\");\n })\n .catch((err) => { \n if (err.response.data && err.response.data.message) {\n this.$bvToast.toast(err.response.data.message, {\n title: \"Grupo de Permissões\",\n variant: \"danger\",\n autoHideDelay: 5000,\n appendToast: true,\n });\n this.$emit(\"close\");\n this.$root.$emit(\"updateListUser\");\n }\n });\n }\n }\n },\n existExternalParams() {\n const queryString = window.location.search;\n const urlParams = new URLSearchParams(queryString);\n const type = urlParams.get(\"type\");\n const code = urlParams.get(\"code\");\n const parent_id = urlParams.get(\"parent_id\");\n if (type === \"club\" || type === \"envios\") {\n this.externalSubmit(type);\n } else if (parent_id && code) {\n this.modalSubUser();\n }\n },\n modalSubUser() {\n if (document.getElementById(\"modal-group-accept\") === null) {\n this.$root.$emit(\"bv::show::modal\", \"modal-group-accept\", \"#btnShow\");\n }\n },\n openPendingDocumentation(){\n this.$bvModal.show('modal-pending-documentation');\n },\n externalSubmit(type) {\n var service = \"\";\n if (type === \"club\") {\n service = serviceClub;\n } else {\n service = serviceEnvios;\n }\n\n service\n .toClub()\n .then((resp) => {\n if (resp.string) {\n if (type === \"club\") {\n window.location.href =\n process.env.VUE_CLUB_API_HOST +\n \"?rdr=\" +\n resp.string +\n \"&type=greenn\";\n } else {\n window.location.href =\n process.env.VUE_ENVIOS_API_HOST +\n \"/login?rdr=\" +\n resp.string +\n \"&type=greenn\";\n }\n }\n })\n .catch(() => { });\n },\n openVerification() {\n this.$bvModal.show(\"identity-validation\");\n },\n getStatusValidation() {\n if (typeof localStorage.user === 'undefined') {\n return;\n }\n const user = JSON.parse(localStorage.user);\n \n let data = {\n id: this.userID,\n };\n serviceValidation\n .read(data)\n .then((response) => {\n this.status_validation = response;\n if (\n !this.status_validation.status ||\n this.status_validation.status == \"status\"\n ) {\n this.status_validation = {\n status: \"INITIATED\",\n observation: \"\",\n };\n }\n })\n .catch((err) => {\n console.log(err);\n });\n },\n fetchMetas() {\n let data = {\n id: \"onboarding\",\n };\n\n serviceMeta.read(data).then((response) => {\n if (response.meta_value == \"0\") {\n this.$bvModal.show(\"informative\");\n }\n });\n },\n detectOs() {\n const userAgent = navigator.userAgent || navigator.vendor || window.opera;\n // if (/windows phone/i.test(userAgent)) {\n // return \"Windows Phone\";\n // }\n if (/android/i.test(userAgent)) {\n return \"Android\";\n }\n if (/iPad|iPhone|iPod/.test(userAgent) && !window.MSStream) {\n return \"iOS\";\n }\n\n return \"Desktop\";\n },\n openHelp() {\n window.open(\"https://greenn.crisp.help/pt-br/\");\n },\n openApp(type) {\n if (type == \"apple\") {\n window.open(\"https://apps.apple.com/us/app/greenn/id1567979861\");\n }\n if (type == \"play-store\") {\n window.open(\n \"https://play.google.com/store/apps/details?id=br.com.greenn\"\n );\n }\n },\n nameClient(name_client) {\n return name_client.toString().length > 20\n ? name_client.toString().substr(0, 20) + \"...\"\n : name_client;\n },\n handleResize() {\n // this.client.width = window.innerWidth;\n this.client.width = window.innerWidth;\n },\n date(date) {\n return moment(date).format(\"DD/MM/YY\");\n },\n openSale(id_venda) {\n this.$router.push({\n path: \"/vendas\",\n query: {\n s_id: id_venda,\n },\n });\n },\n fetchVendasRecentes() {\n if(!this.$store.getters.getVerifyPermissions.Dashboard) return false;\n let array = [];\n this.vendas_recentes_load = true;\n\n let today = new Date();\n today.setHours(0, 0, 0, 0);\n\n let lastWeek = new Date();\n lastWeek.setDate(today.getDate() - 7);\n lastWeek.setHours(0, 0, 0, 0);\n\n let lastMonth = new Date();\n lastMonth.setDate(today.getDate() - 30);\n lastMonth.setHours(0, 0, 0, 0);\n\n let data = {\n types: [\"sales\"],\n today: moment\n .tz(today, \"America/Sao_Paulo\")\n .utc()\n .format(\"YYYY-MM-DDT00:00:00-03:00\"),\n last_week: moment\n .tz(lastWeek, \"America/Sao_Paulo\")\n .utc()\n .format(\"YYYY-MM-DDT00:00:00-03:00\"),\n last_month: moment\n .tz(lastMonth, \"America/Sao_Paulo\")\n .utc()\n .format(\"YYYY-MM-DDT00:00:00-03:00\"),\n currency_id: this.interAccess ? this.currency.id : 1,\n };\n\n serviceDashboard\n .search(data)\n .then((response) => {\n response.salesLastWeek.forEach((item, index) => {\n if (index < 5) array.push(item);\n });\n })\n .catch((err) => console.error(err))\n .finally(() => {\n this.vendas_recentes = array;\n this.vendas_recentes_load = false;\n this.loading = false;\n });\n },\n fetchHeader() {\n if(!this.$store.getters.getVerifyPermissions.Dashboard) return false;\n this.loading_statements = true;\n this.saldoOk = false;\n\n let today = new Date();\n today.setHours(0, 0, 0, 0);\n\n let lastWeek = new Date();\n lastWeek.setDate(today.getDate() - 7);\n lastWeek.setHours(0, 0, 0, 0);\n\n let lastMonth = new Date();\n lastMonth.setDate(today.getDate() - 30);\n lastMonth.setHours(0, 0, 0, 0);\n\n let data = {\n types: [\"statements\"],\n today: moment\n .tz(today, \"America/Sao_Paulo\")\n .utc()\n .format(\"YYYY-MM-DDT00:00:00-03:00\"),\n last_week: moment\n .tz(lastWeek, \"America/Sao_Paulo\")\n .utc()\n .format(\"YYYY-MM-DDT00:00:00-03:00\"),\n last_month: moment\n .tz(lastMonth, \"America/Sao_Paulo\")\n .utc()\n .format(\"YYYY-MM-DDT00:00:00-03:00\"),\n currency_id: this.interAccess ? this.currency.id : 1,\n };\n\n serviceDashboard\n .search(data)\n .then((response) => {\n this.statementsAvailableCount = response.statementsAvailable;\n this.statementsBlockCount = response.statementsBlock;\n this.statementsToday = response.statementsToday;\n this.statementsLastMonth = response.statementsLastMonth || 0;\n this.doesUserHavePendingDocumentation = response.doesUserHavePendingDocumentation\n\n this.vendas_semana = response.statementsLastWeekDetail;\n this.vendas_device = [\n {\n device: \"Desktop\",\n count: response.statementsDesktopLastWeek,\n },\n {\n device: \"Mobile\",\n count: response.statementsMobileLastWeek,\n },\n ];\n this.loading_statements = false;\n this.saldoOk = true;\n if(this.doesUserHavePendingDocumentation){\n this.openPendingDocumentation();\n }\n })\n .catch((err) => {\n this.vendas_semana = [];\n this.vendas_device = [];\n this.loading_statements = false;\n console.error(err);\n })\n .finally(() => this.$refs.areaChart.mountedChart(this.vendas_semana));\n },\n fetchBanner() {\n if(!this.$store.getters.getVerifyPermissions.Dashboard) return false;\n let data = {\n types: [\"banner_url_disk\"],\n };\n\n serviceDashboard\n .search(data)\n .then((response) => {\n this.banner_url = response.upload_path;\n this.url_redirect = response.url_redirect;\n this.openBannerInModal = response.in_modal;\n })\n .catch((err) => console.error(err));\n },\n fetchTopProducts() {\n if(!this.$store.getters.getVerifyPermissions.Dashboard) return false;\n this.top_products_load = true;\n this.top_products = [];\n\n let today = new Date();\n today.setHours(0, 0, 0, 0);\n\n let lastWeek = new Date();\n lastWeek.setDate(today.getDate() - 7);\n lastWeek.setHours(0, 0, 0, 0);\n\n let lastMonth = new Date();\n lastMonth.setDate(today.getDate() - 30);\n lastMonth.setHours(0, 0, 0, 0);\n\n let data = {\n types: [\"top_products\"],\n today: moment\n .tz(today, \"America/Sao_Paulo\")\n .utc()\n .format(\"YYYY-MM-DDT00:00:00-03:00\"),\n last_week: moment\n .tz(lastWeek, \"America/Sao_Paulo\")\n .utc()\n .format(\"YYYY-MM-DDT00:00:00-03:00\"),\n last_month: moment\n .tz(lastMonth, \"America/Sao_Paulo\")\n .utc()\n .format(\"YYYY-MM-DDT00:00:00-03:00\"),\n currency_id: this.interAccess ? this.currency.id : 1,\n };\n\n serviceDashboard\n .search(data)\n .then((response) => {\n // Top products\n this.top_products = response.top_products;\n this.top_products_load = false;\n })\n .catch((err) => console.error(err))\n .finally(() => {\n this.loading = false;\n this.top_products_load = false;\n });\n },\n openPanel(sale_id) {\n this.$emit(\"openPanel\", sale_id);\n },\n debounce: _.debounce(function () {\n this.sendLocalStorage();\n }, 5000),\n // funcção para enviar os dados do localStorage para o back\n sendLocalStorage() {\n if (this.userID) {\n let data = {\n id: this.userID,\n local_storage: JSON.stringify(window.localStorage),\n };\n serviceUser.update(data);\n }\n },\n initAll() {\n if (typeof localStorage.user !== 'undefined') {\n if (JSON.parse(localStorage.user).country) {\n if (JSON.parse(localStorage.user).country.base_currency) {\n this.currency = JSON.parse(localStorage.user).country.base_currency;\n }\n }\n }\n\n this.getStatusValidation();\n // metas\n this.fetchMetas();\n \n this.fetchTopProducts();\n this.fetchBanner();\n this.fetchVendasRecentes();\n this.fetchHeader();\n\n this.debounce();\n window.$crisp = [];\n\n this.existExternalParams();\n\n this.checkInvite();\n // add crisp no greenn\n // let notify = document.getElementById(\"1WZET722PJibpmL_crisp\");\n // if (notify === null) {\n // this.getEvaluation(true).then((resp) => {\n // if (resp.is_evaluation) {\n // window.$crisp.push([\"do\", \"session:reset\"]);\n // }\n // this.crispWitUser();\n // });\n\n // this.appendScriptCrisp();\n // } else {\n // // const crisp = document.querySelector(\".crisp-client\");\n // // if (crisp) {\n // // crisp.style.display = \"block\";\n // // }\n // this.getEvaluation(true).then((resp) => {\n // if (resp.is_evaluation) {\n // window.$crisp.push([\"do\", \"session:reset\"]);\n // }\n // this.crispWitUser();\n // });\n // }\n // fim crisp\n // add userReport no greenn\n\n // if (!document.querySelector(\"#userreport-launcher-script\")) {\n // setTimeout(() => {\n // let reportScript = document.createElement(\"script\");\n // reportScript.setAttribute(\n // \"src\",\n // \"https://sak.userreport.com/gdigital/launcher.js\"\n // );\n // reportScript.setAttribute(\"id\", \"userreport-launcher-script\");\n // document.getElementsByTagName(\"head\")[0].appendChild(reportScript);\n // }, 1000);\n // }\n },\n /**\n * Refresh dashboard data with selected currency filter\n * @param coin - Object - object of selected currency\n * @return no return\n * @author Sandro Souza\n */\n updateCoin(coin) {\n this.currency = coin;\n this.fetchVendasRecentes();\n this.fetchHeader();\n this.fetchTopProducts();\n },\n openComissions() {\n this.$router.push({\n path: \"/comissoes\",\n });\n },\n },\n mounted() {\n this.initAll(); \n },\n created() {\n this.checkBetaSeller();\n window.addEventListener(\"resize\", this.handleResize);\n this.handleResize();\n\n let userInterIds = process.env.USER_INTER.substring(\n 1,\n process.env.USER_INTER.length - 1\n ).split(\",\");\n this.interAccess = userInterIds.some(\n (userId) => parseInt(userId) === this.userID\n );\n },\n destroyed() {\n window.removeEventListener(\"resize\", this.handleResize);\n },\n};\n</script>\n\n<style lang=\"scss\" scoped>\n/* box valores */\n.box-valores {\n display: flex;\n width: 600px;\n justify-content: space-between;\n align-items: center;\n}\n\n.item-valor {\n display: block;\n}\n\n.item-valor span {\n font-size: 14px;\n font-weight: normal;\n color: #81858e;\n}\n\n.item-valor p {\n font-size: 22px;\n font-weight: 600;\n margin: 10px 0;\n text-align: right;\n}\n\n// Conteudo Dashboard\n.container {\n display: flex;\n flex-direction: column;\n}\n\n.conteudo {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n}\n\n/* Conteudo centralizado */\n.center {\n width: 640px;\n}\n\n.banner {\n background: linear-gradient(160.37deg,\n #002363 20.71%,\n rgba(0, 228, 160, 0) 206.96%);\n width: 100%;\n border-radius: 5px;\n display: flex;\n margin-bottom: 20px;\n text-decoration: none;\n background: #f7f7f7;\n overflow: hidden;\n object-fit: contain;\n}\n\n.banner-info h4 {\n color: #fff;\n font-size: 18px;\n font-weight: 600;\n}\n\n.banner-info p {\n color: #fff;\n font-size: 16px;\n font-weight: normal;\n margin: 10px 0 30px 0;\n}\n\n.banner-info a {\n padding: 12px 30px;\n background: transparent;\n color: #fff;\n font-size: 14px;\n font-weight: 600;\n border-radius: 5px;\n border: 1px solid #fff;\n text-decoration: none;\n transition: 0.3s ease;\n}\n\n.banner-info a:hover {\n color: #fff;\n transform: scale(1.05);\n}\n\n@media screen and (max-width: 768px) {\n .conteudo {\n display: block;\n }\n\n .center {\n width: 100%;\n }\n\n .banner-info h4 {\n font-size: 16px;\n }\n\n .banner-info p {\n font-size: 14px;\n margin: 10px 0 20px 0;\n }\n\n .banner-info a {\n padding: 10px 20px;\n font-size: 13px;\n }\n\n .banner-ilustra img {\n height: 150px;\n }\n}\n\n.grafico-area {\n /* width: 100%; */\n margin: 30px 0 40px 0;\n position: relative;\n height: 300px;\n}\n\n/* Conteudo lateral */\n.article {\n width: 390px;\n background: gray;\n}\n\n.info-week {\n font-size: 12px;\n text-align: right;\n display: block;\n margin-top: 15px;\n color: #81858e;\n}\n\n.indicadores {\n display: flex;\n margin: 0 auto;\n align-items: center;\n justify-content: space-between;\n}\n\n.indicadores .item {\n background: #fff;\n // box-shadow: 2px 4px 10px rgba(237, 237, 240, 0.2);\n border: 1px solid #f7f7f7;\n border-radius: 5px;\n padding: 25px 35px;\n // padding-bottom: 15px;\n width: 48%;\n transition: 0.3s;\n cursor: default;\n}\n\n.indicadores .item:hover {\n transform: scale(1.05);\n}\n\n.indicadores .item:first-child {\n border-color: rgba(0, 33, 99, 0.1);\n box-shadow: none;\n}\n\n.indicadores .item p {\n display: flex;\n font-size: 14px;\n font-weight: normal;\n margin: 12px 0;\n}\n\n.indicadores .item p img {\n margin-left: 10px;\n}\n\n.indicadores .item h4 {\n font-size: 18px;\n font-weight: 600;\n}\n\n@media screen and (max-width: 768px) {\n .info-week {\n text-align: left;\n }\n\n .indicadores {\n display: block;\n }\n\n .indicadores .item {\n width: 100%;\n }\n\n .indicadores .item+.item {\n margin-top: 10px;\n }\n}\n\n.preload {\n background: rgba(0, 0, 0, 0.03);\n border-radius: 5px;\n width: 80%;\n color: transparent;\n animation: preload 0.8s forwards linear infinite alternate;\n}\n\n.top {\n /* background: silver; */\n margin-bottom: 30px;\n}\n\n.top h4 {\n font-size: 16px;\n font-weight: 600;\n margin-bottom: 10px;\n}\n\n.top-lista {\n padding: 20px 0;\n display: flex;\n align-items: center;\n justify-content: space-between;\n}\n\n.top-lista+.top-lista {\n border-top: 0.5px solid rgba(0, 0, 0, 0.03);\n}\n\n.top-lista .dados-produto {\n display: flex;\n align-items: center;\n}\n\n.top-lista .dados-produto .icone {\n /* width: 60px;\n height: 60px; */\n padding: 20px;\n background: rgba(0, 0, 0, 0.03);\n border-radius: 5px;\n display: flex;\n align-items: center;\n justify-content: center;\n margin-right: 50px;\n}\n\n.icone-imagem {\n background: #f7f7f7;\n padding: 0;\n width: 80px;\n max-width: 80px;\n height: 80px;\n margin-right: 50px;\n border-radius: 5px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.top-lista h5 {\n font-size: 14px;\n font-weight: 600;\n margin-bottom: 15px;\n}\n\n.top-lista span {\n color: #81858e;\n font-size: 13px;\n display: initial;\n}\n\n.valores {\n text-align: right;\n}\n\n@media screen and (max-width: 768px) {\n .top h4 {\n font-size: 14px;\n margin-bottom: 5px;\n }\n\n .top-lista .dados-produto .icone {\n padding: 13px;\n }\n\n .icone-imagem {\n width: 60px;\n max-width: 60px;\n height: 60px;\n margin-right: 30px;\n }\n\n .top-lista h5 {\n font-size: 13px;\n margin-bottom: 10px;\n }\n\n .top-lista span {\n font-size: 12px;\n white-space: nowrap;\n }\n}\n\n/* prealod */\n/* .load {\n background: tomato;\n} */\n\n.load .dados-produto img,\n.load .dados-transacao img {\n filter: invert(50%);\n}\n\n.load .dados-produto .dado h5,\n.load .up h5,\n.load .dados-produto .dado span,\n.load .up span,\n.load .down span {\n background: rgba(0, 0, 0, 0.03);\n border-radius: 5px;\n width: 200px;\n color: transparent;\n display: block;\n animation: preload 0.8s forwards linear infinite alternate;\n}\n\n.load .up h5 {\n width: 120px;\n height: 15px;\n border-radius: 3px;\n}\n\n.load .up span,\n.load .down span {\n width: 80px;\n height: 15px;\n border-radius: 3px;\n}\n\n.load .down span:nth-child(2) {\n width: 100px;\n height: 15px;\n border-radius: 3px;\n}\n\n.load .dados-produto .dado span {\n width: 300px;\n}\n\n.load .valores h5,\n.load .valores span {\n background: rgba(0, 0, 0, 0.03);\n border-radius: 5px;\n width: 100px;\n color: transparent;\n display: block;\n animation: preload 0.8s forwards linear infinite alternate;\n}\n\n.card-transacoes {\n width: 400px;\n background: #ffffff;\n // box-shadow: 2px 4px 10px rgba(237, 237, 240, 0.2);\n border: 1px solid #f7f7f7;\n border-radius: 5px;\n padding: 50px;\n}\n\n.saldos span {\n font-size: 14px;\n font-weight: 600;\n}\n\n.saldo-livre {\n display: flex;\n width: 100%;\n justify-content: space-between;\n align-items: center;\n margin: 13px auto;\n}\n\n.saldo-livre h5 {\n color: #002363;\n font-size: 32px;\n font-weight: 600;\n}\n\n#no-saldo {\n background: rgba(0, 0, 0, 0.03);\n width: 220px;\n border-radius: 5px;\n transition: 0.3s;\n color: transparent;\n}\n\n.block-prelod {\n width: 100px !important;\n}\n\n.saldo-livre .btn-esconde {\n padding: 13px;\n background: rgba(0, 0, 0, 0.03) url(\"../../assets/img/icons/eye-off.svg\") no-repeat center center;\n border: 1px solid rgba(0, 0, 0, 0.03);\n border-radius: 50%;\n cursor: pointer;\n height: 45px;\n width: 45px;\n}\n\n.btn-esconde.ativo {\n border: 1px dashed #333;\n background: rgba(0, 0, 0, 0.03) url(\"../../assets/img/icons/eye.svg\") no-repeat center center;\n}\n\n.saldo-block span {\n font-size: 13px;\n font-weight: 600;\n}\n\n.saldo-block h5 {\n font-size: 13px;\n color: #dbaa00;\n font-weight: 600;\n margin-top: 5px;\n}\n\n@media screen and (max-width: 768px) {\n\n .card-transacoes,\n .card-validation {\n width: 100% !important;\n padding: 40px 20px;\n // max-width: 375px;\n max-width: 100%;\n }\n\n .saldo-livre {\n margin: 0 auto;\n }\n\n .saldo-livre h5 {\n font-size: 24px;\n }\n\n .ver-vendas {\n width: 100%;\n }\n}\n\n/* grafico fake */\n.grafico-bar {\n margin: 25px auto;\n position: relative;\n height: 220px;\n}\n\n/* Transacoes recentes */\n\n.transacoes-recentes .titulo {\n display: flex;\n justify-content: space-between;\n}\n\n.transacoes-recentes .titulo span,\n.titulo-grafico span {\n font-weight: 600;\n font-size: 14px;\n}\n\n.titulo-grafico {\n margin-top: 30px;\n}\n\n.transacao {\n margin: 20px 0;\n}\n\n.transacao span {\n font-size: 12px;\n font-weight: normal;\n}\n\n.transacao .item {\n padding: 15px 0;\n display: flex;\n align-items: center;\n justify-content: space-between;\n cursor: pointer;\n transition: 0.3s;\n}\n\n.transacao .item:hover {\n transform: scale(1.02);\n}\n\n.transacao .item+.item {\n margin-top: 5px;\n border-top: 0.5px solid rgba(0, 0, 0, 0.03);\n}\n\n.dados-transacao {\n display: flex;\n align-items: center;\n}\n\n.dados-transacao .icone {\n width: 60px;\n height: 60px;\n /* padding: 18px 12px; */\n // padding: 20px;\n background: #f7f7f7;\n border: none;\n border-radius: 5px;\n display: flex;\n justify-content: center;\n align-items: center;\n margin-right: 20px;\n}\n\n.up,\n.down {\n display: flex;\n justify-content: space-between;\n align-items: center;\n width: 235px;\n}\n\n.up {\n margin-bottom: 5px;\n}\n\n.up h5 {\n font-size: 13px;\n font-weight: 600;\n}\n\n.up span {\n font-size: 13px;\n color: #81858e;\n font-weight: normal;\n}\n\n.down span {\n font-size: 11px;\n color: #81858e;\n font-weight: normal;\n}\n\n@media screen and (max-width: 768px) {\n\n .up,\n .down,\n .dados-transacao {\n width: 100%;\n }\n\n .dado {\n flex: 1;\n }\n\n .grafico-area {\n // max-width: 360px;\n max-width: 100%;\n }\n}\n\n.ver-vendas {\n width: 100%;\n margin-top: 20px;\n color: #002e74;\n background: #ffffff;\n border: 1px solid #5592d5;\n border-radius: 30px;\n\n &:hover {\n text-decoration: none;\n }\n\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.erro-img {\n max-width: 50px;\n filter: invert(50%);\n}\n\n.icone.erro-img {\n max-width: 35px;\n}\n\n// loading\n.container-loading {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n animation: preload 5s forwards linear infinite alternate;\n}\n\n.top-icons,\n.top-icons .apps {\n display: flex;\n align-items: center;\n gap: 30px;\n}\n\n.top-icons .apps {\n gap: 15px;\n}\n\n.top-icons .apps img {\n cursor: pointer;\n}\n\n// central de ajuda\n.central-ajuda {\n display: flex;\n align-items: center;\n gap: 10px;\n font-size: 13px;\n color: #000;\n font-weight: 600;\n transition: 0.3s;\n}\n\n.central-ajuda img {\n max-width: 18px;\n filter: invert(0) brightness(0);\n transition: 0.3s;\n}\n\n.central-ajuda:hover {\n color: #2a63ab;\n text-decoration: none;\n}\n\n.central-ajuda:hover img {\n filter: invert(0) brightness(1);\n}\n\n@media screen and (max-width: 768px) {\n .central-ajuda {\n max-width: 160px;\n margin-top: 20px;\n }\n}\n\n.float-app {\n position: fixed;\n bottom: 0;\n left: 0;\n z-index: 9999999 !important;\n background-color: rgba(0, 0, 0, 0.5);\n backdrop-filter: blur(20px);\n box-shadow: 0px 0px 30px 0px rgba(0, 0, 0, 0.1);\n\n width: 100%;\n padding: 20px 10px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n}\n\n.float-app .close-icon {\n padding: 10px;\n cursor: pointer;\n}\n\n.float-app .close-icon img {\n filter: invert(0) brightness(10);\n}\n\n.float-app p {\n color: #fff;\n font-size: 13px;\n font-weight: 600;\n}\n\n.float-app p:last-child {\n font-size: 12px;\n font-weight: normal;\n}\n\n.float-app .acoes {\n display: flex;\n}\n\n.float-app .acoes button {\n height: 40px;\n padding: 0 13px !important;\n font-size: 12px;\n margin-left: 20px !important;\n}\n\n.periodo-grafico {\n display: block;\n font-size: 12px !important;\n color: #81858e;\n font-weight: normal !important;\n}\n\n.card-validation {\n width: 400px;\n background: rgba(33, 51, 210, 0.1);\n border-radius: 5px;\n margin-bottom: 20px;\n padding: 30px;\n display: flex;\n}\n\n.card-validation p {\n color: #2a63ab;\n font-size: 13px;\n line-height: 1.5;\n}\n\n.card-validation button {\n height: 40px !important;\n font-size: 13px !important;\n padding: 10px 15px !important;\n margin-top: 15px;\n text-align: right;\n}\n\n.banner-default-loading {\n justify-content: center;\n align-items: center;\n height: 130px;\n}\n</style>\n","import Api from '@/services/API';\n\n/**\n * @typedef {AuthRequest}\n */\n\nexport default class Auth extends Api {\n\n /**\n * @type {String}\n */\n static base = '/api/envios/login'\n\n\n /**\n * @type {String}\n */\n static resource = ''\n\n /**\n * @param {String} resource\n * @param {Object} options\n * @param {Object} http\n */\n constructor(resource, options = {}, http = null) {\n super(Auth.normalize(Auth.base, resource), options, http);\n }\n\n /**\n * @return {this}\n */\n static build() {\n return new this(this.resource);\n }\n\n login(username, password, captcha) {\n\n let data = {\n username: username,\n password: password,\n captcha: captcha,\n grant_type: 'password',\n scope: '*',\n client_id: process.env.VUE_APP_OAUTH_CLIENT_ID,\n client_secret: process.env.VUE_APP_OAUTH_CLIENT_SECRET\n }\n\n return this.post('', data);\n }\n\n toClub() {\n return this.post('');\n }\n\n logout() {\n return this.post();\n }\n\n}\n","import Rest from '@/services/Rest';\n\n/**\n * @typedef {CurrencyCurrenciesService}\n */\nexport default class CurrencyCurrenciesService extends Rest {\n /**\n * @type {String}\n */\n static resource = '/currency/currencies'\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('canvas',{ref:\"canvas\"})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <canvas ref=\"canvas\"></canvas>\n</template>\n\n<script>\nimport moment from \"moment\";\n\nimport { Line } from \"vue-chartjs\";\nimport Money from \"@/mixins/money\";\n\nChart.defaults.global.defaultFontFamily = \"'Montserrat'\";\nChart.defaults.global.defaultFontSize = 11;\n\nexport default {\n name: \"AreaChart\",\n extends: Line,\n props: {\n currency: {\n required: true,\n type: String,\n default: \"R$\",\n },\n },\n data() {\n return {\n gradient: null,\n gradient2: null,\n vendas_semana: [],\n };\n },\n mixins: [Money],\n methods: {\n mountedChart(vendas_semana) {\n this.vendas_semana = vendas_semana;\n this.gradient = this.$refs.canvas\n .getContext(\"2d\")\n .createLinearGradient(0, 0, 0, 450);\n\n this.gradient.addColorStop(0, \"rgba(0,35,99,1)\");\n this.gradient.addColorStop(0.5, \"rgba(0,35,99,.2)\");\n this.gradient.addColorStop(1, \"rgba(0,35,99,0)\");\n\n this.renderChart(\n {\n labels: [\n ...this.vendas_semana\n .reverse()\n .map((item) => moment(item.date).format(\"DD/MM\")),\n ],\n datasets: [\n {\n label: this.$t(\"chart.dataset_label\") + this.currency,\n pointBackgroundColor: \"#FFF\",\n borderWidth: 1.5,\n pointBorderColor: \"#002363\",\n backgroundColor: this.gradient,\n data: [\n ...this.vendas_semana\n // .reverse()\n .map((item) => item.total),\n ],\n },\n ],\n },\n {\n tooltips: {\n callbacks: {\n label: function (tooltipItem, data) {\n var dataset = data.datasets[tooltipItem.datasetIndex];\n var total = dataset.data.reduce(function (\n previousValue,\n currentValue\n ) {\n return previousValue + currentValue;\n });\n var currentValue = dataset.data[tooltipItem.index];\n return currentValue.toLocaleString(\"pt-BR\", {\n style: \"currency\",\n currency: \"BRL\",\n });\n },\n },\n },\n responsive: true,\n maintainAspectRatio: false,\n scales: {\n xAxes: [\n {\n gridLines: {\n drawOnChartArea: false,\n },\n },\n ],\n yAxes: [\n {\n gridLines: {\n color: \"#f7f7f7\",\n },\n ticks: {\n min: 0,\n display: true,\n // stepSize: 100,\n },\n },\n ],\n },\n legend: {\n display: false,\n },\n }\n );\n },\n },\n mounted() {\n // this.loading = true;\n // this.getDadosGrafico();\n },\n};\n</script>\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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./AreaChart.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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./AreaChart.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./AreaChart.vue?vue&type=template&id=2e7a37b0&\"\nimport script from \"./AreaChart.vue?vue&type=script&lang=js&\"\nexport * from \"./AreaChart.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/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","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/cli-service/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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./SelectCurrency.vue?vue&type=style&index=0&id=399f5a96&prod&scoped=true&lang=css&\"","import Api from '@/services/API';\n\n/**\n * @typedef {AuthRequest}\n */\n\nexport default class Auth extends Api {\n\n /**\n * @type {String}\n */\n static base = '/api/login/club'\n\n\n /**\n * @type {String}\n */\n static resource = ''\n\n /**\n * @param {String} resource\n * @param {Object} options\n * @param {Object} http\n */\n constructor(resource, options = {}, http = null) {\n super(Auth.normalize(Auth.base, resource), options, http);\n }\n\n /**\n * @return {this}\n */\n static build() {\n return new this(this.resource);\n }\n\n login(username, password, captcha) {\n\n let data = {\n username: username,\n password: password,\n captcha: captcha,\n grant_type: 'password',\n scope: '*',\n client_id: process.env.VUE_APP_OAUTH_CLIENT_ID,\n client_secret: process.env.VUE_APP_OAUTH_CLIENT_SECRET\n }\n\n return this.post('', data);\n }\n\n toClub() {\n return this.post('');\n }\n\n logout() {\n return this.post();\n }\n\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('BaseModal',{attrs:{\"name\":\"informative\",\"size\":\"lg\",\"title\":_vm.title},on:{\"hidden\":_vm.skip},scopedSlots:_vm._u([{key:\"footer\",fn:function({}){return [_c('div',{staticClass:\"botoes\"},[_c('BaseButton',{staticClass:\"skiped\",attrs:{\"variant\":\"info2\"},on:{\"click\":_vm.activeHidden}},[_vm._v(\" \"+_vm._s(_vm.$t('shared.text_2130'))+\" \")])],1)]}}])},[_c('p',{staticClass:\"informativo\"},[_vm._v(_vm._s(_vm.$t('shared.text_2128')))]),_c('p',{staticClass:\"informativo\"},[_vm._v(\" \"+_vm._s(_vm.$t('shared.text_2129'))+\" \")]),_c('div',{staticClass:\"video\"},[_c('iframe',{attrs:{\"src\":\"https://www.youtube-nocookie.com/embed/UGHyPDsXvAc\",\"title\":\"YouTube video player\",\"frameborder\":\"0\",\"allow\":\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\",\"allowfullscreen\":\"\"}})]),_c('p',{staticClass:\"informativo\"},[_vm._v(\"#boracrescer 🚀\")])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <BaseModal name=\"informative\" size=\"lg\" :title=\"title\" @hidden=\"skip\">\n <p class=\"informativo\">{{ $t('shared.text_2128') }}</p>\n <p class=\"informativo\">\n {{ $t('shared.text_2129') }}\n </p>\n\n <div class=\"video\">\n <iframe\n src=\"https://www.youtube-nocookie.com/embed/UGHyPDsXvAc\"\n title=\"YouTube video player\"\n frameborder=\"0\"\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n allowfullscreen\n ></iframe>\n </div>\n\n <p class=\"informativo\">#boracrescer 🚀</p>\n\n <template v-slot:footer=\"{}\">\n <div class=\"botoes\">\n <BaseButton variant=\"info2\" class=\"skiped\" @click=\"activeHidden\">\n {{ $t('shared.text_2130') }}\n </BaseButton>\n </div>\n </template>\n </BaseModal>\n</template>\n\n<script>\nimport MetaService from \"@/services/resources/MetaService\";\nconst serviceMeta = MetaService.build();\n\nexport default {\n name: \"Informative\",\n data() {\n return {\n title: this.$t('shared.text_2131'),\n };\n },\n methods: {\n activeHidden() {\n this.$bvModal.hide(\"informative\");\n },\n skip() {\n let data = {\n id: \"/onboarding\",\n meta_key: \"onboarding\",\n meta_value: 1,\n };\n\n serviceMeta.update(data);\n },\n },\n};\n</script>\n\n<style scoped>\n.informativo {\n color: #81858e;\n font-size: 14px;\n font-weight: normal;\n line-height: 1.5;\n margin: 0;\n}\n.informativo + .informativo {\n margin-top: 10px;\n}\n.video {\n margin: 30px auto;\n overflow: hidden;\n border-radius: 5px;\n background: #000;\n}\n.video iframe {\n width: 100%;\n height: 50vh;\n}\n.skiped {\n color: #2a63ab;\n background: rgba(33, 51, 210, 0.1);\n border: none;\n}\n</style>\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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./informative.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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./informative.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./informative.vue?vue&type=template&id=2fa242e6&scoped=true&\"\nimport script from \"./informative.vue?vue&type=script&lang=js&\"\nexport * from \"./informative.vue?vue&type=script&lang=js&\"\nimport style0 from \"./informative.vue?vue&type=style&index=0&id=2fa242e6&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2fa242e6\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.doesUserHavePendingDocumentation)?_c('div',{staticClass:\"card-pending-documentation\"},[_c('div',{staticClass:\"d-flex justify-content-between align-items-center\"},[_c('h3',[_vm._v(_vm._s(_vm.$t(\"components.cardPendingDocumentation.title\")))])]),_c('div',{staticClass:\"py-2 mt-2\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"components.cardPendingDocumentation.description\"))+\" \")]),_c('div',{staticClass:\"mt-2 feature d-flex flex-row\"},[_vm._m(0),_c('div',{staticClass:\"d-flex flex-column\",staticStyle:{\"width\":\"85%\"}},[_c('span',{staticStyle:{\"font-weight\":\"600\",\"font-size\":\"0.8rem\"}},[_vm._v(_vm._s(_vm.$t(\"components.cardPendingDocumentation.identity_verification\")))]),_c('StatusTag',{attrs:{\"status\":_vm.identityValidationDocumentationStatus}})],1)]),_c('div',{staticClass:\"mt-2 feature d-flex flex-row\"},[_vm._m(1),_c('div',{staticClass:\"d-flex flex-column\",staticStyle:{\"width\":\"85%\"}},[_c('span',{staticStyle:{\"font-weight\":\"600\",\"font-size\":\"0.8rem\"}},[_vm._v(_vm._s(_vm.$t(\"components.cardPendingDocumentation.financial_data\")))]),_c('StatusTag',{attrs:{\"status\":_vm.financialDocumentationStatus}})],1)]),_c('div',{staticClass:\"d-flex flex-row\"},[_c('button',{staticClass:\"w-100\",on:{\"click\":_vm.sendDocumentation}},[_vm._v(\" \"+_vm._s(_vm.$t(\"components.cardPendingDocumentation.send_documentation\"))+\" \")])])]):_vm._e()\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"d-flex flex-column justify-content-center align-items-center\",staticStyle:{\"width\":\"15%\"}},[_c('img',{staticClass:\"icon-danger align-self-center\",attrs:{\"src\":require(\"@/assets/img/icons/danger.svg\")}})])\n},function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"d-flex flex-column justify-content-center align-items-center\",staticStyle:{\"width\":\"15%\"}},[_c('img',{staticClass:\"icon-danger align-self-center\",attrs:{\"src\":require(\"@/assets/img/icons/danger.svg\")}})])\n}]\n\nexport { render, staticRenderFns }","import Rest from '@/services/Rest';\n\nexport default class DocumentationStatusService extends Rest {\n static resource = '/documentation-status';\n \n static build() {\n return super.build(this.resource);\n }\n} ","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',{class:['status-tag', _vm.statusClass],staticStyle:{\"--bs-bg-opacity\":\".5\"}},[_vm._v(_vm._s(_vm.text))])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }"," <template>\n <span :class=\"['status-tag', statusClass]\" style=\"--bs-bg-opacity: .5;\">{{ text }}</span>\n </template>\n \n <script>\n export default {\n name: \"StatusTag\",\n props: {\n status: {\n type: String,\n required: true,\n validator: function(value) {\n return ['APPROVED','DISAPPROVED','PENDING','INITIATED'].includes(value);\n }\n }\n },\n computed: {\n text() {\n switch (this.status) {\n case \"APPROVED\": return this.$t(\"views.dashboard.status.approved\");\n case \"DISAPPROVED\": return this.$t(\"views.dashboard.status.disapproved\");\n default: return this.$t(\"views.dashboard.status.pending\");\n }\n },\n statusClass() {\n let bootstrapClass = null;\n switch (this.status) {\n case \"APPROVED\": \n bootstrapClass = \"success\"; \n break;\n case \"DISAPPROVED\": \n bootstrapClass = \"danger\"; \n break;\n default: \n bootstrapClass = \"warning\"; \n break;\n }\n \n return `border border-${bootstrapClass} text-${bootstrapClass}`;\n }\n }\n };\n </script>\n \n <style scoped>\n .status-tag {\n display: inline-block;\n padding: 0.0em 0.5em;\n font-size: 0.7em;\n font-weight: 500;\n border-radius: 1em; /* Deixa as bordas arredondadas */\n text-align: center;\n width: fit-content;\n margin-top: 0.1rem;\n margin-bottom: 0.1rem;\n }\n </style>\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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./StatusTag.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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./StatusTag.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./StatusTag.vue?vue&type=template&id=9a88393a&scoped=true&\"\nimport script from \"./StatusTag.vue?vue&type=script&lang=js&\"\nexport * from \"./StatusTag.vue?vue&type=script&lang=js&\"\nimport style0 from \"./StatusTag.vue?vue&type=style&index=0&id=9a88393a&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"9a88393a\",\n null\n \n)\n\nexport default component.exports","<template>\n <div v-if=\"doesUserHavePendingDocumentation\" class=\"card-pending-documentation\">\n <div class=\"d-flex justify-content-between align-items-center\">\n <h3>{{ $t(\"components.cardPendingDocumentation.title\") }}</h3>\n </div>\n <div class=\"py-2 mt-2\">\n {{ $t(\"components.cardPendingDocumentation.description\") }}\n </div>\n <div class=\"mt-2 feature d-flex flex-row\">\n <div class=\"d-flex flex-column justify-content-center align-items-center\" style=\"width:15%\">\n <img class=\"icon-danger align-self-center\" src=\"@/assets/img/icons/danger.svg\"></img>\n </div>\n <div class=\"d-flex flex-column\" style=\"width:85%\">\n <span style=\"font-weight: 600; font-size: 0.8rem;\">{{ $t(\"components.cardPendingDocumentation.identity_verification\") }}</span>\n <StatusTag :status=\"identityValidationDocumentationStatus\"/>\n </div>\n </div>\n <div class=\"mt-2 feature d-flex flex-row\">\n <div class=\"d-flex flex-column justify-content-center align-items-center\" style=\"width:15%\">\n <img class=\"icon-danger align-self-center\" src=\"@/assets/img/icons/danger.svg\"></img>\n </div>\n <div class=\"d-flex flex-column\" style=\"width:85%\">\n <span style=\"font-weight: 600; font-size: 0.8rem;\">{{ $t(\"components.cardPendingDocumentation.financial_data\") }}</span>\n <StatusTag :status=\"financialDocumentationStatus\"/>\n </div>\n </div>\n <div class=\"d-flex flex-row\">\n <button class=\"w-100\" @click=\"sendDocumentation\">\n {{ $t(\"components.cardPendingDocumentation.send_documentation\") }}\n </button>\n </div>\n </div>\n</template>\n\n<script>\nimport DocumentationStatusService from '@/services/resources/DocumentationStatusService';\nimport StatusTag from '@/components/shared/StatusTag';\n\nconst serviceDocumentationStatus = DocumentationStatusService.build();\n\nexport default {\n name: 'CardPendingDocumentation',\n components: {\n StatusTag\n },\n data() {\n return {\n doesUserHavePendingDocumentation: false,\n identityValidationDocumentationStatus: 'PENDING',\n financialDocumentationStatus: 'PENDING'\n }\n },\n methods: {\n \n sendDocumentation() {\n this.$router.push('/minha-conta');\n },\n fetchDocumentationStatus() {\n serviceDocumentationStatus\n .search()\n .then((response) => {\n this.doesUserHavePendingDocumentation = response.doesUserHavePendingDocumentation;\n this.identityValidationDocumentationStatus = response.identityValidationDocumentationStatus;\n this.financialDocumentationStatus = response.financialDocumentationStatus;\n })\n .catch((err) => console.error(err))\n }\n },\n created() {\n this.fetchDocumentationStatus();\n }\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.card-pending-documentation {\n width: 400px;\n background: #ffffff;\n border: 1px solid #f7f7f7;\n border-radius: 8px;\n padding: 50px;\n \n h3 {\n font-size: 16px;\n font-weight: 600;\n }\n\n .feature {\n background: #F9FAFB;\n padding: 12px;\n border-radius: 4px;\n }\n\n button {\n margin-top: 20px;\n padding: 12px;\n background: #2a63ab;\n color: white;\n border: none;\n border-radius: 4px;\n font-weight: 500;\n \n &:hover {\n background: darken(#2a63ab, 5%);\n }\n }\n .icon-danger{\n width: 18px;\n }\n}\n\n@media screen and (max-width: 768px) {\n .card-pending-documentation {\n width: 100%;\n padding: 30px 20px;\n }\n}\n</style>\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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./CardPendingDocumentation.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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./CardPendingDocumentation.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CardPendingDocumentation.vue?vue&type=template&id=42e17c42&scoped=true&\"\nimport script from \"./CardPendingDocumentation.vue?vue&type=script&lang=js&\"\nexport * from \"./CardPendingDocumentation.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CardPendingDocumentation.vue?vue&type=style&index=0&id=42e17c42&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"42e17c42\",\n null\n \n)\n\nexport default component.exports","import Rest from '@/services/Rest';\n\n/**\n * @typedef {DashboardService}\n */\nexport default class DashboardService extends Rest {\n /**\n * @type {String}\n */\n static resource = '/dashboard'\n}\n","const Money = {\n methods: {\n formatMoney(number, decPlaces = 2, decSep = ',', thouSep = '.') {\n if (typeof number !== 'undefined' && number !== null && number !== '') {\n // Formata o número com o máximo de casas decimais\n let formattedNumber = parseFloat(number).toFixed(decPlaces);\n\n // Adiciona o separador de milhares e o separador decimal\n let parts = formattedNumber.split('.');\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, thouSep);\n return parts.join(decSep);\n }\n return '0' + decSep + '00';\n },\n }\n};\n\nexport default Money;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('canvas',{ref:\"canvas\"})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <canvas ref=\"canvas\"></canvas>\n</template>\n\n<script>\nimport { Doughnut } from \"vue-chartjs\";\n\nChart.defaults.global.defaultFontFamily = \"'Montserrat'\";\nChart.defaults.global.defaultFontSize = 11;\n\nexport default {\n // name: \"BarChart\",\n date() {\n return {\n vendas_device: [],\n };\n },\n props: {\n vendas_device: {\n type: Array,\n default() {\n return [];\n },\n },\n },\n watch: {\n vendas_device() {\n this.mountedChart();\n },\n },\n extends: Doughnut,\n methods: {\n mountedChart() {\n this.gradient = this.$refs.canvas\n .getContext(\"2d\")\n .createLinearGradient(0, 0, 0, 450);\n\n this.gradient.addColorStop(0, \"rgba(0,33,99,.4)\");\n this.gradient.addColorStop(0.5, \"rgba(0,33,99,1)\");\n this.gradient.addColorStop(1, \"rgba(0,33,99,1)\");\n\n this.renderChart(\n {\n labels: [...this.vendas_device.map((item) => item.device)],\n datasets: [\n {\n label: this.$t(\"chart.dataset_label_device\"),\n backgroundColor: [this.gradient, \" #5592D5\"],\n borderColor: \"#fff\",\n borderWidth: 0,\n data: [...this.vendas_device.map((item) => item.count)],\n },\n ],\n },\n {\n legend: {\n position: \"bottom\",\n },\n tooltips: {\n callbacks: {\n label: function(tooltipItem, data) {\n const dataset = data.datasets[tooltipItem.datasetIndex];\n const total = dataset.data.reduce(function(\n previousValue,\n currentValue\n ) {\n return previousValue + currentValue;\n });\n const currentValue = dataset.data[tooltipItem.index];\n // return `R$ ${currentValue}`;\n return currentValue.toLocaleString(\"pt-BR\", {\n style: \"currency\",\n currency: \"BRL\",\n });\n },\n },\n },\n cutoutPercentage: 85,\n responsive: true,\n maintainAspectRatio: false,\n scales: {\n xAxes: [\n {\n gridLines: {\n display: false,\n },\n ticks: {\n display: false,\n },\n },\n ],\n yAxes: [\n {\n gridLines: {\n display: false,\n },\n ticks: {\n display: false,\n min: 0,\n stepSize: 2,\n callback: function(value, index, values) {\n return value.toLocaleString(\"pt-BR\", {\n style: \"currency\",\n currency: \"BRL\",\n });\n },\n },\n },\n ],\n },\n }\n );\n },\n },\n mounted() {\n this.mountedChart();\n },\n};\n</script>\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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./BarChart.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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./BarChart.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./BarChart.vue?vue&type=template&id=592988ac&\"\nimport script from \"./BarChart.vue?vue&type=script&lang=js&\"\nexport * from \"./BarChart.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/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 UA = require('../internals/engine-user-agent');\n\nmodule.exports = /MSIE|Trident/.test(UA);\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/cli-service/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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Dashboard.vue?vue&type=style&index=0&id=b8b4c1bc&prod&lang=scss&scoped=true&\"","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/cli-service/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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ModalPendingDocumentation.vue?vue&type=style&index=0&id=c0d118fc&prod&scoped=true&lang=css&\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('BaseModalFullSize',{attrs:{\"name\":\"modal-pending-documentation\",\"size\":\"lg\",\"title\":\"\",\"centered\":\"\",\"hide-header\":\"\",\"hide-footer\":\"\"}},[_c('div',[_c('button',{staticClass:\"close\",attrs:{\"type\":\"button\",\"aria-label\":\"Close\"},on:{\"click\":_vm.closeModal}},[_vm._v(\"×\")])]),_c('div',{staticClass:\"d-flex flex-row\"},[_c('div',{staticStyle:{\"width\":\"65%\",\"padding\":\"2.5rem !important\"}},[_c('h2',[_vm._v(\"Envie seus dados financeiros para habilitar as vendas dos seus produtos\")]),_c('p',[_vm._v(\"Para começar a vender, é \"),_c('strong',[_vm._v(\"obrigatório\")]),_vm._v(\" enviar seus dados financeiros. Enquanto sua documentação estiver em análise, as vendas ficarão indisponíveis. Nossa equipe revisará suas informações e realizará a aprovação do cadastro em até 48 horas.\")]),_c('div',{staticClass:\"d-flex justify-content-between\"},[_c('b-button',{staticClass:\"btn btn-primary d-flex flex-row justify-content-between\",staticStyle:{\"gap\":\"10px\"},attrs:{\"variant\":\"primary\"},on:{\"click\":_vm.openPendingDocumentationScreen}},[_c('img',{staticClass:\"icon-document-up align-self-center\",attrs:{\"src\":require(\"@/assets/img/icons/document-up.svg\")}}),_vm._v(\" Enviar documentação \")]),_c('b-button',{attrs:{\"variant\":\"secondary\"},on:{\"click\":_vm.closeModal}},[_vm._v(\"Deixar para depois\")])],1)]),_c('div',{staticStyle:{\"width\":\"35%\",\"overflow\":\"hidden\"}},[_c('img',{staticClass:\"img-fluid\",attrs:{\"src\":require(\"@/assets/img/man-at-office.jpeg\"),\"alt\":\"Descrição da imagem\"}})])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <BaseModalFullSize name=\"modal-pending-documentation\" size=\"lg\" title=\"\" centered hide-header hide-footer>\n <div>\n <button type=\"button\" aria-label=\"Close\" class=\"close\" @click=\"closeModal\">×</button>\n </div>\n <div class=\"d-flex flex-row\">\n <!-- Texto -->\n <div style=\"width:65%;padding: 2.5rem !important\">\n <h2>Envie seus dados financeiros para habilitar as vendas dos seus produtos</h2>\n <p>Para começar a vender, é <strong>obrigatório</strong> enviar seus dados financeiros. Enquanto sua documentação estiver em análise, as vendas ficarão indisponíveis. Nossa equipe revisará suas informações e realizará a aprovação do cadastro em até 48 horas.</p>\n <div class=\"d-flex justify-content-between\">\n <b-button @click=\"openPendingDocumentationScreen\" class=\"btn btn-primary d-flex flex-row justify-content-between\" style=\"gap:10px;\" variant=\"primary\">\n <img class=\"icon-document-up align-self-center\" src=\"@/assets/img/icons/document-up.svg\"></img>\n Enviar documentação\n </b-button>\n <b-button @click=\"closeModal\" variant=\"secondary\">Deixar para depois</b-button>\n </div>\n </div>\n <!-- Imagem -->\n <div style=\"width:35%;overflow:hidden;\">\n <img src=\"@/assets/img/man-at-office.jpeg\" class=\"img-fluid\" alt=\"Descrição da imagem\" />\n </div>\n </div>\n </BaseModalFullSize>\n</template>\n\n<script>\nexport default {\n name: 'ModalPendingDocumentation',\n data() {\n return {\n loading: false\n }\n },\n methods: {\n closeModal() {\n this.$bvModal.hide('modal-pending-documentation');\n },\n openPendingDocumentationScreen() {\n this.$router.push(\"/minha-conta\");\n },\n }\n};\n</script>\n\n<style scoped>\nh2 {\n font-size: 1.4rem;\n margin-bottom: 1rem;\n}\n\np {\n font-size: 0.95rem;\n margin-bottom: 2rem !important;\n}\n\n.close{\n position: absolute;\n top: 10px;\n right: 10px;\n color:white;\n}\n.modal-dialog.modal-lg {\n max-width: 900px;\n border-radius: 8px;\n}\n\n.img-fluid {\n object-fit: cover;\n height: 100%;\n}\n</style>\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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ModalPendingDocumentation.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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ModalPendingDocumentation.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ModalPendingDocumentation.vue?vue&type=template&id=c0d118fc&scoped=true&\"\nimport script from \"./ModalPendingDocumentation.vue?vue&type=script&lang=js&\"\nexport * from \"./ModalPendingDocumentation.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ModalPendingDocumentation.vue?vue&type=style&index=0&id=c0d118fc&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"c0d118fc\",\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""}