{"version":3,"sources":["webpack:///./src/modules/prepare-docs/_views/PrepareDocAdd.vue?6e3c","webpack:///./src/modules/prepare-docs/_components/questions/ModalExam.vue?3922","webpack:///./src/modules/prepare-docs/_components/questions/QuestionMultiChoice.vue?cc71","webpack:///./src/modules/prepare-docs/_components/questions/ModalQuestionsInBook.vue?3fd1","webpack:///./src/modules/prepare-docs/_views/ExamView.vue?6a9e","webpack:///./src/modules/prepare-docs/_components/questions/QuestionView.vue?9ddc","webpack:///./src/modules/prepare-docs/_components/questions/QuestionChoice.vue?3f85","webpack:///./src/modules/prepare-docs/_components/questions/ModalQuestionSampleList.vue?4def","webpack:///./src/modules/prepare-docs/_components/questions/SidebarCatsOfAutoTest.vue?1cff","webpack:///./src/modules/prepare-docs/_views/tesst.vue?c5b0","webpack:///./src/modules/prepare-docs/_components/questions/QuestionCorrectView.vue?d85e","webpack:///./src/modules/prepare-docs/_views/ExamList.vue?78fe","webpack:///./src/assets/images sync ^\\.\\/.*$","webpack:///./src/modules/prepare-docs/_components/questions/ModalThematic.vue?1240","webpack:///./node_modules/fabric/dist/fabric.js","webpack:///./src/modules/prepare-docs/_components/list/FilterList.vue?643d","webpack:///./src/modules/prepare-docs/_components/questions/ModalQuestionsAutoTest.vue?c436","webpack:///./src/modules/prepare-docs/_components/questions/ModalQuestionSample.vue?ae3d","webpack:///./src/modules/prepare-docs/_components/detail/CanvasSlide.vue?ef64","webpack:///./src/modules/prepare-docs/_views/ExamAdd.vue?f66e","webpack:///./src/modules/prepare-docs/_components/questions/QuestionDetail.vue?e481","webpack:///./src/modules/question/EditorCK.vue?3263","webpack:///./src/modules/prepare-docs/index.vue?a743","webpack:///./src/modules/prepare-docs/_store/constants.js","webpack:///./src/modules/prepare-docs/_api/exam.js","webpack:///./src/modules/prepare-docs/_store/actions.js","webpack:///./src/modules/prepare-docs/_store/getters.js","webpack:///./src/modules/prepare-docs/_store/mutations.js","webpack:///./src/modules/prepare-docs/_store/index.js","webpack:///./src/modules/prepare-docs/_views/PrepareDocList.vue?ee35","webpack:///./src/modules/prepare-docs/_components/list/FilterList.vue?f2f1","webpack:///./src/modules/prepare-docs/_api/classService.js","webpack:///src/modules/prepare-docs/_components/list/FilterList.vue","webpack:///./src/modules/prepare-docs/_components/list/FilterList.vue?83a4","webpack:///./src/modules/prepare-docs/_components/list/FilterList.vue","webpack:///./src/modules/prepare-docs/_api/lessonService.js","webpack:///src/modules/prepare-docs/_views/PrepareDocList.vue","webpack:///./src/modules/prepare-docs/_views/PrepareDocList.vue?9139","webpack:///./src/modules/prepare-docs/_views/PrepareDocList.vue","webpack:///./src/modules/prepare-docs/_views/PrepareDocDetail.vue?6538","webpack:///src/modules/prepare-docs/_views/PrepareDocDetail.vue","webpack:///./src/modules/prepare-docs/_views/PrepareDocDetail.vue?e278","webpack:///./src/modules/prepare-docs/_views/PrepareDocDetail.vue","webpack:///./src/modules/prepare-docs/_views/PrepareDocAdd.vue?856a","webpack:///./src/modules/prepare-docs/_api/fileService.js","webpack:///src/modules/prepare-docs/_views/PrepareDocAdd.vue","webpack:///./src/modules/prepare-docs/_views/PrepareDocAdd.vue?d323","webpack:///./src/modules/prepare-docs/_views/PrepareDocAdd.vue","webpack:///./src/modules/prepare-docs/_views/PrepareDocEdit.vue?d6f1","webpack:///./src/modules/prepare-docs/_components/detail/SidebarActions.vue?4ba7","webpack:///./src/modules/prepare-docs/_components/detail/SidebarActionText.vue?c964","webpack:///./src/modules/prepare-docs/_components/detail/SidebarActionColor.vue?d430","webpack:///src/modules/prepare-docs/_components/detail/SidebarActionColor.vue","webpack:///./src/modules/prepare-docs/_components/detail/SidebarActionColor.vue?d54d","webpack:///./src/modules/prepare-docs/_components/detail/SidebarActionColor.vue","webpack:///./src/modules/prepare-docs/_store/mixinsDetailLesson.js","webpack:///src/modules/prepare-docs/_components/detail/SidebarActionText.vue","webpack:///./src/modules/prepare-docs/_components/detail/SidebarActionText.vue?9cd7","webpack:///./src/modules/prepare-docs/_components/detail/SidebarActionText.vue","webpack:///./src/modules/prepare-docs/_components/detail/SidebarActionShape.vue?a5ea","webpack:///src/modules/prepare-docs/_components/detail/SidebarActionShape.vue","webpack:///./src/modules/prepare-docs/_components/detail/SidebarActionShape.vue?c9a0","webpack:///./src/modules/prepare-docs/_components/detail/SidebarActionShape.vue","webpack:///./src/modules/prepare-docs/_components/detail/SidebarActionImg.vue?e77d","webpack:///./src/modules/prepare-docs/_components/detail/ItemDataAction.vue?f390","webpack:///src/modules/prepare-docs/_components/detail/ItemDataAction.vue","webpack:///./src/modules/prepare-docs/_components/detail/ItemDataAction.vue?9752","webpack:///./src/modules/prepare-docs/_components/detail/ItemDataAction.vue","webpack:///./src/modules/prepare-docs/_components/detail/SidebarFilter.vue?0e0f","webpack:///src/modules/prepare-docs/_components/detail/SidebarFilter.vue","webpack:///./src/modules/prepare-docs/_components/detail/SidebarFilter.vue?681e","webpack:///./src/modules/prepare-docs/_components/detail/SidebarFilter.vue","webpack:///./src/modules/prepare-docs/_components/detail/ModalFileUploaded.vue?dbc0","webpack:///src/modules/prepare-docs/_components/detail/ModalFileUploaded.vue","webpack:///./src/modules/prepare-docs/_components/detail/ModalFileUploaded.vue?eeff","webpack:///./src/modules/prepare-docs/_components/detail/ModalFileUploaded.vue","webpack:///src/modules/prepare-docs/_components/detail/SidebarActionImg.vue","webpack:///./src/modules/prepare-docs/_components/detail/SidebarActionImg.vue?9384","webpack:///./src/modules/prepare-docs/_components/detail/SidebarActionImg.vue","webpack:///./src/modules/prepare-docs/_components/detail/SidebarActionVideo.vue?8891","webpack:///src/modules/prepare-docs/_components/detail/SidebarActionVideo.vue","webpack:///./src/modules/prepare-docs/_components/detail/SidebarActionVideo.vue?ee12","webpack:///./src/modules/prepare-docs/_components/detail/SidebarActionVideo.vue","webpack:///./src/modules/prepare-docs/_components/detail/SidebarActionAudio.vue?84d6","webpack:///src/modules/prepare-docs/_components/detail/SidebarActionAudio.vue","webpack:///./src/modules/prepare-docs/_components/detail/SidebarActionAudio.vue?cf5b","webpack:///./src/modules/prepare-docs/_components/detail/SidebarActionAudio.vue","webpack:///./src/modules/prepare-docs/_components/detail/SidebarActionPowerpoint.vue?d6f2","webpack:///src/modules/prepare-docs/_components/detail/SidebarActionPowerpoint.vue","webpack:///./src/modules/prepare-docs/_components/detail/SidebarActionPowerpoint.vue?2f04","webpack:///./src/modules/prepare-docs/_components/detail/SidebarActionPowerpoint.vue","webpack:///src/modules/prepare-docs/_components/detail/SidebarActions.vue","webpack:///./src/modules/prepare-docs/_components/detail/SidebarActions.vue?822b","webpack:///./src/modules/prepare-docs/_components/detail/SidebarActions.vue","webpack:///./src/modules/prepare-docs/_components/detail/CanvasSlide.vue?d515","webpack:///src/modules/prepare-docs/_components/detail/CanvasSlide.vue","webpack:///./src/modules/prepare-docs/_components/detail/CanvasSlide.vue?3701","webpack:///./src/modules/prepare-docs/_components/detail/CanvasSlide.vue","webpack:///./src/modules/prepare-docs/_components/detail/ModalViewVideoAudio.vue?e348","webpack:///src/modules/prepare-docs/_components/detail/ModalViewVideoAudio.vue","webpack:///./src/modules/prepare-docs/_components/detail/ModalViewVideoAudio.vue?e3af","webpack:///./src/modules/prepare-docs/_components/detail/ModalViewVideoAudio.vue","webpack:///./src/modules/prepare-docs/_components/detail/Slideshow.vue?cf56","webpack:///src/modules/prepare-docs/_components/detail/Slideshow.vue","webpack:///./src/modules/prepare-docs/_components/detail/Slideshow.vue?4861","webpack:///./src/modules/prepare-docs/_components/detail/Slideshow.vue","webpack:///./src/modules/prepare-docs/_components/detail/ModalPreviewMedia.vue?db29","webpack:///src/modules/prepare-docs/_components/detail/ModalPreviewMedia.vue","webpack:///./src/modules/prepare-docs/_components/detail/ModalPreviewMedia.vue?02b5","webpack:///./src/modules/prepare-docs/_components/detail/ModalPreviewMedia.vue","webpack:///src/modules/prepare-docs/_views/PrepareDocEdit.vue","webpack:///./src/modules/prepare-docs/_views/PrepareDocEdit.vue?e6b9","webpack:///./src/modules/prepare-docs/_views/PrepareDocEdit.vue","webpack:///./src/modules/prepare-docs/_views/ExamAdd.vue?5ba3","webpack:///./src/modules/prepare-docs/_components/exam/Sidebar.vue?9847","webpack:///./src/modules/prepare-docs/_store/mixinsCreateQuestion.js","webpack:///src/modules/prepare-docs/_components/exam/Sidebar.vue","webpack:///./src/modules/prepare-docs/_components/exam/Sidebar.vue?1c14","webpack:///./src/modules/prepare-docs/_components/exam/Sidebar.vue","webpack:///./src/modules/prepare-docs/_components/exam/ExamInfo.vue?00a2","webpack:///src/modules/prepare-docs/_components/exam/ExamInfo.vue","webpack:///./src/modules/prepare-docs/_components/exam/ExamInfo.vue?57c3","webpack:///./src/modules/prepare-docs/_components/exam/ExamInfo.vue","webpack:///./src/modules/prepare-docs/_components/questions/QuestionDetail.vue?aed7","webpack:///./src/modules/prepare-docs/_components/questions/QuestionHead.vue?ee9c","webpack:///./src/modules/question/EditorCK.vue?a136","webpack:///src/modules/question/EditorCK.vue","webpack:///./src/modules/question/EditorCK.vue?db9b","webpack:///./src/modules/question/EditorCK.vue","webpack:///./src/modules/prepare-docs/_store/mixinsQuestions.js","webpack:///./src/modules/prepare-docs/_components/questions/ModalQuestionSample.vue?d36a","webpack:///./src/modules/prepare-docs/_components/questions/SidebarClassesModal.vue?108e","webpack:///src/modules/prepare-docs/_components/questions/SidebarClassesModal.vue","webpack:///./src/modules/prepare-docs/_components/questions/SidebarClassesModal.vue?6345","webpack:///./src/modules/prepare-docs/_components/questions/SidebarClassesModal.vue","webpack:///./src/modules/prepare-docs/_components/questions/ModalQuestionsInBook.vue?286a","webpack:///src/modules/prepare-docs/_components/questions/ModalQuestionsInBook.vue","webpack:///./src/modules/prepare-docs/_components/questions/ModalQuestionsInBook.vue?557b","webpack:///./src/modules/prepare-docs/_components/questions/ModalQuestionsInBook.vue","webpack:///./src/modules/prepare-docs/_components/questions/ModalThematic.vue?f5b3","webpack:///src/modules/prepare-docs/_components/questions/ModalThematic.vue","webpack:///./src/modules/prepare-docs/_components/questions/ModalThematic.vue?3321","webpack:///./src/modules/prepare-docs/_components/questions/ModalThematic.vue","webpack:///./src/modules/prepare-docs/_components/questions/ModalExam.vue?c17f","webpack:///src/modules/prepare-docs/_components/questions/ModalExam.vue","webpack:///./src/modules/prepare-docs/_components/questions/ModalExam.vue?775d","webpack:///./src/modules/prepare-docs/_components/questions/ModalExam.vue","webpack:///./src/modules/prepare-docs/_components/questions/ModalQuestionsAutoTest.vue?ae21","webpack:///src/modules/prepare-docs/_components/questions/ModalQuestionsAutoTest.vue","webpack:///./src/modules/prepare-docs/_components/questions/ModalQuestionsAutoTest.vue?5509","webpack:///./src/modules/prepare-docs/_components/questions/ModalQuestionsAutoTest.vue","webpack:///./src/modules/prepare-docs/_components/questions/SidebarCatsOfBook.vue?147b","webpack:///src/modules/prepare-docs/_components/questions/SidebarCatsOfBook.vue","webpack:///./src/modules/prepare-docs/_components/questions/SidebarCatsOfBook.vue?1428","webpack:///./src/modules/prepare-docs/_components/questions/SidebarCatsOfBook.vue","webpack:///./src/modules/prepare-docs/_components/questions/SidebarCatsOfExam.vue?f261","webpack:///src/modules/prepare-docs/_components/questions/SidebarCatsOfExam.vue","webpack:///./src/modules/prepare-docs/_components/questions/SidebarCatsOfExam.vue?ffbf","webpack:///./src/modules/prepare-docs/_components/questions/SidebarCatsOfExam.vue","webpack:///./src/modules/prepare-docs/_components/questions/ModalQuestionSampleList.vue?bd56","webpack:///src/modules/prepare-docs/_components/questions/ModalQuestionSampleList.vue","webpack:///./src/modules/prepare-docs/_components/questions/ModalQuestionSampleList.vue?6c9d","webpack:///./src/modules/prepare-docs/_components/questions/ModalQuestionSampleList.vue","webpack:///./src/modules/prepare-docs/_components/questions/SidebarCatsOfAutoTest.vue?f9d7","webpack:///src/modules/prepare-docs/_components/questions/SidebarCatsOfAutoTest.vue","webpack:///./src/modules/prepare-docs/_components/questions/SidebarCatsOfAutoTest.vue?6499","webpack:///./src/modules/prepare-docs/_components/questions/SidebarCatsOfAutoTest.vue","webpack:///src/modules/prepare-docs/_components/questions/ModalQuestionSample.vue","webpack:///./src/modules/prepare-docs/_components/questions/ModalQuestionSample.vue?6957","webpack:///./src/modules/prepare-docs/_components/questions/ModalQuestionSample.vue","webpack:///src/modules/prepare-docs/_components/questions/QuestionHead.vue","webpack:///./src/modules/prepare-docs/_components/questions/QuestionHead.vue?6265","webpack:///./src/modules/prepare-docs/_components/questions/QuestionHead.vue","webpack:///./src/modules/prepare-docs/_components/questions/QuestionChoice.vue?5b18","webpack:///src/modules/prepare-docs/_components/questions/QuestionChoice.vue","webpack:///./src/modules/prepare-docs/_components/questions/QuestionChoice.vue?ae29","webpack:///./src/modules/prepare-docs/_components/questions/QuestionChoice.vue","webpack:///./src/modules/prepare-docs/_components/questions/QuestionMultiChoice.vue?688e","webpack:///src/modules/prepare-docs/_components/questions/QuestionMultiChoice.vue","webpack:///./src/modules/prepare-docs/_components/questions/QuestionMultiChoice.vue?20ae","webpack:///./src/modules/prepare-docs/_components/questions/QuestionMultiChoice.vue","webpack:///./src/modules/prepare-docs/_components/questions/QuestionDownAnswer.vue?ff80","webpack:///src/modules/prepare-docs/_components/questions/QuestionDownAnswer.vue","webpack:///./src/modules/prepare-docs/_components/questions/QuestionDownAnswer.vue?3d3b","webpack:///./src/modules/prepare-docs/_components/questions/QuestionDownAnswer.vue","webpack:///src/modules/prepare-docs/_components/questions/QuestionDetail.vue","webpack:///./src/modules/prepare-docs/_components/questions/QuestionDetail.vue?231b","webpack:///./src/modules/prepare-docs/_components/questions/QuestionDetail.vue","webpack:///./src/modules/prepare-docs/_components/questions/QuestionView.vue?4f00","webpack:///src/modules/prepare-docs/_components/questions/QuestionView.vue","webpack:///./src/modules/prepare-docs/_components/questions/QuestionView.vue?383c","webpack:///./src/modules/prepare-docs/_components/questions/QuestionView.vue","webpack:///src/modules/prepare-docs/_views/ExamAdd.vue","webpack:///./src/modules/prepare-docs/_views/ExamAdd.vue?bf7a","webpack:///./src/modules/prepare-docs/_views/ExamAdd.vue","webpack:///./src/modules/prepare-docs/_views/ExamView.vue?034b","webpack:///./src/modules/prepare-docs/_components/questions/QuestionCorrectView.vue?cc5e","webpack:///src/modules/prepare-docs/_components/questions/QuestionCorrectView.vue","webpack:///./src/modules/prepare-docs/_components/questions/QuestionCorrectView.vue?9c12","webpack:///./src/modules/prepare-docs/_components/questions/QuestionCorrectView.vue","webpack:///src/modules/prepare-docs/_views/ExamView.vue","webpack:///./src/modules/prepare-docs/_views/ExamView.vue?1461","webpack:///./src/modules/prepare-docs/_views/ExamView.vue","webpack:///./src/modules/prepare-docs/_views/ExamList.vue?537d","webpack:///./src/modules/prepare-docs/_api/examService.js","webpack:///src/modules/prepare-docs/_views/ExamList.vue","webpack:///./src/modules/prepare-docs/_views/ExamList.vue?948c","webpack:///./src/modules/prepare-docs/_views/ExamList.vue","webpack:///./src/modules/prepare-docs/_views/QuestionAnswer.vue?f767","webpack:///./src/modules/prepare-docs/_api/index.js","webpack:///./src/modules/prepare-docs/_api/userService.js","webpack:///./src/modules/prepare-docs/_api/subjectService.js","webpack:///./src/modules/prepare-docs/_api/questionAnswerService.js","webpack:///src/modules/prepare-docs/_views/QuestionAnswer.vue","webpack:///./src/modules/prepare-docs/_views/QuestionAnswer.vue?46bb","webpack:///./src/modules/prepare-docs/_views/QuestionAnswer.vue","webpack:///./src/modules/prepare-docs/_views/tesst.vue?f44c","webpack:///src/modules/prepare-docs/_views/tesst.vue","webpack:///./src/modules/prepare-docs/_views/tesst.vue?a16e","webpack:///./src/modules/prepare-docs/_views/tesst.vue","webpack:///./src/modules/prepare-docs/_views/Login.vue?0b89","webpack:///./src/modules/prepare-docs/_api/loginService.js","webpack:///src/modules/prepare-docs/_views/Login.vue","webpack:///./src/modules/prepare-docs/_views/Login.vue?f7e4","webpack:///./src/modules/prepare-docs/_views/Login.vue","webpack:///src/modules/prepare-docs/index.vue","webpack:///./src/modules/prepare-docs/index.vue?fd04","webpack:///./src/modules/prepare-docs/index.vue","webpack:///./src/modules/prepare-docs/_views/PrepareDocList.vue?c879","webpack:///./src/modules/prepare-docs/_components/questions/SidebarCatsOfBook.vue?1e51","webpack:///./node_modules/@ckeditor/ckeditor5-build-classic/build/translations/vi.js","webpack:///./src/modules/prepare-docs/_components/exam/Sidebar.vue?e259","webpack:///./src/modules/prepare-docs/_components/questions/QuestionHead.vue?3f98","webpack:///./src/modules/prepare-docs/_views/PrepareDocEdit.vue?7d3b","webpack:///./src/modules/prepare-docs/_components/questions/SidebarClassesModal.vue?c77e","webpack:///./src/components/EditorCK.vue?9312","webpack:///src/components/EditorCK.vue","webpack:///./src/components/EditorCK.vue?eedf","webpack:///./src/components/EditorCK.vue","webpack:///./src/components/EditorCK.vue?906a","webpack:///./node_modules/@ckeditor/ckeditor5-build-classic/build/ckeditor.js"],"names":["map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","module","exports","fabric","version","resizeCanvasIfNeeded","pipelineState","targetCanvas","width","height","dWidth","destinationWidth","dHeight","destinationHeight","copyGLTo2DDrawImage","gl","glCanvas","canvas","ctx","getContext","translate","scale","sourceY","drawImage","copyGLTo2DPutImageData","numBytes","u8","Uint8Array","this","imageBuffer","u8Clamped","Uint8ClampedArray","readPixels","RGBA","UNSIGNED_BYTE","imgData","ImageData","putImageData","document","window","HTMLDocument","implementation","createHTMLDocument","jsdom","decodeURIComponent","features","FetchExternalResources","jsdomImplForWrapper","implForWrapper","nodeCanvas","Canvas","defaultView","DOMParser","isTouchSupported","navigator","maxTouchPoints","isLikelyNode","Buffer","SHARED_ATTRIBUTES","DPI","reNum","fontPaths","iMatrix","canvasModule","perfLimitSizeTotal","maxCacheSideLimit","minCacheSideLimit","charWidthsCache","textureSize","enableGLFiltering","devicePixelRatio","webkitDevicePixelRatio","mozDevicePixelRatio","browserShadowBlurConstant","arcToSegmentsCache","boundsOfCurveCache","cachesBoundsOfCurve","initFilterBackend","isWebglSupported","console","log","maxTextureSize","WebglFilterBackend","tileSize","Canvas2dFilterBackend","_removeEventListener","eventName","handler","__eventListeners","eventListener","indexOf","util","array","fill","observe","arguments","length","prop","on","push","stopObserving","call","fire","options","listenersForEvent","i","len","filter","value","Observable","off","trigger","Collection","_objects","add","apply","_onObjectAdded","renderOnAddRemove","requestRenderAll","insertAt","object","index","nonSplicing","objects","splice","remove","somethingRemoved","_onObjectRemoved","forEachObject","callback","context","getObjects","type","concat","item","isEmpty","size","contains","complexity","reduce","memo","current","CommonMethods","_setOptions","set","_initGradient","filler","property","colorStops","Gradient","_initPattern","source","Pattern","_initClipping","clipTo","functionBody","getFunctionBody","Function","_setObject","obj","_set","key","get","toggle","global","sqrt","Math","atan2","pow","abs","PiBy180","PI","PiBy2","cos","angle","angleSlice","sin","sign","removeFromArray","idx","getRandomInt","min","max","floor","random","degreesToRadians","degrees","radiansToDegrees","radians","rotatePoint","point","origin","subtractEquals","v","rotateVector","Point","x","y","addEquals","vector","rx","ry","transformPoint","p","t","ignoreOffset","makeBoundingBoxFromPoints","points","xPoints","minX","maxX","yPoints","minY","maxY","left","top","invertTransform","a","r","toFixed","number","fractionDigits","parseFloat","Number","parseUnit","fontSize","unit","exec","Text","DEFAULT_SVG_FONT_SIZE","falseFunction","getKlass","namespace","string","camelize","charAt","toUpperCase","slice","resolveNamespace","getSvgAttributes","attributes","parts","split","loadImage","url","crossOrigin","img","createImage","onLoadCallback","onload","onerror","src","substring","loadImageInDom","div","createElement","style","position","appendChild","querySelector","parentNode","removeChild","enlivenObjects","reviver","onLoaded","numLoadedObjects","numTotalObjects","enlivenedObjects","forEach","klass","fromObject","error","enlivenPatterns","patterns","numLoadedPatterns","numPatterns","enlivenedPatterns","pattern","groupSVGElements","elements","path","centerPoint","Group","sourcePath","populateWithProperties","destination","properties","prototype","toString","drawDashedLine","x2","y2","da","dx","dy","rot","dc","di","draw","save","moveTo","rotate","restore","createCanvasElement","copyCanvasElement","newCanvas","toDataURL","canvasEl","format","quality","clipContext","receiver","beginPath","clip","multiplyTransformMatrices","b","is2x2","qrDecompose","denom","scaleX","scaleY","skewX","skewY","translateX","translateY","customTransformMatrix","skewMatrixX","tan","scaleMatrix","resetObjectTransform","target","flipX","flipY","saveObjectTransform","fn","String","match","isTransparent","tolerance","temp","_isTransparent","imageData","getImageData","l","data","parsePreserveAspectRatioAttribute","attribute","align","meetOrSlice","alignX","alignY","aspectRatioAttrs","pop","clearFabricFontCache","fontFamily","toLowerCase","limitDimsByArea","ar","maximumArea","roughWidth","perfLimitSizeY","capValue","findScaleToFit","findScaleToCover","_join","Array","join","arcToSegments","toX","toY","large","sweep","rotateX","argsString","th","sinTh","cosTh","fromX","fromY","px","py","rx2","ry2","py2","px2","pl","root","s","cx","cy","cx1","cy1","mTheta","calcVectorAngle","dtheta","segments","ceil","result","mDelta","mT","th3","segmentToBezier","th2","costh2","sinth2","costh3","sinth3","cp1X","cp1Y","cp2X","cp2Y","ux","uy","vx","vy","ta","tb","getBoundsOfCurve","x0","y0","x1","y1","x3","y3","c","t1","t2","b2ac","sqrtb2ac","tvalues","bounds","mt","j","jlen","drawArc","fx","fy","coords","tx","ty","segs","segsNorm","bezierCurveTo","getBoundsOfArc","bound","invoke","method","args","byProperty","find","value1","value2","k","condition","extend","deep","Element","hasOwnProperty","clone","replace","character","capitalize","firstLetterOnly","escapeXml","graphemeSplit","textstring","chr","graphemes","getWholeChar","str","charCodeAt","isNaN","next","prev","emptyFunction","IS_DONTENUM_BUGGY","addMethods","parent","superclass","constructor","returnValue","valueOf","Subclass","callSuper","methodName","parentMethod","_this","superClassMethod","createClass","initialize","shift","subclasses","unknown","areHostMethods","methodNames","test","getElement","setElement","getUniqueId","uid","element","__uniqueID","createListener","wrappedHandler","createWrappedHandler","event","createDispatcher","handlers","handlersForEvent","addListener","removeListener","shouldUseAddListenerRemoveListener","documentElement","shouldUseAttachEventDetachEvent","listeners","getPointer","srcElement","scroll","getScrollLeftTop","pointerX","pointerY","addEventListener","removeEventListener","listener","attachEvent","detachEvent","existingHandler","clientX","clientY","_getPointer","pageProp","clientProp","pointer","touchProp","eventTouchProp","setStyle","styles","elementStyle","cssText","setOpacity","normalizedProperty","styleFloat","parseEl","supportsOpacity","opacity","supportsFilters","reOpacity","es","currentStyle","hasLayout","zoom","_slice","getById","getElementById","sliceCanConvertNodelists","getElementStyle","toArray","arrayLike","childNodes","err","makeElement","tagName","el","className","htmlFor","setAttribute","addClass","wrapElement","wrapper","replaceChild","docElement","body","scrollLeft","scrollTop","host","nodeType","getElementOffset","docElem","scrollLeftTop","doc","ownerDocument","box","offset","offsetAttributes","borderLeftWidth","borderTopWidth","paddingLeft","paddingTop","attr","parseInt","getBoundingClientRect","clientLeft","clientTop","getNodeCanvas","impl","_canvas","_image","cleanUpJsdomNode","_currentSrc","_attributes","_classList","arr","getComputedStyle","undefined","selectProp","makeElementUnselectable","onselectstart","unselectable","makeElementSelectable","getScript","headEl","getElementsByTagName","scriptEl","loading","onreadystatechange","readyState","addParamToUrl","param","emptyFn","request","onComplete","xhr","XMLHttpRequest","parameters","open","setRequestHeader","send","warn","noop","animate","requestAnimFrame","timestamp","time","start","Date","duration","finish","onChange","abort","easing","d","startValue","endValue","byValue","onStart","tick","ticktime","currentTime","timePerc","valuePerc","_requestAnimFrame","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","setTimeout","_cancelAnimFrame","cancelAnimationFrame","clearTimeout","cancelAnimFrame","calculateColor","begin","end","pos","color","animateColor","fromColor","toColor","startColor","Color","getSource","endColor","posValue","colorEasing","normalize","asin","elastic","opts","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInElastic","easeOutElastic","easeInOutElastic","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","easeInOutBounce","ease","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","svgValidTagNames","svgViewBoxElements","svgInvalidAncestors","svgValidParents","attributesMap","display","visibility","transform","colorAttributes","stroke","normalizeAttr","normalizeValue","parentAttributes","parsed","isArray","transformMatrix","parseTransformAttribute","visible","fillIndex","strokeIndex","getSvgRegex","RegExp","_setStrokeFillOpacity","setAlpha","getAlpha","toRgba","_getMultipleNodes","nodeNames","nodeName","nodeList","nodeArray","parseStyleString","oStyle","chunk","pair","trim","parseStyleObject","getGlobalStylesForElement","svgUid","rule","cssRules","elementMatchesRule","selectors","firstMatching","parentMatching","selectorMatches","doesSomeParentMatch","selector","matcher","classNames","getAttribute","elementById","node","nodelist","parseUseDirectives","attrs","xlink","substr","el2","cloneNode","currentTrans","oldLength","applyViewboxTransform","el3","nodeValue","firstChild","removeAttribute","svgValidTagNamesRegEx","svgViewBoxElementsRegEx","svgInvalidAncestorsRegEx","svgValidParentsRegEx","gradientDefs","clipPaths","rotateMatrix","matrix","multiplierX","multiplierY","skewMatrix","translateMatrix","commaWsp","transforms","transformList","reTransformList","reTransform","attributeValue","matrices","m","operation","combinedMatrix","reViewBoxAttrValue","viewBoxWidth","viewBoxHeight","viewBoxAttr","widthAttr","heightAttr","preserveAspectRatio","missingViewBox","missingDimAttr","toBeParsed","parsedDim","widthDiff","heightDiff","viewboxTransform","hasAncestorWithNodeName","recursivelyParseGradientsXlink","gradient","gradientsAttrs","xlinkAttr","xLink","referencedGradient","hasAttribute","children","referenceClone","parseSVGDocument","parsingOptions","__uid","descendants","selectNodes","getGradientDefs","getCSSRules","parseElements","instances","reFontDeclaration","parseFontDeclaration","fontStyle","fontWeight","lineHeight","tagArray","elList","parseAttributes","parentFontSize","ownAttributes","parseStyleAttribute","normalizedAttr","normalizedValue","normalizedStyle","font","mergedAttrs","ElementsParser","parse","parsePointsAttribute","parsedPoints","rules","allRules","styleContents","textContent","text","ruleObj","declaration","propertyValuePairs","_rule","loadSVGFromURL","xml","responseXML","ActiveXObject","responseText","async","loadXML","results","_options","allElements","loadSVGFromString","parser","parseFromString","regexUrl","proto","numElements","createObjects","createObject","findTag","fromElement","createCallback","checkIfDone","resolveGradient","Image","_originalElement","_removeTransformMatrix","resolveClipPath","extractPropertyDefinition","storage","lastIndex","gradientDef","createClipPathCallback","container","_newObj","fillRule","clipRule","objTransformInv","gTransform","clipPath","calcTransformMatrix","setPositionByOrigin","that","scalarAdd","scalar","scalarAddEquals","subtract","scalarSubtract","scalarSubtractEquals","multiply","multiplyEquals","divide","divideEquals","eq","lt","lte","gt","gte","lerp","distanceFrom","midPointFrom","setXY","setX","setY","setFromPoint","swap","Intersection","status","appendPoint","appendPoints","intersectLineLine","a1","a2","b1","b2","uaT","ubT","uB","ua","ub","intersectLinePolygon","inter","intersectPolygonPolygon","points1","points2","intersectPolygonRectangle","r1","r2","topRight","bottomLeft","inter1","inter2","inter3","inter4","_tryParsingColor","setSource","hue2rgb","q","colorNameMap","sourceFromHex","sourceFromRgb","sourceFromHsl","_rgbToHsl","g","h","round","_source","toRgb","toHsl","hsl","toHsla","toHex","toHexa","alpha","toGrayscale","average","currentAlpha","toBlackWhite","threshold","overlayWith","otherColor","otherAlpha","otherSource","reRGBa","reHSLa","reHex","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgrey","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","grey","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgrey","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","fromRgb","fromSource","fromRgba","fromHsl","fromHsla","fromHex","isShortNotation","isRGBa","oColor","getColorStop","colorAlpha","keyValuePairs","getLinearCoords","getRadialCoords","_convertPercentUnitsToValues","gradientUnits","propValue","addFactor","multFactor","ellipseMatrix","scaleFactor","offsetX","offsetY","gradientTransform","addColorStop","toObject","propertiesToInclude","toSVG","markup","commonAttributes","needsSwap","sort","pathOffset","reverse","minRadius","maxRadius","percentageShift","colorStop","toLive","createLinearGradient","createRadialGradient","instance","colorStopEls","forObject","repeat","patternTransform","setOptions","NUM_FRACTION_DIGITS","patternSource","patternWidth","patternHeight","patternOffsetX","patternOffsetY","patternImgSrc","complete","naturalWidth","naturalHeight","createPattern","Shadow","blur","affectStroke","includeDefaultValues","_parseShadow","shadow","shadowStr","offsetsAndBlur","reOffsetsAndBlur","fBoxX","fBoxY","BLUR_BOX","StaticCanvas","CANVAS_INIT_ERROR","renderAndResetBound","renderAndReset","bind","requestRenderAllBound","_initStatic","backgroundColor","backgroundImage","overlayColor","overlayImage","stateful","controlsAboveOverlay","allowTouchScrolling","imageSmoothingEnabled","viewportTransform","backgroundVpt","overlayVpt","onBeforeScaleRotate","enableRetinaScaling","vptCoords","skipOffscreen","cb","_createLowerCanvas","_initOptions","_setImageSmoothing","interactive","_initRetinaScaling","setOverlayImage","setBackgroundImage","setBackgroundColor","setOverlayColor","calcOffset","_isRetinaScaling","getRetinaScaling","lowerCanvasEl","contextContainer","_offset","image","__setBgOverlayImage","__setBgOverlayColor","webkitImageSmoothingEnabled","mozImageSmoothingEnabled","msImageSmoothingEnabled","oImageSmoothingEnabled","_createCanvasElement","_applyCanvasStyle","getWidth","getHeight","setWidth","setDimensions","setHeight","dimensions","cssValue","cssOnly","_setBackstoreDimension","hasLostContext","backstoreOnly","_setCssDimension","_isCurrentlyDrawing","freeDrawingBrush","_setBrushStyles","upperCanvasEl","cacheCanvasEl","wrapperEl","getZoom","setViewportTransform","vpt","activeObject","_activeObject","ignoreVpt","skipAbsolute","group","setCoords","calcViewportBoundaries","zoomToPoint","before","after","setZoom","absolutePan","relativePan","setupState","clearContext","clearRect","clear","_hasITextHandlers","_mouseUpITextHandler","_iTextInstances","renderAll","canvasToDrawOn","renderCanvas","isRendering","iVpt","tl","br","tr","bl","cancelRequestedRender","_renderBackground","_renderObjects","drawControls","shouldCache","_transformDone","renderCache","forClipping","drawClipPathOnCanvas","_renderOverlay","globalCompositeOperation","zoomX","zoomY","_cacheCanvas","cacheTranslationX","cacheTranslationY","render","_renderBackgroundOrOverlay","fillStyle","fillRect","getCenter","centerObjectH","_centerObject","getCenterPoint","centerObjectV","centerObject","center","viewportCenterObject","vpCenter","getVpCenter","viewportCenterObjectH","viewportCenterObjectV","toDatalessJSON","toDatalessObject","_toObjectMethod","_toObjects","__serializeBgOverlay","excludeFromExport","_toObject","originalValue","bgImage","overlay","background","svgViewportTransformation","_setSVGPreamble","_setSVGHeader","clipPathId","_setSVGBgOverlayColor","_setSVGBgOverlayImage","_setSVGObjects","suppressPreamble","encoding","viewBox","createSVGFontFacesMarkup","createSVGRefElementsMarkup","createSVGClipPathMarkup","toClipPathSVG","row","rowIndex","_char","charIndex","fontList","_setSVGObject","finalWidth","finalHeight","sendToBack","objs","activeSelection","unshift","bringToFront","sendBackwards","intersecting","newIdx","objsMoved","_findNewLowerIndex","isIntersecting","intersectsWithObject","isContainedWithinObject","bringForward","_findNewUpperIndex","dispose","DataURLExporter","EMPTY_JSON","supports","setLineDash","toJSON","createPNGStream","createJPEGStream","BaseBrush","strokeLineCap","strokeLineJoin","strokeMiterLimit","strokeDashArray","setShadow","contextTop","strokeStyle","lineWidth","lineCap","miterLimit","lineJoin","_saveAndTransform","_setShadow","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY","_resetShadow","PencilBrush","_points","_drawSegment","p1","p2","midPoint","quadraticCurveTo","onMouseDown","_prepareForDrawing","_captureDrawingPath","_render","onMouseMove","needsFullRender","oldEnd","onMouseUp","_finalizeAndAddPath","_reset","_addPoint","pointerPoint","lineTo","convertPointsToSVGPath","multSignX","multSignY","manyPoints","createPath","pathData","Path","strokeWidth","translateToGivenOrigin","originX","originY","closePath","CircleBrush","drawDot","addPoint","arc","radius","originalRenderOnAddRemove","circles","circle","Circle","circleRadius","circleColor","SprayBrush","density","dotWidth","dotWidthVariance","randomOpacity","optimizeOverlapping","sprayChunks","addSprayChunk","sprayChunkPoints","rects","ilen","sprayChunk","rect","Rect","_getOptimizedRects","uniqueRects","uniqueRectsArray","globalAlpha","PatternBrush","getPatternSrc","dotDistance","patternCanvas","patternCtx","getPatternSrcFunction","getPattern","topLeft","_getLeftTopCoords","supportLineDash","STROKE_OFFSET","_initInteractive","_createCacheCanvas","uniScaleTransform","uniScaleKey","centeredScaling","centeredRotation","centeredKey","altActionKey","selection","selectionKey","altSelectionKey","selectionColor","selectionDashArray","selectionBorderColor","selectionLineWidth","selectionFullyContained","hoverCursor","moveCursor","defaultCursor","freeDrawingCursor","rotationCursor","notAllowedCursor","containerClass","perPixelTargetFind","targetFindTolerance","skipTargetFind","isDrawingMode","preserveObjectStacking","snapAngle","snapThreshold","stopContextMenu","fireRightClick","fireMiddleClick","_currentTransform","_groupSelector","_initWrapperElement","_createUpperCanvas","_initEventListeners","_chooseObjectsToRender","objsToRender","activeGroupObjects","activeObjects","getActiveObjects","contextTopDirty","renderTopLayer","_drawSelection","renderTop","_resetCurrentTransform","original","_shouldCenterTransform","mouseXSign","mouseYSign","containsPoint","xy","ignoreZoom","_normalizePointer","_findTargetCorner","invertedM","vptPointer","restorePointerVpt","isTargetTransparent","normalizedPointer","targetRelativeX","targetRelativeY","_cacheContext","contextCache","originalColor","selectionBackgroundColor","_renderControls","hasBorders","transparentCorners","_isSelectionKeyPressed","selectionKeyPressed","_shouldClearSelection","evented","selectable","centerTransform","action","altKey","_getOriginFromCorner","corner","_getActionFromCorner","alreadySelected","_setupCurrentTransform","ex","ey","lastX","lastY","theta","shiftKey","_beforeTransform","_translateObject","newLeft","newTop","moveX","moveY","_changeSkewTransformOrigin","mouseMove","by","origins","0","skew","originA","originB","flipSign","skewSign","_skewObject","skewed","lockSkewingX","lockSkewingY","actualMouseByOrigin","constraintPosition","actualMouseByCenter","toLocalPoint","lastMouseByCenter","dim","_getTransformedDimensions","translateToOriginPoint","_setObjectSkew","localMouse","_dim","newValue","newDim","dimNoSkew","otherBy","_otherBy","_by","newDimMouse","atan","_scaleObject","lockScalingX","lockScalingY","lockScalingFlip","scaled","_setLocalMouse","_setObjectScale","forbidScalingX","forbidScalingY","changeX","changeY","_scaleObjectEqually","newScaleX","newScaleY","_flipObject","dist","lastDist","signX","signY","padding","_rotateObject","lockRotation","lastAngle","curAngle","hasRotated","rightAngleLocked","leftAngleLocked","setCursor","cursor","groupSelector","aleft","atop","_setLineDash","strokeRect","findTarget","skipGroup","activeTarget","activeTargetSubs","aObjects","targets","_searchPossibleTargets","_checkTarget","globalPointer","isEditing","subTarget","objToCheck","pointerToUse","subTargetCheck","_absolutePointer","_pointer","cssScale","boundsWidth","boundsHeight","bottom","right","lowerCanvasClass","_copyCanvasStyle","fromEl","toEl","getSelectionContext","getSelectionElement","getActiveObject","active","_discardActiveObject","_hoveredTarget","_fireSelectionEvents","oldObjects","somethingChanged","added","removed","opt","oldObject","selected","deselected","updated","setActiveObject","currentActives","_setActiveObject","onSelect","onDeselect","discardActiveObject","removeListeners","originalProperties","_realizeGroupTransformOnObject","_unwindGroupTransformOnObject","layoutProps","originalValues","realizeTransform","clearContextTop","_setCursorFromEvent","cursorOffset","mr","mb","ml","RIGHT_CLICK","MIDDLE_CLICK","LEFT_CLICK","addEventOptions","passive","checkClick","which","button","cursorMap","_bindEvents","addOrRemove","functor","eventjsFunctor","_onResize","_onMouseDown","_onMouseMove","_onMouseOut","_onMouseEnter","_onMouseWheel","_onContextMenu","_onDoubleClick","_onDragOver","_onDragEnter","_onDragLeave","_onDrop","eventjs","_onGesture","_onDrag","_onOrientationChange","_onShake","_onLongPress","_onMouseUp","eventsBound","_simpleEventHandler","self","__onTransformGesture","__onDrag","__onMouseWheel","hiddenTextarea","focus","__onOrientationChange","__onShake","__onLongPress","preventDefault","_fireEnterLeaveEvents","stopPropagation","_cacheTransformEventData","_handleEvent","_resetTransformEventData","__onMouseDown","__onMouseUp","__onMouseMove","_shouldRender","shouldRender","isClick","_target","_onMouseUpInDrawingMode","_finalizeCurrentTransform","actionPerformed","_maybeGroupObjects","isMoving","__corner","eventType","subTargets","absolutePointer","_scaling","hasStateChanged","_addEventOptions","_fire","_onMouseDownInDrawingMode","_onMouseMoveInDrawingMode","_previousPointer","shouldGroup","_shouldGroup","_handleGrouping","saveState","touches","_transformObject","_fireOverOutEvents","fireSynteticInOutEvents","targetName","canvasEvtOut","evtOut","canvasEvtIn","evtIn","config","inOpt","outOpt","outFires","inFires","oldTarget","targetChanged","previousTarget","nextTarget","reset","_beforeScaleTransform","_performTransformAction","_onScale","_isUniscalePossible","currentAction","getCornerCursor","actionIsDisabled","_getRotatedCornerCursor","hasRotatingPoint","n","_updateActiveSelection","_createActiveSelection","currentActiveObjects","removeWithUpdate","addWithUpdate","_createGroup","isActiveLower","groupObjects","exitEditing","ActiveSelection","_groupSelectedObjects","aGroup","_collectObjects","currentObject","selectionX1Y1","selectionX2Y2","allowIntersect","intersectsWithRect","isContainedWithinRect","multiplier","toCanvasElement","cropping","scaledWidth","scaledHeight","originalWidth","originalHeight","newZoom","vp","originalInteractive","originalContext","newVp","loadFromDatalessJSON","json","loadFromJSON","serialized","JSON","_enlivenObjects","_setBgOverlay","loaded","cbIfLoaded","__setBgOverlay","enlivedObject","_toDataURL","_toDataURLWithMultiplier","toDataURLWithMultiplier","stringify","cloneWithoutData","backgroundImageOpacity","backgroundImageStretch","supportsLineDash","objectCaching","ALIASING_LIMIT","cornerSize","borderColor","borderDashArray","cornerColor","cornerStrokeColor","cornerStyle","cornerDashArray","strokeDashOffset","borderOpacityWhenMoving","borderScaleFactor","minScaleLimit","hasControls","rotatingPointOffset","lockMovementX","lockMovementY","lockUniScaling","statefullCache","noScaleCache","strokeUniform","dirty","paintFirst","stateProperties","cacheProperties","inverted","absolutePositioned","_cacheProperties","_updateCacheCanvas","_limitCacheSize","dims","limitedDims","capped","_getCacheCanvasDimensions","objectScale","getTotalObjectScaling","_getNonTransformedDimensions","drawingWidth","drawingHeight","minCacheSize","dimensionsChanged","cacheWidth","cacheHeight","zoomChanged","shouldRedraw","additionalWidth","additionalHeight","shouldResizeCanvas","canvasWidth","canvasHeight","sizeGrowing","sizeShrinking","setTransform","calcOwnMatrix","_removeDefaultValues","getObjectScaling","scaling","retina","getObjectOpacity","shouldConstrainValue","isChanged","groupNeedsUpdate","_constrainScale","isOnACache","setOnGroup","getViewportTransform","isNotVisible","isOnScreen","_setupCompositeOperation","drawSelectionBackground","_setOpacity","drawCacheOnCanvas","_removeCacheCanvas","drawObject","propertySet","isCacheDirty","needsItsOwnCache","ownCaching","willDrawShadow","drawClipPathOnCache","originalFill","originalStroke","_setClippingProperties","_setStrokeStyles","_setFillStyles","_drawClipPath","skipCanvas","_removeShadow","decl","lineDashOffset","dashArray","alternative","getLineDash","styleOverride","drawBorders","forActiveSelection","drawBordersInGroup","multX","multY","_applyPatternGradientTransform","_renderPaintInOrder","_renderStroke","_renderFill","_renderDashedStroke","_findCenterFromElement","_assignTransformMatrixProps","preserveAspectRatioOptions","cropX","cropY","offsetLeft","offsetTop","objectForm","_fromObject","cloneAsImage","utils","origParams","originalShadow","withoutTransform","withoutShadow","boundingRect","getBoundingRect","shadowOffset","originalCanvas","isType","setGradient","setPatternFill","setColor","shouldCenterOrigin","_setOriginToCenter","_resetOrigin","centerH","viewportCenterH","centerV","viewportCenterV","viewportCenter","getLocalPointer","pClicked","objectLeftTop","createAccessors","extraParam","enlivedProps","originXOffset","originYOffset","fromOriginX","fromOriginY","toOriginX","toOriginY","translateToCenterPoint","leftTop","getPointByOrigin","adjustPosition","to","offsetFrom","offsetTo","hypotFull","getScaledWidth","xFull","yFull","_originalOriginX","_originalOriginY","originPoint","getCoords","multiplyMatrices","oCoords","aCoords","ownMatrixCache","matrixCache","absolute","calculate","calcCoords","pointTL","pointBR","intersection","other","lines","_getImageLines","_findCrossPoints","_containsCenterOfCanvas","isPartiallyOnScreen","topline","rightline","bottomline","leftline","xi","iLine","xcount","lineKey","getScaledHeight","scaleToWidth","boundingRectFactor","scaleToHeight","_calcRotateMatrix","_calcTranslateMatrix","startMatrix","finalMatrix","w","cosP","sinP","cosPSinP","cosPMinusSinP","mtr","_setCornerCoords","transformMatrixKey","sep","prefix","cache","dimensionMatrix","_calcDimensionsTransformMatrix","flipping","dimX","dimY","noSkew","_finalizeDiemensions","bbox","_calculateCurrentDimensions","getSvgColorString","getSvgStyles","skipShadow","getSvgFilter","getSvgSpanStyles","useWhiteSpace","term","textDecoration","getSvgTextDecoration","deltaY","overline","underline","linethrough","getSvgCommons","getSvgTransform","full","additionalTransform","svgTransform","getSvgTransformMatrix","_setSVGBg","textBgRects","_getFillAttributes","_createBaseSVGMarkup","_toSVG","_createBaseClipPathSVGMarkup","objectMarkup","commonPieces","clipPathMarkup","noStyle","withShadow","styleInfo","shadowInfo","vectorEffect","absoluteClipPath","addPaintOrder","originalSet","saveProps","props","tmpObj","_isEqual","origValue","currentValue","firstPass","dashedPropertySet","_controlsVisibility","isControlVisible","newTheta","cornerHypotenuse","cosHalfOffset","sinHalfOffset","wh","drawRotatingPoint","rotateHeight","scaleOffset","_drawControl","control","controlName","_getControlsVisibility","setControlVisible","setControlsVisibility","FX_DURATION","fxCenterObjectH","callbacks","empty","fxCenterObjectV","fxRemove","skipCallbacks","propsToAnimate","_animate","propPair","from","valueProgress","timeProgress","coordProps","makeEdgeToOriginGetter","propertyNames","originValues","axis1","axis2","dimension","nearest","farthest","Line","_setWidthHeight","_getLeftToOriginX","_getTopToOriginY","calcLinePoints","origStrokeStyle","xMult","yMult","ATTRIBUTE_NAMES","parsedAttributes","_callback","pi","isValidRadius","startAngle","endAngle","setRadius","svgString","startX","startY","endX","endY","largeFlag","getRadiusX","getRadiusY","Triangle","widthBy2","heightBy2","piBy2","Ellipse","getRx","getRy","_initRxRy","isRounded","Polyline","calcDim","_calcDimensions","diffX","diffY","commonRender","Polygon","_toString","commandLengths","repeatedCommands","M","fromArray","_parsePath","_setPositionDimensions","_parseDimensions","_renderPathCommands","tempX","tempY","previous","subpathStartX","subpathStartY","controlX","controlY","_getOffsetTransform","digits","currentPath","coordsStr","coordsParsed","re","command","commandLength","repeatedCommand","klen","aX","aY","deltaX","pathUrl","useSetOnGroup","isAlreadyGrouped","_updateObjectsACoords","_calcBounds","_updateObjectsCoords","_updateObjectCoords","objectLeft","objectTop","_restoreObjectsState","_includeDefaultValues","objsToObject","originalDefaults","_obj","ownCache","_restoreObjectState","destroy","toActiveSelection","ungroupOnCanvas","setObjectsCoords","onlyWidthHeight","iLen","jLen","_getBounds","minXY","maxXY","enlivedClipPath","toGroup","newGroup","childrenOverride","srcFromAttribute","_lastScaleX","_lastScaleY","_filterScalingX","_filterScalingY","minimumScaleTrigger","cacheKey","filters","_initElement","_element","removeTexture","_initConfig","applyFilters","resizeFilter","applyResizeFilters","backend","filterBackend","evictCachesForKey","setCrossOrigin","getOriginalSize","_stroke","filterObj","getSrc","hasCrop","strokeSvg","imageMarkup","getSvgSrc","origFill","filtered","setSrc","minimumScale","elementToFilter","_filteredEl","sourceWidth","sourceHeight","isNeutralState","imgElement","_needsResize","elementToDraw","sW","sH","sX","sY","_resetWidthHeight","CSS_CANVAS","_initFilters","pAR","rWidth","rHeight","pWidth","pHeight","_object","resizeFilters","fromURL","imgOptions","_getAngleValueForStraighten","straighten","fxStraighten","straightenObject","fxStraightenObject","testPrecision","precision","fragmentSource","fragmentShader","createShader","FRAGMENT_SHADER","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","setupGLContext","captureGPUInfo","isSupported","getParameter","MAX_TEXTURE_SIZE","precisions","webGlPrecision","resources","createWebGLCanvas","aPosition","Float32Array","chooseFastestCopyGLTo2DMethod","canUseImageData","canMeasurePerf","performance","canUseArrayBuffer","ArrayBuffer","canUseUint8Clamped","startTime","drawImageTime","putImageDataTime","testContext","now","copyGLTo2D","glOptions","premultipliedAlpha","depth","stencil","antialias","clearColor","cachedTexture","getCachedTexture","sourceTexture","createTexture","targetTexture","originalTexture","passes","webgl","programCache","pass","tempFbo","createFramebuffer","bindFramebuffer","FRAMEBUFFER","applyTo","bindTexture","TEXTURE_2D","deleteTexture","deleteFramebuffer","clearWebGLCaches","textureCache","textureImageSource","texture","texParameteri","TEXTURE_MAG_FILTER","NEAREST","TEXTURE_MIN_FILTER","TEXTURE_WRAP_S","CLAMP_TO_EDGE","TEXTURE_WRAP_T","texImage2D","uniqueId","gpuInfo","renderer","vendor","ext","getExtension","UNMASKED_RENDERER_WEBGL","UNMASKED_VENDOR_WEBGL","sourceElement","originalImageData","originalEl","BaseFilter","vertexSource","createProgram","vertexShader","VERTEX_SHADER","getShaderInfoLog","program","attachShader","linkProgram","getProgramParameter","LINK_STATUS","getProgramInfoLog","attributeLocations","getAttributeLocations","uniformLocations","getUniformLocations","uStepW","getUniformLocation","uStepH","getAttribLocation","sendAttributeData","aPositionData","attributeLocation","buffer","createBuffer","bindBuffer","ARRAY_BUFFER","enableVertexAttribArray","vertexAttribPointer","FLOAT","bufferData","STATIC_DRAW","_setupFrameBuffer","framebufferTexture2D","COLOR_ATTACHMENT0","_swapTextures","main","mainParameter","_class","applyToWebGL","applyTo2d","retrieveShader","shader","useProgram","uniform1f","sendUniformData","viewport","drawArrays","TRIANGLE_STRIP","bindAdditionalTexture","textureUnit","activeTexture","TEXTURE0","unbindAdditionalTexture","getMainParameter","setMainParameter","createHelpLayer","helpLayer","mainP","ColorMatrix","colorsOnly","uColorMatrix","uConstants","constants","uniformMatrix4fv","uniform4fv","Brightness","brightness","uBrightness","Convolute","opaque","Convolute_3_1","Convolute_3_0","Convolute_5_1","Convolute_5_0","Convolute_7_1","Convolute_7_0","Convolute_9_1","Convolute_9_0","dstOff","scx","scy","srcOff","wt","weights","side","halfSide","sw","sh","output","createImageData","dst","alphaFac","uMatrix","uOpaque","uHalfSize","uSize","uniform1fv","Grayscale","lightness","luminosity","mode","uMode","uniform1i","Invert","invert","uInvert","Noise","noise","rand","uNoise","uSeed","Pixelate","blocksize","_i","_j","_iLen","_jLen","uBlocksize","RemoveColor","distance","useAlpha","lowC","highC","uLow","uHigh","Brownie","Vintage","Kodachrome","Technicolor","Polaroid","Sepia","BlackWhite","BlendColor","screen","diff","lighten","darken","exclusion","tint","buildSource","tg","alpha1","uColor","BlendImage","mask","TEXTURE1","calculateMatrix","canvas1","blendData","blendImage","uTransformMatrix","uImage","uniformMatrix3fv","Resize","resizeType","lanczosLobes","uDelta","uTaps","uniform2fv","horizontal","taps","filterWindow","getFilterWindow","generateShader","tempScale","getTaps","lobeFunction","lanczosCreate","offsets","fragmentSourceTOP","dW","dH","lobes","xx","rcpScaleX","rcpScaleY","newData","oW","oH","sliceByTwo","hermiteFastResize","bilinearFiltering","lanczosResize","tmpCanvas","mult","doneW","doneH","stepW","stepH","dX","dY","process","u","weight","fX","fY","ratioX","icenter","ratioY","range2X","cacheLanc","range2Y","lanczos","rcpRatioX","rcpRatioY","srcData","destData","destImg","xDiff","yDiff","chnl","origPix","w4","pixels","destImage","destPixels","ratioW","ratioH","ratioWHalf","ratioHHalf","img2","data2","weightsAlpha","gxR","gxG","gxB","gxA","centerY","yy","centerX","w0","Contrast","contrast","contrastF","uContrast","Saturation","saturation","adjust","uSaturation","Blur","aspectRatio","simpleBlur","canvas2","blurLayer1","blurLayer2","percent","ctx1","ctx2","nSamples","newImageData","delta","chooseRightDelta","blurScale","Gamma","gamma","rInv","gInv","bInv","rVals","gVals","bVals","uGamma","uniform3fv","Composed","subFilters","some","HueRotation","rotation","rad","aThird","aThirdSqtSin","OneMinusCos","_dimensionAffectingProps","_reNewline","_reSpacesAndTabs","_reSpaceAndTab","_reWords","textAlign","superscript","baseline","subscript","textBackgroundColor","_fontSizeFraction","_fontSizeMult","charSpacing","_measuringContext","_styleProperties","__charBounds","CACHE_FONT_SIZE","MIN_TEXT_WIDTH","__skipDimension","initDimensions","getMeasuringContext","_splitText","newLines","_splitTextIntoLines","textLines","_textLines","graphemeLines","_unwrappedTextLines","_unwrappedLines","_text","graphemeText","_clearCache","calcTextWidth","cursorWidth","enlargeSpaces","calcTextHeight","diffSpace","currentLineWidth","numberOfSpaces","accumulatedSpace","line","charBound","spaces","isEndOfWrapping","getLineWidth","kernedWidth","lineIndex","_setTextStyles","_renderTextLinesBackground","_renderTextDecoration","_renderText","_renderTextStroke","_renderTextFill","charStyle","forMeasuring","textBaseline","_getFontDeclaration","maxWidth","_renderTextLine","_renderChars","styleHas","heightOfLine","lineLeftOffset","lastColor","charBox","currentColor","lineTopOffset","leftOffset","_getLeftOffset","topOffset","_getTopOffset","boxStart","boxWidth","getHeightOfLine","_getLineLeftOffset","getValueOfPropertyAt","getFontCache","cacheProp","_applyCharStyles","styleDeclaration","_measureChar","previousChar","prevCharStyle","coupleWidth","previousWidth","fontCache","fontDeclaration","previousFontDeclaration","couple","stylesAreEqual","fontMultiplier","measureText","getHeightOfChar","char","measureLine","lineInfo","_measureLine","_getWidthOfCharSpacing","grapheme","prevGrapheme","graphemeInfo","numOfSpaces","lineBounds","_getGraphemeBox","skipLeft","getCompleteStyleDeclaration","prevStyle","info","previousBox","__lineHeights","maxHeight","_renderTextCommon","lineHeights","isEmptyStyles","actualStyle","nextStyle","timeToRender","isJustify","charsToRender","shortCut","_renderChar","_hasStyleChanged","_getStyleDeclaration","fullDecl","shouldFill","shouldStroke","fillText","strokeText","setSuperscript","_setScript","setSubscript","schema","loc","get2DCursorLocation","setSelectionStyles","thisStyle","_hasStyleChangedForSvg","__lineWidths","_shouldClearDimensionCache","shouldClear","_forceClearCache","_size","_dy","lastDecoration","currentDecoration","currentFill","lastFill","styleObject","family","fontIsGeneric","genericFonts","newLine","newText","additionalProperties","needsDims","_key","parsedAnchor","textAnchor","originalStrokeWidth","textHeightScaleFactor","lineHeightDiff","scaledDiff","textHeight","offX","p3","cleanStyle","letterCount","stylePropertyValue","stylesCount","allStyleObjectPropertiesMatch","graphemeCount","stylePropertyHasBeenSet","removeStyle","lineNum","charNum","_extendStyles","_getLineStyle","_setLineStyle","_setStyleDeclaration","selectionStart","skipWrapping","getSelectionStyles","startIndex","endIndex","selectionEnd","getStyleAtPosition","lineStyle","_deleteStyleDeclaration","_deleteLineStyle","parseDecoration","IText","editable","editingBorderColor","cursorColor","cursorDelay","cursorDuration","caching","_reSpace","_currentCursorOpacity","_selectionDirection","_abortCursorAnimation","__widthOfSpace","inCompositionMode","initBehavior","setSelectionStart","_updateAndFire","setSelectionEnd","_fireSelectionChanged","_updateTextarea","initDelayedCursor","cursorOffsetCache","renderCursorOrSelection","skipRestore","_clearTextArea","boundaries","_getCursorBoundaries","renderCursor","renderSelection","_getCursorBoundariesOffsets","cursorPosition","cursorLocation","charHeight","__isMousedown","startLine","endLine","startChar","endChar","lineOffset","realLineHeight","boxEnd","compositionColor","getCurrentCharFontSize","cp","_getCurrentCharIndex","getCurrentCharColor","initAddedHandler","initRemovedHandler","initCursorSelectionHandlers","initDoubleClickSimulation","mouseMoveHandler","_initCanvasHandlers","_removeCanvasHandlers","_tick","_currentTickState","_animateCursor","targetOpacity","completeMethod","tickState","isAborted","_onTickComplete","_cursorTimeout1","_currentTickCompleteState","restart","delay","abortCursorAnimation","_cursorTimeout2","selectAll","getSelectedText","findWordBoundaryLeft","startFrom","findWordBoundaryRight","findLineBoundaryLeft","findLineBoundaryRight","searchWordBoundary","direction","reNonWord","selectWord","newSelectionStart","newSelectionEnd","selectLine","enterEditing","exitEditingOnOthers","initHiddenTextarea","_saveEditingProps","_setEditingProps","_textBeforeEdit","initMouseMoveHandler","getSelectionStartFromPointer","currentStart","currentEnd","__selectionStartOnMouseDown","restartCursorIfNeeded","fromStringToGraphemeSelection","smallerTextStart","graphemeStart","smallerTextEnd","graphemeEnd","fromGraphemeToStringSelection","newSelection","updateTextareaPosition","updateFromTextArea","_calcTextareaPosition","desiredPostion","compositionStart","upperCanvas","upperCanvasWidth","upperCanvasHeight","clientWidth","clientHeight","_savedProps","_restoreEditingProps","isTextChanged","_removeExtraneousStyles","removeStyleFromTo","styleObj","cursorStart","cursorEnd","lineStart","charStart","lineEnd","charEnd","shiftLineStyles","numericChar","clonedStyles","numericLine","insertNewlineStyleObject","qty","copiedStyle","currentCharStyle","newLineStyles","somethingAdded","numIndex","insertCharStyleObject","quantity","currentLineStyles","currentLineStylesCloned","numericIndex","newStyle","insertNewStyleBlock","insertedText","cursorLoc","addedLines","linesLenght","setSelectionStartEndWithShift","setSelectionInBoundaries","__lastClickTime","__lastLastClickTime","__lastPointer","__newClickTime","newPointer","isTripleClick","_stopEvent","__lastIsEditing","__lastSelected","initMousedownHandler","initMouseupHandler","initClicks","_mouseDownHandler","setCursorByClick","_mouseDownHandlerBefore","mouseUpHandler","currentActive","mouseOffset","prevWidth","_getNewSelectionStartFromOffset","distanceBtwLastCharAndCursor","distanceBtwNextCharAndCursor","onKeyDown","onKeyUp","onInput","copy","paste","onCompositionStart","onCompositionUpdate","onCompositionEnd","_clickHandlerInitialized","onClick","keysMap","9","27","33","34","35","36","37","38","39","40","ctrlKeysMapUp","67","88","ctrlKeysMapDown","65","keyCode","ctrlKey","metaKey","stopImmediatePropagation","_copyDone","fromPaste","removedText","nextText","charCount","nextCharCount","charDiff","textareaSelection","backDelete","copiedText","copiedTextStyle","compositionEnd","_getClipboardData","clipboardData","_getWidthBeforeCursor","widthBeforeCursor","getDownCursorOffset","isRight","selectionProp","_getSelectionForOffset","indexOnOtherLine","_getIndexOnLine","textAfterCursor","getUpCursorOffset","textBeforeCursor","charWidth","foundMatch","widthOfCharsOnLine","indexOnLine","leftEdge","rightEdge","offsetFromLeftEdge","offsetFromRightEdge","moveCursorDown","_moveCursorUpOrDown","moveCursorUp","moveCursorWithShift","moveCursorWithoutShift","moveCursorLeft","_moveCursorLeftOrRight","_move","_moveLeft","_moveRight","moveCursorLeftWithoutShift","change","moveCursorLeftWithShift","moveCursorRight","actionName","moveCursorRightWithShift","moveCursorRightWithoutShift","changed","removeChars","insertChars","multipleSpacesRegex","_getSVGLeftTopOffsets","textAndBg","_getSVGTextAndBg","textTop","textLeft","internalMarkup","_wrapSVGTextAndBg","lineTop","noShadow","textSpans","textTopOffset","textLeftOffset","_setSVGTextLineBg","_setSVGTextLineText","_createTextCharSpan","styleDecl","shouldUseWhitespace","styleProps","fillStyles","dySpan","_pushTextBgRect","fillColor","_getSVGLineTopOffset","lastHeight","svgStyle","Textbox","minWidth","dynamicMinWidth","__cachedLines","_wordJoiners","splitByGrapheme","_styleMap","_generateStyleMap","textInfo","realLineCount","realLineCharCount","isWrapping","nextOffset","nextLineIndex","shouldLimit","mapNextLine","_wrapText","desiredWidth","wrapped","_wrapLine","_measureWord","word","charOffset","_line","reservedSpace","words","infix","wordWidth","infixWidth","largestWordWidth","lineJustStarted","additionalSpace","getMinWidth","setObjectScaleOverridden","tw","_vm","_h","$createElement","_c","_self","template","tag","staticRenderFns","STORE_KEY","SET_PARAMS_SEARCH","SET_QUESTION_WORK","SET_PRAM_EXAM","SET_BOOKID","SET_QUESTION","SET_SLIDES_MAIN","SET_SLIDES_IMG_MAIN","SET_SLIDE_CURR","SET_INDEX_SLIDE_VISIBLE","SET_CLASSES","SET_LINK_VIDEO_AUDIO","SET_DATA_MEDIA_VIEWER","SET_SLIDESHOW_VISIBLE","SET_PREVIEW_MEDIA_VISIBLE_INDEX","SET_PARAM_FILTER_MEDIA_LIST","SET_SCALE_SLIDE","SET_TYPE_QUESTION","SET_VISIBLE_MODAL_FILE_UPLOADED","SET_KEY_SIDEBAR_VISIBLE","KEY_TXT","KEY_SHAPE","KEY_PICTURE","KEY_VIDEO","KEY_AUDIO","KEY_SLIDE","MEDIA_TYPE_IMG","MEDIA_TYPE_VIDEO","MEDIA_TYPE_AUDIO","MEDIA_TYPE_PP","BASE_64_DEFINE","SET_EXAM_INFO","SET_QUESTION_LIST","SET_QUESTION_DETAIL","SET_INDEX_QUESTION_WORKING","SET_CLASSES_EXAM","SET_SUBJECTS_EXAM","SET_PARAMS_GET_DATA_QUESTION_SAMPLE","SET_BOOKID_FILTER_QUESTION_SAMPLE","SET_BOOKINDEXID_FILTER_QUESTION_SAMPLE","SET_QUESTIONS_SAMPLE","SET_QUESTION_CHOOSED","SET_QUESTION_ID_CHOOSED","SET_CHAPTER_ID_QUESTIONS","SET_PARAMS_SEARCH_QUESTION_CHAPTER","CONTENT_EDITOR_DEFAULT","SET_PARAMS_SEARCH_QUESTION_EXAM","apiCreateExam","params","apiEndpoint","HttpService","post","then","res","catch","apiGetListClassOfTeacher","apiGetListSubjectOfTeacher","apiCreateQuestion","errors","apiUpdateExam","apiGetDetailQuestion","apiDetailExam","examId","apiUpdateQuestion","apiGetListChooseQuestion","apiGetListQuestionByBookIndexId","keyword","apiQuestionDelete","apiExamDelete","apiGetListQuestionByChapterId","apiGetQuestionSampleByChapter","getListDocumentPand","commit","acSetParamSearch","types","setBookId","setTypeQuestionCompose","workQuestion","setParamExam","setQuestion","acSetSlidesMain","acSetSlidesImgMain","acSetObjActiSlide","acSetSlideCurr","acSetSlideVisibleIndex","acSetClasses","acSetLinkAudioVieoViewer","acSetMediaPreview","acSetPreviewModalVisibleIndex","acSetVisibleSlideshow","acSetParamSearchMediaDetail","acSetScaleSlide","acSetVisibleModalFileLoaded","acSetkeySidebarVisible","acSetExamPrepareInfo","acSetListQuestions","acSetQuestionDetail","acSetQuestionIndexWorking","acSetClassesExam","acSetSubjectsExam","acSetParamsGetQuestionsData","acSetBookIdFilterQuestions","acSetBookIndexIdFilterQuestions","acSetQuestionSample","acSetQuestionsChoosed","acSetQuestionsIdChoosed","acSetChapterIdQuestions","acSetParamsFilterQuestionChapter","acSetParamsFilterQuestionExam","paramSearch","state","classes","subjects","question_format","question","paramExam","bookId","questionIdSelect","typeQuestion","paramFilterQuestionsByExam","slidesMain","slidesMainImg","objActivitySlide","slideCurr","slideIndexVisible","mediaPreviewData","indexPreviewMedia","linkVideoAudio","isOpenSlideshow","paramsSearchMediaDetail","scaleSlide","isOpenModalFileUploaded","keySidebarActive","examInfo","questionList","questionDetail","indexQuestionWorking","classesExam","subjectsExam","paramsGetQuestionsSample","bookIdQuestions","bookIndexIdQuestions","questionsSample","questionsChoose","questionsIdChoose","chapterIdQuestion","paramFilterQuestionsByChapter","examTypeId","TYPE_RADIO","answers","guideContent","suggestion","answerDetail","level","isDeleted","layoutId","name","TYPE_CHECKBOX","TYPE_DOWN_ANSWER","classId","subjectId","pageIndex","pageSize","documentTypeId","scaleMax","scaleMin","idModalFileUploaded","examTimesToDo","idModalQuestionSample","chapterId","namespaced","actions","getters","mutations","staticClass","_v","_l","lessonPlanId","baseUrl","title","_s","$route","nameRouteExam","$event","gotoLessonPage","gotoExamPage","handleAddNew","directives","rawName","expression","$$selectedVal","val","_value","$set","multiple","domProps","subjectName","modifiers","debounce","computed","mapState","watch","created","beforeDestroy","methods","mapActions","initPage","searchByKeyword","query","getClasses","classService","filterDatasByClass","lop","getSubjects","filterDatasBySubject","mon","component","API_CONTROLLER","lessonType","create","update","delete","upload","export","getLessonsSample","getLessonsSampleDetail","components","FilterList","loadMore","lessons","mounted","destroyed","handleScroll","handleFilterLessons","getLessons","lessonService","finally","toggleSidebarMenu","class","activeSidebarMobile","$bvModal","show","settingsViewBookSidebar","filterByClass","child","filterBySubject","sample","bookLessonPlanId","urlPlatformCmsImg","_e","scopedSlots","_u","hide","proxy","submitted","$v","addObj","$error","composing","isSelected","redriectAddPage","ref","filterMyLessonByClass","filterMyLessonBySubject","redriectDetail","imageUrl","formData","headers","uploadNews","filterDataMedias","vueCustomScrollbar","userId","lessonsUploaded","lessonTypeTemplate","lessonTypeUpload","fileChunk","totalFileChunk","maxScrollbarLength","paramFilterMyLesson","paramFilterSampleLesson","subjectsMylessons","elmEndItem","observer","pagingData","validations","required","partCount","filePartName","file","uploadChunk","getLessonsUploaded","mountedScroll","unobserve","IntersectionObserver","handleScrollEnd","fetchSampleLesssons","subject","paging","list","totalPage","$touch","$invalid","$router","setLoading","$refs","file_pptx","files","maxFileSizeMB","bufferChunkSize","fileStreamPos","endPos","fileName","FormData","append","fileService","response","createFromUpload","filePath","ClassId","SubjectId","Id","indexClassActive","findIndex","cl","Items","listModels","total","evt","openOptionsDetail","toggleOpenOptionMenu","submit","handleOpenModalInfo","lessonId","export2Pdf","exit","delLesson","lessonInfo","handleSlideshow","openListItemSlide","_m","showSlider","base64Define","isFullLink","delSlider","addSlider","openSidebarActions","handleToggleSidebarActions","handleToggleSidebarListItem","prevSlide","nextSlide","zoomOut","zoomIn","keyActive","keyText","toggleSidebarActions","keyShape","keyPicture","keyVideo","keyAudio","keySlide","addNewTxt","handleChangeStyle","fontSizeDefault","handleChangeFontStyle","icon","changeColor","colorActive","changeColorElm","changeOtherColor","colors","posterVideo","APP_CONFIG","cdnLive","posterAudio","slideObj","copiedObject","copiedObjects","appUrl","bookCdnUrl","setDataSaved","sizeCurr","items","calSizeElsCanvas","objGroup","addImageUrl","addVideo","addAudio","setBgSlide","includes","optionReq","type_detail","handleConvertDimensions2PercentObj","getClientSizeAddEl","layout","convertDataXToPercent","widthLayout","convertDataYToPercent","heightLayout","convertDataXToPX","convertDataYToPX","perWidth","perHeight","changeStyleForArea","handleSaveCanvas","saveToImage","saveToSVG","jsonValue","saveToJson","canvasImg","imageSvg","imgBase64","imageBase64","getActiveGroup","valSaved","textDefault","dataTxtNew","fontActive","dataTxt","handleAddNewAndTrigger","addShape","shapeChoosed","addRect","addRectangle1","addRectCornor","addRectParallelogram","addTriangle","addTriangle2","addRectRhombus","addCircle","addEllipse","addPolygon5","addTrapezoid","addHexagon","addShapeLine","lineShapeChoosed","addLine","addArrowLine","addLineCircle","addShapeArrow","arrowShapeChoosed","addArrowShape","dataRect","isNew","colorFillCurr","dataTriangle","dataCircle","dataEllipse","ellipse","dataPolygon","dashed","dataLine","arrow2","triangle","triangleFirst","dataGroup","alltogetherObj","circleAfter","circleBefore","deg","saved","videoUrl","video_src","fileRef","linkUrl","file_uploaded","imageVideo","file_name","audioUrl","audio_src","saveMediaFile","hasCallback","fileType","getImages","getVideos","getAudios","dataSaved","mixins","SidebarActionColor","fonts","fontSizes","aligns","removeObjectCurr","handleCopyPaste","shapeFillType","setShapeType","shapes","icons","shapeTypes","colorTransparent","newVal","initShape","resetDataChoosed","area","objCurr","openModalFileUploaded","handleChangeKeyFilter","images","dataSource","checkImage","posterLink","checkVideo","checkAudio","urlCMS","handleViewMedia","handleAddMedia","handleEmitParam","handleCloseModal","typeImg","uploadImage","typeAudio","uploadAudio","typeVideo","uploadVideo","dataChoosed","handleInsertItems2Slide","handleChoosedData","lessonPlanFileId","doneIcon","imgIcon","videoIcon","audioIcon","datas","dataValueChoosed","fileVideo","getDatas","searchFilesByKeyword","requestAddFiles","Promise","addFile2Slide","isValid","fileExt","fileSize","fileData","handleSaveFile","ItemDataAction","SidebarFilter","ModalFileUploaded","idModalChooseSlide","filesUploaded","old","getFilesUploaded","videos","audios","keyPP","urlCmsImg","handleViewPowerpoint","choosedBackgroundForSlide","urlBgSlideChoosed","handleSetBgForSlide","listSlideChoose","imgCdnUrl","closeActionSidebar","SidebarActionText","SidebarActionShape","SidebarActionImg","SidebarActionVideo","SidebarActionAudio","SidebarActionPowerpoint","indexSlideActive","isResizeDone","widthCanvas","heightCanvas","changeSlideShow","initFabric","setSizieCanvas","onKeyup","indexItemDel","eventElmCanvas","valTarget","indexItemAc","handleScaleSlide","turnOffModal","imgThumbAudio","PreviewVideo","PreviewAudioPoster","optionsSliderMain","link","staticStyle","renderStyleLink","closeSlideshow","swiper","swiperSlide","currLinkIndex","checkSlidePositionActive","settingSwiperMain","slidesPerView","spaceBetween","navigation","nextEl","prevEl","slideChange","handleUseMedia","checkGifImage","SidebarActions","CanvasSlide","ModalViewVideoAudio","Slideshow","ModalPreviewMedia","orderNo","lessonPlanItemId","setSlideForSample","dataSlides","getLessonById","slide","fileLink","handleSaveExam","isSubmit","viewExam","deleteExam","handleViewExamInfo","addNewQuestion","handleWorkingQuestionDetail","openModalGuidePrepare","handleOffModal","questions","questionLength","questionNew","questionId","content","resetQuestionWorking","ans","correct","multiCorrectCheckbox","setScrollToCat","elem","topPos","scrollTo","ModalPreviewDocMedia","apiUrl","isLocal","linkViewFull","bookInfo","onExportPdf","timeToDo","authInfo","getListClassOfTeacher","getSubjectByClassId","indexClassCurr","typeRadio","notCorrect","typeCheckbox","typeDownAnswer","removeQuestion","viewQuestionSaved","delImgOfQuestion","isSample","cdnUrl","changeImgQuestion","contentDefault","mouseLeave","onBlur","onFocus","model","$$v","typeUpload","uploadMedia","CKEDITOR","init","editor","label","toolbar","visibleModalMedia","linkMediaUploaded","extraPlugins","allowedContent","font_defaultLabel","fontSize_defaultLabel","contentsCss","VueCkeditor","mapGetters","math_value","open_math","editor_selection","toggle_draw","convertKatex2Img","actionNiwBtn","contentEdit","onChangeContent","onEditorChange","html","uploadImg","linkImg","openMathKeyboard","addFillBlankQuestion","fillBlankEditor","openModalUploadMedia","insertEmbedEditor","htmlData","handleDoneUpload","linkMedia","embedVideo","handleCancelUpload","openDrawTool","location","positionQuestionGroup","isQuestionGroup","Boolean","questionType","$bus","CHANGE_TXT_QUESTION","handleChangeTxtQuestion","CHANGE_TXT_ANSWER","handleChangeTxtAnswer","setStyleQuestion","changeImgAnswerItem","delImgOfAnswer","answer","addNewAnswer","lengthAnswers","answerNew","answerId","removeAnswer","changeAnswerCorrect","typeQuestionCurr","indexAnswer","answerContent","listPracticeBook","listPracticeTKTDG","listPracticeThematic","listPracticeExam","doneSetQuestionSample","collapseOpen","openCollapse","tabActive","changeSubjects","subjectIdActive","initSidebar","swiperOption","viewQuestionByBook","replaceLink","imgHs7","manufactureYear","slot","slidesPerGroup","loopFillGroupWithBlank","handleViewQuestionByChapter","contentURL","img404","loop","getQuestions","countQuestion","handleBackBookList","catCurrent","bookIndexId","catParentFirst","catParent","bookIndexChilds","child2","checkActive","handleCheckActive","handleFilterQuestions","bookCats","catsFlat","catsLength","firstloadData","getCats","getCategoriesByBook","cat","setCatDataCurr","indexCatCurr","urlQuestionImg","questionDownAnswer","handleCancleChooseQuestion","handleChooseQuestion","questionRadio","keyWord","VRuntimeTemplate","dataCatsThematic","catsFlatLength","idsCatActive","getAllChapter","getCatOfExerciseOtherOrThematic","getCatActive","catActiveLength","convertCatsData","isChild","childIndex","lengthData","getDetailThematicOrQuestionOther","indexCatFlat","SidebarClassesModal","ModalQuestionsAutoTest","ModalQuestionsInBook","SidebarCatsOfBook","ModalQuestionSampleList","SidebarCatsOfAutoTest","ModalExam","ModalThematic","SidebarCatsOfExam","requestAddQuestion","EditorCK","ModalQuestionSample","imgQuestion","uploadUrl","available","EdittorCKAnswer","QuestionHead","stylesQuestion","initQuestion","QuestionChoice","QuestionMultiChoice","QuestionDownAnswer","handleSaveQuestion","handleValidateQuestionSave","handleValidateAnswers","getQuestionDetail","createQuestion","updateQuestion","schoolName","teacherName","renderTimeToDo","renderSubjects","note","nameRouter","convertImg2Base64","imageElms","lengthElms","Sidebar","ExamInfo","QuestionDetail","QuestionView","generateReport","elImgFeature","htmlString","questionIds","ques","examHtml","createExam","updateExam","typeOpenSidebar","questionsCorrectAnswer","urlImage","QuestionCorrectView","Viewer","imagesExam","setImgsOfExam","getAnswerCorrectOfQuestions","dataQuestion","que","handleDownloadFiles","openSidebar","isOpen","edit","exportQuestion","exportAnswer","exams","search","thumbUrl","filename","handleFilterExams","getExams","examService","keywords","ClassName","SubjectName","user","FullName","Content","editorHeight","cancel","answerQuestion","User","DatePost","NumLike","showListAnswer","NumAnswer","showPopupAnswer","like","loadMoreData","loadMoreDataUser","loginInfo","$cookies","token","accessToken","HTTP","axios","baseURL","responseType","questionAnswerId","loadMoreUser","pageIndexUser","pageSizeUser","dataList","dataOfUser","classesPost","subjectsPost","ParentId","handleChangeQuestionContent","$","handleChangeAnswerContent","questionAnswerService","alert","getUser","userService","getData","getDataOfUser","getAnswers","subjectService","getClassesPost","getSubjectsPost","account","email","password","login","loginService","PrepareDocList","PrepareDocDetail","PrepareDocAdd","PrepareDocEdit","ExamAdd","ExamView","ExamList","QuestionAnswer","Login","tesst","assign","f","z","aa","ab","ac","ad","ae","af","ag","ah","ai","aj","ak","al","am","an","ao","ap","aq","as","at","au","av","aw","ax","ay","az","ba","bb","bc","bd","be","bf","bg","bh","bi","bj","bk","bm","bn","bo","bp","bq","bs","bt","bu","bv","bw","bx","bz","ca","cc","cd","CKEDITOR_TRANSLATIONS","en","defineProperty","enumerable","Symbol","toStringTag","__esModule","default","super","is","message","stack","all","atob","HTMLIFrameElement","contentDocument","head","identifier","base","css","media","sourceMap","references","updater","nonce","nc","insert","styleSheet","createTextNode","insertBefore","btoa","unescape","encodeURIComponent","singleton","isBuffer","require","binding","CKEDITOR_VERSION","allocUnsafe","webpackPolyfill","injectType","locals","Cp","getPrototypeOf","_","__data__","A","C","T","P","S","E","I","has","V","N","O","R","D","L","B","F","IE_PROTO","U","H","W","Y","G","Q","K","J","Z","X","tt","et","nt","it","ot","rt","st","ct","dt","ht","hash","ut","ft","pt","kt","_t","vt","yt","xt","At","Ct","configurable","writable","Tt","Pt","St","Mt","Et","It","Nt","Ot","propertyIsEnumerable","Rt","Dt","Lt","jt","Vt","zt","Bt","Ft","Ut","Ht","qt","isTypedArray","Wt","Yt","$t","Gt","Qt","Kt","Jt","Zt","Xt","te","ee","ne","ie","oe","se","ce","le","de","he","ue","getOwnPropertySymbols","fe","me","ge","pe","we","ke","ve","ye","xe","Ae","Ce","Te","Pe","Se","Me","Ee","Ie","Ne","Oe","input","Re","De","byteLength","Le","byteOffset","je","Ve","ze","Be","Fe","Ue","He","qe","We","Ye","$e","Ge","isMap","Qe","Ke","Je","isSet","Ze","Xe","tn","keysIn","nn","_config","define","rn","_setObjectToTarget","_setToTarget","_getFromSource","sn","called","cn","stop","ln","dn","hn","normal","highest","high","low","lowest","un","mn","gn","listenTo","stopListening","pn","emitter","wn","childEvents","lastIndexOf","kn","priority","vn","_events","_delegations","_n","return","rethrowUnexpectedError","Map","yn","getOwnPropertyNames","getOwnPropertyDescriptor","xn","_items","_itemMap","_idProperty","idProperty","_bindToExternalToInternalMap","WeakMap","_bindToInternalToExternalMap","_skippedIndexesFromExternal","_bindToCollection","_setUpBindToBinding","using","getIndex","iterator","An","_context","_plugins","_availablePlugins","pluginName","_contextPlugins","plugin","Set","plugins","reject","requires","isContextPlugin","requiredBy","_add","plugin1","plugin2","Cn","Tn","Pn","uiLanguage","contentLanguage","uiLanguageDirection","Sn","contentLanguageDirection","Mn","defaultConfig","builtinPlugins","locale","ui","editors","_contextOwner","Plugin","names","initPlugins","En","In","Nn","getChildIndex","getChild","includeSelf","parentFirst","getAncestors","getPath","isBefore","_removeChildren","_fireChange","On","_textData","Rn","textNode","offsetInText","Dn","Ln","jn","_patterns","Vn","getClassNames","hasClass","hasStyle","getStyle","zn","Bn","Fn","Un","Hn","TypeError","Cache","qn","Wn","Yn","$n","Gn","Qn","Kn","Jn","Zn","Xn","ti","ei","ni","ii","oi","ri","si","ci","li","hi","fi","mi","gi","wi","ki","vi","yi","Ai","Ci","Ti","Pi","Si","Mi","_styles","_styleProcessor","entries","getStyleNames","toNormalizedForm","getReducedForm","Ii","_cleanEmptyObjectsOnPath","getNormalized","_getStylesEntries","Ei","_normalizers","_extractors","_reducers","_consumables","Ni","_mapStyleNames","Oi","_attrs","_children","_insertChild","_classes","Ri","stylesProcessor","setTo","_customProperties","getAsString","getChildren","_clone","getFillerOffset","childCount","_remove","Di","Li","ji","Vi","zi","Bi","Fi","Hi","Yi","qi","toMany","Wi","_observable","_bindProperties","_to","_bindings","Ui","observable","$i","every","Gi","editableElement","isFocused","Qi","Ki","rootName","getCustomProperty","_setCustomProperty","Ji","startPosition","Zi","_createAt","singleCharacters","shallow","ignoreElementEnd","_boundaryStartParent","_boundaryEndParent","done","_next","_previous","isAtEnd","_createAfter","_formatReturnValue","isAtStart","_createBefore","isEqual","previousPosition","nextPosition","skip","compareWith","Xi","getLastMatchingPosition","isAfter","nodeAfter","nodeBefore","isCollapsed","containsPosition","getCommonAncestor","nextSibling","previousSibling","getShiftedBy","_createFromParentsAndOffsets","offsetSize","_createFromPositionAndShift","eo","no","_ranges","_lastRangeBackward","_isFake","_fakeSelectionLabel","rangeCount","anchor","getFirstRange","getLastRange","isFake","fakeSelectionLabel","isBackward","getRanges","getTrimmed","getContainedElement","_setRanges","_setFakeOptions","io","fake","backward","_createIn","_createOn","_addRange","_pushRange","addedRange","intersectingRange","_selection","delegate","getFirstPosition","getLastPosition","getSelectedElement","isSimilar","setFocus","oo","roots","_postFixers","ro","so","_priority","_id","_clonesGroup","DEFAULT_PRIORITY","co","lo","ho","userAgent","uo","isMac","isEdge","isGecko","isSafari","isAndroid","isRegExpUnicodePropertySupported","fo","mo","ctrl","alt","go","arrowleft","arrowup","arrowright","arrowdown","backspace","enter","space","esc","tab","cmd","fromCharCode","po","ko","wo","_o","yo","toDomElement","getAttributeKeys","vo","domTarget","getSelection","getRangeAt","collapsed","focusNode","focusOffset","domPositionToView","viewPositionToDom","collapse","domConverter","xo","Ao","_cloneGroups","_setTo","_setFocus","_document","_setAttribute","_removeAttribute","_addClass","_removeClass","_setStyle","_removeStyle","_removeCustomProperty","_breakAttributes","_breakAttributesRange","move","_removeFromClonedElementsGroup","mergeAttributes","Mo","_appendChild","Eo","Co","_addToClonedElementsGroup","No","getWalker","_wrapPosition","setSelection","_wrapRange","_unwrapChildren","getAttributes","_wrapAttributeElement","To","_wrapChildren","_unwrapAttributeElement","Po","So","createAttributeElement","POSITIVE_INFINITY","wrap","Oo","removeClass","Io","getIdentity","_data","Ro","Do","Lo","dataset","ckeFiller","jo","Vo","zo","Bo","Fo","startContainer","startOffset","Uo","Ho","firstIndex","lastIndexOld","lastIndexNew","qo","values","howMany","Wo","fastDiff","Yo","$o","Go","Document","Node","Qo","domDocuments","markedAttributes","markedChildren","markedTexts","_inlineFiller","_fakeSelectionContainer","mapViewToDom","_updateChildrenMappings","_isSelectionInInlineFiller","_removeInlineFiller","_getInlineFillerPosition","_needsInlineFillerAtSelection","_updateAttrs","_updateChildren","inlineFillerPosition","_updateText","Ko","_updateSelection","_updateFocus","viewChildrenToDom","withChildren","_diffNodeLists","_findReplaceActions","equal","_updateElementMappings","unbindDomElement","bindElements","findAncestor","findCorrespondingDomText","viewToDom","insertData","deleteData","_markDescendantTextToSync","domToView","Zo","Jo","_removeDomSelection","_removeFakeSelection","_updateFakeSelection","_updateDomSelection","bindFakeSelection","_fakeSelectionNeedsUpdate","parentElement","createRange","removeAllRanges","selectNodeContents","addRange","_domSelectionNeedsUpdate","ELEMENT_NODE","isDomSelectionCorrect","domSelectionToView","anchorNode","activeElement","mapDomToView","isBlockFiller","Xo","er","DOCUMENT_NODE","nr","ir","blockFillerMode","preElements","blockElements","_blockFiller","_domToViewMapping","_viewToDomMapping","_fakeSelectionMapping","_processDataFromViewText","createDocumentFragment","bindDocumentFragments","createElementNS","setStart","setEnd","getParentUIElement","_processDataFromDomText","isComment","isDocumentFragment","keepOriginalCase","domChildrenToView","fakeSelectionToView","isDomSelectionBackward","domRangeToView","endContainer","endOffset","findCorrespondingViewText","isElement","scrollX","scrollY","rr","DOCUMENT_FRAGMENT_NODE","COMMENT_NODE","isEqualNode","sr","anchorOffset","detach","_isDomSelectionPositionCorrect","_getTouchingViewTextNode","_nodeEndsWithSpace","or","_getTouchingInlineDomNode","_checkShouldLeftTrimDomText","_checkShouldRightTrimDomText","createTreeWalker","NodeFilter","SHOW_TEXT","SHOW_ELEMENT","acceptNode","FILTER_ACCEPT","FILTER_SKIP","currentNode","cr","_getProxyEmitter","lr","attach","dr","_domNode","_domListeners","_createDomListener","useCapture","hr","view","isEnabled","disable","ur","fr","gr","pr","wr","kr","_r","vr","yr","xr","Ar","Cr","Tr","Pr","Sr","Mr","Er","childList","characterData","characterDataOldValue","subtree","_renderer","_domElements","_mutationObserver","MutationObserver","_onMutations","takeRecords","enable","disconnect","_isBogusBrMutation","oldText","markToSync","oldChildren","newChildren","forceRender","removedNodes","addedNodes","Ir","domEvent","Nr","domEventType","onDomEvent","Or","Rr","Dr","Lr","jr","Vr","zr","Br","NaN","Fr","Ur","Hr","leading","maxWait","trailing","flush","qr","_fireSelectionChangeDoneDebounced","_handleSelectionMove","oldSelection","domSelection","Wr","mutationObserver","getObserver","_documents","WeakSet","_clearInfiniteLoopInterval","setInterval","_clearInfiniteLoop","_loopbackCounter","_handleSelectionChange","clearInterval","Yr","_renderTimeoutId","$r","isComposing","Gr","Qr","Kr","borderRightWidth","borderBottomWidth","Jr","Zr","Xr","getDomRangeRects","innerWidth","innerHeight","getIntersection","getArea","ts","commonAncestorContainer","offsetWidth","offsetHeight","getClientRects","viewportOffset","cs","ls","ds","ns","frameElement","moveBy","excludeScrollbarsAndBorders","rs","os","ss","scrollViewportToShowTarget","scrollAncestorsToShowTarget","hs","domRoots","_initialDomRootAttributes","_observers","_ongoingChange","_postFixersInProgress","_renderingDisabled","_hasChangedSinceTheLastRendering","_writer","addObserver","getRoot","_name","isReadOnly","viewRangeToDom","isRenderingInProgress","_callPostFixers","disableObservers","enableObservers","us","getChildStartOffset","fs","ms","gs","_nodes","_insertNodes","getNodeIndex","maxOffset","getNodeStartOffset","ps","getNode","offsetToIndex","_removeNodes","fromJSON","ks","stickiness","_visitedParent","ws","getParentPath","_getTransformedByInsertOperation","_getTransformedByMoveOperation","_getTransformedBySplitOperation","_getTransformedByMergeOperation","_getTransformedByInsertion","_getTransformedByMove","sourcePosition","targetPosition","movedRange","_getCombined","splitPosition","moveTargetPosition","graveyardPosition","insertionPosition","_getTransformedByDeletion","deletionPosition","graveyard","getCommonPath","getTransformedByOperation","containsRange","getDifference","vs","_modelToViewMapping","_viewToModelMapping","_viewToModelLengthCallbacks","_markerNameToElements","_elementToMarkerNames","_unboundMarkerNames","viewPosition","modelPosition","_findPositionIn","findMappedViewAncestor","_toModelOffset","toModelElement","toViewElement","toModelPosition","toViewPosition","mapper","isPhantom","getElementsWithSameId","getModelLength","_moveViewPositionToTextNode","ys","_consumable","_textProxyRegistry","xs","_getSymbolForTextProxy","_addSymbolForTextProxy","As","conversionApi","dispatcher","getMarkersToRemove","convertMarkerRemove","range","getChanges","convertInsert","convertRemove","convertAttribute","attributeKey","attributeOldValue","attributeNewValue","flushUnboundMarkerNames","getRange","convertMarkerAdd","getMarkersToAdd","writer","consumable","_createInsertConsumable","_testAndFire","_clearConversionApi","_createConsumableForRange","getMarkersAtPosition","_createSelectionConsumable","Cs","markerName","markerRange","getItems","containsItem","Ts","_removeAllRanges","directChange","_popRange","attributeKeys","Ms","Es","Ss","isTouching","_checkRange","Ps","isBlock","isLimit","Is","Ns","isDocumentOperation","Os","_createFromRanges","toRange","Rs","Ds","hasOwnRange","isGravityOverridden","markers","getSelectedBlocks","containsEntireContent","_updateMarkers","_updateAttributes","_getStoredAttributes","overrideGravity","restoreGravity","startsWith","_model","_attributePriority","_fixGraveyardRangesData","_hasChangedRange","_overriddenGravityRegister","liveRange","_fixGraveyardSelection","_validateSelectionRange","differ","enqueueChange","_getDefaultRange","_prepareRange","fromRange","oldMarkers","_getSurroundingAttributes","_setAttributesTo","Ls","isObject","getNearestSelectionRange","js","_dispatchers","Vs","zs","Fs","consume","converterPriority","Us","toViewRange","unwrap","Hs","isOpening","bindElementToMarker","markerNameToElements","unbindElementFromMarkerName","createRangeOn","clearClonedElementsGroup","qs","Bs","createContainerElement","createUIElement","Ws","Ys","Gs","Qs","$s","viewItem","splitToAllowedParent","modelCursor","convertChildren","createPositionAt","getSplitParts","modelRange","createPositionBefore","createPositionAfter","cursorParent","checkAttribute","Ks","downcastDispatcher","_disableRendering","convertChanges","convertSelection","toModelRange","createText","createRangeIn","unbindViewElement","isAttached","breakAttributes","bindTo","Js","_commands","commandName","execute","commands","Zs","Xs","revert","consumablesFromElement","createFrom","_canConsumeName","_test","_consume","_revert","getRelatedStyles","_sourceDefinitions","_attributeProperties","decorate","ea","getDefinition","itemName","_compiledDefinitions","_compile","getDefinitions","isInline","_checkContextMatch","last","allowAttributes","checkMerge","checkChild","getAttributeProperties","getMinimalFlatRanges","_getValidRangesForRange","walker","getPositions","na","ia","oa","ra","sa","getItem","allowIn","ha","getNames","endsWith","allowContentOf","allowWhere","allowAttributesOf","inheritTypesFrom","la","inheritAllFrom","fa","_splitParts","_modelCursor","convertItem","_convertItem","_convertChildren","_splitToAllowedParent","_getSplitParts","store","_removeEmptyElements","findAllowedParent","_registerSplitPair","ma","processor","upcastDispatcher","viewDocument","_viewWriter","_checkIfRootsExists","hasContent","ignoreWhitespaces","toView","toData","clearBindings","removeSelectionAttribute","toModel","convert","getRootNames","ga","_helpers","_downcast","_createConversionHelpers","dispatchers","isDowncast","_upcast","for","elementToElement","pa","attributeToElement","elementToAttribute","attributeToAttribute","upcastAlso","wa","operations","baseVersion","batch","ka","__className","_a","va","Aa","Ta","Ca","ya","isFlat","xa","Pa","Sa","Ma","oldValue","Ea","Ia","getMovedRangeStart","Na","nodes","shouldReceiveAttributes","Oa","oldRange","newRange","affectsData","_markers","Ra","oldName","newName","Da","La","ja","getInsertionPosition","Va","za","_assertWriterUsedCorrectly","qa","addOperation","applyOperation","usingOperation","updateMarker","addMarker","Ba","Fa","_addOperationForAffectedMarkers","Ha","_merge","_mergeDetached","createPositionFromPath","createSelection","Ua","_refresh","managedUsingOperations","_setSelectionAttribute","_removeSelectionAttribute","_overrideGravity","_restoreGravity","_getStoreAttributeKey","_currentWriter","Wa","_markerCollection","_changesInElement","_elementSnapshots","_changedMarkers","_changeCount","_cachedChanges","_cachedChangesWithGraveyard","_isInInsertedElement","_markRemove","_markInsert","getMarkersIntersectingRange","bufferMarkerChange","_markAttribute","includeChangesInGraveyard","Ya","$a","_getInsertDiff","_getRemoveDiff","_getAttributesDiff","changeCount","Ga","count","_markChange","_removeAllNestedChanges","_makeSnapshot","_getChangesForElement","_handleChange","nodesToHandle","Qa","_operations","_undoPairs","_undoneOperations","Ka","Ja","Za","history","_hasSelectionChangedFromTheLastChangeBlock","createRoot","bufferOperation","_hasDocumentChangedFromTheLastChangeBlock","refresh","hasDataChanges","_getDefaultRoot","Xa","tc","ec","_attachLiveRange","_managedUsingOperations","_affectsData","_destroyMarker","_detachLiveRange","_liveRange","stopDelegating","ic","oc","rc","sc","toPosition","canMergeWith","_filterAttributesOf","_affectedStart","_affectedEnd","_handleNode","isFirst","isLast","removeDisallowedAttributes","nodeToSelect","_handleObject","_checkAndSplitToAllowedPosition","_insert","_mergeSiblingsOf","_handleDisallowedNode","_tryAutoparagraphing","handleNodes","fromPosition","_setAffectedBoundaries","_canMergeLeft","_canMergeRight","merge","_getAllowedIn","doNotResetEntireContent","getLimitElement","lc","leaveUnmerged","doNotAutoparagraph","hc","fc","mc","isForward","uc","gc","pc","registerPostFixer","kc","wc","_pendingChanges","_validate","register","addChildCheck","_runPendingChanges","_execute","deleteContent","getSelectionRange","getAffectedRange","setSelectionFocus","getNodeByPath","appendText","_handleChangeBlock","vc","_listener","yc","xc","language","_addEditor","_getEditorConfig","once","editing","conversion","addAlias","keystrokes","_removeEditor","Ac","Cc","HTMLTextAreaElement","innerHTML","Tc","Pc","_domParser","_domConverter","_htmlWriter","getHtml","_toDom","Sc","_components","originalName","Mc","Ec","_elements","_nextEventLoopTimeout","_focus","_blur","focusedElement","Ic","componentFactory","focusTracker","_editableElementsMap","ckeditorInstance","editorUI","Nc","Oc","isDirectHost","Dc","Rc","Lc","hostElement","jc","_replacedElements","newElement","Vc","_toolbarConfig","_elementReplacer","setEditableElement","attachDomRoot","_initPlaceholder","_initToolbar","detachDomRoot","stickyPanel","limiterElement","viewportTopOffset","fillFromConfig","originKeystrokeHandler","originFocusTracker","beforeFocus","afterBlur","zc","isRendered","_parentElement","Bc","Kc","Qc","_isRendered","_revertData","_renderNode","intoFragment","bindings","isApplying","revertData","_revertTemplateFromNode","nl","Uc","eventNameOrFunction","if","Hc","valueIfTrue","Xc","eventListeners","_renderElement","_renderAttributes","_renderElementChildren","_setUpListeners","qc","_bindToObservable","Yc","ol","$c","_renderStyleAttribute","Zc","setAttributeNS","Gc","il","setParent","activateDomEventListener","Wc","activateAttributeListener","Fc","matches","getValue","removeAttributeNS","Jc","rl","_viewCollections","_unboundChildren","createCollection","_bindTemplate","registerChild","getViews","sl","_bodyCollectionContainer","dir","xmlns","childElementCount","attachToDom","detachFromDom","ll","bindTemplate","setTemplate","dl","_voiceLabelView","_createVoiceLabel","role","lang","extendTemplate","hl","_editableElement","_hasExternalElement","_editingView","_updateIsFocusedClasses","ul","fl","_contentPanelPlaceholder","_panelRect","_contentPanel","limiterBottomOffset","marginLeft","_checkIfShouldBeSticky","_limiterRect","isSticky","isActive","_isStickyToTheLimiter","_hasViewportTopOffset","_marginLeft","keystrokeHandler","focusables","_getFocusableItem","first","wl","kl","_observerInstance","_createObserver","_addElementCallback","_deleteElementCallback","_elementCallbacks","_getElementCallbacks","ResizeObserver","_previousRects","_periodicCheckTimeout","_checkElementRectsAndExecuteCallback","_startPeriodicCheck","_stopPeriodicCheck","_hasRectChanged","contentRect","vl","selectstart","focusLast","yl","positions","limiter","fitInViewport","getVisible","xl","getIntersectionArea","Al","Cl","buttonView","panelView","panelPosition","_getOptimalPosition","_panelPositions","southEast","southWest","northEast","northWest","defaultPanelPositions","Tl","_updateXMLContent","_colorFillPaths","querySelectorAll","Pl","Sl","tooltipView","_createTooltipView","labelView","_createLabelView","iconView","keystrokeView","_createKeystrokeView","_getTooltipString","tabindex","isToggleable","mousedown","click","withKeystroke","Ml","arrowView","_createArrowView","El","_focusCycler","focusPrevious","focusNext","focusFirst","Il","Nl","Ol","toggleSwitchView","_createToggleView","Rl","activator","contextElements","Dl","Ll","listView","jl","itemsView","Vl","_behavior","shouldGroupWhenFull","Bl","zl","viewChildren","viewFocusables","viewItemsView","viewFocusTracker","viewLocale","ungroupedItems","groupedItems","groupedItemsDropdown","_createGroupedItemsDropdown","resizeObserver","cachedPadding","_updateFocusCycleableItems","_updateGrouping","viewElement","_enableGroupingOnResize","_enableGroupingOnMaxWidthChange","_areItemsOverflowing","_groupLastItem","_ungroupFirstItem","lastChild","toolbarView","tooltip","Fl","shouldToolbarGroupWhenFull","Ul","updateSourceElement","form","initialData","Hl","_disableStack","ql","Wl","kind","getAsFile","_native","setData","Yl","dropRange","dataTransfer","targetRanges","caretRangeFromPoint","rangeParent","rangeOffset","$l","Gl","getSelectedContent","_htmlDataProcessor","scrollToTheSelection","insertContent","Ql","forceDisabled","clearForceDisabled","Kl","Jl","copyOnEnter","Zl","Xl","setSelectionAttribute","td","isSoft","ed","nd","od","rd","createEmptyElement","sd","limit","isLocked","_changeCallback","_batch","_selectionChangeCallback","createBatch","_buffer","_batches","resultRange","lock","unlock","ld","dd","hd","ud","_handleContainerChildrenMutations","_handleTextMutation","_handleTextNodeInsertion","fd","firstChangeAt","insertions","deletions","md","gd","handle","pd","modifySelection","_shouldEntireContentBeReplacedWithParagraph","sequence","_replaceEntireContentWithParagraph","inputType","selectionToRemove","wd","kd","_d","vd","yd","xd","Ad","Cd","useRelations","forceWeakRemove","setOriginalOperations","originalOperations","operationsA","operationsB","nextBaseVersionA","nextBaseVersionB","originalOperationsACount","originalOperationsBCount","updateRelation","padWithNoOps","Pd","Td","_history","_useRelations","_forceWeakRemove","_relations","_setRelation","wasInLeftElement","wasStartBeforeMergedElement","wasEndBeforeMergedElement","wasInRightElement","aIsStrong","aWasUndone","_wasUndone","bWasUndone","abRelation","_getRelation","baRelation","wasUndone","isUndoneOperation","getUndoneOperation","Sd","Md","Ed","hasSameParentAs","getReversed","_stack","_createdBatches","ranges","Nd","getOperations","setOperationAsUndone","getTransformedByOperations","Od","_undo","_restoreSelection","Rd","Dd","_batchRegistry","_undoCommand","_redoCommand","addBatch","clearStack","Ld","jd","Vd","_addButton","keystroke","zd","Bd","Fd","_actions","hasAny","Ud","FileReader","_reader","onprogress","onabort","readAsDataURL","Hd","loaders","_updatePendingAction","_loadersMap","_pendingAction","createUploadAdapter","qd","uploaded","uploadTotal","getLoader","_destroy","uploadedPercent","_filePromiseWrapper","_createFilePromiseWrapper","_adapter","promise","read","uploadResponse","isFulfilled","rejecter","Wd","cookie","crypto","getRandomValues","Yd","$d","loader","_initRequest","_initListeners","_sendRequest","lengthComputable","Gd","Qd","Kd","1","2","3","getValidRanges","Jd","Zd","Xd","_getValueFromFirstAllowedNode","checkAttributeInSelection","forceValue","setAttributeProperties","isFormatting","eh","nh","ih","oh","rh","_getValue","_checkEnabled","ch","_applyQuote","_removeQuote","lh","dh","hh","uh","_fireEvents","fh","_insertDescriptor","mh","oldDescriptor","newDescriptor","_removeDescriptor","gh","ph","setCustomProperty","yh","hasSelectionHandle","kh","vh","xh","Ah","Ch","Th","Ph","Sh","Mh","Eh","Ih","Nh","Oh","Rh","manualDecorators","_getDecoratorStateFromModel","Dh","Lh","jh","Vh","zh","Bh","Fh","Uh","Hh","qh","Wh","Yh","$h","Gh","Qh","Kh","Jh","Zh","Xh","tu","eu","href","nu","iu","_definitions","ou","ru","_modelSelection","_overrideUid","_isNextGravityRestorationSkipped","_isGravityOverridden","su","_hasSelectionAttribute","lu","_preventCaretMovement","cu","_setSelectionAttributeFromTheNodeBefore","du","_skipNextAutomaticGravityRestoration","overrideSelectionGravity","restoreSelectionGravity","hu","uu","addTargetToExternalLinks","Downloadable","_enableAutomaticDecorators","_enableManualDecorators","handleForwardMovement","handleBackwardMovement","_setupLinkHighlight","rel","getDispatcher","fu","_showNotification","mu","chooseFiles","onInit","isImage","getUrl","gu","resizedUrl","showWarning","CKFinder","pu","wu","Blob","_token","_apiAddress","_prepareRequest","_attachXHRListeners","ku","refreshInterval","autoRefresh","initValue","_startRefreshing","_refreshToken","_stopRefreshing","_refreshInterval","vu","yu","tokenUrl","Token","xu","_uploadGateway","_UploadGateway","Au","uploadGateway","fileUploader","Cu","Tu","Pu","_previouslySelected","_clearPreviouslySelectedWidgets","Su","_onMousedown","_onKeydown","_handleDelete","detail","_setSelectionOverElement","_selectAllNestedEditableContent","_selectAllContent","_handleEnterKey","_handleArrowKeys","_getObjectElementNextToSelection","Mu","Eu","Iu","inputView","_createInputView","statusView","_createStatusView","ariaDescribedById","errorText","select","Nu","placeholder","readonly","Ou","Ru","Du","Lu","labeledInput","_createLabeledInputView","saveButtonView","_createButton","cancelButtonView","_focusables","ju","Vu","zu","isVisible","defaultPositions","southArrowNorth","southArrowNorthMiddleWest","southArrowNorthMiddleEast","southArrowNorthWest","southArrowNorthEast","northArrowSouth","northArrowSouthMiddleWest","northArrowSouthMiddleEast","northArrowSouthWest","northArrowSouthEast","unpin","_pinWhenIsVisibleCallback","_startPinning","_stopPinning","attachTo","Bu","Fu","arrowVerticalOffset","Uu","arrowHorizontalOffset","northWestArrowSouthWest","northWestArrowSouthMiddleWest","northWestArrowSouth","northWestArrowSouthMiddleEast","northWestArrowSouthEast","northEastArrowSouthWest","northEastArrowSouthMiddleWest","northEastArrowSouth","northEastArrowSouthMiddleEast","northEastArrowSouthEast","southWestArrowNorthWest","southWestArrowNorthMiddleWest","southWestArrowNorth","southWestArrowNorthMiddleEast","southWestArrowNorthEast","southEastArrowNorthWest","southEastArrowNorthMiddleWest","southEastArrowNorth","southEastArrowNorthMiddleEast","southEastArrowNorthEast","Hu","qu","positionLimiter","_viewToStack","_idToStack","_rotatorView","_createRotatorView","_fakePanelsView","_createFakePanelsView","hasView","stackId","_numberOfStacks","_visibleStack","singleViewMode","showStack","_showView","_singleViewMode","visibleView","_showNextStack","hideView","_getStackId","pin","_getBalloonPosition","updatePosition","visibleStack","Wu","buttonNextView","buttonPrevView","_showPrevStack","Yu","balloonClassName","withArrow","showView","_createButtonView","_balloonPanelView","_addPanels","_removePanels","deregisterChild","numberOfPanels","$u","Gu","_createForm","_form","_showForm","_balloon","_hideForm","_isVisible","_isInBalloon","Qu","Ku","Ju","_fileInputView","Zu","accept","Xu","tf","fetch","blob","File","ef","acceptedType","allowMultipleFiles","nf","uploadStatusChange","of","rf","sf","cf","lf","removeChildren","insertChild","df","hf","createLoader","uploadId","uf","imageElement","ff","_readAndUpload","_ckHack","setAttributes","uploadStatus","_parseAndSetSrcsetAttributeOnImage","destroyLoader","mf","gf","pf","rename","paragraphLikeElements","kf","wf","_autoparagraphEmptyRoots","insertElement","createContext","_f","modelElements","vf","yf","_addDefaultH1Conversion","xf","Af","Paragraph","withText","commandValue","isOn","Cf","Tf","Pf","_insertMissingModelCaptionElement","Sf","createEditableElement","_fixCaptionVisibility","_updateCaptionVisibility","_lastSelectedCaption","Mf","Ef","If","appendElement","Nf","defaultStyle","isDefault","Of","Rf","Df","Lf","jf","Vf","alignLeft","alignCenter","alignRight","zf","Bf","Ff","Uf","Hf","localizedDefaultStylesTitles","qf","_toolbarDefinitions","_updateToolbarsVisibility","ariaLabel","getRelatedElement","toolbarId","_isToolbarVisible","_hideToolbar","_isToolbarInBalloon","_showToolbar","Wf","Yf","$f","_childCommands","_getFirstEnabledCommand","Gf","Qf","Kf","Jf","_defineButton","Zf","Xf","urlInputView","_createUrlInput","_manualDecoratorSwitches","_createManualDecoratorSwitches","_createFormChildren","tm","previewButtonView","_createPreviewButton","unlinkButtonView","editButtonView","em","actionsView","_createActionsView","formView","_createFormView","_createToolbarLinkButton","_enableUserBalloonInteractions","_addFormView","_hideUI","getDecoratorSwitchesState","_closeFormView","_showUI","_getSelectedLinkElement","_areActionsVisible","_isUIVisible","_isUIInPanel","_areActionsInPanel","_getBalloonPositionData","_isFormInPanel","restoreManualDecoratorStates","_removeFormView","_addActionsView","_startUpdatingUI","nm","im","rm","listIndent","om","listType","sm","_indentBy","fm","cm","hm","sameIndent","smallerIndent","breakContainer","dm","lm","mergeContainers","um","mm","gm","pm","wm","km","Am","Tm","vm","ym","xm","Cm","foo","Pm","registerViewToModelLength","Sm","registerChildCommand","Mm","Em","getMediaViewElement","Im","Rm","Nm","Om","Dm","Lm","providers","extraProviders","removeProviders","provider","providerDefinitions","_getMedia","getViewElement","jm","_getUrlMatches","_getValidUrl","_match","_previewRenderer","renderForEditingView","renderMediaPreview","_getPreviewHtml","_getPlaceholderHtml","outerHTML","Vm","registry","hasMedia","zm","Bm","_timeoutId","_positionToInsert","_embedMediaBetweenPositions","Fm","_validators","resetFormStatus","infoText","_urlInputViewInfoDefault","_urlInputViewInfoTip","Um","_setUpDropdown","_setUpForm","Hm","Wm","order","indent","qm","Ym","$m","unwrapElement","Gm","Qm","sheet","stylesString","bodyString","Km","hex","Jm","Zm","Xm","eg","ng","ig","column","getCellLocation","og","rows","headingRows","headingColumns","sg","rg","table","startRow","endRow","includeSpanned","_skipRows","_row","_column","_cellIndex","_spannedCells","_nextCellAtColumn","_isOverEndRow","_isSpanned","_getSpanned","_shouldSkipRow","_shouldSkipColumn","_formatOutValue","_recordSpans","cell","isSpanned","rowspan","colspan","cellIndex","_markSpannedCell","cg","lg","dg","hg","mg","ug","fg","gg","asWidget","Tg","Cg","xg","yg","pg","Eg","wg","Mg","_g","Sg","vg","kg","Ag","Pg","Ig","columns","createTable","Ng","insertRows","Og","insertColumns","Rg","splitCellHorizontally","splitCellVertically","Dg","isHorizontal","_getMergeableCell","Lg","jg","getRows","_removeRow","Vg","rowspanToSet","zg","getColumns","Bg","_isInHeading","Fg","Ug","Hg","qg","Wg","skipRow","newCellsSpan","updatedSpan","Yg","$g","Kg","Gg","Qg","Jg","Zg","Xg","tp","ep","np","ip","refreshItem","op","_handleTabOnSelectedTable","_getTabHandler","rp","sp","_highlightGridBoxes","mouseover","bindIsOn","_prepareDropdown","lp","dp","insertText","hp","_handleDeleteContent","_defineSelectionConverter","_enableShiftClickSelection","_enableMouseDragSelection","getSelectedTableCells","_getModelTableCellFromDomEvent","up","_setCellSelection","buttons","_getCellsToSelect","cells","fp","_onCopyCut","getSelectionAsFragment","mp","testCallback","hasMatch","_startListening","_evaluateTextBeforeSelection","gp","pp","wp","copyright","registeredTrademark","trademark","oneHalf","oneThird","twoThirds","oneForth","threeQuarters","lessThanOrEqual","greaterThanOrEqual","notEqual","arrowLeft","arrowRight","horizontalEllipsis","enDash","emDash","quotesPrimary","Ap","quotesSecondary","quotesPrimaryEnGb","quotesSecondaryEnGb","quotesPrimaryPl","quotesSecondaryPl","kp","symbols","mathematical","typography","quotes","_p","yp","xp","_addListAutoformats","_addBasicStylesAutoformats","_addHeadingAutoformats","_addBlockQuoteAutoformats","_addCodeBlockAutoformats","isTransformedWithPasteFromOffice","transformations","include","_enableTransformationWatchers","extra","normalizedTransformation","isInput","contentToolbar"],"mappings":"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","file":"js/chunk-524f65fe.106295ce.js","sourcesContent":["export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PrepareDocAdd.vue?vue&type=style&index=0&id=4bb87a78&lang=scss&scoped=true&\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModalExam.vue?vue&type=style&index=0&id=0e83e467&lang=scss&scoped=true&\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QuestionMultiChoice.vue?vue&type=style&index=0&id=648036a2&lang=scss&scoped=true&\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModalQuestionsInBook.vue?vue&type=style&index=0&id=0dd46eac&lang=scss&scoped=true&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ExamView.vue?vue&type=style&index=0&id=ea741d60&lang=scss&scoped=true&\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QuestionView.vue?vue&type=style&index=0&id=4d4631de&lang=scss&scoped=true&\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QuestionChoice.vue?vue&type=style&index=0&id=41aafbe5&lang=scss&scoped=true&\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModalQuestionSampleList.vue?vue&type=style&index=0&id=23880e68&lang=scss&scoped=true&\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarCatsOfAutoTest.vue?vue&type=style&index=0&id=3c3a3dc5&lang=scss&scoped=true&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./tesst.vue?vue&type=style&index=0&lang=css&\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QuestionCorrectView.vue?vue&type=style&index=0&id=2bca5489&lang=scss&scoped=true&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ExamList.vue?vue&type=style&index=0&id=02a5dec8&lang=scss&scoped=true&\"","var map = {\n\t\"./1.png\": \"c1c5\",\n\t\"./2.png\": \"81e5\",\n\t\"./3.png\": \"619a\",\n\t\"./4.png\": \"33b2\",\n\t\"./Asset 15.png\": \"252f\",\n\t\"./Banner Mobile_21.png\": \"ae1c\",\n\t\"./Banner Mobile_22.png\": \"296b\",\n\t\"./Banner Mobile_61.png\": \"aa87\",\n\t\"./Banner Mobile_62.png\": \"ef22\",\n\t\"./Banner Mobile_HTS.png\": \"48e4\",\n\t\"./Banner Mobile_TH.png\": \"96af\",\n\t\"./Banner_CTST2.png\": \"cac7\",\n\t\"./Banner_CTST6.png\": \"e848\",\n\t\"./Banner_HTS.png\": \"ac51\",\n\t\"./Banner_KNTT2.png\": \"6e79\",\n\t\"./Banner_KNTT6.png\": \"feb1\",\n\t\"./CompositeLayer.png\": \"472c\",\n\t\"./HS-2.jpg\": \"3fbf\",\n\t\"./Logo 2.png\": \"6ad32\",\n\t\"./RemovePrefix.bat\": \"9660\",\n\t\"./active-2.png\": \"cfe8\",\n\t\"./active.png\": \"5e9f\",\n\t\"./alert.png\": \"55f2\",\n\t\"./audio.png\": \"0361\",\n\t\"./banner-book.png\": \"0dd7\",\n\t\"./banner.png\": \"1936\",\n\t\"./bg-book-1.png\": \"c06a\",\n\t\"./bg-book-1_old.png\": \"6577\",\n\t\"./bg-book-2.png\": \"13b7\",\n\t\"./bg-home-hts.png\": \"a1fb\",\n\t\"./bg-number.png\": \"f853\",\n\t\"./bg_home.png\": \"841a\",\n\t\"./bg_intro.png\": \"323b\",\n\t\"./blank.svg\": \"ba14\",\n\t\"./book-icon.png\": \"7bb8\",\n\t\"./book/Logo 3 BW.png\": \"43b5\",\n\t\"./book/Logo 4 BW.png\": \"0a93\",\n\t\"./book/banner_sdt.jpg\": \"7aa1\",\n\t\"./book/book_type_1.png\": \"4b8a\",\n\t\"./book/book_type_2.png\": \"df94\",\n\t\"./book/book_type_3.png\": \"01e1\",\n\t\"./book/book_type_4.png\": \"472f\",\n\t\"./box1.png\": \"0717\",\n\t\"./checked.png\": \"4f4e\",\n\t\"./class-icon.png\": \"e14e\",\n\t\"./copper.svg\": \"ef07\",\n\t\"./document1.png\": \"b01b\",\n\t\"./down.png\": \"7c7c\",\n\t\"./down2.png\": \"7ed4\",\n\t\"./down3.png\": \"21ac\",\n\t\"./ebook-exercise.svg\": \"d30a\",\n\t\"./ebook-lesson.svg\": \"b39d\",\n\t\"./ebook.png\": \"cc40\",\n\t\"./fx.png\": \"50cc\",\n\t\"./gif.png\": \"201a\",\n\t\"./gold.svg\": \"d87b\",\n\t\"./home-bg.png\": \"dddb\",\n\t\"./home-bg_old.png\": \"6377\",\n\t\"./home-training-new.png\": \"2828\",\n\t\"./home-training.png\": \"33dd\",\n\t\"./icon-close.png\": \"6891\",\n\t\"./iconfb.png\": \"8a7a\",\n\t\"./icongg.png\": \"52b5\",\n\t\"./image.png\": \"bf05\",\n\t\"./imagehoclieu.png\": \"8814\",\n\t\"./img-detail.png\": \"4604\",\n\t\"./img_404.jpg\": \"700c\",\n\t\"./laptop-hts.png\": \"62c2\",\n\t\"./link.png\": \"6ad3\",\n\t\"./linktypes/3d-2.svg\": \"f7a9\",\n\t\"./linktypes/3d-3.svg\": \"e780\",\n\t\"./linktypes/3d.svg\": \"15e5\",\n\t\"./linktypes/audio-2.svg\": \"7eb5\",\n\t\"./linktypes/audio-3.svg\": \"ec93\",\n\t\"./linktypes/audio.svg\": \"dbdd\",\n\t\"./linktypes/audioresize40.svg\": \"09fb\",\n\t\"./linktypes/done.svg\": \"3878\",\n\t\"./linktypes/gif-2.svg\": \"b334\",\n\t\"./linktypes/gif-3.svg\": \"ba3b\",\n\t\"./linktypes/gif.svg\": \"2b2d\",\n\t\"./linktypes/image-2.svg\": \"f480\",\n\t\"./linktypes/image-3.svg\": \"7cfb\",\n\t\"./linktypes/image.svg\": \"d19f\",\n\t\"./linktypes/nhom-hoc-lieu-2.svg\": \"f211\",\n\t\"./linktypes/nhom-hoc-lieu-3.svg\": \"11bc\",\n\t\"./linktypes/nhom-hoc-lieu.svg\": \"134e\",\n\t\"./linktypes/pause.svg\": \"308f\",\n\t\"./linktypes/play-2.svg\": \"697b\",\n\t\"./linktypes/play-3.svg\": \"bb01\",\n\t\"./linktypes/play.svg\": \"58d3\",\n\t\"./linktypes/playresize.svg\": \"29ce\",\n\t\"./loading.gif\": \"12ae\",\n\t\"./loading.svg\": \"afd7\",\n\t\"./logo - Copy (2).png\": \"2f81\",\n\t\"./logo - Copy.png\": \"be6b\",\n\t\"./logo-footer.png\": \"6331\",\n\t\"./logo-footer2.png\": \"3be0\",\n\t\"./logo-hts-footer.png\": \"09f3\",\n\t\"./logo-hts.png\": \"d8ac\",\n\t\"./logo-nxb.png\": \"87c6\",\n\t\"./logo.png\": \"9d64\",\n\t\"./logo4dots.png\": \"526e\",\n\t\"./logo_hts.png\": \"916f\",\n\t\"./logo_hts_1.png\": \"c87d\",\n\t\"./lop10/slide1.jpg\": \"f091\",\n\t\"./lop10/slide2.jpg\": \"838e\",\n\t\"./lop3/slide1.jpg\": \"0bb3\",\n\t\"./lop3/slide2.jpg\": \"1f2f\",\n\t\"./lop7/slide1.jpg\": \"e79a\",\n\t\"./lop7/slide2.jpg\": \"4044\",\n\t\"./menu-icon.png\": \"06bf\",\n\t\"./nav-icon.png\": \"f3cd\",\n\t\"./next.png\": \"0f66\",\n\t\"./one-page.png\": \"3959\",\n\t\"./pdf.png\": \"b9de\",\n\t\"./pen.png\": \"0fae\",\n\t\"./pencil-icon.png\": \"6e4a\",\n\t\"./pencil.png\": \"c2d1\",\n\t\"./play.png\": \"c4bf\",\n\t\"./playsuggest.png\": \"ae61\",\n\t\"./power.png\": \"c3c1\",\n\t\"./prev.png\": \"b1d2\",\n\t\"./question-icon.png\": \"993c\",\n\t\"./search.png\": \"1b61\",\n\t\"./searchhoclieu.png\": \"dfc4\",\n\t\"./silver.svg\": \"bdf4\",\n\t\"./style-question/concat-1.jpg\": \"1d69\",\n\t\"./style-question/concat-2.jpg\": \"1644\",\n\t\"./style-question/fill-blank-1.jpg\": \"1bc7\",\n\t\"./style-question/fill-blank-2.jpg\": \"dd13\",\n\t\"./style-question/fill-blank-3.jpg\": \"2e94\",\n\t\"./style-question/fill-blank-4.jpg\": \"5815\",\n\t\"./style-question/fill-blank-5.jpg\": \"5956\",\n\t\"./style-question/fill-input-1.jpg\": \"38ad\",\n\t\"./style-question/fill-input-2.jpg\": \"9c79\",\n\t\"./style-question/fill-input/circle the correct answer 2 column.JPG\": \"399f\",\n\t\"./style-question/fill-input/fill input 1 row.JPG\": \"8018\",\n\t\"./style-question/fill-input/fill-input-1.JPG\": \"0f70\",\n\t\"./style-question/fill-input/fill-input-2.JPG\": \"64ef\",\n\t\"./style-question/fill-input/radio 1 row.JPG\": \"5f05\",\n\t\"./style-question/fill-input/radio2 column.JPG\": \"841f\",\n\t\"./style-question/radio-1.jpg\": \"02cf\",\n\t\"./style-question/radio-2.jpg\": \"6821a\",\n\t\"./style-question/select-box-1.jpg\": \"13e9f\",\n\t\"./style-question/tf-1.jpg\": \"aef7\",\n\t\"./style-question/tf-2.jpg\": \"86ae\",\n\t\"./test.jpg\": \"9387\",\n\t\"./thumb-audio.png\": \"dd66\",\n\t\"./tick-error.png\": \"ada7\",\n\t\"./tick.png\": \"4b11\",\n\t\"./two-page.png\": \"59e0\",\n\t\"./under-construction.png\": \"a08f\",\n\t\"./unknow.png\": \"b417\",\n\t\"./unknow2.png\": \"bc79\",\n\t\"./user-avatar.png\": \"fa37\",\n\t\"./user-mark.png\": \"691e\",\n\t\"./user.png\": \"ba97\",\n\t\"./video.png\": \"c59e\",\n\t\"./word.png\": \"dccb\",\n\t\"./x-mark-error.png\": \"46db\",\n\t\"./x-mark.png\": \"3d11\",\n\t\"./youtobe.png\": \"c19d\",\n\t\"./zoom-in.png\": \"8f13\",\n\t\"./zoom-out.png\": \"328d\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"7584\";","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModalThematic.vue?vue&type=style&index=0&id=2233a521&lang=scss&scoped=true&\"","/* build: `node build.js modules=ALL exclude=gestures,accessors requirejs minifier=uglifyjs` */\n/*! Fabric.js Copyright 2008-2015, Printio (Juriy Zaytsev, Maxim Chernyak) */\n\nvar fabric = fabric || { version: '2.7.0' };\nif (typeof exports !== 'undefined') {\n exports.fabric = fabric;\n}\n/* _AMD_START_ */\nelse if (typeof define === 'function' && define.amd) {\n define([], function() { return fabric; });\n}\n/* _AMD_END_ */\nif (typeof document !== 'undefined' && typeof window !== 'undefined') {\n if (document instanceof HTMLDocument)\n fabric.document = document;\n else\n fabric.document = document.implementation.createHTMLDocument(\"\");\n fabric.window = window;\n}\nelse {\n // assume we're running under node.js when document/window are not present\n fabric.document = require('jsdom')\n .jsdom(\n decodeURIComponent('%3C!DOCTYPE%20html%3E%3Chtml%3E%3Chead%3E%3C%2Fhead%3E%3Cbody%3E%3C%2Fbody%3E%3C%2Fhtml%3E'),\n { features: {\n FetchExternalResources: ['img']\n }\n });\n fabric.jsdomImplForWrapper = require('jsdom/lib/jsdom/living/generated/utils').implForWrapper;\n fabric.nodeCanvas = require('jsdom/lib/jsdom/utils').Canvas;\n fabric.window = fabric.document.defaultView;\n DOMParser = require('xmldom').DOMParser;\n}\n\n/**\n * True when in environment that supports touch events\n * @type boolean\n */\nfabric.isTouchSupported = 'ontouchstart' in fabric.window || 'ontouchstart' in fabric.document ||\n (fabric.window && fabric.window.navigator && fabric.window.navigator.maxTouchPoints > 0);\n\n/**\n * True when in environment that's probably Node.js\n * @type boolean\n */\nfabric.isLikelyNode = typeof Buffer !== 'undefined' &&\n typeof window === 'undefined';\n\n/* _FROM_SVG_START_ */\n/**\n * Attributes parsed from all SVG elements\n * @type array\n */\nfabric.SHARED_ATTRIBUTES = [\n 'display',\n 'transform',\n 'fill', 'fill-opacity', 'fill-rule',\n 'opacity',\n 'stroke', 'stroke-dasharray', 'stroke-linecap', 'stroke-dashoffset',\n 'stroke-linejoin', 'stroke-miterlimit',\n 'stroke-opacity', 'stroke-width',\n 'id', 'paint-order', 'vector-effect',\n 'instantiated_by_use', 'clip-path'\n];\n/* _FROM_SVG_END_ */\n\n/**\n * Pixel per Inch as a default value set to 96. Can be changed for more realistic conversion.\n */\nfabric.DPI = 96;\nfabric.reNum = '(?:[-+]?(?:\\\\d+|\\\\d*\\\\.\\\\d+)(?:e[-+]?\\\\d+)?)';\nfabric.fontPaths = { };\nfabric.iMatrix = [1, 0, 0, 1, 0, 0];\nfabric.canvasModule = 'canvas';\n\n/**\n * Pixel limit for cache canvases. 1Mpx , 4Mpx should be fine.\n * @since 1.7.14\n * @type Number\n * @default\n */\nfabric.perfLimitSizeTotal = 2097152;\n\n/**\n * Pixel limit for cache canvases width or height. IE fixes the maximum at 5000\n * @since 1.7.14\n * @type Number\n * @default\n */\nfabric.maxCacheSideLimit = 4096;\n\n/**\n * Lowest pixel limit for cache canvases, set at 256PX\n * @since 1.7.14\n * @type Number\n * @default\n */\nfabric.minCacheSideLimit = 256;\n\n/**\n * Cache Object for widths of chars in text rendering.\n */\nfabric.charWidthsCache = { };\n\n/**\n * if webgl is enabled and available, textureSize will determine the size\n * of the canvas backend\n * @since 2.0.0\n * @type Number\n * @default\n */\nfabric.textureSize = 2048;\n\n/**\n * Enable webgl for filtering picture is available\n * A filtering backend will be initialized, this will both take memory and\n * time since a default 2048x2048 canvas will be created for the gl context\n * @since 2.0.0\n * @type Boolean\n * @default\n */\nfabric.enableGLFiltering = true;\n\n/**\n * Device Pixel Ratio\n * @see https://developer.apple.com/library/safari/documentation/AudioVideo/Conceptual/HTML-canvas-guide/SettingUptheCanvas/SettingUptheCanvas.html\n */\nfabric.devicePixelRatio = fabric.window.devicePixelRatio ||\n fabric.window.webkitDevicePixelRatio ||\n fabric.window.mozDevicePixelRatio ||\n 1;\n/**\n * Browser-specific constant to adjust CanvasRenderingContext2D.shadowBlur value,\n * which is unitless and not rendered equally across browsers.\n *\n * Values that work quite well (as of October 2017) are:\n * - Chrome: 1.5\n * - Edge: 1.75\n * - Firefox: 0.9\n * - Safari: 0.95\n *\n * @since 2.0.0\n * @type Number\n * @default 1\n */\nfabric.browserShadowBlurConstant = 1;\n\n/**\n * This object contains the result of arc to beizer conversion for faster retrieving if the same arc needs to be converted again.\n * It was an internal variable, is accessible since version 2.3.4\n */\nfabric.arcToSegmentsCache = { };\n\n/**\n * This object keeps the results of the boundsOfCurve calculation mapped by the joined arguments necessary to calculate it.\n * It does speed up calculation, if you parse and add always the same paths, but in case of heavy usage of freedrawing\n * you do not get any speed benefit and you get a big object in memory.\n * The object was a private variable before, while now is appended to the lib so that you have access to it and you\n * can eventually clear it.\n * It was an internal variable, is accessible since version 2.3.4\n */\nfabric.boundsOfCurveCache = { };\n\n/**\n * If disabled boundsOfCurveCache is not used. For apps that make heavy usage of pencil drawing probably disabling it is better\n * @default true\n */\nfabric.cachesBoundsOfCurve = true;\n\nfabric.initFilterBackend = function() {\n if (fabric.enableGLFiltering && fabric.isWebglSupported && fabric.isWebglSupported(fabric.textureSize)) {\n console.log('max texture size: ' + fabric.maxTextureSize);\n return (new fabric.WebglFilterBackend({ tileSize: fabric.textureSize }));\n }\n else if (fabric.Canvas2dFilterBackend) {\n return (new fabric.Canvas2dFilterBackend());\n }\n};\n\n\nif (typeof document !== 'undefined' && typeof window !== 'undefined') {\n // ensure globality even if entire library were function wrapped (as in Meteor.js packaging system)\n window.fabric = fabric;\n}\n\n\n(function() {\n\n /**\n * @private\n * @param {String} eventName\n * @param {Function} handler\n */\n function _removeEventListener(eventName, handler) {\n if (!this.__eventListeners[eventName]) {\n return;\n }\n var eventListener = this.__eventListeners[eventName];\n if (handler) {\n eventListener[eventListener.indexOf(handler)] = false;\n }\n else {\n fabric.util.array.fill(eventListener, false);\n }\n }\n\n /**\n * Observes specified event\n * @deprecated `observe` deprecated since 0.8.34 (use `on` instead)\n * @memberOf fabric.Observable\n * @alias on\n * @param {String|Object} eventName Event name (eg. 'after:render') or object with key/value pairs (eg. {'after:render': handler, 'selection:cleared': handler})\n * @param {Function} handler Function that receives a notification when an event of the specified type occurs\n * @return {Self} thisArg\n * @chainable\n */\n function observe(eventName, handler) {\n if (!this.__eventListeners) {\n this.__eventListeners = { };\n }\n // one object with key/value pairs was passed\n if (arguments.length === 1) {\n for (var prop in eventName) {\n this.on(prop, eventName[prop]);\n }\n }\n else {\n if (!this.__eventListeners[eventName]) {\n this.__eventListeners[eventName] = [];\n }\n this.__eventListeners[eventName].push(handler);\n }\n return this;\n }\n\n /**\n * Stops event observing for a particular event handler. Calling this method\n * without arguments removes all handlers for all events\n * @deprecated `stopObserving` deprecated since 0.8.34 (use `off` instead)\n * @memberOf fabric.Observable\n * @alias off\n * @param {String|Object} eventName Event name (eg. 'after:render') or object with key/value pairs (eg. {'after:render': handler, 'selection:cleared': handler})\n * @param {Function} handler Function to be deleted from EventListeners\n * @return {Self} thisArg\n * @chainable\n */\n function stopObserving(eventName, handler) {\n if (!this.__eventListeners) {\n return;\n }\n\n // remove all key/value pairs (event name -> event handler)\n if (arguments.length === 0) {\n for (eventName in this.__eventListeners) {\n _removeEventListener.call(this, eventName);\n }\n }\n // one object with key/value pairs was passed\n else if (arguments.length === 1 && typeof arguments[0] === 'object') {\n for (var prop in eventName) {\n _removeEventListener.call(this, prop, eventName[prop]);\n }\n }\n else {\n _removeEventListener.call(this, eventName, handler);\n }\n return this;\n }\n\n /**\n * Fires event with an optional options object\n * @deprecated `fire` deprecated since 1.0.7 (use `trigger` instead)\n * @memberOf fabric.Observable\n * @alias trigger\n * @param {String} eventName Event name to fire\n * @param {Object} [options] Options object\n * @return {Self} thisArg\n * @chainable\n */\n function fire(eventName, options) {\n if (!this.__eventListeners) {\n return;\n }\n\n var listenersForEvent = this.__eventListeners[eventName];\n if (!listenersForEvent) {\n return;\n }\n\n for (var i = 0, len = listenersForEvent.length; i < len; i++) {\n listenersForEvent[i] && listenersForEvent[i].call(this, options || { });\n }\n this.__eventListeners[eventName] = listenersForEvent.filter(function(value) {\n return value !== false;\n });\n return this;\n }\n\n /**\n * @namespace fabric.Observable\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-2#events}\n * @see {@link http://fabricjs.com/events|Events demo}\n */\n fabric.Observable = {\n observe: observe,\n stopObserving: stopObserving,\n fire: fire,\n\n on: observe,\n off: stopObserving,\n trigger: fire\n };\n})();\n\n\n/**\n * @namespace fabric.Collection\n */\nfabric.Collection = {\n\n _objects: [],\n\n /**\n * Adds objects to collection, Canvas or Group, then renders canvas\n * (if `renderOnAddRemove` is not `false`).\n * in case of Group no changes to bounding box are made.\n * Objects should be instances of (or inherit from) fabric.Object\n * Use of this function is highly discouraged for groups.\n * you can add a bunch of objects with the add method but then you NEED\n * to run a addWithUpdate call for the Group class or position/bbox will be wrong.\n * @param {...fabric.Object} object Zero or more fabric instances\n * @return {Self} thisArg\n * @chainable\n */\n add: function () {\n this._objects.push.apply(this._objects, arguments);\n if (this._onObjectAdded) {\n for (var i = 0, length = arguments.length; i < length; i++) {\n this._onObjectAdded(arguments[i]);\n }\n }\n this.renderOnAddRemove && this.requestRenderAll();\n return this;\n },\n\n /**\n * Inserts an object into collection at specified index, then renders canvas (if `renderOnAddRemove` is not `false`)\n * An object should be an instance of (or inherit from) fabric.Object\n * Use of this function is highly discouraged for groups.\n * you can add a bunch of objects with the insertAt method but then you NEED\n * to run a addWithUpdate call for the Group class or position/bbox will be wrong.\n * @param {Object} object Object to insert\n * @param {Number} index Index to insert object at\n * @param {Boolean} nonSplicing When `true`, no splicing (shifting) of objects occurs\n * @return {Self} thisArg\n * @chainable\n */\n insertAt: function (object, index, nonSplicing) {\n var objects = this._objects;\n if (nonSplicing) {\n objects[index] = object;\n }\n else {\n objects.splice(index, 0, object);\n }\n this._onObjectAdded && this._onObjectAdded(object);\n this.renderOnAddRemove && this.requestRenderAll();\n return this;\n },\n\n /**\n * Removes objects from a collection, then renders canvas (if `renderOnAddRemove` is not `false`)\n * @param {...fabric.Object} object Zero or more fabric instances\n * @return {Self} thisArg\n * @chainable\n */\n remove: function() {\n var objects = this._objects,\n index, somethingRemoved = false;\n\n for (var i = 0, length = arguments.length; i < length; i++) {\n index = objects.indexOf(arguments[i]);\n\n // only call onObjectRemoved if an object was actually removed\n if (index !== -1) {\n somethingRemoved = true;\n objects.splice(index, 1);\n this._onObjectRemoved && this._onObjectRemoved(arguments[i]);\n }\n }\n\n this.renderOnAddRemove && somethingRemoved && this.requestRenderAll();\n return this;\n },\n\n /**\n * Executes given function for each object in this group\n * @param {Function} callback\n * Callback invoked with current object as first argument,\n * index - as second and an array of all objects - as third.\n * Callback is invoked in a context of Global Object (e.g. `window`)\n * when no `context` argument is given\n *\n * @param {Object} context Context (aka thisObject)\n * @return {Self} thisArg\n * @chainable\n */\n forEachObject: function(callback, context) {\n var objects = this.getObjects();\n for (var i = 0, len = objects.length; i < len; i++) {\n callback.call(context, objects[i], i, objects);\n }\n return this;\n },\n\n /**\n * Returns an array of children objects of this instance\n * Type parameter introduced in 1.3.10\n * since 2.3.5 this method return always a COPY of the array;\n * @param {String} [type] When specified, only objects of this type are returned\n * @return {Array}\n */\n getObjects: function(type) {\n if (typeof type === 'undefined') {\n return this._objects.concat();\n }\n return this._objects.filter(function(o) {\n return o.type === type;\n });\n },\n\n /**\n * Returns object at specified index\n * @param {Number} index\n * @return {Self} thisArg\n */\n item: function (index) {\n return this._objects[index];\n },\n\n /**\n * Returns true if collection contains no objects\n * @return {Boolean} true if collection is empty\n */\n isEmpty: function () {\n return this._objects.length === 0;\n },\n\n /**\n * Returns a size of a collection (i.e: length of an array containing its objects)\n * @return {Number} Collection size\n */\n size: function() {\n return this._objects.length;\n },\n\n /**\n * Returns true if collection contains an object\n * @param {Object} object Object to check against\n * @return {Boolean} `true` if collection contains an object\n */\n contains: function(object) {\n return this._objects.indexOf(object) > -1;\n },\n\n /**\n * Returns number representation of a collection complexity\n * @return {Number} complexity\n */\n complexity: function () {\n return this._objects.reduce(function (memo, current) {\n memo += current.complexity ? current.complexity() : 0;\n return memo;\n }, 0);\n }\n};\n\n\n/**\n * @namespace fabric.CommonMethods\n */\nfabric.CommonMethods = {\n\n /**\n * Sets object's properties from options\n * @param {Object} [options] Options object\n */\n _setOptions: function(options) {\n for (var prop in options) {\n this.set(prop, options[prop]);\n }\n },\n\n /**\n * @private\n * @param {Object} [filler] Options object\n * @param {String} [property] property to set the Gradient to\n */\n _initGradient: function(filler, property) {\n if (filler && filler.colorStops && !(filler instanceof fabric.Gradient)) {\n this.set(property, new fabric.Gradient(filler));\n }\n },\n\n /**\n * @private\n * @param {Object} [filler] Options object\n * @param {String} [property] property to set the Pattern to\n * @param {Function} [callback] callback to invoke after pattern load\n */\n _initPattern: function(filler, property, callback) {\n if (filler && filler.source && !(filler instanceof fabric.Pattern)) {\n this.set(property, new fabric.Pattern(filler, callback));\n }\n else {\n callback && callback();\n }\n },\n\n /**\n * @private\n * @param {Object} [options] Options object\n */\n _initClipping: function(options) {\n if (!options.clipTo || typeof options.clipTo !== 'string') {\n return;\n }\n\n var functionBody = fabric.util.getFunctionBody(options.clipTo);\n if (typeof functionBody !== 'undefined') {\n this.clipTo = new Function('ctx', functionBody);\n }\n },\n\n /**\n * @private\n */\n _setObject: function(obj) {\n for (var prop in obj) {\n this._set(prop, obj[prop]);\n }\n },\n\n /**\n * Sets property to a given value. When changing position/dimension -related properties (left, top, scale, angle, etc.) `set` does not update position of object's borders/controls. If you need to update those, call `setCoords()`.\n * @param {String|Object} key Property name or object (if object, iterate over the object properties)\n * @param {Object|Function} value Property value (if function, the value is passed into it and its return value is used as a new one)\n * @return {fabric.Object} thisArg\n * @chainable\n */\n set: function(key, value) {\n if (typeof key === 'object') {\n this._setObject(key);\n }\n else {\n if (typeof value === 'function' && key !== 'clipTo') {\n this._set(key, value(this.get(key)));\n }\n else {\n this._set(key, value);\n }\n }\n return this;\n },\n\n _set: function(key, value) {\n this[key] = value;\n },\n\n /**\n * Toggles specified property from `true` to `false` or from `false` to `true`\n * @param {String} property Property to toggle\n * @return {fabric.Object} thisArg\n * @chainable\n */\n toggle: function(property) {\n var value = this.get(property);\n if (typeof value === 'boolean') {\n this.set(property, !value);\n }\n return this;\n },\n\n /**\n * Basic getter\n * @param {String} property Property name\n * @return {*} value of a property\n */\n get: function(property) {\n return this[property];\n }\n};\n\n\n(function(global) {\n\n var sqrt = Math.sqrt,\n atan2 = Math.atan2,\n pow = Math.pow,\n abs = Math.abs,\n PiBy180 = Math.PI / 180,\n PiBy2 = Math.PI / 2;\n\n /**\n * @namespace fabric.util\n */\n fabric.util = {\n\n /**\n * Calculate the cos of an angle, avoiding returning floats for known results\n * @static\n * @memberOf fabric.util\n * @param {Number} angle the angle in radians or in degree\n * @return {Number}\n */\n cos: function(angle) {\n if (angle === 0) { return 1; }\n if (angle < 0) {\n // cos(a) = cos(-a)\n angle = -angle;\n }\n var angleSlice = angle / PiBy2;\n switch (angleSlice) {\n case 1: case 3: return 0;\n case 2: return -1;\n }\n return Math.cos(angle);\n },\n\n /**\n * Calculate the sin of an angle, avoiding returning floats for known results\n * @static\n * @memberOf fabric.util\n * @param {Number} angle the angle in radians or in degree\n * @return {Number}\n */\n sin: function(angle) {\n if (angle === 0) { return 0; }\n var angleSlice = angle / PiBy2, sign = 1;\n if (angle < 0) {\n // sin(-a) = -sin(a)\n sign = -1;\n }\n switch (angleSlice) {\n case 1: return sign;\n case 2: return 0;\n case 3: return -sign;\n }\n return Math.sin(angle);\n },\n\n /**\n * Removes value from an array.\n * Presence of value (and its position in an array) is determined via `Array.prototype.indexOf`\n * @static\n * @memberOf fabric.util\n * @param {Array} array\n * @param {*} value\n * @return {Array} original array\n */\n removeFromArray: function(array, value) {\n var idx = array.indexOf(value);\n if (idx !== -1) {\n array.splice(idx, 1);\n }\n return array;\n },\n\n /**\n * Returns random number between 2 specified ones.\n * @static\n * @memberOf fabric.util\n * @param {Number} min lower limit\n * @param {Number} max upper limit\n * @return {Number} random value (between min and max)\n */\n getRandomInt: function(min, max) {\n return Math.floor(Math.random() * (max - min + 1)) + min;\n },\n\n /**\n * Transforms degrees to radians.\n * @static\n * @memberOf fabric.util\n * @param {Number} degrees value in degrees\n * @return {Number} value in radians\n */\n degreesToRadians: function(degrees) {\n return degrees * PiBy180;\n },\n\n /**\n * Transforms radians to degrees.\n * @static\n * @memberOf fabric.util\n * @param {Number} radians value in radians\n * @return {Number} value in degrees\n */\n radiansToDegrees: function(radians) {\n return radians / PiBy180;\n },\n\n /**\n * Rotates `point` around `origin` with `radians`\n * @static\n * @memberOf fabric.util\n * @param {fabric.Point} point The point to rotate\n * @param {fabric.Point} origin The origin of the rotation\n * @param {Number} radians The radians of the angle for the rotation\n * @return {fabric.Point} The new rotated point\n */\n rotatePoint: function(point, origin, radians) {\n point.subtractEquals(origin);\n var v = fabric.util.rotateVector(point, radians);\n return new fabric.Point(v.x, v.y).addEquals(origin);\n },\n\n /**\n * Rotates `vector` with `radians`\n * @static\n * @memberOf fabric.util\n * @param {Object} vector The vector to rotate (x and y)\n * @param {Number} radians The radians of the angle for the rotation\n * @return {Object} The new rotated point\n */\n rotateVector: function(vector, radians) {\n var sin = fabric.util.sin(radians),\n cos = fabric.util.cos(radians),\n rx = vector.x * cos - vector.y * sin,\n ry = vector.x * sin + vector.y * cos;\n return {\n x: rx,\n y: ry\n };\n },\n\n /**\n * Apply transform t to point p\n * @static\n * @memberOf fabric.util\n * @param {fabric.Point} p The point to transform\n * @param {Array} t The transform\n * @param {Boolean} [ignoreOffset] Indicates that the offset should not be applied\n * @return {fabric.Point} The transformed point\n */\n transformPoint: function(p, t, ignoreOffset) {\n if (ignoreOffset) {\n return new fabric.Point(\n t[0] * p.x + t[2] * p.y,\n t[1] * p.x + t[3] * p.y\n );\n }\n return new fabric.Point(\n t[0] * p.x + t[2] * p.y + t[4],\n t[1] * p.x + t[3] * p.y + t[5]\n );\n },\n\n /**\n * Returns coordinates of points's bounding rectangle (left, top, width, height)\n * @param {Array} points 4 points array\n * @return {Object} Object with left, top, width, height properties\n */\n makeBoundingBoxFromPoints: function(points) {\n var xPoints = [points[0].x, points[1].x, points[2].x, points[3].x],\n minX = fabric.util.array.min(xPoints),\n maxX = fabric.util.array.max(xPoints),\n width = maxX - minX,\n yPoints = [points[0].y, points[1].y, points[2].y, points[3].y],\n minY = fabric.util.array.min(yPoints),\n maxY = fabric.util.array.max(yPoints),\n height = maxY - minY;\n\n return {\n left: minX,\n top: minY,\n width: width,\n height: height\n };\n },\n\n /**\n * Invert transformation t\n * @static\n * @memberOf fabric.util\n * @param {Array} t The transform\n * @return {Array} The inverted transform\n */\n invertTransform: function(t) {\n var a = 1 / (t[0] * t[3] - t[1] * t[2]),\n r = [a * t[3], -a * t[1], -a * t[2], a * t[0]],\n o = fabric.util.transformPoint({ x: t[4], y: t[5] }, r, true);\n r[4] = -o.x;\n r[5] = -o.y;\n return r;\n },\n\n /**\n * A wrapper around Number#toFixed, which contrary to native method returns number, not string.\n * @static\n * @memberOf fabric.util\n * @param {Number|String} number number to operate on\n * @param {Number} fractionDigits number of fraction digits to \"leave\"\n * @return {Number}\n */\n toFixed: function(number, fractionDigits) {\n return parseFloat(Number(number).toFixed(fractionDigits));\n },\n\n /**\n * Converts from attribute value to pixel value if applicable.\n * Returns converted pixels or original value not converted.\n * @param {Number|String} value number to operate on\n * @param {Number} fontSize\n * @return {Number|String}\n */\n parseUnit: function(value, fontSize) {\n var unit = /\\D{0,2}$/.exec(value),\n number = parseFloat(value);\n if (!fontSize) {\n fontSize = fabric.Text.DEFAULT_SVG_FONT_SIZE;\n }\n switch (unit[0]) {\n case 'mm':\n return number * fabric.DPI / 25.4;\n\n case 'cm':\n return number * fabric.DPI / 2.54;\n\n case 'in':\n return number * fabric.DPI;\n\n case 'pt':\n return number * fabric.DPI / 72; // or * 4 / 3\n\n case 'pc':\n return number * fabric.DPI / 72 * 12; // or * 16\n\n case 'em':\n return number * fontSize;\n\n default:\n return number;\n }\n },\n\n /**\n * Function which always returns `false`.\n * @static\n * @memberOf fabric.util\n * @return {Boolean}\n */\n falseFunction: function() {\n return false;\n },\n\n /**\n * Returns klass \"Class\" object of given namespace\n * @memberOf fabric.util\n * @param {String} type Type of object (eg. 'circle')\n * @param {String} namespace Namespace to get klass \"Class\" object from\n * @return {Object} klass \"Class\"\n */\n getKlass: function(type, namespace) {\n // capitalize first letter only\n type = fabric.util.string.camelize(type.charAt(0).toUpperCase() + type.slice(1));\n return fabric.util.resolveNamespace(namespace)[type];\n },\n\n /**\n * Returns array of attributes for given svg that fabric parses\n * @memberOf fabric.util\n * @param {String} type Type of svg element (eg. 'circle')\n * @return {Array} string names of supported attributes\n */\n getSvgAttributes: function(type) {\n var attributes = [\n 'instantiated_by_use',\n 'style',\n 'id',\n 'class'\n ];\n switch (type) {\n case 'linearGradient':\n attributes = attributes.concat(['x1', 'y1', 'x2', 'y2', 'gradientUnits', 'gradientTransform']);\n break;\n case 'radialGradient':\n attributes = attributes.concat(['gradientUnits', 'gradientTransform', 'cx', 'cy', 'r', 'fx', 'fy', 'fr']);\n break;\n case 'stop':\n attributes = attributes.concat(['offset', 'stop-color', 'stop-opacity']);\n break;\n }\n return attributes;\n },\n\n /**\n * Returns object of given namespace\n * @memberOf fabric.util\n * @param {String} namespace Namespace string e.g. 'fabric.Image.filter' or 'fabric'\n * @return {Object} Object for given namespace (default fabric)\n */\n resolveNamespace: function(namespace) {\n if (!namespace) {\n return fabric;\n }\n\n var parts = namespace.split('.'),\n len = parts.length, i,\n obj = global || fabric.window;\n\n for (i = 0; i < len; ++i) {\n obj = obj[parts[i]];\n }\n\n return obj;\n },\n\n /**\n * Loads image element from given url and passes it to a callback\n * @memberOf fabric.util\n * @param {String} url URL representing an image\n * @param {Function} callback Callback; invoked with loaded image\n * @param {*} [context] Context to invoke callback in\n * @param {Object} [crossOrigin] crossOrigin value to set image element to\n */\n loadImage: function(url, callback, context, crossOrigin) {\n if (!url) {\n callback && callback.call(context, url);\n return;\n }\n\n var img = fabric.util.createImage();\n\n /** @ignore */\n var onLoadCallback = function () {\n callback && callback.call(context, img);\n img = img.onload = img.onerror = null;\n };\n\n img.onload = onLoadCallback;\n /** @ignore */\n img.onerror = function() {\n fabric.log('Error loading ' + img.src);\n callback && callback.call(context, null, true);\n img = img.onload = img.onerror = null;\n };\n\n // data-urls appear to be buggy with crossOrigin\n // https://github.com/kangax/fabric.js/commit/d0abb90f1cd5c5ef9d2a94d3fb21a22330da3e0a#commitcomment-4513767\n // see https://code.google.com/p/chromium/issues/detail?id=315152\n // https://bugzilla.mozilla.org/show_bug.cgi?id=935069\n if (url.indexOf('data') !== 0 && crossOrigin) {\n img.crossOrigin = crossOrigin;\n }\n\n // IE10 / IE11-Fix: SVG contents from data: URI\n // will only be available if the IMG is present\n // in the DOM (and visible)\n if (url.substring(0,14) === 'data:image/svg') {\n img.onload = null;\n fabric.util.loadImageInDom(img, onLoadCallback);\n }\n\n img.src = url;\n },\n\n /**\n * Attaches SVG image with data: URL to the dom\n * @memberOf fabric.util\n * @param {Object} img Image object with data:image/svg src\n * @param {Function} callback Callback; invoked with loaded image\n * @return {Object} DOM element (div containing the SVG image)\n */\n loadImageInDom: function(img, onLoadCallback) {\n var div = fabric.document.createElement('div');\n div.style.width = div.style.height = '1px';\n div.style.left = div.style.top = '-100%';\n div.style.position = 'absolute';\n div.appendChild(img);\n fabric.document.querySelector('body').appendChild(div);\n /**\n * Wrap in function to:\n * 1. Call existing callback\n * 2. Cleanup DOM\n */\n img.onload = function () {\n onLoadCallback();\n div.parentNode.removeChild(div);\n div = null;\n };\n },\n\n /**\n * Creates corresponding fabric instances from their object representations\n * @static\n * @memberOf fabric.util\n * @param {Array} objects Objects to enliven\n * @param {Function} callback Callback to invoke when all objects are created\n * @param {String} namespace Namespace to get klass \"Class\" object from\n * @param {Function} reviver Method for further parsing of object elements,\n * called after each fabric object created.\n */\n enlivenObjects: function(objects, callback, namespace, reviver) {\n objects = objects || [];\n\n function onLoaded() {\n if (++numLoadedObjects === numTotalObjects) {\n callback && callback(enlivenedObjects);\n }\n }\n\n var enlivenedObjects = [],\n numLoadedObjects = 0,\n numTotalObjects = objects.length;\n\n if (!numTotalObjects) {\n callback && callback(enlivenedObjects);\n return;\n }\n\n objects.forEach(function (o, index) {\n // if sparse array\n if (!o || !o.type) {\n onLoaded();\n return;\n }\n var klass = fabric.util.getKlass(o.type, namespace);\n klass.fromObject(o, function (obj, error) {\n error || (enlivenedObjects[index] = obj);\n reviver && reviver(o, obj, error);\n onLoaded();\n });\n });\n },\n\n /**\n * Create and wait for loading of patterns\n * @static\n * @memberOf fabric.util\n * @param {Array} patterns Objects to enliven\n * @param {Function} callback Callback to invoke when all objects are created\n * called after each fabric object created.\n */\n enlivenPatterns: function(patterns, callback) {\n patterns = patterns || [];\n\n function onLoaded() {\n if (++numLoadedPatterns === numPatterns) {\n callback && callback(enlivenedPatterns);\n }\n }\n\n var enlivenedPatterns = [],\n numLoadedPatterns = 0,\n numPatterns = patterns.length;\n\n if (!numPatterns) {\n callback && callback(enlivenedPatterns);\n return;\n }\n\n patterns.forEach(function (p, index) {\n if (p && p.source) {\n new fabric.Pattern(p, function(pattern) {\n enlivenedPatterns[index] = pattern;\n onLoaded();\n });\n }\n else {\n enlivenedPatterns[index] = p;\n onLoaded();\n }\n });\n },\n\n /**\n * Groups SVG elements (usually those retrieved from SVG document)\n * @static\n * @memberOf fabric.util\n * @param {Array} elements SVG elements to group\n * @param {Object} [options] Options object\n * @param {String} path Value to set sourcePath to\n * @return {fabric.Object|fabric.Group}\n */\n groupSVGElements: function(elements, options, path) {\n var object;\n if (elements && elements.length === 1) {\n return elements[0];\n }\n if (options) {\n if (options.width && options.height) {\n options.centerPoint = {\n x: options.width / 2,\n y: options.height / 2\n };\n }\n else {\n delete options.width;\n delete options.height;\n }\n }\n object = new fabric.Group(elements, options);\n if (typeof path !== 'undefined') {\n object.sourcePath = path;\n }\n return object;\n },\n\n /**\n * Populates an object with properties of another object\n * @static\n * @memberOf fabric.util\n * @param {Object} source Source object\n * @param {Object} destination Destination object\n * @return {Array} properties Properties names to include\n */\n populateWithProperties: function(source, destination, properties) {\n if (properties && Object.prototype.toString.call(properties) === '[object Array]') {\n for (var i = 0, len = properties.length; i < len; i++) {\n if (properties[i] in source) {\n destination[properties[i]] = source[properties[i]];\n }\n }\n }\n },\n\n /**\n * Draws a dashed line between two points\n *\n * This method is used to draw dashed line around selection area.\n * See dotted stroke in canvas\n *\n * @param {CanvasRenderingContext2D} ctx context\n * @param {Number} x start x coordinate\n * @param {Number} y start y coordinate\n * @param {Number} x2 end x coordinate\n * @param {Number} y2 end y coordinate\n * @param {Array} da dash array pattern\n */\n drawDashedLine: function(ctx, x, y, x2, y2, da) {\n var dx = x2 - x,\n dy = y2 - y,\n len = sqrt(dx * dx + dy * dy),\n rot = atan2(dy, dx),\n dc = da.length,\n di = 0,\n draw = true;\n\n ctx.save();\n ctx.translate(x, y);\n ctx.moveTo(0, 0);\n ctx.rotate(rot);\n\n x = 0;\n while (len > x) {\n x += da[di++ % dc];\n if (x > len) {\n x = len;\n }\n ctx[draw ? 'lineTo' : 'moveTo'](x, 0);\n draw = !draw;\n }\n\n ctx.restore();\n },\n\n /**\n * Creates canvas element\n * @static\n * @memberOf fabric.util\n * @return {CanvasElement} initialized canvas element\n */\n createCanvasElement: function() {\n return fabric.document.createElement('canvas');\n },\n\n /**\n * Creates a canvas element that is a copy of another and is also painted\n * @param {CanvasElement} canvas to copy size and content of\n * @static\n * @memberOf fabric.util\n * @return {CanvasElement} initialized canvas element\n */\n copyCanvasElement: function(canvas) {\n var newCanvas = fabric.util.createCanvasElement();\n newCanvas.width = canvas.width;\n newCanvas.height = canvas.height;\n newCanvas.getContext('2d').drawImage(canvas, 0, 0);\n return newCanvas;\n },\n\n /**\n * since 2.6.0 moved from canvas instance to utility.\n * @param {CanvasElement} canvasEl to copy size and content of\n * @param {String} format 'jpeg' or 'png', in some browsers 'webp' is ok too\n * @param {Number} quality <= 1 and > 0\n * @static\n * @memberOf fabric.util\n * @return {String} data url\n */\n toDataURL: function(canvasEl, format, quality) {\n return canvasEl.toDataURL('image/' + format, quality);\n },\n\n /**\n * Creates image element (works on client and node)\n * @static\n * @memberOf fabric.util\n * @return {HTMLImageElement} HTML image element\n */\n createImage: function() {\n return fabric.document.createElement('img');\n },\n\n /**\n * @static\n * @memberOf fabric.util\n * @deprecated since 2.0.0\n * @param {fabric.Object} receiver Object implementing `clipTo` method\n * @param {CanvasRenderingContext2D} ctx Context to clip\n */\n clipContext: function(receiver, ctx) {\n ctx.save();\n ctx.beginPath();\n receiver.clipTo(ctx);\n ctx.clip();\n },\n\n /**\n * Multiply matrix A by matrix B to nest transformations\n * @static\n * @memberOf fabric.util\n * @param {Array} a First transformMatrix\n * @param {Array} b Second transformMatrix\n * @param {Boolean} is2x2 flag to multiply matrices as 2x2 matrices\n * @return {Array} The product of the two transform matrices\n */\n multiplyTransformMatrices: function(a, b, is2x2) {\n // Matrix multiply a * b\n return [\n a[0] * b[0] + a[2] * b[1],\n a[1] * b[0] + a[3] * b[1],\n a[0] * b[2] + a[2] * b[3],\n a[1] * b[2] + a[3] * b[3],\n is2x2 ? 0 : a[0] * b[4] + a[2] * b[5] + a[4],\n is2x2 ? 0 : a[1] * b[4] + a[3] * b[5] + a[5]\n ];\n },\n\n /**\n * Decomposes standard 2x2 matrix into transform componentes\n * @static\n * @memberOf fabric.util\n * @param {Array} a transformMatrix\n * @return {Object} Components of transform\n */\n qrDecompose: function(a) {\n var angle = atan2(a[1], a[0]),\n denom = pow(a[0], 2) + pow(a[1], 2),\n scaleX = sqrt(denom),\n scaleY = (a[0] * a[3] - a[2] * a [1]) / scaleX,\n skewX = atan2(a[0] * a[2] + a[1] * a [3], denom);\n return {\n angle: angle / PiBy180,\n scaleX: scaleX,\n scaleY: scaleY,\n skewX: skewX / PiBy180,\n skewY: 0,\n translateX: a[4],\n translateY: a[5]\n };\n },\n\n customTransformMatrix: function(scaleX, scaleY, skewX) {\n var skewMatrixX = [1, 0, abs(Math.tan(skewX * PiBy180)), 1],\n scaleMatrix = [abs(scaleX), 0, 0, abs(scaleY)];\n return fabric.util.multiplyTransformMatrices(scaleMatrix, skewMatrixX, true);\n },\n\n /**\n * reset an object transform state to neutral. Top and left are not accounted for\n * @static\n * @memberOf fabric.util\n * @param {fabric.Object} target object to transform\n */\n resetObjectTransform: function (target) {\n target.scaleX = 1;\n target.scaleY = 1;\n target.skewX = 0;\n target.skewY = 0;\n target.flipX = false;\n target.flipY = false;\n target.rotate(0);\n },\n\n /**\n * Extract Object transform values\n * @static\n * @memberOf fabric.util\n * @param {fabric.Object} target object to read from\n * @return {Object} Components of transform\n */\n saveObjectTransform: function (target) {\n return {\n scaleX: target.scaleX,\n scaleY: target.scaleY,\n skewX: target.skewX,\n skewY: target.skewY,\n angle: target.angle,\n left: target.left,\n flipX: target.flipX,\n flipY: target.flipY,\n top: target.top\n };\n },\n\n /**\n * Returns string representation of function body\n * @param {Function} fn Function to get body of\n * @return {String} Function body\n */\n getFunctionBody: function(fn) {\n return (String(fn).match(/function[^{]*\\{([\\s\\S]*)\\}/) || {})[1];\n },\n\n /**\n * Returns true if context has transparent pixel\n * at specified location (taking tolerance into account)\n * @param {CanvasRenderingContext2D} ctx context\n * @param {Number} x x coordinate\n * @param {Number} y y coordinate\n * @param {Number} tolerance Tolerance\n */\n isTransparent: function(ctx, x, y, tolerance) {\n\n // If tolerance is > 0 adjust start coords to take into account.\n // If moves off Canvas fix to 0\n if (tolerance > 0) {\n if (x > tolerance) {\n x -= tolerance;\n }\n else {\n x = 0;\n }\n if (y > tolerance) {\n y -= tolerance;\n }\n else {\n y = 0;\n }\n }\n\n var _isTransparent = true, i, temp,\n imageData = ctx.getImageData(x, y, (tolerance * 2) || 1, (tolerance * 2) || 1),\n l = imageData.data.length;\n\n // Split image data - for tolerance > 1, pixelDataSize = 4;\n for (i = 3; i < l; i += 4) {\n temp = imageData.data[i];\n _isTransparent = temp <= 0;\n if (_isTransparent === false) {\n break; // Stop if colour found\n }\n }\n\n imageData = null;\n\n return _isTransparent;\n },\n\n /**\n * Parse preserveAspectRatio attribute from element\n * @param {string} attribute to be parsed\n * @return {Object} an object containing align and meetOrSlice attribute\n */\n parsePreserveAspectRatioAttribute: function(attribute) {\n var meetOrSlice = 'meet', alignX = 'Mid', alignY = 'Mid',\n aspectRatioAttrs = attribute.split(' '), align;\n\n if (aspectRatioAttrs && aspectRatioAttrs.length) {\n meetOrSlice = aspectRatioAttrs.pop();\n if (meetOrSlice !== 'meet' && meetOrSlice !== 'slice') {\n align = meetOrSlice;\n meetOrSlice = 'meet';\n }\n else if (aspectRatioAttrs.length) {\n align = aspectRatioAttrs.pop();\n }\n }\n //divide align in alignX and alignY\n alignX = align !== 'none' ? align.slice(1, 4) : 'none';\n alignY = align !== 'none' ? align.slice(5, 8) : 'none';\n return {\n meetOrSlice: meetOrSlice,\n alignX: alignX,\n alignY: alignY\n };\n },\n\n /**\n * Clear char widths cache for the given font family or all the cache if no\n * fontFamily is specified.\n * Use it if you know you are loading fonts in a lazy way and you are not waiting\n * for custom fonts to load properly when adding text objects to the canvas.\n * If a text object is added when its own font is not loaded yet, you will get wrong\n * measurement and so wrong bounding boxes.\n * After the font cache is cleared, either change the textObject text content or call\n * initDimensions() to trigger a recalculation\n * @memberOf fabric.util\n * @param {String} [fontFamily] font family to clear\n */\n clearFabricFontCache: function(fontFamily) {\n fontFamily = (fontFamily || '').toLowerCase();\n if (!fontFamily) {\n fabric.charWidthsCache = { };\n }\n else if (fabric.charWidthsCache[fontFamily]) {\n delete fabric.charWidthsCache[fontFamily];\n }\n },\n\n /**\n * Given current aspect ratio, determines the max width and height that can\n * respect the total allowed area for the cache.\n * @memberOf fabric.util\n * @param {Number} ar aspect ratio\n * @param {Number} maximumArea Maximum area you want to achieve\n * @return {Object.x} Limited dimensions by X\n * @return {Object.y} Limited dimensions by Y\n */\n limitDimsByArea: function(ar, maximumArea) {\n var roughWidth = Math.sqrt(maximumArea * ar),\n perfLimitSizeY = Math.floor(maximumArea / roughWidth);\n return { x: Math.floor(roughWidth), y: perfLimitSizeY };\n },\n\n capValue: function(min, value, max) {\n return Math.max(min, Math.min(value, max));\n },\n\n findScaleToFit: function(source, destination) {\n return Math.min(destination.width / source.width, destination.height / source.height);\n },\n\n findScaleToCover: function(source, destination) {\n return Math.max(destination.width / source.width, destination.height / source.height);\n }\n };\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function() {\n\n var _join = Array.prototype.join;\n\n /* Adapted from http://dxr.mozilla.org/mozilla-central/source/content/svg/content/src/nsSVGPathDataParser.cpp\n * by Andrea Bogazzi code is under MPL. if you don't have a copy of the license you can take it here\n * http://mozilla.org/MPL/2.0/\n */\n function arcToSegments(toX, toY, rx, ry, large, sweep, rotateX) {\n var argsString = _join.call(arguments);\n if (fabric.arcToSegmentsCache[argsString]) {\n return fabric.arcToSegmentsCache[argsString];\n }\n\n var PI = Math.PI, th = rotateX * PI / 180,\n sinTh = fabric.util.sin(th),\n cosTh = fabric.util.cos(th),\n fromX = 0, fromY = 0;\n\n rx = Math.abs(rx);\n ry = Math.abs(ry);\n\n var px = -cosTh * toX * 0.5 - sinTh * toY * 0.5,\n py = -cosTh * toY * 0.5 + sinTh * toX * 0.5,\n rx2 = rx * rx, ry2 = ry * ry, py2 = py * py, px2 = px * px,\n pl = rx2 * ry2 - rx2 * py2 - ry2 * px2,\n root = 0;\n\n if (pl < 0) {\n var s = Math.sqrt(1 - pl / (rx2 * ry2));\n rx *= s;\n ry *= s;\n }\n else {\n root = (large === sweep ? -1.0 : 1.0) *\n Math.sqrt( pl / (rx2 * py2 + ry2 * px2));\n }\n\n var cx = root * rx * py / ry,\n cy = -root * ry * px / rx,\n cx1 = cosTh * cx - sinTh * cy + toX * 0.5,\n cy1 = sinTh * cx + cosTh * cy + toY * 0.5,\n mTheta = calcVectorAngle(1, 0, (px - cx) / rx, (py - cy) / ry),\n dtheta = calcVectorAngle((px - cx) / rx, (py - cy) / ry, (-px - cx) / rx, (-py - cy) / ry);\n\n if (sweep === 0 && dtheta > 0) {\n dtheta -= 2 * PI;\n }\n else if (sweep === 1 && dtheta < 0) {\n dtheta += 2 * PI;\n }\n\n // Convert into cubic bezier segments <= 90deg\n var segments = Math.ceil(Math.abs(dtheta / PI * 2)),\n result = [], mDelta = dtheta / segments,\n mT = 8 / 3 * Math.sin(mDelta / 4) * Math.sin(mDelta / 4) / Math.sin(mDelta / 2),\n th3 = mTheta + mDelta;\n\n for (var i = 0; i < segments; i++) {\n result[i] = segmentToBezier(mTheta, th3, cosTh, sinTh, rx, ry, cx1, cy1, mT, fromX, fromY);\n fromX = result[i][4];\n fromY = result[i][5];\n mTheta = th3;\n th3 += mDelta;\n }\n fabric.arcToSegmentsCache[argsString] = result;\n return result;\n }\n\n function segmentToBezier(th2, th3, cosTh, sinTh, rx, ry, cx1, cy1, mT, fromX, fromY) {\n var costh2 = fabric.util.cos(th2),\n sinth2 = fabric.util.sin(th2),\n costh3 = fabric.util.cos(th3),\n sinth3 = fabric.util.sin(th3),\n toX = cosTh * rx * costh3 - sinTh * ry * sinth3 + cx1,\n toY = sinTh * rx * costh3 + cosTh * ry * sinth3 + cy1,\n cp1X = fromX + mT * ( -cosTh * rx * sinth2 - sinTh * ry * costh2),\n cp1Y = fromY + mT * ( -sinTh * rx * sinth2 + cosTh * ry * costh2),\n cp2X = toX + mT * ( cosTh * rx * sinth3 + sinTh * ry * costh3),\n cp2Y = toY + mT * ( sinTh * rx * sinth3 - cosTh * ry * costh3);\n\n return [\n cp1X, cp1Y,\n cp2X, cp2Y,\n toX, toY\n ];\n }\n\n /*\n * Private\n */\n function calcVectorAngle(ux, uy, vx, vy) {\n var ta = Math.atan2(uy, ux),\n tb = Math.atan2(vy, vx);\n if (tb >= ta) {\n return tb - ta;\n }\n else {\n return 2 * Math.PI - (ta - tb);\n }\n }\n\n /**\n * Draws arc\n * @param {CanvasRenderingContext2D} ctx\n * @param {Number} fx\n * @param {Number} fy\n * @param {Array} coords\n */\n fabric.util.drawArc = function(ctx, fx, fy, coords) {\n var rx = coords[0],\n ry = coords[1],\n rot = coords[2],\n large = coords[3],\n sweep = coords[4],\n tx = coords[5],\n ty = coords[6],\n segs = [[], [], [], []],\n segsNorm = arcToSegments(tx - fx, ty - fy, rx, ry, large, sweep, rot);\n\n for (var i = 0, len = segsNorm.length; i < len; i++) {\n segs[i][0] = segsNorm[i][0] + fx;\n segs[i][1] = segsNorm[i][1] + fy;\n segs[i][2] = segsNorm[i][2] + fx;\n segs[i][3] = segsNorm[i][3] + fy;\n segs[i][4] = segsNorm[i][4] + fx;\n segs[i][5] = segsNorm[i][5] + fy;\n ctx.bezierCurveTo.apply(ctx, segs[i]);\n }\n };\n\n /**\n * Calculate bounding box of a elliptic-arc\n * @param {Number} fx start point of arc\n * @param {Number} fy\n * @param {Number} rx horizontal radius\n * @param {Number} ry vertical radius\n * @param {Number} rot angle of horizontal axe\n * @param {Number} large 1 or 0, whatever the arc is the big or the small on the 2 points\n * @param {Number} sweep 1 or 0, 1 clockwise or counterclockwise direction\n * @param {Number} tx end point of arc\n * @param {Number} ty\n */\n fabric.util.getBoundsOfArc = function(fx, fy, rx, ry, rot, large, sweep, tx, ty) {\n\n var fromX = 0, fromY = 0, bound, bounds = [],\n segs = arcToSegments(tx - fx, ty - fy, rx, ry, large, sweep, rot);\n\n for (var i = 0, len = segs.length; i < len; i++) {\n bound = getBoundsOfCurve(fromX, fromY, segs[i][0], segs[i][1], segs[i][2], segs[i][3], segs[i][4], segs[i][5]);\n bounds.push({ x: bound[0].x + fx, y: bound[0].y + fy });\n bounds.push({ x: bound[1].x + fx, y: bound[1].y + fy });\n fromX = segs[i][4];\n fromY = segs[i][5];\n }\n return bounds;\n };\n\n /**\n * Calculate bounding box of a beziercurve\n * @param {Number} x0 starting point\n * @param {Number} y0\n * @param {Number} x1 first control point\n * @param {Number} y1\n * @param {Number} x2 secondo control point\n * @param {Number} y2\n * @param {Number} x3 end of beizer\n * @param {Number} y3\n */\n // taken from http://jsbin.com/ivomiq/56/edit no credits available for that.\n function getBoundsOfCurve(x0, y0, x1, y1, x2, y2, x3, y3) {\n var argsString;\n if (fabric.cachesBoundsOfCurve) {\n argsString = _join.call(arguments);\n if (fabric.boundsOfCurveCache[argsString]) {\n return fabric.boundsOfCurveCache[argsString];\n }\n }\n\n var sqrt = Math.sqrt,\n min = Math.min, max = Math.max,\n abs = Math.abs, tvalues = [],\n bounds = [[], []],\n a, b, c, t, t1, t2, b2ac, sqrtb2ac;\n\n b = 6 * x0 - 12 * x1 + 6 * x2;\n a = -3 * x0 + 9 * x1 - 9 * x2 + 3 * x3;\n c = 3 * x1 - 3 * x0;\n\n for (var i = 0; i < 2; ++i) {\n if (i > 0) {\n b = 6 * y0 - 12 * y1 + 6 * y2;\n a = -3 * y0 + 9 * y1 - 9 * y2 + 3 * y3;\n c = 3 * y1 - 3 * y0;\n }\n\n if (abs(a) < 1e-12) {\n if (abs(b) < 1e-12) {\n continue;\n }\n t = -c / b;\n if (0 < t && t < 1) {\n tvalues.push(t);\n }\n continue;\n }\n b2ac = b * b - 4 * c * a;\n if (b2ac < 0) {\n continue;\n }\n sqrtb2ac = sqrt(b2ac);\n t1 = (-b + sqrtb2ac) / (2 * a);\n if (0 < t1 && t1 < 1) {\n tvalues.push(t1);\n }\n t2 = (-b - sqrtb2ac) / (2 * a);\n if (0 < t2 && t2 < 1) {\n tvalues.push(t2);\n }\n }\n\n var x, y, j = tvalues.length, jlen = j, mt;\n while (j--) {\n t = tvalues[j];\n mt = 1 - t;\n x = (mt * mt * mt * x0) + (3 * mt * mt * t * x1) + (3 * mt * t * t * x2) + (t * t * t * x3);\n bounds[0][j] = x;\n\n y = (mt * mt * mt * y0) + (3 * mt * mt * t * y1) + (3 * mt * t * t * y2) + (t * t * t * y3);\n bounds[1][j] = y;\n }\n\n bounds[0][jlen] = x0;\n bounds[1][jlen] = y0;\n bounds[0][jlen + 1] = x3;\n bounds[1][jlen + 1] = y3;\n var result = [\n {\n x: min.apply(null, bounds[0]),\n y: min.apply(null, bounds[1])\n },\n {\n x: max.apply(null, bounds[0]),\n y: max.apply(null, bounds[1])\n }\n ];\n if (fabric.cachesBoundsOfCurve) {\n fabric.boundsOfCurveCache[argsString] = result;\n }\n return result;\n }\n\n fabric.util.getBoundsOfCurve = getBoundsOfCurve;\n\n})();\n\n\n(function() {\n\n var slice = Array.prototype.slice;\n\n /**\n * Invokes method on all items in a given array\n * @memberOf fabric.util.array\n * @param {Array} array Array to iterate over\n * @param {String} method Name of a method to invoke\n * @return {Array}\n */\n function invoke(array, method) {\n var args = slice.call(arguments, 2), result = [];\n for (var i = 0, len = array.length; i < len; i++) {\n result[i] = args.length ? array[i][method].apply(array[i], args) : array[i][method].call(array[i]);\n }\n return result;\n }\n\n /**\n * Finds maximum value in array (not necessarily \"first\" one)\n * @memberOf fabric.util.array\n * @param {Array} array Array to iterate over\n * @param {String} byProperty\n * @return {*}\n */\n function max(array, byProperty) {\n return find(array, byProperty, function(value1, value2) {\n return value1 >= value2;\n });\n }\n\n /**\n * Finds minimum value in array (not necessarily \"first\" one)\n * @memberOf fabric.util.array\n * @param {Array} array Array to iterate over\n * @param {String} byProperty\n * @return {*}\n */\n function min(array, byProperty) {\n return find(array, byProperty, function(value1, value2) {\n return value1 < value2;\n });\n }\n\n /**\n * @private\n */\n function fill(array, value) {\n var k = array.length;\n while (k--) {\n array[k] = value;\n }\n return array;\n }\n\n /**\n * @private\n */\n function find(array, byProperty, condition) {\n if (!array || array.length === 0) {\n return;\n }\n\n var i = array.length - 1,\n result = byProperty ? array[i][byProperty] : array[i];\n if (byProperty) {\n while (i--) {\n if (condition(array[i][byProperty], result)) {\n result = array[i][byProperty];\n }\n }\n }\n else {\n while (i--) {\n if (condition(array[i], result)) {\n result = array[i];\n }\n }\n }\n return result;\n }\n\n /**\n * @namespace fabric.util.array\n */\n fabric.util.array = {\n fill: fill,\n invoke: invoke,\n min: min,\n max: max\n };\n\n})();\n\n\n(function() {\n /**\n * Copies all enumerable properties of one js object to another\n * this does not and cannot compete with generic utils.\n * Does not clone or extend fabric.Object subclasses.\n * This is mostly for internal use and has extra handling for fabricJS objects\n * it skips the canvas property in deep cloning.\n * @memberOf fabric.util.object\n * @param {Object} destination Where to copy to\n * @param {Object} source Where to copy from\n * @return {Object}\n */\n\n function extend(destination, source, deep) {\n // JScript DontEnum bug is not taken care of\n // the deep clone is for internal use, is not meant to avoid\n // javascript traps or cloning html element or self referenced objects.\n if (deep) {\n if (!fabric.isLikelyNode && source instanceof Element) {\n // avoid cloning deep images, canvases,\n destination = source;\n }\n else if (source instanceof Array) {\n destination = [];\n for (var i = 0, len = source.length; i < len; i++) {\n destination[i] = extend({ }, source[i], deep);\n }\n }\n else if (source && typeof source === 'object') {\n for (var property in source) {\n if (property === 'canvas') {\n destination[property] = extend({ }, source[property]);\n }\n else if (source.hasOwnProperty(property)) {\n destination[property] = extend({ }, source[property], deep);\n }\n }\n }\n else {\n // this sounds odd for an extend but is ok for recursive use\n destination = source;\n }\n }\n else {\n for (var property in source) {\n destination[property] = source[property];\n }\n }\n return destination;\n }\n\n /**\n * Creates an empty object and copies all enumerable properties of another object to it\n * @memberOf fabric.util.object\n * TODO: this function return an empty object if you try to clone null\n * @param {Object} object Object to clone\n * @return {Object}\n */\n function clone(object, deep) {\n return extend({ }, object, deep);\n }\n\n /** @namespace fabric.util.object */\n fabric.util.object = {\n extend: extend,\n clone: clone\n };\n fabric.util.object.extend(fabric.util, fabric.Observable);\n})();\n\n\n(function() {\n\n /**\n * Camelizes a string\n * @memberOf fabric.util.string\n * @param {String} string String to camelize\n * @return {String} Camelized version of a string\n */\n function camelize(string) {\n return string.replace(/-+(.)?/g, function(match, character) {\n return character ? character.toUpperCase() : '';\n });\n }\n\n /**\n * Capitalizes a string\n * @memberOf fabric.util.string\n * @param {String} string String to capitalize\n * @param {Boolean} [firstLetterOnly] If true only first letter is capitalized\n * and other letters stay untouched, if false first letter is capitalized\n * and other letters are converted to lowercase.\n * @return {String} Capitalized version of a string\n */\n function capitalize(string, firstLetterOnly) {\n return string.charAt(0).toUpperCase() +\n (firstLetterOnly ? string.slice(1) : string.slice(1).toLowerCase());\n }\n\n /**\n * Escapes XML in a string\n * @memberOf fabric.util.string\n * @param {String} string String to escape\n * @return {String} Escaped version of a string\n */\n function escapeXml(string) {\n return string.replace(/&/g, '&')\n .replace(/\"/g, '"')\n .replace(/'/g, ''')\n .replace(//g, '>');\n }\n\n /**\n * Divide a string in the user perceived single units\n * @memberOf fabric.util.string\n * @param {String} textstring String to escape\n * @return {Array} array containing the graphemes\n */\n function graphemeSplit(textstring) {\n var i = 0, chr, graphemes = [];\n for (i = 0, chr; i < textstring.length; i++) {\n if ((chr = getWholeChar(textstring, i)) === false) {\n continue;\n }\n graphemes.push(chr);\n }\n return graphemes;\n }\n\n // taken from mdn in the charAt doc page.\n function getWholeChar(str, i) {\n var code = str.charCodeAt(i);\n\n if (isNaN(code)) {\n return ''; // Position not found\n }\n if (code < 0xD800 || code > 0xDFFF) {\n return str.charAt(i);\n }\n\n // High surrogate (could change last hex to 0xDB7F to treat high private\n // surrogates as single characters)\n if (0xD800 <= code && code <= 0xDBFF) {\n if (str.length <= (i + 1)) {\n throw 'High surrogate without following low surrogate';\n }\n var next = str.charCodeAt(i + 1);\n if (0xDC00 > next || next > 0xDFFF) {\n throw 'High surrogate without following low surrogate';\n }\n return str.charAt(i) + str.charAt(i + 1);\n }\n // Low surrogate (0xDC00 <= code && code <= 0xDFFF)\n if (i === 0) {\n throw 'Low surrogate without preceding high surrogate';\n }\n var prev = str.charCodeAt(i - 1);\n\n // (could change last hex to 0xDB7F to treat high private\n // surrogates as single characters)\n if (0xD800 > prev || prev > 0xDBFF) {\n throw 'Low surrogate without preceding high surrogate';\n }\n // We can pass over low surrogates now as the second component\n // in a pair which we have already processed\n return false;\n }\n\n\n /**\n * String utilities\n * @namespace fabric.util.string\n */\n fabric.util.string = {\n camelize: camelize,\n capitalize: capitalize,\n escapeXml: escapeXml,\n graphemeSplit: graphemeSplit\n };\n})();\n\n\n(function() {\n\n var slice = Array.prototype.slice, emptyFunction = function() { },\n\n IS_DONTENUM_BUGGY = (function() {\n for (var p in { toString: 1 }) {\n if (p === 'toString') {\n return false;\n }\n }\n return true;\n })(),\n\n /** @ignore */\n addMethods = function(klass, source, parent) {\n for (var property in source) {\n\n if (property in klass.prototype &&\n typeof klass.prototype[property] === 'function' &&\n (source[property] + '').indexOf('callSuper') > -1) {\n\n klass.prototype[property] = (function(property) {\n return function() {\n\n var superclass = this.constructor.superclass;\n this.constructor.superclass = parent;\n var returnValue = source[property].apply(this, arguments);\n this.constructor.superclass = superclass;\n\n if (property !== 'initialize') {\n return returnValue;\n }\n };\n })(property);\n }\n else {\n klass.prototype[property] = source[property];\n }\n\n if (IS_DONTENUM_BUGGY) {\n if (source.toString !== Object.prototype.toString) {\n klass.prototype.toString = source.toString;\n }\n if (source.valueOf !== Object.prototype.valueOf) {\n klass.prototype.valueOf = source.valueOf;\n }\n }\n }\n };\n\n function Subclass() { }\n\n function callSuper(methodName) {\n var parentMethod = null,\n _this = this;\n\n // climb prototype chain to find method not equal to callee's method\n while (_this.constructor.superclass) {\n var superClassMethod = _this.constructor.superclass.prototype[methodName];\n if (_this[methodName] !== superClassMethod) {\n parentMethod = superClassMethod;\n break;\n }\n // eslint-disable-next-line\n _this = _this.constructor.superclass.prototype;\n }\n\n if (!parentMethod) {\n return console.log('tried to callSuper ' + methodName + ', method not found in prototype chain', this);\n }\n\n return (arguments.length > 1)\n ? parentMethod.apply(this, slice.call(arguments, 1))\n : parentMethod.call(this);\n }\n\n /**\n * Helper for creation of \"classes\".\n * @memberOf fabric.util\n * @param {Function} [parent] optional \"Class\" to inherit from\n * @param {Object} [properties] Properties shared by all instances of this class\n * (be careful modifying objects defined here as this would affect all instances)\n */\n function createClass() {\n var parent = null,\n properties = slice.call(arguments, 0);\n\n if (typeof properties[0] === 'function') {\n parent = properties.shift();\n }\n function klass() {\n this.initialize.apply(this, arguments);\n }\n\n klass.superclass = parent;\n klass.subclasses = [];\n\n if (parent) {\n Subclass.prototype = parent.prototype;\n klass.prototype = new Subclass();\n parent.subclasses.push(klass);\n }\n for (var i = 0, length = properties.length; i < length; i++) {\n addMethods(klass, properties[i], parent);\n }\n if (!klass.prototype.initialize) {\n klass.prototype.initialize = emptyFunction;\n }\n klass.prototype.constructor = klass;\n klass.prototype.callSuper = callSuper;\n return klass;\n }\n\n fabric.util.createClass = createClass;\n})();\n\n\n(function () {\n\n var unknown = 'unknown';\n\n /* EVENT HANDLING */\n\n function areHostMethods(object) {\n var methodNames = Array.prototype.slice.call(arguments, 1),\n t, i, len = methodNames.length;\n for (i = 0; i < len; i++) {\n t = typeof object[methodNames[i]];\n if (!(/^(?:function|object|unknown)$/).test(t)) {\n return false;\n }\n }\n return true;\n }\n\n /** @ignore */\n var getElement,\n setElement,\n getUniqueId = (function () {\n var uid = 0;\n return function (element) {\n return element.__uniqueID || (element.__uniqueID = 'uniqueID__' + uid++);\n };\n })();\n\n (function () {\n var elements = { };\n /** @ignore */\n getElement = function (uid) {\n return elements[uid];\n };\n /** @ignore */\n setElement = function (uid, element) {\n elements[uid] = element;\n };\n })();\n\n function createListener(uid, handler) {\n return {\n handler: handler,\n wrappedHandler: createWrappedHandler(uid, handler)\n };\n }\n\n function createWrappedHandler(uid, handler) {\n return function (e) {\n handler.call(getElement(uid), e || fabric.window.event);\n };\n }\n\n function createDispatcher(uid, eventName) {\n return function (e) {\n if (handlers[uid] && handlers[uid][eventName]) {\n var handlersForEvent = handlers[uid][eventName];\n for (var i = 0, len = handlersForEvent.length; i < len; i++) {\n handlersForEvent[i].call(this, e || fabric.window.event);\n }\n }\n };\n }\n\n var shouldUseAddListenerRemoveListener = (\n areHostMethods(fabric.document.documentElement, 'addEventListener', 'removeEventListener') &&\n areHostMethods(fabric.window, 'addEventListener', 'removeEventListener')),\n\n shouldUseAttachEventDetachEvent = (\n areHostMethods(fabric.document.documentElement, 'attachEvent', 'detachEvent') &&\n areHostMethods(fabric.window, 'attachEvent', 'detachEvent')),\n\n // IE branch\n listeners = { },\n\n // DOM L0 branch\n handlers = { },\n\n addListener, removeListener;\n\n if (shouldUseAddListenerRemoveListener) {\n /** @ignore */\n addListener = function (element, eventName, handler, options) {\n // since ie10 or ie9 can use addEventListener but they do not support options, i need to check\n element && element.addEventListener(eventName, handler, shouldUseAttachEventDetachEvent ? false : options);\n };\n /** @ignore */\n removeListener = function (element, eventName, handler, options) {\n element && element.removeEventListener(eventName, handler, shouldUseAttachEventDetachEvent ? false : options);\n };\n }\n\n else if (shouldUseAttachEventDetachEvent) {\n /** @ignore */\n addListener = function (element, eventName, handler) {\n if (!element) {\n return;\n }\n var uid = getUniqueId(element);\n setElement(uid, element);\n if (!listeners[uid]) {\n listeners[uid] = { };\n }\n if (!listeners[uid][eventName]) {\n listeners[uid][eventName] = [];\n\n }\n var listener = createListener(uid, handler);\n listeners[uid][eventName].push(listener);\n element.attachEvent('on' + eventName, listener.wrappedHandler);\n };\n /** @ignore */\n removeListener = function (element, eventName, handler) {\n if (!element) {\n return;\n }\n var uid = getUniqueId(element), listener;\n if (listeners[uid] && listeners[uid][eventName]) {\n for (var i = 0, len = listeners[uid][eventName].length; i < len; i++) {\n listener = listeners[uid][eventName][i];\n if (listener && listener.handler === handler) {\n element.detachEvent('on' + eventName, listener.wrappedHandler);\n listeners[uid][eventName][i] = null;\n }\n }\n }\n };\n }\n else {\n /** @ignore */\n addListener = function (element, eventName, handler) {\n if (!element) {\n return;\n }\n var uid = getUniqueId(element);\n if (!handlers[uid]) {\n handlers[uid] = { };\n }\n if (!handlers[uid][eventName]) {\n handlers[uid][eventName] = [];\n var existingHandler = element['on' + eventName];\n if (existingHandler) {\n handlers[uid][eventName].push(existingHandler);\n }\n element['on' + eventName] = createDispatcher(uid, eventName);\n }\n handlers[uid][eventName].push(handler);\n };\n /** @ignore */\n removeListener = function (element, eventName, handler) {\n if (!element) {\n return;\n }\n var uid = getUniqueId(element);\n if (handlers[uid] && handlers[uid][eventName]) {\n var handlersForEvent = handlers[uid][eventName];\n for (var i = 0, len = handlersForEvent.length; i < len; i++) {\n if (handlersForEvent[i] === handler) {\n handlersForEvent.splice(i, 1);\n }\n }\n }\n };\n }\n\n /**\n * Adds an event listener to an element\n * @function\n * @memberOf fabric.util\n * @param {HTMLElement} element\n * @param {String} eventName\n * @param {Function} handler\n */\n fabric.util.addListener = addListener;\n\n /**\n * Removes an event listener from an element\n * @function\n * @memberOf fabric.util\n * @param {HTMLElement} element\n * @param {String} eventName\n * @param {Function} handler\n */\n fabric.util.removeListener = removeListener;\n\n /**\n * Cross-browser wrapper for getting event's coordinates\n * @memberOf fabric.util\n * @param {Event} event Event object\n */\n function getPointer(event) {\n event || (event = fabric.window.event);\n\n var element = event.target ||\n (typeof event.srcElement !== unknown ? event.srcElement : null),\n\n scroll = fabric.util.getScrollLeftTop(element);\n return {\n x: pointerX(event) + scroll.left,\n y: pointerY(event) + scroll.top\n };\n }\n\n var pointerX = function(event) {\n return event.clientX;\n },\n\n pointerY = function(event) {\n return event.clientY;\n };\n\n function _getPointer(event, pageProp, clientProp) {\n var touchProp = event.type === 'touchend' ? 'changedTouches' : 'touches';\n var pointer, eventTouchProp = event[touchProp];\n\n if (eventTouchProp && eventTouchProp[0]) {\n pointer = eventTouchProp[0][clientProp];\n }\n\n if (typeof pointer === 'undefined') {\n pointer = event[clientProp];\n }\n\n return pointer;\n }\n\n if (fabric.isTouchSupported) {\n pointerX = function(event) {\n return _getPointer(event, 'pageX', 'clientX');\n };\n pointerY = function(event) {\n return _getPointer(event, 'pageY', 'clientY');\n };\n }\n\n fabric.util.getPointer = getPointer;\n\n})();\n\n\n(function () {\n\n /**\n * Cross-browser wrapper for setting element's style\n * @memberOf fabric.util\n * @param {HTMLElement} element\n * @param {Object} styles\n * @return {HTMLElement} Element that was passed as a first argument\n */\n function setStyle(element, styles) {\n var elementStyle = element.style;\n if (!elementStyle) {\n return element;\n }\n if (typeof styles === 'string') {\n element.style.cssText += ';' + styles;\n return styles.indexOf('opacity') > -1\n ? setOpacity(element, styles.match(/opacity:\\s*(\\d?\\.?\\d*)/)[1])\n : element;\n }\n for (var property in styles) {\n if (property === 'opacity') {\n setOpacity(element, styles[property]);\n }\n else {\n var normalizedProperty = (property === 'float' || property === 'cssFloat')\n ? (typeof elementStyle.styleFloat === 'undefined' ? 'cssFloat' : 'styleFloat')\n : property;\n elementStyle[normalizedProperty] = styles[property];\n }\n }\n return element;\n }\n\n var parseEl = fabric.document.createElement('div'),\n supportsOpacity = typeof parseEl.style.opacity === 'string',\n supportsFilters = typeof parseEl.style.filter === 'string',\n reOpacity = /alpha\\s*\\(\\s*opacity\\s*=\\s*([^\\)]+)\\)/,\n\n /** @ignore */\n setOpacity = function (element) { return element; };\n\n if (supportsOpacity) {\n /** @ignore */\n setOpacity = function(element, value) {\n element.style.opacity = value;\n return element;\n };\n }\n else if (supportsFilters) {\n /** @ignore */\n setOpacity = function(element, value) {\n var es = element.style;\n if (element.currentStyle && !element.currentStyle.hasLayout) {\n es.zoom = 1;\n }\n if (reOpacity.test(es.filter)) {\n value = value >= 0.9999 ? '' : ('alpha(opacity=' + (value * 100) + ')');\n es.filter = es.filter.replace(reOpacity, value);\n }\n else {\n es.filter += ' alpha(opacity=' + (value * 100) + ')';\n }\n return element;\n };\n }\n\n fabric.util.setStyle = setStyle;\n\n})();\n\n\n(function() {\n\n var _slice = Array.prototype.slice;\n\n /**\n * Takes id and returns an element with that id (if one exists in a document)\n * @memberOf fabric.util\n * @param {String|HTMLElement} id\n * @return {HTMLElement|null}\n */\n function getById(id) {\n return typeof id === 'string' ? fabric.document.getElementById(id) : id;\n }\n\n var sliceCanConvertNodelists,\n /**\n * Converts an array-like object (e.g. arguments or NodeList) to an array\n * @memberOf fabric.util\n * @param {Object} arrayLike\n * @return {Array}\n */\n toArray = function(arrayLike) {\n return _slice.call(arrayLike, 0);\n };\n\n try {\n sliceCanConvertNodelists = toArray(fabric.document.childNodes) instanceof Array;\n }\n catch (err) { }\n\n if (!sliceCanConvertNodelists) {\n toArray = function(arrayLike) {\n var arr = new Array(arrayLike.length), i = arrayLike.length;\n while (i--) {\n arr[i] = arrayLike[i];\n }\n return arr;\n };\n }\n\n /**\n * Creates specified element with specified attributes\n * @memberOf fabric.util\n * @param {String} tagName Type of an element to create\n * @param {Object} [attributes] Attributes to set on an element\n * @return {HTMLElement} Newly created element\n */\n function makeElement(tagName, attributes) {\n var el = fabric.document.createElement(tagName);\n for (var prop in attributes) {\n if (prop === 'class') {\n el.className = attributes[prop];\n }\n else if (prop === 'for') {\n el.htmlFor = attributes[prop];\n }\n else {\n el.setAttribute(prop, attributes[prop]);\n }\n }\n return el;\n }\n\n /**\n * Adds class to an element\n * @memberOf fabric.util\n * @param {HTMLElement} element Element to add class to\n * @param {String} className Class to add to an element\n */\n function addClass(element, className) {\n if (element && (' ' + element.className + ' ').indexOf(' ' + className + ' ') === -1) {\n element.className += (element.className ? ' ' : '') + className;\n }\n }\n\n /**\n * Wraps element with another element\n * @memberOf fabric.util\n * @param {HTMLElement} element Element to wrap\n * @param {HTMLElement|String} wrapper Element to wrap with\n * @param {Object} [attributes] Attributes to set on a wrapper\n * @return {HTMLElement} wrapper\n */\n function wrapElement(element, wrapper, attributes) {\n if (typeof wrapper === 'string') {\n wrapper = makeElement(wrapper, attributes);\n }\n if (element.parentNode) {\n element.parentNode.replaceChild(wrapper, element);\n }\n wrapper.appendChild(element);\n return wrapper;\n }\n\n /**\n * Returns element scroll offsets\n * @memberOf fabric.util\n * @param {HTMLElement} element Element to operate on\n * @return {Object} Object with left/top values\n */\n function getScrollLeftTop(element) {\n\n var left = 0,\n top = 0,\n docElement = fabric.document.documentElement,\n body = fabric.document.body || {\n scrollLeft: 0, scrollTop: 0\n };\n\n // While loop checks (and then sets element to) .parentNode OR .host\n // to account for ShadowDOM. We still want to traverse up out of ShadowDOM,\n // but the .parentNode of a root ShadowDOM node will always be null, instead\n // it should be accessed through .host. See http://stackoverflow.com/a/24765528/4383938\n while (element && (element.parentNode || element.host)) {\n\n // Set element to element parent, or 'host' in case of ShadowDOM\n element = element.parentNode || element.host;\n\n if (element === fabric.document) {\n left = body.scrollLeft || docElement.scrollLeft || 0;\n top = body.scrollTop || docElement.scrollTop || 0;\n }\n else {\n left += element.scrollLeft || 0;\n top += element.scrollTop || 0;\n }\n\n if (element.nodeType === 1 && element.style.position === 'fixed') {\n break;\n }\n }\n\n return { left: left, top: top };\n }\n\n /**\n * Returns offset for a given element\n * @function\n * @memberOf fabric.util\n * @param {HTMLElement} element Element to get offset for\n * @return {Object} Object with \"left\" and \"top\" properties\n */\n function getElementOffset(element) {\n var docElem,\n doc = element && element.ownerDocument,\n box = { left: 0, top: 0 },\n offset = { left: 0, top: 0 },\n scrollLeftTop,\n offsetAttributes = {\n borderLeftWidth: 'left',\n borderTopWidth: 'top',\n paddingLeft: 'left',\n paddingTop: 'top'\n };\n\n if (!doc) {\n return offset;\n }\n\n for (var attr in offsetAttributes) {\n offset[offsetAttributes[attr]] += parseInt(getElementStyle(element, attr), 10) || 0;\n }\n\n docElem = doc.documentElement;\n if ( typeof element.getBoundingClientRect !== 'undefined' ) {\n box = element.getBoundingClientRect();\n }\n\n scrollLeftTop = getScrollLeftTop(element);\n\n return {\n left: box.left + scrollLeftTop.left - (docElem.clientLeft || 0) + offset.left,\n top: box.top + scrollLeftTop.top - (docElem.clientTop || 0) + offset.top\n };\n }\n\n /**\n * Returns style attribute value of a given element\n * @memberOf fabric.util\n * @param {HTMLElement} element Element to get style attribute for\n * @param {String} attr Style attribute to get for element\n * @return {String} Style attribute value of the given element.\n */\n var getElementStyle;\n if (fabric.document.defaultView && fabric.document.defaultView.getComputedStyle) {\n getElementStyle = function(element, attr) {\n var style = fabric.document.defaultView.getComputedStyle(element, null);\n return style ? style[attr] : undefined;\n };\n }\n else {\n getElementStyle = function(element, attr) {\n var value = element.style[attr];\n if (!value && element.currentStyle) {\n value = element.currentStyle[attr];\n }\n return value;\n };\n }\n\n (function () {\n var style = fabric.document.documentElement.style,\n selectProp = 'userSelect' in style\n ? 'userSelect'\n : 'MozUserSelect' in style\n ? 'MozUserSelect'\n : 'WebkitUserSelect' in style\n ? 'WebkitUserSelect'\n : 'KhtmlUserSelect' in style\n ? 'KhtmlUserSelect'\n : '';\n\n /**\n * Makes element unselectable\n * @memberOf fabric.util\n * @param {HTMLElement} element Element to make unselectable\n * @return {HTMLElement} Element that was passed in\n */\n function makeElementUnselectable(element) {\n if (typeof element.onselectstart !== 'undefined') {\n element.onselectstart = fabric.util.falseFunction;\n }\n if (selectProp) {\n element.style[selectProp] = 'none';\n }\n else if (typeof element.unselectable === 'string') {\n element.unselectable = 'on';\n }\n return element;\n }\n\n /**\n * Makes element selectable\n * @memberOf fabric.util\n * @param {HTMLElement} element Element to make selectable\n * @return {HTMLElement} Element that was passed in\n */\n function makeElementSelectable(element) {\n if (typeof element.onselectstart !== 'undefined') {\n element.onselectstart = null;\n }\n if (selectProp) {\n element.style[selectProp] = '';\n }\n else if (typeof element.unselectable === 'string') {\n element.unselectable = '';\n }\n return element;\n }\n\n fabric.util.makeElementUnselectable = makeElementUnselectable;\n fabric.util.makeElementSelectable = makeElementSelectable;\n })();\n\n (function() {\n\n /**\n * Inserts a script element with a given url into a document; invokes callback, when that script is finished loading\n * @memberOf fabric.util\n * @param {String} url URL of a script to load\n * @param {Function} callback Callback to execute when script is finished loading\n */\n function getScript(url, callback) {\n var headEl = fabric.document.getElementsByTagName('head')[0],\n scriptEl = fabric.document.createElement('script'),\n loading = true;\n\n /** @ignore */\n scriptEl.onload = /** @ignore */ scriptEl.onreadystatechange = function(e) {\n if (loading) {\n if (typeof this.readyState === 'string' &&\n this.readyState !== 'loaded' &&\n this.readyState !== 'complete') {\n return;\n }\n loading = false;\n callback(e || fabric.window.event);\n scriptEl = scriptEl.onload = scriptEl.onreadystatechange = null;\n }\n };\n scriptEl.src = url;\n headEl.appendChild(scriptEl);\n // causes issue in Opera\n // headEl.removeChild(scriptEl);\n }\n\n fabric.util.getScript = getScript;\n })();\n\n function getNodeCanvas(element) {\n var impl = fabric.jsdomImplForWrapper(element);\n return impl._canvas || impl._image;\n };\n\n function cleanUpJsdomNode(element) {\n if (!fabric.isLikelyNode) {\n return;\n }\n var impl = fabric.jsdomImplForWrapper(element);\n if (impl) {\n impl._image = null;\n impl._canvas = null;\n // unsure if necessary\n impl._currentSrc = null;\n impl._attributes = null;\n impl._classList = null;\n }\n }\n\n fabric.util.getById = getById;\n fabric.util.toArray = toArray;\n fabric.util.makeElement = makeElement;\n fabric.util.addClass = addClass;\n fabric.util.wrapElement = wrapElement;\n fabric.util.getScrollLeftTop = getScrollLeftTop;\n fabric.util.getElementOffset = getElementOffset;\n fabric.util.getElementStyle = getElementStyle;\n fabric.util.getNodeCanvas = getNodeCanvas;\n fabric.util.cleanUpJsdomNode = cleanUpJsdomNode;\n\n})();\n\n\n(function() {\n\n function addParamToUrl(url, param) {\n return url + (/\\?/.test(url) ? '&' : '?') + param;\n }\n\n function emptyFn() { }\n\n /**\n * Cross-browser abstraction for sending XMLHttpRequest\n * @memberOf fabric.util\n * @param {String} url URL to send XMLHttpRequest to\n * @param {Object} [options] Options object\n * @param {String} [options.method=\"GET\"]\n * @param {String} [options.parameters] parameters to append to url in GET or in body\n * @param {String} [options.body] body to send with POST or PUT request\n * @param {Function} options.onComplete Callback to invoke when request is completed\n * @return {XMLHttpRequest} request\n */\n function request(url, options) {\n options || (options = { });\n\n var method = options.method ? options.method.toUpperCase() : 'GET',\n onComplete = options.onComplete || function() { },\n xhr = new fabric.window.XMLHttpRequest(),\n body = options.body || options.parameters;\n\n /** @ignore */\n xhr.onreadystatechange = function() {\n if (xhr.readyState === 4) {\n onComplete(xhr);\n xhr.onreadystatechange = emptyFn;\n }\n };\n\n if (method === 'GET') {\n body = null;\n if (typeof options.parameters === 'string') {\n url = addParamToUrl(url, options.parameters);\n }\n }\n\n xhr.open(method, url, true);\n\n if (method === 'POST' || method === 'PUT') {\n xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');\n }\n\n xhr.send(body);\n return xhr;\n }\n\n fabric.util.request = request;\n})();\n\n\n/**\n * Wrapper around `console.log` (when available)\n * @param {*} [values] Values to log\n */\nfabric.log = function() { };\n\n/**\n * Wrapper around `console.warn` (when available)\n * @param {*} [values] Values to log as a warning\n */\nfabric.warn = function() { };\n\n/* eslint-disable */\nif (typeof console !== 'undefined') {\n\n ['log', 'warn'].forEach(function(methodName) {\n\n if (typeof console[methodName] !== 'undefined' &&\n typeof console[methodName].apply === 'function') {\n\n fabric[methodName] = function() {\n return console[methodName].apply(console, arguments);\n };\n }\n });\n}\n/* eslint-enable */\n\n\n(function() {\n\n function noop() {\n return false;\n }\n\n /**\n * Changes value from one to another within certain period of time, invoking callbacks as value is being changed.\n * @memberOf fabric.util\n * @param {Object} [options] Animation options\n * @param {Function} [options.onChange] Callback; invoked on every value change\n * @param {Function} [options.onComplete] Callback; invoked when value change is completed\n * @param {Number} [options.startValue=0] Starting value\n * @param {Number} [options.endValue=100] Ending value\n * @param {Number} [options.byValue=100] Value to modify the property by\n * @param {Function} [options.easing] Easing function\n * @param {Number} [options.duration=500] Duration of change (in ms)\n */\n function animate(options) {\n\n requestAnimFrame(function(timestamp) {\n options || (options = { });\n\n var start = timestamp || +new Date(),\n duration = options.duration || 500,\n finish = start + duration, time,\n onChange = options.onChange || noop,\n abort = options.abort || noop,\n onComplete = options.onComplete || noop,\n easing = options.easing || function(t, b, c, d) {return -c * Math.cos(t / d * (Math.PI / 2)) + c + b;},\n startValue = 'startValue' in options ? options.startValue : 0,\n endValue = 'endValue' in options ? options.endValue : 100,\n byValue = options.byValue || endValue - startValue;\n\n options.onStart && options.onStart();\n\n (function tick(ticktime) {\n if (abort()) {\n onComplete(endValue, 1, 1);\n return;\n }\n time = ticktime || +new Date();\n var currentTime = time > finish ? duration : (time - start),\n timePerc = currentTime / duration,\n current = easing(currentTime, startValue, byValue, duration),\n valuePerc = Math.abs((current - startValue) / byValue);\n onChange(current, valuePerc, timePerc);\n if (time > finish) {\n options.onComplete && options.onComplete();\n return;\n }\n requestAnimFrame(tick);\n })(start);\n });\n\n }\n\n var _requestAnimFrame = fabric.window.requestAnimationFrame ||\n fabric.window.webkitRequestAnimationFrame ||\n fabric.window.mozRequestAnimationFrame ||\n fabric.window.oRequestAnimationFrame ||\n fabric.window.msRequestAnimationFrame ||\n function(callback) {\n return fabric.window.setTimeout(callback, 1000 / 60);\n };\n\n var _cancelAnimFrame = fabric.window.cancelAnimationFrame || fabric.window.clearTimeout;\n\n /**\n * requestAnimationFrame polyfill based on http://paulirish.com/2011/requestanimationframe-for-smart-animating/\n * In order to get a precise start time, `requestAnimFrame` should be called as an entry into the method\n * @memberOf fabric.util\n * @param {Function} callback Callback to invoke\n * @param {DOMElement} element optional Element to associate with animation\n */\n function requestAnimFrame() {\n return _requestAnimFrame.apply(fabric.window, arguments);\n }\n\n function cancelAnimFrame() {\n return _cancelAnimFrame.apply(fabric.window, arguments);\n }\n\n fabric.util.animate = animate;\n fabric.util.requestAnimFrame = requestAnimFrame;\n fabric.util.cancelAnimFrame = cancelAnimFrame;\n})();\n\n\n(function() {\n // Calculate an in-between color. Returns a \"rgba()\" string.\n // Credit: Edwin Martin \n // http://www.bitstorm.org/jquery/color-animation/jquery.animate-colors.js\n function calculateColor(begin, end, pos) {\n var color = 'rgba('\n + parseInt((begin[0] + pos * (end[0] - begin[0])), 10) + ','\n + parseInt((begin[1] + pos * (end[1] - begin[1])), 10) + ','\n + parseInt((begin[2] + pos * (end[2] - begin[2])), 10);\n\n color += ',' + (begin && end ? parseFloat(begin[3] + pos * (end[3] - begin[3])) : 1);\n color += ')';\n return color;\n }\n\n /**\n * Changes the color from one to another within certain period of time, invoking callbacks as value is being changed.\n * @memberOf fabric.util\n * @param {String} fromColor The starting color in hex or rgb(a) format.\n * @param {String} toColor The starting color in hex or rgb(a) format.\n * @param {Number} [duration] Duration of change (in ms).\n * @param {Object} [options] Animation options\n * @param {Function} [options.onChange] Callback; invoked on every value change\n * @param {Function} [options.onComplete] Callback; invoked when value change is completed\n * @param {Function} [options.colorEasing] Easing function. Note that this function only take two arguments (currentTime, duration). Thus the regular animation easing functions cannot be used.\n */\n function animateColor(fromColor, toColor, duration, options) {\n var startColor = new fabric.Color(fromColor).getSource(),\n endColor = new fabric.Color(toColor).getSource();\n\n options = options || {};\n\n fabric.util.animate(fabric.util.object.extend(options, {\n duration: duration || 500,\n startValue: startColor,\n endValue: endColor,\n byValue: endColor,\n easing: function (currentTime, startValue, byValue, duration) {\n var posValue = options.colorEasing\n ? options.colorEasing(currentTime, duration)\n : 1 - Math.cos(currentTime / duration * (Math.PI / 2));\n return calculateColor(startValue, byValue, posValue);\n }\n }));\n }\n\n fabric.util.animateColor = animateColor;\n\n})();\n\n\n(function() {\n\n function normalize(a, c, p, s) {\n if (a < Math.abs(c)) {\n a = c;\n s = p / 4;\n }\n else {\n //handle the 0/0 case:\n if (c === 0 && a === 0) {\n s = p / (2 * Math.PI) * Math.asin(1);\n }\n else {\n s = p / (2 * Math.PI) * Math.asin(c / a);\n }\n }\n return { a: a, c: c, p: p, s: s };\n }\n\n function elastic(opts, t, d) {\n return opts.a *\n Math.pow(2, 10 * (t -= 1)) *\n Math.sin( (t * d - opts.s) * (2 * Math.PI) / opts.p );\n }\n\n /**\n * Cubic easing out\n * @memberOf fabric.util.ease\n */\n function easeOutCubic(t, b, c, d) {\n return c * ((t = t / d - 1) * t * t + 1) + b;\n }\n\n /**\n * Cubic easing in and out\n * @memberOf fabric.util.ease\n */\n function easeInOutCubic(t, b, c, d) {\n t /= d / 2;\n if (t < 1) {\n return c / 2 * t * t * t + b;\n }\n return c / 2 * ((t -= 2) * t * t + 2) + b;\n }\n\n /**\n * Quartic easing in\n * @memberOf fabric.util.ease\n */\n function easeInQuart(t, b, c, d) {\n return c * (t /= d) * t * t * t + b;\n }\n\n /**\n * Quartic easing out\n * @memberOf fabric.util.ease\n */\n function easeOutQuart(t, b, c, d) {\n return -c * ((t = t / d - 1) * t * t * t - 1) + b;\n }\n\n /**\n * Quartic easing in and out\n * @memberOf fabric.util.ease\n */\n function easeInOutQuart(t, b, c, d) {\n t /= d / 2;\n if (t < 1) {\n return c / 2 * t * t * t * t + b;\n }\n return -c / 2 * ((t -= 2) * t * t * t - 2) + b;\n }\n\n /**\n * Quintic easing in\n * @memberOf fabric.util.ease\n */\n function easeInQuint(t, b, c, d) {\n return c * (t /= d) * t * t * t * t + b;\n }\n\n /**\n * Quintic easing out\n * @memberOf fabric.util.ease\n */\n function easeOutQuint(t, b, c, d) {\n return c * ((t = t / d - 1) * t * t * t * t + 1) + b;\n }\n\n /**\n * Quintic easing in and out\n * @memberOf fabric.util.ease\n */\n function easeInOutQuint(t, b, c, d) {\n t /= d / 2;\n if (t < 1) {\n return c / 2 * t * t * t * t * t + b;\n }\n return c / 2 * ((t -= 2) * t * t * t * t + 2) + b;\n }\n\n /**\n * Sinusoidal easing in\n * @memberOf fabric.util.ease\n */\n function easeInSine(t, b, c, d) {\n return -c * Math.cos(t / d * (Math.PI / 2)) + c + b;\n }\n\n /**\n * Sinusoidal easing out\n * @memberOf fabric.util.ease\n */\n function easeOutSine(t, b, c, d) {\n return c * Math.sin(t / d * (Math.PI / 2)) + b;\n }\n\n /**\n * Sinusoidal easing in and out\n * @memberOf fabric.util.ease\n */\n function easeInOutSine(t, b, c, d) {\n return -c / 2 * (Math.cos(Math.PI * t / d) - 1) + b;\n }\n\n /**\n * Exponential easing in\n * @memberOf fabric.util.ease\n */\n function easeInExpo(t, b, c, d) {\n return (t === 0) ? b : c * Math.pow(2, 10 * (t / d - 1)) + b;\n }\n\n /**\n * Exponential easing out\n * @memberOf fabric.util.ease\n */\n function easeOutExpo(t, b, c, d) {\n return (t === d) ? b + c : c * (-Math.pow(2, -10 * t / d) + 1) + b;\n }\n\n /**\n * Exponential easing in and out\n * @memberOf fabric.util.ease\n */\n function easeInOutExpo(t, b, c, d) {\n if (t === 0) {\n return b;\n }\n if (t === d) {\n return b + c;\n }\n t /= d / 2;\n if (t < 1) {\n return c / 2 * Math.pow(2, 10 * (t - 1)) + b;\n }\n return c / 2 * (-Math.pow(2, -10 * --t) + 2) + b;\n }\n\n /**\n * Circular easing in\n * @memberOf fabric.util.ease\n */\n function easeInCirc(t, b, c, d) {\n return -c * (Math.sqrt(1 - (t /= d) * t) - 1) + b;\n }\n\n /**\n * Circular easing out\n * @memberOf fabric.util.ease\n */\n function easeOutCirc(t, b, c, d) {\n return c * Math.sqrt(1 - (t = t / d - 1) * t) + b;\n }\n\n /**\n * Circular easing in and out\n * @memberOf fabric.util.ease\n */\n function easeInOutCirc(t, b, c, d) {\n t /= d / 2;\n if (t < 1) {\n return -c / 2 * (Math.sqrt(1 - t * t) - 1) + b;\n }\n return c / 2 * (Math.sqrt(1 - (t -= 2) * t) + 1) + b;\n }\n\n /**\n * Elastic easing in\n * @memberOf fabric.util.ease\n */\n function easeInElastic(t, b, c, d) {\n var s = 1.70158, p = 0, a = c;\n if (t === 0) {\n return b;\n }\n t /= d;\n if (t === 1) {\n return b + c;\n }\n if (!p) {\n p = d * 0.3;\n }\n var opts = normalize(a, c, p, s);\n return -elastic(opts, t, d) + b;\n }\n\n /**\n * Elastic easing out\n * @memberOf fabric.util.ease\n */\n function easeOutElastic(t, b, c, d) {\n var s = 1.70158, p = 0, a = c;\n if (t === 0) {\n return b;\n }\n t /= d;\n if (t === 1) {\n return b + c;\n }\n if (!p) {\n p = d * 0.3;\n }\n var opts = normalize(a, c, p, s);\n return opts.a * Math.pow(2, -10 * t) * Math.sin((t * d - opts.s) * (2 * Math.PI) / opts.p ) + opts.c + b;\n }\n\n /**\n * Elastic easing in and out\n * @memberOf fabric.util.ease\n */\n function easeInOutElastic(t, b, c, d) {\n var s = 1.70158, p = 0, a = c;\n if (t === 0) {\n return b;\n }\n t /= d / 2;\n if (t === 2) {\n return b + c;\n }\n if (!p) {\n p = d * (0.3 * 1.5);\n }\n var opts = normalize(a, c, p, s);\n if (t < 1) {\n return -0.5 * elastic(opts, t, d) + b;\n }\n return opts.a * Math.pow(2, -10 * (t -= 1)) *\n Math.sin((t * d - opts.s) * (2 * Math.PI) / opts.p ) * 0.5 + opts.c + b;\n }\n\n /**\n * Backwards easing in\n * @memberOf fabric.util.ease\n */\n function easeInBack(t, b, c, d, s) {\n if (s === undefined) {\n s = 1.70158;\n }\n return c * (t /= d) * t * ((s + 1) * t - s) + b;\n }\n\n /**\n * Backwards easing out\n * @memberOf fabric.util.ease\n */\n function easeOutBack(t, b, c, d, s) {\n if (s === undefined) {\n s = 1.70158;\n }\n return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b;\n }\n\n /**\n * Backwards easing in and out\n * @memberOf fabric.util.ease\n */\n function easeInOutBack(t, b, c, d, s) {\n if (s === undefined) {\n s = 1.70158;\n }\n t /= d / 2;\n if (t < 1) {\n return c / 2 * (t * t * (((s *= (1.525)) + 1) * t - s)) + b;\n }\n return c / 2 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2) + b;\n }\n\n /**\n * Bouncing easing in\n * @memberOf fabric.util.ease\n */\n function easeInBounce(t, b, c, d) {\n return c - easeOutBounce (d - t, 0, c, d) + b;\n }\n\n /**\n * Bouncing easing out\n * @memberOf fabric.util.ease\n */\n function easeOutBounce(t, b, c, d) {\n if ((t /= d) < (1 / 2.75)) {\n return c * (7.5625 * t * t) + b;\n }\n else if (t < (2 / 2.75)) {\n return c * (7.5625 * (t -= (1.5 / 2.75)) * t + 0.75) + b;\n }\n else if (t < (2.5 / 2.75)) {\n return c * (7.5625 * (t -= (2.25 / 2.75)) * t + 0.9375) + b;\n }\n else {\n return c * (7.5625 * (t -= (2.625 / 2.75)) * t + 0.984375) + b;\n }\n }\n\n /**\n * Bouncing easing in and out\n * @memberOf fabric.util.ease\n */\n function easeInOutBounce(t, b, c, d) {\n if (t < d / 2) {\n return easeInBounce (t * 2, 0, c, d) * 0.5 + b;\n }\n return easeOutBounce(t * 2 - d, 0, c, d) * 0.5 + c * 0.5 + b;\n }\n\n /**\n * Easing functions\n * See Easing Equations by Robert Penner\n * @namespace fabric.util.ease\n */\n fabric.util.ease = {\n\n /**\n * Quadratic easing in\n * @memberOf fabric.util.ease\n */\n easeInQuad: function(t, b, c, d) {\n return c * (t /= d) * t + b;\n },\n\n /**\n * Quadratic easing out\n * @memberOf fabric.util.ease\n */\n easeOutQuad: function(t, b, c, d) {\n return -c * (t /= d) * (t - 2) + b;\n },\n\n /**\n * Quadratic easing in and out\n * @memberOf fabric.util.ease\n */\n easeInOutQuad: function(t, b, c, d) {\n t /= (d / 2);\n if (t < 1) {\n return c / 2 * t * t + b;\n }\n return -c / 2 * ((--t) * (t - 2) - 1) + b;\n },\n\n /**\n * Cubic easing in\n * @memberOf fabric.util.ease\n */\n easeInCubic: function(t, b, c, d) {\n return c * (t /= d) * t * t + b;\n },\n\n easeOutCubic: easeOutCubic,\n easeInOutCubic: easeInOutCubic,\n easeInQuart: easeInQuart,\n easeOutQuart: easeOutQuart,\n easeInOutQuart: easeInOutQuart,\n easeInQuint: easeInQuint,\n easeOutQuint: easeOutQuint,\n easeInOutQuint: easeInOutQuint,\n easeInSine: easeInSine,\n easeOutSine: easeOutSine,\n easeInOutSine: easeInOutSine,\n easeInExpo: easeInExpo,\n easeOutExpo: easeOutExpo,\n easeInOutExpo: easeInOutExpo,\n easeInCirc: easeInCirc,\n easeOutCirc: easeOutCirc,\n easeInOutCirc: easeInOutCirc,\n easeInElastic: easeInElastic,\n easeOutElastic: easeOutElastic,\n easeInOutElastic: easeInOutElastic,\n easeInBack: easeInBack,\n easeOutBack: easeOutBack,\n easeInOutBack: easeInOutBack,\n easeInBounce: easeInBounce,\n easeOutBounce: easeOutBounce,\n easeInOutBounce: easeInOutBounce\n };\n\n})();\n\n\n(function(global) {\n\n 'use strict';\n\n /**\n * @name fabric\n * @namespace\n */\n\n var fabric = global.fabric || (global.fabric = { }),\n extend = fabric.util.object.extend,\n clone = fabric.util.object.clone,\n toFixed = fabric.util.toFixed,\n parseUnit = fabric.util.parseUnit,\n multiplyTransformMatrices = fabric.util.multiplyTransformMatrices,\n\n svgValidTagNames = ['path', 'circle', 'polygon', 'polyline', 'ellipse', 'rect', 'line',\n 'image', 'text'],\n svgViewBoxElements = ['symbol', 'image', 'marker', 'pattern', 'view', 'svg'],\n svgInvalidAncestors = ['pattern', 'defs', 'symbol', 'metadata', 'clipPath', 'mask', 'desc'],\n svgValidParents = ['symbol', 'g', 'a', 'svg', 'clipPath', 'defs'],\n\n attributesMap = {\n cx: 'left',\n x: 'left',\n r: 'radius',\n cy: 'top',\n y: 'top',\n display: 'visible',\n visibility: 'visible',\n transform: 'transformMatrix',\n 'fill-opacity': 'fillOpacity',\n 'fill-rule': 'fillRule',\n 'font-family': 'fontFamily',\n 'font-size': 'fontSize',\n 'font-style': 'fontStyle',\n 'font-weight': 'fontWeight',\n 'letter-spacing': 'charSpacing',\n 'paint-order': 'paintFirst',\n 'stroke-dasharray': 'strokeDashArray',\n 'stroke-dashoffset': 'strokeDashOffset',\n 'stroke-linecap': 'strokeLineCap',\n 'stroke-linejoin': 'strokeLineJoin',\n 'stroke-miterlimit': 'strokeMiterLimit',\n 'stroke-opacity': 'strokeOpacity',\n 'stroke-width': 'strokeWidth',\n 'text-decoration': 'textDecoration',\n 'text-anchor': 'textAnchor',\n opacity: 'opacity',\n 'clip-path': 'clipPath',\n 'clip-rule': 'clipRule',\n 'vector-effect': 'strokeUniform'\n },\n\n colorAttributes = {\n stroke: 'strokeOpacity',\n fill: 'fillOpacity'\n };\n\n fabric.svgValidTagNamesRegEx = getSvgRegex(svgValidTagNames);\n fabric.svgViewBoxElementsRegEx = getSvgRegex(svgViewBoxElements);\n fabric.svgInvalidAncestorsRegEx = getSvgRegex(svgInvalidAncestors);\n fabric.svgValidParentsRegEx = getSvgRegex(svgValidParents);\n\n fabric.cssRules = { };\n fabric.gradientDefs = { };\n fabric.clipPaths = { };\n\n function normalizeAttr(attr) {\n // transform attribute names\n if (attr in attributesMap) {\n return attributesMap[attr];\n }\n return attr;\n }\n\n function normalizeValue(attr, value, parentAttributes, fontSize) {\n var isArray = Object.prototype.toString.call(value) === '[object Array]',\n parsed;\n\n if ((attr === 'fill' || attr === 'stroke') && value === 'none') {\n value = '';\n }\n else if (attr === 'vector-effect') {\n value = value === 'non-scaling-stroke';\n }\n else if (attr === 'strokeDashArray') {\n if (value === 'none') {\n value = null;\n }\n else {\n value = value.replace(/,/g, ' ').split(/\\s+/).map(parseFloat);\n }\n }\n else if (attr === 'transformMatrix') {\n if (parentAttributes && parentAttributes.transformMatrix) {\n value = multiplyTransformMatrices(\n parentAttributes.transformMatrix, fabric.parseTransformAttribute(value));\n }\n else {\n value = fabric.parseTransformAttribute(value);\n }\n }\n else if (attr === 'visible') {\n value = value !== 'none' && value !== 'hidden';\n // display=none on parent element always takes precedence over child element\n if (parentAttributes && parentAttributes.visible === false) {\n value = false;\n }\n }\n else if (attr === 'opacity') {\n value = parseFloat(value);\n if (parentAttributes && typeof parentAttributes.opacity !== 'undefined') {\n value *= parentAttributes.opacity;\n }\n }\n else if (attr === 'textAnchor' /* text-anchor */) {\n value = value === 'start' ? 'left' : value === 'end' ? 'right' : 'center';\n }\n else if (attr === 'charSpacing') {\n // parseUnit returns px and we convert it to em\n parsed = parseUnit(value, fontSize) / fontSize * 1000;\n }\n else if (attr === 'paintFirst') {\n var fillIndex = value.indexOf('fill');\n var strokeIndex = value.indexOf('stroke');\n var value = 'fill';\n if (fillIndex > -1 && strokeIndex > -1 && strokeIndex < fillIndex) {\n value = 'stroke';\n }\n else if (fillIndex === -1 && strokeIndex > -1) {\n value = 'stroke';\n }\n }\n else if (attr === 'href' || attr === 'xlink:href') {\n return value;\n }\n else {\n parsed = isArray ? value.map(parseUnit) : parseUnit(value, fontSize);\n }\n\n return (!isArray && isNaN(parsed) ? value : parsed);\n }\n\n /**\n * @private\n */\n function getSvgRegex(arr) {\n return new RegExp('^(' + arr.join('|') + ')\\\\b', 'i');\n }\n\n /**\n * @private\n * @param {Object} attributes Array of attributes to parse\n */\n function _setStrokeFillOpacity(attributes) {\n for (var attr in colorAttributes) {\n\n if (typeof attributes[colorAttributes[attr]] === 'undefined' || attributes[attr] === '') {\n continue;\n }\n\n if (typeof attributes[attr] === 'undefined') {\n if (!fabric.Object.prototype[attr]) {\n continue;\n }\n attributes[attr] = fabric.Object.prototype[attr];\n }\n\n if (attributes[attr].indexOf('url(') === 0) {\n continue;\n }\n\n var color = new fabric.Color(attributes[attr]);\n attributes[attr] = color.setAlpha(toFixed(color.getAlpha() * attributes[colorAttributes[attr]], 2)).toRgba();\n }\n return attributes;\n }\n\n /**\n * @private\n */\n function _getMultipleNodes(doc, nodeNames) {\n var nodeName, nodeArray = [], nodeList, i, len;\n for (i = 0, len = nodeNames.length; i < len; i++) {\n nodeName = nodeNames[i];\n nodeList = doc.getElementsByTagName(nodeName);\n nodeArray = nodeArray.concat(Array.prototype.slice.call(nodeList));\n }\n return nodeArray;\n }\n\n /**\n * Parses \"transform\" attribute, returning an array of values\n * @static\n * @function\n * @memberOf fabric\n * @param {String} attributeValue String containing attribute value\n * @return {Array} Array of 6 elements representing transformation matrix\n */\n fabric.parseTransformAttribute = (function() {\n function rotateMatrix(matrix, args) {\n var cos = fabric.util.cos(args[0]), sin = fabric.util.sin(args[0]),\n x = 0, y = 0;\n if (args.length === 3) {\n x = args[1];\n y = args[2];\n }\n\n matrix[0] = cos;\n matrix[1] = sin;\n matrix[2] = -sin;\n matrix[3] = cos;\n matrix[4] = x - (cos * x - sin * y);\n matrix[5] = y - (sin * x + cos * y);\n }\n\n function scaleMatrix(matrix, args) {\n var multiplierX = args[0],\n multiplierY = (args.length === 2) ? args[1] : args[0];\n\n matrix[0] = multiplierX;\n matrix[3] = multiplierY;\n }\n\n function skewMatrix(matrix, args, pos) {\n matrix[pos] = Math.tan(fabric.util.degreesToRadians(args[0]));\n }\n\n function translateMatrix(matrix, args) {\n matrix[4] = args[0];\n if (args.length === 2) {\n matrix[5] = args[1];\n }\n }\n\n // identity matrix\n var iMatrix = fabric.iMatrix,\n\n // == begin transform regexp\n number = fabric.reNum,\n\n commaWsp = '(?:\\\\s+,?\\\\s*|,\\\\s*)',\n\n skewX = '(?:(skewX)\\\\s*\\\\(\\\\s*(' + number + ')\\\\s*\\\\))',\n\n skewY = '(?:(skewY)\\\\s*\\\\(\\\\s*(' + number + ')\\\\s*\\\\))',\n\n rotate = '(?:(rotate)\\\\s*\\\\(\\\\s*(' + number + ')(?:' +\n commaWsp + '(' + number + ')' +\n commaWsp + '(' + number + '))?\\\\s*\\\\))',\n\n scale = '(?:(scale)\\\\s*\\\\(\\\\s*(' + number + ')(?:' +\n commaWsp + '(' + number + '))?\\\\s*\\\\))',\n\n translate = '(?:(translate)\\\\s*\\\\(\\\\s*(' + number + ')(?:' +\n commaWsp + '(' + number + '))?\\\\s*\\\\))',\n\n matrix = '(?:(matrix)\\\\s*\\\\(\\\\s*' +\n '(' + number + ')' + commaWsp +\n '(' + number + ')' + commaWsp +\n '(' + number + ')' + commaWsp +\n '(' + number + ')' + commaWsp +\n '(' + number + ')' + commaWsp +\n '(' + number + ')' +\n '\\\\s*\\\\))',\n\n transform = '(?:' +\n matrix + '|' +\n translate + '|' +\n scale + '|' +\n rotate + '|' +\n skewX + '|' +\n skewY +\n ')',\n\n transforms = '(?:' + transform + '(?:' + commaWsp + '*' + transform + ')*' + ')',\n\n transformList = '^\\\\s*(?:' + transforms + '?)\\\\s*$',\n\n // http://www.w3.org/TR/SVG/coords.html#TransformAttribute\n reTransformList = new RegExp(transformList),\n // == end transform regexp\n\n reTransform = new RegExp(transform, 'g');\n\n return function(attributeValue) {\n\n // start with identity matrix\n var matrix = iMatrix.concat(),\n matrices = [];\n\n // return if no argument was given or\n // an argument does not match transform attribute regexp\n if (!attributeValue || (attributeValue && !reTransformList.test(attributeValue))) {\n return matrix;\n }\n\n attributeValue.replace(reTransform, function(match) {\n\n var m = new RegExp(transform).exec(match).filter(function (match) {\n // match !== '' && match != null\n return (!!match);\n }),\n operation = m[1],\n args = m.slice(2).map(parseFloat);\n\n switch (operation) {\n case 'translate':\n translateMatrix(matrix, args);\n break;\n case 'rotate':\n args[0] = fabric.util.degreesToRadians(args[0]);\n rotateMatrix(matrix, args);\n break;\n case 'scale':\n scaleMatrix(matrix, args);\n break;\n case 'skewX':\n skewMatrix(matrix, args, 2);\n break;\n case 'skewY':\n skewMatrix(matrix, args, 1);\n break;\n case 'matrix':\n matrix = args;\n break;\n }\n\n // snapshot current matrix into matrices array\n matrices.push(matrix.concat());\n // reset\n matrix = iMatrix.concat();\n });\n\n var combinedMatrix = matrices[0];\n while (matrices.length > 1) {\n matrices.shift();\n combinedMatrix = fabric.util.multiplyTransformMatrices(combinedMatrix, matrices[0]);\n }\n return combinedMatrix;\n };\n })();\n\n /**\n * @private\n */\n function parseStyleString(style, oStyle) {\n var attr, value;\n style.replace(/;\\s*$/, '').split(';').forEach(function (chunk) {\n var pair = chunk.split(':');\n\n attr = pair[0].trim().toLowerCase();\n value = pair[1].trim();\n\n oStyle[attr] = value;\n });\n }\n\n /**\n * @private\n */\n function parseStyleObject(style, oStyle) {\n var attr, value;\n for (var prop in style) {\n if (typeof style[prop] === 'undefined') {\n continue;\n }\n\n attr = prop.toLowerCase();\n value = style[prop];\n\n oStyle[attr] = value;\n }\n }\n\n /**\n * @private\n */\n function getGlobalStylesForElement(element, svgUid) {\n var styles = { };\n for (var rule in fabric.cssRules[svgUid]) {\n if (elementMatchesRule(element, rule.split(' '))) {\n for (var property in fabric.cssRules[svgUid][rule]) {\n styles[property] = fabric.cssRules[svgUid][rule][property];\n }\n }\n }\n return styles;\n }\n\n /**\n * @private\n */\n function elementMatchesRule(element, selectors) {\n var firstMatching, parentMatching = true;\n //start from rightmost selector.\n firstMatching = selectorMatches(element, selectors.pop());\n if (firstMatching && selectors.length) {\n parentMatching = doesSomeParentMatch(element, selectors);\n }\n return firstMatching && parentMatching && (selectors.length === 0);\n }\n\n function doesSomeParentMatch(element, selectors) {\n var selector, parentMatching = true;\n while (element.parentNode && element.parentNode.nodeType === 1 && selectors.length) {\n if (parentMatching) {\n selector = selectors.pop();\n }\n element = element.parentNode;\n parentMatching = selectorMatches(element, selector);\n }\n return selectors.length === 0;\n }\n\n /**\n * @private\n */\n function selectorMatches(element, selector) {\n var nodeName = element.nodeName,\n classNames = element.getAttribute('class'),\n id = element.getAttribute('id'), matcher, i;\n // i check if a selector matches slicing away part from it.\n // if i get empty string i should match\n matcher = new RegExp('^' + nodeName, 'i');\n selector = selector.replace(matcher, '');\n if (id && selector.length) {\n matcher = new RegExp('#' + id + '(?![a-zA-Z\\\\-]+)', 'i');\n selector = selector.replace(matcher, '');\n }\n if (classNames && selector.length) {\n classNames = classNames.split(' ');\n for (i = classNames.length; i--;) {\n matcher = new RegExp('\\\\.' + classNames[i] + '(?![a-zA-Z\\\\-]+)', 'i');\n selector = selector.replace(matcher, '');\n }\n }\n return selector.length === 0;\n }\n\n /**\n * @private\n * to support IE8 missing getElementById on SVGdocument and on node xmlDOM\n */\n function elementById(doc, id) {\n var el;\n doc.getElementById && (el = doc.getElementById(id));\n if (el) {\n return el;\n }\n var node, i, len, nodelist = doc.getElementsByTagName('*');\n for (i = 0, len = nodelist.length; i < len; i++) {\n node = nodelist[i];\n if (id === node.getAttribute('id')) {\n return node;\n }\n }\n }\n\n /**\n * @private\n */\n function parseUseDirectives(doc) {\n var nodelist = _getMultipleNodes(doc, ['use', 'svg:use']), i = 0;\n while (nodelist.length && i < nodelist.length) {\n var el = nodelist[i],\n xlink = (el.getAttribute('xlink:href') || el.getAttribute('href')).substr(1),\n x = el.getAttribute('x') || 0,\n y = el.getAttribute('y') || 0,\n el2 = elementById(doc, xlink).cloneNode(true),\n currentTrans = (el2.getAttribute('transform') || '') + ' translate(' + x + ', ' + y + ')',\n parentNode, oldLength = nodelist.length, attr, j, attrs, len;\n\n applyViewboxTransform(el2);\n if (/^svg$/i.test(el2.nodeName)) {\n var el3 = el2.ownerDocument.createElement('g');\n for (j = 0, attrs = el2.attributes, len = attrs.length; j < len; j++) {\n attr = attrs.item(j);\n el3.setAttribute(attr.nodeName, attr.nodeValue);\n }\n // el2.firstChild != null\n while (el2.firstChild) {\n el3.appendChild(el2.firstChild);\n }\n el2 = el3;\n }\n\n for (j = 0, attrs = el.attributes, len = attrs.length; j < len; j++) {\n attr = attrs.item(j);\n if (attr.nodeName === 'x' || attr.nodeName === 'y' ||\n attr.nodeName === 'xlink:href' || attr.nodeName === 'href') {\n continue;\n }\n\n if (attr.nodeName === 'transform') {\n currentTrans = attr.nodeValue + ' ' + currentTrans;\n }\n else {\n el2.setAttribute(attr.nodeName, attr.nodeValue);\n }\n }\n\n el2.setAttribute('transform', currentTrans);\n el2.setAttribute('instantiated_by_use', '1');\n el2.removeAttribute('id');\n parentNode = el.parentNode;\n parentNode.replaceChild(el2, el);\n // some browsers do not shorten nodelist after replaceChild (IE8)\n if (nodelist.length === oldLength) {\n i++;\n }\n }\n }\n\n // http://www.w3.org/TR/SVG/coords.html#ViewBoxAttribute\n // matches, e.g.: +14.56e-12, etc.\n var reViewBoxAttrValue = new RegExp(\n '^' +\n '\\\\s*(' + fabric.reNum + '+)\\\\s*,?' +\n '\\\\s*(' + fabric.reNum + '+)\\\\s*,?' +\n '\\\\s*(' + fabric.reNum + '+)\\\\s*,?' +\n '\\\\s*(' + fabric.reNum + '+)\\\\s*' +\n '$'\n );\n\n /**\n * Add a element that envelop all child elements and makes the viewbox transformMatrix descend on all elements\n */\n function applyViewboxTransform(element) {\n\n var viewBoxAttr = element.getAttribute('viewBox'),\n scaleX = 1,\n scaleY = 1,\n minX = 0,\n minY = 0,\n viewBoxWidth, viewBoxHeight, matrix, el,\n widthAttr = element.getAttribute('width'),\n heightAttr = element.getAttribute('height'),\n x = element.getAttribute('x') || 0,\n y = element.getAttribute('y') || 0,\n preserveAspectRatio = element.getAttribute('preserveAspectRatio') || '',\n missingViewBox = (!viewBoxAttr || !fabric.svgViewBoxElementsRegEx.test(element.nodeName)\n || !(viewBoxAttr = viewBoxAttr.match(reViewBoxAttrValue))),\n missingDimAttr = (!widthAttr || !heightAttr || widthAttr === '100%' || heightAttr === '100%'),\n toBeParsed = missingViewBox && missingDimAttr,\n parsedDim = { }, translateMatrix = '', widthDiff = 0, heightDiff = 0;\n\n parsedDim.width = 0;\n parsedDim.height = 0;\n parsedDim.toBeParsed = toBeParsed;\n\n if (toBeParsed) {\n return parsedDim;\n }\n\n if (missingViewBox) {\n parsedDim.width = parseUnit(widthAttr);\n parsedDim.height = parseUnit(heightAttr);\n return parsedDim;\n }\n\n minX = -parseFloat(viewBoxAttr[1]);\n minY = -parseFloat(viewBoxAttr[2]);\n viewBoxWidth = parseFloat(viewBoxAttr[3]);\n viewBoxHeight = parseFloat(viewBoxAttr[4]);\n\n if (!missingDimAttr) {\n parsedDim.width = parseUnit(widthAttr);\n parsedDim.height = parseUnit(heightAttr);\n scaleX = parsedDim.width / viewBoxWidth;\n scaleY = parsedDim.height / viewBoxHeight;\n }\n else {\n parsedDim.width = viewBoxWidth;\n parsedDim.height = viewBoxHeight;\n }\n\n // default is to preserve aspect ratio\n preserveAspectRatio = fabric.util.parsePreserveAspectRatioAttribute(preserveAspectRatio);\n if (preserveAspectRatio.alignX !== 'none') {\n //translate all container for the effect of Mid, Min, Max\n if (preserveAspectRatio.meetOrSlice === 'meet') {\n scaleY = scaleX = (scaleX > scaleY ? scaleY : scaleX);\n // calculate additional translation to move the viewbox\n }\n if (preserveAspectRatio.meetOrSlice === 'slice') {\n scaleY = scaleX = (scaleX > scaleY ? scaleX : scaleY);\n // calculate additional translation to move the viewbox\n }\n widthDiff = parsedDim.width - viewBoxWidth * scaleX;\n heightDiff = parsedDim.height - viewBoxHeight * scaleX;\n if (preserveAspectRatio.alignX === 'Mid') {\n widthDiff /= 2;\n }\n if (preserveAspectRatio.alignY === 'Mid') {\n heightDiff /= 2;\n }\n if (preserveAspectRatio.alignX === 'Min') {\n widthDiff = 0;\n }\n if (preserveAspectRatio.alignY === 'Min') {\n heightDiff = 0;\n }\n }\n\n if (scaleX === 1 && scaleY === 1 && minX === 0 && minY === 0 && x === 0 && y === 0) {\n return parsedDim;\n }\n\n if (x || y) {\n translateMatrix = ' translate(' + parseUnit(x) + ' ' + parseUnit(y) + ') ';\n }\n\n matrix = translateMatrix + ' matrix(' + scaleX +\n ' 0' +\n ' 0 ' +\n scaleY + ' ' +\n (minX * scaleX + widthDiff) + ' ' +\n (minY * scaleY + heightDiff) + ') ';\n parsedDim.viewboxTransform = fabric.parseTransformAttribute(matrix);\n if (element.nodeName === 'svg') {\n el = element.ownerDocument.createElement('g');\n // element.firstChild != null\n while (element.firstChild) {\n el.appendChild(element.firstChild);\n }\n element.appendChild(el);\n }\n else {\n el = element;\n matrix = el.getAttribute('transform') + matrix;\n }\n el.setAttribute('transform', matrix);\n return parsedDim;\n }\n\n function hasAncestorWithNodeName(element, nodeName) {\n while (element && (element = element.parentNode)) {\n if (element.nodeName && nodeName.test(element.nodeName.replace('svg:', ''))\n && !element.getAttribute('instantiated_by_use')) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Parses an SVG document, converts it to an array of corresponding fabric.* instances and passes them to a callback\n * @static\n * @function\n * @memberOf fabric\n * @param {SVGDocument} doc SVG document to parse\n * @param {Function} callback Callback to call when parsing is finished;\n * It's being passed an array of elements (parsed from a document).\n * @param {Function} [reviver] Method for further parsing of SVG elements, called after each fabric object created.\n * @param {Object} [parsingOptions] options for parsing document\n * @param {String} [parsingOptions.crossOrigin] crossOrigin settings\n */\n fabric.parseSVGDocument = function(doc, callback, reviver, parsingOptions) {\n if (!doc) {\n return;\n }\n\n parseUseDirectives(doc);\n\n var svgUid = fabric.Object.__uid++, i, len,\n options = applyViewboxTransform(doc),\n descendants = fabric.util.toArray(doc.getElementsByTagName('*'));\n options.crossOrigin = parsingOptions && parsingOptions.crossOrigin;\n options.svgUid = svgUid;\n\n if (descendants.length === 0 && fabric.isLikelyNode) {\n // we're likely in node, where \"o3-xml\" library fails to gEBTN(\"*\")\n // https://github.com/ajaxorg/node-o3-xml/issues/21\n descendants = doc.selectNodes('//*[name(.)!=\"svg\"]');\n var arr = [];\n for (i = 0, len = descendants.length; i < len; i++) {\n arr[i] = descendants[i];\n }\n descendants = arr;\n }\n\n var elements = descendants.filter(function(el) {\n applyViewboxTransform(el);\n return fabric.svgValidTagNamesRegEx.test(el.nodeName.replace('svg:', '')) &&\n !hasAncestorWithNodeName(el, fabric.svgInvalidAncestorsRegEx); // http://www.w3.org/TR/SVG/struct.html#DefsElement\n });\n\n if (!elements || (elements && !elements.length)) {\n callback && callback([], {});\n return;\n }\n var clipPaths = { };\n descendants.filter(function(el) {\n return el.nodeName.replace('svg:', '') === 'clipPath';\n }).forEach(function(el) {\n var id = el.getAttribute('id');\n clipPaths[id] = fabric.util.toArray(el.getElementsByTagName('*')).filter(function(el) {\n return fabric.svgValidTagNamesRegEx.test(el.nodeName.replace('svg:', ''));\n });\n });\n fabric.gradientDefs[svgUid] = fabric.getGradientDefs(doc);\n fabric.cssRules[svgUid] = fabric.getCSSRules(doc);\n fabric.clipPaths[svgUid] = clipPaths;\n // Precedence of rules: style > class > attribute\n fabric.parseElements(elements, function(instances, elements) {\n if (callback) {\n callback(instances, options, elements, descendants);\n delete fabric.gradientDefs[svgUid];\n delete fabric.cssRules[svgUid];\n delete fabric.clipPaths[svgUid];\n }\n }, clone(options), reviver, parsingOptions);\n };\n\n function recursivelyParseGradientsXlink(doc, gradient) {\n var gradientsAttrs = ['gradientTransform', 'x1', 'x2', 'y1', 'y2', 'gradientUnits', 'cx', 'cy', 'r', 'fx', 'fy'],\n xlinkAttr = 'xlink:href',\n xLink = gradient.getAttribute(xlinkAttr).substr(1),\n referencedGradient = elementById(doc, xLink);\n if (referencedGradient && referencedGradient.getAttribute(xlinkAttr)) {\n recursivelyParseGradientsXlink(doc, referencedGradient);\n }\n gradientsAttrs.forEach(function(attr) {\n if (!gradient.hasAttribute(attr)) {\n gradient.setAttribute(attr, referencedGradient.getAttribute(attr));\n }\n });\n if (!gradient.children.length) {\n var referenceClone = referencedGradient.cloneNode(true);\n while (referenceClone.firstChild) {\n gradient.appendChild(referenceClone.firstChild);\n }\n }\n gradient.removeAttribute(xlinkAttr);\n }\n\n var reFontDeclaration = new RegExp(\n '(normal|italic)?\\\\s*(normal|small-caps)?\\\\s*' +\n '(normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900)?\\\\s*(' +\n fabric.reNum +\n '(?:px|cm|mm|em|pt|pc|in)*)(?:\\\\/(normal|' + fabric.reNum + '))?\\\\s+(.*)');\n\n extend(fabric, {\n /**\n * Parses a short font declaration, building adding its properties to a style object\n * @static\n * @function\n * @memberOf fabric\n * @param {String} value font declaration\n * @param {Object} oStyle definition\n */\n parseFontDeclaration: function(value, oStyle) {\n var match = value.match(reFontDeclaration);\n\n if (!match) {\n return;\n }\n var fontStyle = match[1],\n // font variant is not used\n // fontVariant = match[2],\n fontWeight = match[3],\n fontSize = match[4],\n lineHeight = match[5],\n fontFamily = match[6];\n\n if (fontStyle) {\n oStyle.fontStyle = fontStyle;\n }\n if (fontWeight) {\n oStyle.fontWeight = isNaN(parseFloat(fontWeight)) ? fontWeight : parseFloat(fontWeight);\n }\n if (fontSize) {\n oStyle.fontSize = parseUnit(fontSize);\n }\n if (fontFamily) {\n oStyle.fontFamily = fontFamily;\n }\n if (lineHeight) {\n oStyle.lineHeight = lineHeight === 'normal' ? 1 : lineHeight;\n }\n },\n\n /**\n * Parses an SVG document, returning all of the gradient declarations found in it\n * @static\n * @function\n * @memberOf fabric\n * @param {SVGDocument} doc SVG document to parse\n * @return {Object} Gradient definitions; key corresponds to element id, value -- to gradient definition element\n */\n getGradientDefs: function(doc) {\n var tagArray = [\n 'linearGradient',\n 'radialGradient',\n 'svg:linearGradient',\n 'svg:radialGradient'],\n elList = _getMultipleNodes(doc, tagArray),\n el, j = 0, gradientDefs = { };\n j = elList.length;\n while (j--) {\n el = elList[j];\n if (el.getAttribute('xlink:href')) {\n recursivelyParseGradientsXlink(doc, el);\n }\n gradientDefs[el.getAttribute('id')] = el;\n }\n return gradientDefs;\n },\n\n /**\n * Returns an object of attributes' name/value, given element and an array of attribute names;\n * Parses parent \"g\" nodes recursively upwards.\n * @static\n * @memberOf fabric\n * @param {DOMElement} element Element to parse\n * @param {Array} attributes Array of attributes to parse\n * @return {Object} object containing parsed attributes' names/values\n */\n parseAttributes: function(element, attributes, svgUid) {\n\n if (!element) {\n return;\n }\n\n var value,\n parentAttributes = { },\n fontSize, parentFontSize;\n\n if (typeof svgUid === 'undefined') {\n svgUid = element.getAttribute('svgUid');\n }\n // if there's a parent container (`g` or `a` or `symbol` node), parse its attributes recursively upwards\n if (element.parentNode && fabric.svgValidParentsRegEx.test(element.parentNode.nodeName)) {\n parentAttributes = fabric.parseAttributes(element.parentNode, attributes, svgUid);\n }\n\n var ownAttributes = attributes.reduce(function(memo, attr) {\n value = element.getAttribute(attr);\n if (value) { // eslint-disable-line\n memo[attr] = value;\n }\n return memo;\n }, { });\n // add values parsed from style, which take precedence over attributes\n // (see: http://www.w3.org/TR/SVG/styling.html#UsingPresentationAttributes)\n ownAttributes = extend(ownAttributes,\n extend(getGlobalStylesForElement(element, svgUid), fabric.parseStyleAttribute(element)));\n\n fontSize = parentFontSize = parentAttributes.fontSize || fabric.Text.DEFAULT_SVG_FONT_SIZE;\n if (ownAttributes['font-size']) {\n // looks like the minimum should be 9px when dealing with ems. this is what looks like in browsers.\n ownAttributes['font-size'] = fontSize = parseUnit(ownAttributes['font-size'], parentFontSize);\n }\n\n var normalizedAttr, normalizedValue, normalizedStyle = {};\n for (var attr in ownAttributes) {\n normalizedAttr = normalizeAttr(attr);\n normalizedValue = normalizeValue(normalizedAttr, ownAttributes[attr], parentAttributes, fontSize);\n normalizedStyle[normalizedAttr] = normalizedValue;\n }\n if (normalizedStyle && normalizedStyle.font) {\n fabric.parseFontDeclaration(normalizedStyle.font, normalizedStyle);\n }\n var mergedAttrs = extend(parentAttributes, normalizedStyle);\n return fabric.svgValidParentsRegEx.test(element.nodeName) ? mergedAttrs : _setStrokeFillOpacity(mergedAttrs);\n },\n\n /**\n * Transforms an array of svg elements to corresponding fabric.* instances\n * @static\n * @memberOf fabric\n * @param {Array} elements Array of elements to parse\n * @param {Function} callback Being passed an array of fabric instances (transformed from SVG elements)\n * @param {Object} [options] Options object\n * @param {Function} [reviver] Method for further parsing of SVG elements, called after each fabric object created.\n */\n parseElements: function(elements, callback, options, reviver, parsingOptions) {\n new fabric.ElementsParser(elements, callback, options, reviver, parsingOptions).parse();\n },\n\n /**\n * Parses \"style\" attribute, retuning an object with values\n * @static\n * @memberOf fabric\n * @param {SVGElement} element Element to parse\n * @return {Object} Objects with values parsed from style attribute of an element\n */\n parseStyleAttribute: function(element) {\n var oStyle = { },\n style = element.getAttribute('style');\n\n if (!style) {\n return oStyle;\n }\n\n if (typeof style === 'string') {\n parseStyleString(style, oStyle);\n }\n else {\n parseStyleObject(style, oStyle);\n }\n\n return oStyle;\n },\n\n /**\n * Parses \"points\" attribute, returning an array of values\n * @static\n * @memberOf fabric\n * @param {String} points points attribute string\n * @return {Array} array of points\n */\n parsePointsAttribute: function(points) {\n\n // points attribute is required and must not be empty\n if (!points) {\n return null;\n }\n\n // replace commas with whitespace and remove bookending whitespace\n points = points.replace(/,/g, ' ').trim();\n\n points = points.split(/\\s+/);\n var parsedPoints = [], i, len;\n\n for (i = 0, len = points.length; i < len; i += 2) {\n parsedPoints.push({\n x: parseFloat(points[i]),\n y: parseFloat(points[i + 1])\n });\n }\n\n // odd number of points is an error\n // if (parsedPoints.length % 2 !== 0) {\n // return null;\n // }\n\n return parsedPoints;\n },\n\n /**\n * Returns CSS rules for a given SVG document\n * @static\n * @function\n * @memberOf fabric\n * @param {SVGDocument} doc SVG document to parse\n * @return {Object} CSS rules of this document\n */\n getCSSRules: function(doc) {\n var styles = doc.getElementsByTagName('style'), i, len,\n allRules = { }, rules;\n\n // very crude parsing of style contents\n for (i = 0, len = styles.length; i < len; i++) {\n // IE9 doesn't support textContent, but provides text instead.\n var styleContents = styles[i].textContent || styles[i].text;\n\n // remove comments\n styleContents = styleContents.replace(/\\/\\*[\\s\\S]*?\\*\\//g, '');\n if (styleContents.trim() === '') {\n continue;\n }\n rules = styleContents.match(/[^{]*\\{[\\s\\S]*?\\}/g);\n rules = rules.map(function(rule) { return rule.trim(); });\n // eslint-disable-next-line no-loop-func\n rules.forEach(function(rule) {\n\n var match = rule.match(/([\\s\\S]*?)\\s*\\{([^}]*)\\}/),\n ruleObj = { }, declaration = match[2].trim(),\n propertyValuePairs = declaration.replace(/;$/, '').split(/\\s*;\\s*/);\n\n for (i = 0, len = propertyValuePairs.length; i < len; i++) {\n var pair = propertyValuePairs[i].split(/\\s*:\\s*/),\n property = pair[0],\n value = pair[1];\n ruleObj[property] = value;\n }\n rule = match[1];\n rule.split(',').forEach(function(_rule) {\n _rule = _rule.replace(/^svg/i, '').trim();\n if (_rule === '') {\n return;\n }\n if (allRules[_rule]) {\n fabric.util.object.extend(allRules[_rule], ruleObj);\n }\n else {\n allRules[_rule] = fabric.util.object.clone(ruleObj);\n }\n });\n });\n }\n return allRules;\n },\n\n /**\n * Takes url corresponding to an SVG document, and parses it into a set of fabric objects.\n * Note that SVG is fetched via XMLHttpRequest, so it needs to conform to SOP (Same Origin Policy)\n * @memberOf fabric\n * @param {String} url\n * @param {Function} callback\n * @param {Function} [reviver] Method for further parsing of SVG elements, called after each fabric object created.\n * @param {Object} [options] Object containing options for parsing\n * @param {String} [options.crossOrigin] crossOrigin crossOrigin setting to use for external resources\n */\n loadSVGFromURL: function(url, callback, reviver, options) {\n\n url = url.replace(/^\\n\\s*/, '').trim();\n new fabric.util.request(url, {\n method: 'get',\n onComplete: onComplete\n });\n\n function onComplete(r) {\n\n var xml = r.responseXML;\n if (xml && !xml.documentElement && fabric.window.ActiveXObject && r.responseText) {\n xml = new ActiveXObject('Microsoft.XMLDOM');\n xml.async = 'false';\n //IE chokes on DOCTYPE\n xml.loadXML(r.responseText.replace(//i, ''));\n }\n if (!xml || !xml.documentElement) {\n callback && callback(null);\n return false;\n }\n\n fabric.parseSVGDocument(xml.documentElement, function (results, _options, elements, allElements) {\n callback && callback(results, _options, elements, allElements);\n }, reviver, options);\n }\n },\n\n /**\n * Takes string corresponding to an SVG document, and parses it into a set of fabric objects\n * @memberOf fabric\n * @param {String} string\n * @param {Function} callback\n * @param {Function} [reviver] Method for further parsing of SVG elements, called after each fabric object created.\n * @param {Object} [options] Object containing options for parsing\n * @param {String} [options.crossOrigin] crossOrigin crossOrigin setting to use for external resources\n */\n loadSVGFromString: function(string, callback, reviver, options) {\n string = string.trim();\n var doc;\n if (typeof DOMParser !== 'undefined') {\n var parser = new DOMParser();\n if (parser && parser.parseFromString) {\n doc = parser.parseFromString(string, 'text/xml');\n }\n }\n else if (fabric.window.ActiveXObject) {\n doc = new ActiveXObject('Microsoft.XMLDOM');\n doc.async = 'false';\n // IE chokes on DOCTYPE\n doc.loadXML(string.replace(//i, ''));\n }\n\n fabric.parseSVGDocument(doc.documentElement, function (results, _options, elements, allElements) {\n callback(results, _options, elements, allElements);\n }, reviver, options);\n }\n });\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\nfabric.ElementsParser = function(elements, callback, options, reviver, parsingOptions) {\n this.elements = elements;\n this.callback = callback;\n this.options = options;\n this.reviver = reviver;\n this.svgUid = (options && options.svgUid) || 0;\n this.parsingOptions = parsingOptions;\n this.regexUrl = /^url\\(['\"]?#([^'\"]+)['\"]?\\)/g;\n};\n\n(function(proto) {\n proto.parse = function() {\n this.instances = new Array(this.elements.length);\n this.numElements = this.elements.length;\n this.createObjects();\n };\n\n proto.createObjects = function() {\n var _this = this;\n this.elements.forEach(function(element, i) {\n element.setAttribute('svgUid', _this.svgUid);\n _this.createObject(element, i);\n });\n };\n\n proto.findTag = function(el) {\n return fabric[fabric.util.string.capitalize(el.tagName.replace('svg:', ''))];\n };\n\n proto.createObject = function(el, index) {\n var klass = this.findTag(el);\n if (klass && klass.fromElement) {\n try {\n klass.fromElement(el, this.createCallback(index, el), this.options);\n }\n catch (err) {\n fabric.log(err);\n }\n }\n else {\n this.checkIfDone();\n }\n };\n\n proto.createCallback = function(index, el) {\n var _this = this;\n return function(obj) {\n var _options;\n _this.resolveGradient(obj, 'fill');\n _this.resolveGradient(obj, 'stroke');\n if (obj instanceof fabric.Image && obj._originalElement) {\n _options = obj.parsePreserveAspectRatioAttribute(el);\n }\n obj._removeTransformMatrix(_options);\n _this.resolveClipPath(obj);\n _this.reviver && _this.reviver(el, obj);\n _this.instances[index] = obj;\n _this.checkIfDone();\n };\n };\n\n proto.extractPropertyDefinition = function(obj, property, storage) {\n var value = obj[property];\n if (!(/^url\\(/).test(value)) {\n return;\n }\n var id = this.regexUrl.exec(value)[1];\n this.regexUrl.lastIndex = 0;\n return fabric[storage][this.svgUid][id];\n };\n\n proto.resolveGradient = function(obj, property) {\n var gradientDef = this.extractPropertyDefinition(obj, property, 'gradientDefs');\n if (gradientDef) {\n obj.set(property, fabric.Gradient.fromElement(gradientDef, obj));\n }\n };\n\n proto.createClipPathCallback = function(obj, container) {\n return function(_newObj) {\n _newObj._removeTransformMatrix();\n _newObj.fillRule = _newObj.clipRule;\n container.push(_newObj);\n };\n };\n\n proto.resolveClipPath = function(obj) {\n var clipPath = this.extractPropertyDefinition(obj, 'clipPath', 'clipPaths'),\n element, klass, objTransformInv, container, gTransform, options;\n if (clipPath) {\n container = [];\n objTransformInv = fabric.util.invertTransform(obj.calcTransformMatrix());\n for (var i = 0; i < clipPath.length; i++) {\n element = clipPath[i];\n klass = this.findTag(element);\n klass.fromElement(\n element,\n this.createClipPathCallback(obj, container),\n this.options\n );\n }\n if (container.length === 1) {\n clipPath = container[0];\n }\n else {\n clipPath = new fabric.Group(container);\n }\n gTransform = fabric.util.multiplyTransformMatrices(\n objTransformInv,\n clipPath.calcTransformMatrix()\n );\n var options = fabric.util.qrDecompose(gTransform);\n clipPath.flipX = false;\n clipPath.flipY = false;\n clipPath.set('scaleX', options.scaleX);\n clipPath.set('scaleY', options.scaleY);\n clipPath.angle = options.angle;\n clipPath.skewX = options.skewX;\n clipPath.skewY = 0;\n clipPath.setPositionByOrigin({ x: options.translateX, y: options.translateY }, 'center', 'center');\n obj.clipPath = clipPath;\n }\n };\n\n proto.checkIfDone = function() {\n if (--this.numElements === 0) {\n this.instances = this.instances.filter(function(el) {\n // eslint-disable-next-line no-eq-null, eqeqeq\n return el != null;\n });\n this.callback(this.instances, this.elements);\n }\n };\n})(fabric.ElementsParser.prototype);\n\n\n(function(global) {\n\n 'use strict';\n\n /* Adaptation of work of Kevin Lindsey (kevin@kevlindev.com) */\n\n var fabric = global.fabric || (global.fabric = { });\n\n if (fabric.Point) {\n fabric.warn('fabric.Point is already defined');\n return;\n }\n\n fabric.Point = Point;\n\n /**\n * Point class\n * @class fabric.Point\n * @memberOf fabric\n * @constructor\n * @param {Number} x\n * @param {Number} y\n * @return {fabric.Point} thisArg\n */\n function Point(x, y) {\n this.x = x;\n this.y = y;\n }\n\n Point.prototype = /** @lends fabric.Point.prototype */ {\n\n type: 'point',\n\n constructor: Point,\n\n /**\n * Adds another point to this one and returns another one\n * @param {fabric.Point} that\n * @return {fabric.Point} new Point instance with added values\n */\n add: function (that) {\n return new Point(this.x + that.x, this.y + that.y);\n },\n\n /**\n * Adds another point to this one\n * @param {fabric.Point} that\n * @return {fabric.Point} thisArg\n * @chainable\n */\n addEquals: function (that) {\n this.x += that.x;\n this.y += that.y;\n return this;\n },\n\n /**\n * Adds value to this point and returns a new one\n * @param {Number} scalar\n * @return {fabric.Point} new Point with added value\n */\n scalarAdd: function (scalar) {\n return new Point(this.x + scalar, this.y + scalar);\n },\n\n /**\n * Adds value to this point\n * @param {Number} scalar\n * @return {fabric.Point} thisArg\n * @chainable\n */\n scalarAddEquals: function (scalar) {\n this.x += scalar;\n this.y += scalar;\n return this;\n },\n\n /**\n * Subtracts another point from this point and returns a new one\n * @param {fabric.Point} that\n * @return {fabric.Point} new Point object with subtracted values\n */\n subtract: function (that) {\n return new Point(this.x - that.x, this.y - that.y);\n },\n\n /**\n * Subtracts another point from this point\n * @param {fabric.Point} that\n * @return {fabric.Point} thisArg\n * @chainable\n */\n subtractEquals: function (that) {\n this.x -= that.x;\n this.y -= that.y;\n return this;\n },\n\n /**\n * Subtracts value from this point and returns a new one\n * @param {Number} scalar\n * @return {fabric.Point}\n */\n scalarSubtract: function (scalar) {\n return new Point(this.x - scalar, this.y - scalar);\n },\n\n /**\n * Subtracts value from this point\n * @param {Number} scalar\n * @return {fabric.Point} thisArg\n * @chainable\n */\n scalarSubtractEquals: function (scalar) {\n this.x -= scalar;\n this.y -= scalar;\n return this;\n },\n\n /**\n * Multiplies this point by a value and returns a new one\n * TODO: rename in scalarMultiply in 2.0\n * @param {Number} scalar\n * @return {fabric.Point}\n */\n multiply: function (scalar) {\n return new Point(this.x * scalar, this.y * scalar);\n },\n\n /**\n * Multiplies this point by a value\n * TODO: rename in scalarMultiplyEquals in 2.0\n * @param {Number} scalar\n * @return {fabric.Point} thisArg\n * @chainable\n */\n multiplyEquals: function (scalar) {\n this.x *= scalar;\n this.y *= scalar;\n return this;\n },\n\n /**\n * Divides this point by a value and returns a new one\n * TODO: rename in scalarDivide in 2.0\n * @param {Number} scalar\n * @return {fabric.Point}\n */\n divide: function (scalar) {\n return new Point(this.x / scalar, this.y / scalar);\n },\n\n /**\n * Divides this point by a value\n * TODO: rename in scalarDivideEquals in 2.0\n * @param {Number} scalar\n * @return {fabric.Point} thisArg\n * @chainable\n */\n divideEquals: function (scalar) {\n this.x /= scalar;\n this.y /= scalar;\n return this;\n },\n\n /**\n * Returns true if this point is equal to another one\n * @param {fabric.Point} that\n * @return {Boolean}\n */\n eq: function (that) {\n return (this.x === that.x && this.y === that.y);\n },\n\n /**\n * Returns true if this point is less than another one\n * @param {fabric.Point} that\n * @return {Boolean}\n */\n lt: function (that) {\n return (this.x < that.x && this.y < that.y);\n },\n\n /**\n * Returns true if this point is less than or equal to another one\n * @param {fabric.Point} that\n * @return {Boolean}\n */\n lte: function (that) {\n return (this.x <= that.x && this.y <= that.y);\n },\n\n /**\n\n * Returns true if this point is greater another one\n * @param {fabric.Point} that\n * @return {Boolean}\n */\n gt: function (that) {\n return (this.x > that.x && this.y > that.y);\n },\n\n /**\n * Returns true if this point is greater than or equal to another one\n * @param {fabric.Point} that\n * @return {Boolean}\n */\n gte: function (that) {\n return (this.x >= that.x && this.y >= that.y);\n },\n\n /**\n * Returns new point which is the result of linear interpolation with this one and another one\n * @param {fabric.Point} that\n * @param {Number} t , position of interpolation, between 0 and 1 default 0.5\n * @return {fabric.Point}\n */\n lerp: function (that, t) {\n if (typeof t === 'undefined') {\n t = 0.5;\n }\n t = Math.max(Math.min(1, t), 0);\n return new Point(this.x + (that.x - this.x) * t, this.y + (that.y - this.y) * t);\n },\n\n /**\n * Returns distance from this point and another one\n * @param {fabric.Point} that\n * @return {Number}\n */\n distanceFrom: function (that) {\n var dx = this.x - that.x,\n dy = this.y - that.y;\n return Math.sqrt(dx * dx + dy * dy);\n },\n\n /**\n * Returns the point between this point and another one\n * @param {fabric.Point} that\n * @return {fabric.Point}\n */\n midPointFrom: function (that) {\n return this.lerp(that);\n },\n\n /**\n * Returns a new point which is the min of this and another one\n * @param {fabric.Point} that\n * @return {fabric.Point}\n */\n min: function (that) {\n return new Point(Math.min(this.x, that.x), Math.min(this.y, that.y));\n },\n\n /**\n * Returns a new point which is the max of this and another one\n * @param {fabric.Point} that\n * @return {fabric.Point}\n */\n max: function (that) {\n return new Point(Math.max(this.x, that.x), Math.max(this.y, that.y));\n },\n\n /**\n * Returns string representation of this point\n * @return {String}\n */\n toString: function () {\n return this.x + ',' + this.y;\n },\n\n /**\n * Sets x/y of this point\n * @param {Number} x\n * @param {Number} y\n * @chainable\n */\n setXY: function (x, y) {\n this.x = x;\n this.y = y;\n return this;\n },\n\n /**\n * Sets x of this point\n * @param {Number} x\n * @chainable\n */\n setX: function (x) {\n this.x = x;\n return this;\n },\n\n /**\n * Sets y of this point\n * @param {Number} y\n * @chainable\n */\n setY: function (y) {\n this.y = y;\n return this;\n },\n\n /**\n * Sets x/y of this point from another point\n * @param {fabric.Point} that\n * @chainable\n */\n setFromPoint: function (that) {\n this.x = that.x;\n this.y = that.y;\n return this;\n },\n\n /**\n * Swaps x/y of this point and another point\n * @param {fabric.Point} that\n */\n swap: function (that) {\n var x = this.x,\n y = this.y;\n this.x = that.x;\n this.y = that.y;\n that.x = x;\n that.y = y;\n },\n\n /**\n * return a cloned instance of the point\n * @return {fabric.Point}\n */\n clone: function () {\n return new Point(this.x, this.y);\n }\n };\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n /* Adaptation of work of Kevin Lindsey (kevin@kevlindev.com) */\n var fabric = global.fabric || (global.fabric = { });\n\n if (fabric.Intersection) {\n fabric.warn('fabric.Intersection is already defined');\n return;\n }\n\n /**\n * Intersection class\n * @class fabric.Intersection\n * @memberOf fabric\n * @constructor\n */\n function Intersection(status) {\n this.status = status;\n this.points = [];\n }\n\n fabric.Intersection = Intersection;\n\n fabric.Intersection.prototype = /** @lends fabric.Intersection.prototype */ {\n\n constructor: Intersection,\n\n /**\n * Appends a point to intersection\n * @param {fabric.Point} point\n * @return {fabric.Intersection} thisArg\n * @chainable\n */\n appendPoint: function (point) {\n this.points.push(point);\n return this;\n },\n\n /**\n * Appends points to intersection\n * @param {Array} points\n * @return {fabric.Intersection} thisArg\n * @chainable\n */\n appendPoints: function (points) {\n this.points = this.points.concat(points);\n return this;\n }\n };\n\n /**\n * Checks if one line intersects another\n * TODO: rename in intersectSegmentSegment\n * @static\n * @param {fabric.Point} a1\n * @param {fabric.Point} a2\n * @param {fabric.Point} b1\n * @param {fabric.Point} b2\n * @return {fabric.Intersection}\n */\n fabric.Intersection.intersectLineLine = function (a1, a2, b1, b2) {\n var result,\n uaT = (b2.x - b1.x) * (a1.y - b1.y) - (b2.y - b1.y) * (a1.x - b1.x),\n ubT = (a2.x - a1.x) * (a1.y - b1.y) - (a2.y - a1.y) * (a1.x - b1.x),\n uB = (b2.y - b1.y) * (a2.x - a1.x) - (b2.x - b1.x) * (a2.y - a1.y);\n if (uB !== 0) {\n var ua = uaT / uB,\n ub = ubT / uB;\n if (0 <= ua && ua <= 1 && 0 <= ub && ub <= 1) {\n result = new Intersection('Intersection');\n result.appendPoint(new fabric.Point(a1.x + ua * (a2.x - a1.x), a1.y + ua * (a2.y - a1.y)));\n }\n else {\n result = new Intersection();\n }\n }\n else {\n if (uaT === 0 || ubT === 0) {\n result = new Intersection('Coincident');\n }\n else {\n result = new Intersection('Parallel');\n }\n }\n return result;\n };\n\n /**\n * Checks if line intersects polygon\n * TODO: rename in intersectSegmentPolygon\n * fix detection of coincident\n * @static\n * @param {fabric.Point} a1\n * @param {fabric.Point} a2\n * @param {Array} points\n * @return {fabric.Intersection}\n */\n fabric.Intersection.intersectLinePolygon = function(a1, a2, points) {\n var result = new Intersection(),\n length = points.length,\n b1, b2, inter, i;\n\n for (i = 0; i < length; i++) {\n b1 = points[i];\n b2 = points[(i + 1) % length];\n inter = Intersection.intersectLineLine(a1, a2, b1, b2);\n\n result.appendPoints(inter.points);\n }\n if (result.points.length > 0) {\n result.status = 'Intersection';\n }\n return result;\n };\n\n /**\n * Checks if polygon intersects another polygon\n * @static\n * @param {Array} points1\n * @param {Array} points2\n * @return {fabric.Intersection}\n */\n fabric.Intersection.intersectPolygonPolygon = function (points1, points2) {\n var result = new Intersection(),\n length = points1.length, i;\n\n for (i = 0; i < length; i++) {\n var a1 = points1[i],\n a2 = points1[(i + 1) % length],\n inter = Intersection.intersectLinePolygon(a1, a2, points2);\n\n result.appendPoints(inter.points);\n }\n if (result.points.length > 0) {\n result.status = 'Intersection';\n }\n return result;\n };\n\n /**\n * Checks if polygon intersects rectangle\n * @static\n * @param {Array} points\n * @param {fabric.Point} r1\n * @param {fabric.Point} r2\n * @return {fabric.Intersection}\n */\n fabric.Intersection.intersectPolygonRectangle = function (points, r1, r2) {\n var min = r1.min(r2),\n max = r1.max(r2),\n topRight = new fabric.Point(max.x, min.y),\n bottomLeft = new fabric.Point(min.x, max.y),\n inter1 = Intersection.intersectLinePolygon(min, topRight, points),\n inter2 = Intersection.intersectLinePolygon(topRight, max, points),\n inter3 = Intersection.intersectLinePolygon(max, bottomLeft, points),\n inter4 = Intersection.intersectLinePolygon(bottomLeft, min, points),\n result = new Intersection();\n\n result.appendPoints(inter1.points);\n result.appendPoints(inter2.points);\n result.appendPoints(inter3.points);\n result.appendPoints(inter4.points);\n\n if (result.points.length > 0) {\n result.status = 'Intersection';\n }\n return result;\n };\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { });\n\n if (fabric.Color) {\n fabric.warn('fabric.Color is already defined.');\n return;\n }\n\n /**\n * Color class\n * The purpose of {@link fabric.Color} is to abstract and encapsulate common color operations;\n * {@link fabric.Color} is a constructor and creates instances of {@link fabric.Color} objects.\n *\n * @class fabric.Color\n * @param {String} color optional in hex or rgb(a) or hsl format or from known color list\n * @return {fabric.Color} thisArg\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-2/#colors}\n */\n function Color(color) {\n if (!color) {\n this.setSource([0, 0, 0, 1]);\n }\n else {\n this._tryParsingColor(color);\n }\n }\n\n fabric.Color = Color;\n\n fabric.Color.prototype = /** @lends fabric.Color.prototype */ {\n\n /**\n * @private\n * @param {String|Array} color Color value to parse\n */\n _tryParsingColor: function(color) {\n var source;\n\n if (color in Color.colorNameMap) {\n color = Color.colorNameMap[color];\n }\n\n if (color === 'transparent') {\n source = [255, 255, 255, 0];\n }\n\n if (!source) {\n source = Color.sourceFromHex(color);\n }\n if (!source) {\n source = Color.sourceFromRgb(color);\n }\n if (!source) {\n source = Color.sourceFromHsl(color);\n }\n if (!source) {\n //if color is not recognize let's make black as canvas does\n source = [0, 0, 0, 1];\n }\n if (source) {\n this.setSource(source);\n }\n },\n\n /**\n * Adapted from https://github.com/mjijackson\n * @private\n * @param {Number} r Red color value\n * @param {Number} g Green color value\n * @param {Number} b Blue color value\n * @return {Array} Hsl color\n */\n _rgbToHsl: function(r, g, b) {\n r /= 255; g /= 255; b /= 255;\n\n var h, s, l,\n max = fabric.util.array.max([r, g, b]),\n min = fabric.util.array.min([r, g, b]);\n\n l = (max + min) / 2;\n\n if (max === min) {\n h = s = 0; // achromatic\n }\n else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n h /= 6;\n }\n\n return [\n Math.round(h * 360),\n Math.round(s * 100),\n Math.round(l * 100)\n ];\n },\n\n /**\n * Returns source of this color (where source is an array representation; ex: [200, 200, 100, 1])\n * @return {Array}\n */\n getSource: function() {\n return this._source;\n },\n\n /**\n * Sets source of this color (where source is an array representation; ex: [200, 200, 100, 1])\n * @param {Array} source\n */\n setSource: function(source) {\n this._source = source;\n },\n\n /**\n * Returns color representation in RGB format\n * @return {String} ex: rgb(0-255,0-255,0-255)\n */\n toRgb: function() {\n var source = this.getSource();\n return 'rgb(' + source[0] + ',' + source[1] + ',' + source[2] + ')';\n },\n\n /**\n * Returns color representation in RGBA format\n * @return {String} ex: rgba(0-255,0-255,0-255,0-1)\n */\n toRgba: function() {\n var source = this.getSource();\n return 'rgba(' + source[0] + ',' + source[1] + ',' + source[2] + ',' + source[3] + ')';\n },\n\n /**\n * Returns color representation in HSL format\n * @return {String} ex: hsl(0-360,0%-100%,0%-100%)\n */\n toHsl: function() {\n var source = this.getSource(),\n hsl = this._rgbToHsl(source[0], source[1], source[2]);\n\n return 'hsl(' + hsl[0] + ',' + hsl[1] + '%,' + hsl[2] + '%)';\n },\n\n /**\n * Returns color representation in HSLA format\n * @return {String} ex: hsla(0-360,0%-100%,0%-100%,0-1)\n */\n toHsla: function() {\n var source = this.getSource(),\n hsl = this._rgbToHsl(source[0], source[1], source[2]);\n\n return 'hsla(' + hsl[0] + ',' + hsl[1] + '%,' + hsl[2] + '%,' + source[3] + ')';\n },\n\n /**\n * Returns color representation in HEX format\n * @return {String} ex: FF5555\n */\n toHex: function() {\n var source = this.getSource(), r, g, b;\n\n r = source[0].toString(16);\n r = (r.length === 1) ? ('0' + r) : r;\n\n g = source[1].toString(16);\n g = (g.length === 1) ? ('0' + g) : g;\n\n b = source[2].toString(16);\n b = (b.length === 1) ? ('0' + b) : b;\n\n return r.toUpperCase() + g.toUpperCase() + b.toUpperCase();\n },\n\n /**\n * Returns color representation in HEXA format\n * @return {String} ex: FF5555CC\n */\n toHexa: function() {\n var source = this.getSource(), a;\n\n a = Math.round(source[3] * 255);\n a = a.toString(16);\n a = (a.length === 1) ? ('0' + a) : a;\n\n return this.toHex() + a.toUpperCase();\n },\n\n /**\n * Gets value of alpha channel for this color\n * @return {Number} 0-1\n */\n getAlpha: function() {\n return this.getSource()[3];\n },\n\n /**\n * Sets value of alpha channel for this color\n * @param {Number} alpha Alpha value 0-1\n * @return {fabric.Color} thisArg\n */\n setAlpha: function(alpha) {\n var source = this.getSource();\n source[3] = alpha;\n this.setSource(source);\n return this;\n },\n\n /**\n * Transforms color to its grayscale representation\n * @return {fabric.Color} thisArg\n */\n toGrayscale: function() {\n var source = this.getSource(),\n average = parseInt((source[0] * 0.3 + source[1] * 0.59 + source[2] * 0.11).toFixed(0), 10),\n currentAlpha = source[3];\n this.setSource([average, average, average, currentAlpha]);\n return this;\n },\n\n /**\n * Transforms color to its black and white representation\n * @param {Number} threshold\n * @return {fabric.Color} thisArg\n */\n toBlackWhite: function(threshold) {\n var source = this.getSource(),\n average = (source[0] * 0.3 + source[1] * 0.59 + source[2] * 0.11).toFixed(0),\n currentAlpha = source[3];\n\n threshold = threshold || 127;\n\n average = (Number(average) < Number(threshold)) ? 0 : 255;\n this.setSource([average, average, average, currentAlpha]);\n return this;\n },\n\n /**\n * Overlays color with another color\n * @param {String|fabric.Color} otherColor\n * @return {fabric.Color} thisArg\n */\n overlayWith: function(otherColor) {\n if (!(otherColor instanceof Color)) {\n otherColor = new Color(otherColor);\n }\n\n var result = [],\n alpha = this.getAlpha(),\n otherAlpha = 0.5,\n source = this.getSource(),\n otherSource = otherColor.getSource(), i;\n\n for (i = 0; i < 3; i++) {\n result.push(Math.round((source[i] * (1 - otherAlpha)) + (otherSource[i] * otherAlpha)));\n }\n\n result[3] = alpha;\n this.setSource(result);\n return this;\n }\n };\n\n /**\n * Regex matching color in RGB or RGBA formats (ex: rgb(0, 0, 0), rgba(255, 100, 10, 0.5), rgba( 255 , 100 , 10 , 0.5 ), rgb(1,1,1), rgba(100%, 60%, 10%, 0.5))\n * @static\n * @field\n * @memberOf fabric.Color\n */\n // eslint-disable-next-line max-len\n fabric.Color.reRGBa = /^rgba?\\(\\s*(\\d{1,3}(?:\\.\\d+)?\\%?)\\s*,\\s*(\\d{1,3}(?:\\.\\d+)?\\%?)\\s*,\\s*(\\d{1,3}(?:\\.\\d+)?\\%?)\\s*(?:\\s*,\\s*((?:\\d*\\.?\\d+)?)\\s*)?\\)$/i;\n\n /**\n * Regex matching color in HSL or HSLA formats (ex: hsl(200, 80%, 10%), hsla(300, 50%, 80%, 0.5), hsla( 300 , 50% , 80% , 0.5 ))\n * @static\n * @field\n * @memberOf fabric.Color\n */\n fabric.Color.reHSLa = /^hsla?\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3}\\%)\\s*,\\s*(\\d{1,3}\\%)\\s*(?:\\s*,\\s*(\\d+(?:\\.\\d+)?)\\s*)?\\)$/i;\n\n /**\n * Regex matching color in HEX format (ex: #FF5544CC, #FF5555, 010155, aff)\n * @static\n * @field\n * @memberOf fabric.Color\n */\n fabric.Color.reHex = /^#?([0-9a-f]{8}|[0-9a-f]{6}|[0-9a-f]{4}|[0-9a-f]{3})$/i;\n\n /**\n * Map of the 148 color names with HEX code\n * @static\n * @field\n * @memberOf fabric.Color\n * @see: https://www.w3.org/TR/css3-color/#svg-color\n */\n fabric.Color.colorNameMap = {\n aliceblue: '#F0F8FF',\n antiquewhite: '#FAEBD7',\n aqua: '#00FFFF',\n aquamarine: '#7FFFD4',\n azure: '#F0FFFF',\n beige: '#F5F5DC',\n bisque: '#FFE4C4',\n black: '#000000',\n blanchedalmond: '#FFEBCD',\n blue: '#0000FF',\n blueviolet: '#8A2BE2',\n brown: '#A52A2A',\n burlywood: '#DEB887',\n cadetblue: '#5F9EA0',\n chartreuse: '#7FFF00',\n chocolate: '#D2691E',\n coral: '#FF7F50',\n cornflowerblue: '#6495ED',\n cornsilk: '#FFF8DC',\n crimson: '#DC143C',\n cyan: '#00FFFF',\n darkblue: '#00008B',\n darkcyan: '#008B8B',\n darkgoldenrod: '#B8860B',\n darkgray: '#A9A9A9',\n darkgrey: '#A9A9A9',\n darkgreen: '#006400',\n darkkhaki: '#BDB76B',\n darkmagenta: '#8B008B',\n darkolivegreen: '#556B2F',\n darkorange: '#FF8C00',\n darkorchid: '#9932CC',\n darkred: '#8B0000',\n darksalmon: '#E9967A',\n darkseagreen: '#8FBC8F',\n darkslateblue: '#483D8B',\n darkslategray: '#2F4F4F',\n darkslategrey: '#2F4F4F',\n darkturquoise: '#00CED1',\n darkviolet: '#9400D3',\n deeppink: '#FF1493',\n deepskyblue: '#00BFFF',\n dimgray: '#696969',\n dimgrey: '#696969',\n dodgerblue: '#1E90FF',\n firebrick: '#B22222',\n floralwhite: '#FFFAF0',\n forestgreen: '#228B22',\n fuchsia: '#FF00FF',\n gainsboro: '#DCDCDC',\n ghostwhite: '#F8F8FF',\n gold: '#FFD700',\n goldenrod: '#DAA520',\n gray: '#808080',\n grey: '#808080',\n green: '#008000',\n greenyellow: '#ADFF2F',\n honeydew: '#F0FFF0',\n hotpink: '#FF69B4',\n indianred: '#CD5C5C',\n indigo: '#4B0082',\n ivory: '#FFFFF0',\n khaki: '#F0E68C',\n lavender: '#E6E6FA',\n lavenderblush: '#FFF0F5',\n lawngreen: '#7CFC00',\n lemonchiffon: '#FFFACD',\n lightblue: '#ADD8E6',\n lightcoral: '#F08080',\n lightcyan: '#E0FFFF',\n lightgoldenrodyellow: '#FAFAD2',\n lightgray: '#D3D3D3',\n lightgrey: '#D3D3D3',\n lightgreen: '#90EE90',\n lightpink: '#FFB6C1',\n lightsalmon: '#FFA07A',\n lightseagreen: '#20B2AA',\n lightskyblue: '#87CEFA',\n lightslategray: '#778899',\n lightslategrey: '#778899',\n lightsteelblue: '#B0C4DE',\n lightyellow: '#FFFFE0',\n lime: '#00FF00',\n limegreen: '#32CD32',\n linen: '#FAF0E6',\n magenta: '#FF00FF',\n maroon: '#800000',\n mediumaquamarine: '#66CDAA',\n mediumblue: '#0000CD',\n mediumorchid: '#BA55D3',\n mediumpurple: '#9370DB',\n mediumseagreen: '#3CB371',\n mediumslateblue: '#7B68EE',\n mediumspringgreen: '#00FA9A',\n mediumturquoise: '#48D1CC',\n mediumvioletred: '#C71585',\n midnightblue: '#191970',\n mintcream: '#F5FFFA',\n mistyrose: '#FFE4E1',\n moccasin: '#FFE4B5',\n navajowhite: '#FFDEAD',\n navy: '#000080',\n oldlace: '#FDF5E6',\n olive: '#808000',\n olivedrab: '#6B8E23',\n orange: '#FFA500',\n orangered: '#FF4500',\n orchid: '#DA70D6',\n palegoldenrod: '#EEE8AA',\n palegreen: '#98FB98',\n paleturquoise: '#AFEEEE',\n palevioletred: '#DB7093',\n papayawhip: '#FFEFD5',\n peachpuff: '#FFDAB9',\n peru: '#CD853F',\n pink: '#FFC0CB',\n plum: '#DDA0DD',\n powderblue: '#B0E0E6',\n purple: '#800080',\n rebeccapurple: '#663399',\n red: '#FF0000',\n rosybrown: '#BC8F8F',\n royalblue: '#4169E1',\n saddlebrown: '#8B4513',\n salmon: '#FA8072',\n sandybrown: '#F4A460',\n seagreen: '#2E8B57',\n seashell: '#FFF5EE',\n sienna: '#A0522D',\n silver: '#C0C0C0',\n skyblue: '#87CEEB',\n slateblue: '#6A5ACD',\n slategray: '#708090',\n slategrey: '#708090',\n snow: '#FFFAFA',\n springgreen: '#00FF7F',\n steelblue: '#4682B4',\n tan: '#D2B48C',\n teal: '#008080',\n thistle: '#D8BFD8',\n tomato: '#FF6347',\n turquoise: '#40E0D0',\n violet: '#EE82EE',\n wheat: '#F5DEB3',\n white: '#FFFFFF',\n whitesmoke: '#F5F5F5',\n yellow: '#FFFF00',\n yellowgreen: '#9ACD32'\n };\n\n /**\n * @private\n * @param {Number} p\n * @param {Number} q\n * @param {Number} t\n * @return {Number}\n */\n function hue2rgb(p, q, t) {\n if (t < 0) {\n t += 1;\n }\n if (t > 1) {\n t -= 1;\n }\n if (t < 1 / 6) {\n return p + (q - p) * 6 * t;\n }\n if (t < 1 / 2) {\n return q;\n }\n if (t < 2 / 3) {\n return p + (q - p) * (2 / 3 - t) * 6;\n }\n return p;\n }\n\n /**\n * Returns new color object, when given a color in RGB format\n * @memberOf fabric.Color\n * @param {String} color Color value ex: rgb(0-255,0-255,0-255)\n * @return {fabric.Color}\n */\n fabric.Color.fromRgb = function(color) {\n return Color.fromSource(Color.sourceFromRgb(color));\n };\n\n /**\n * Returns array representation (ex: [100, 100, 200, 1]) of a color that's in RGB or RGBA format\n * @memberOf fabric.Color\n * @param {String} color Color value ex: rgb(0-255,0-255,0-255), rgb(0%-100%,0%-100%,0%-100%)\n * @return {Array} source\n */\n fabric.Color.sourceFromRgb = function(color) {\n var match = color.match(Color.reRGBa);\n if (match) {\n var r = parseInt(match[1], 10) / (/%$/.test(match[1]) ? 100 : 1) * (/%$/.test(match[1]) ? 255 : 1),\n g = parseInt(match[2], 10) / (/%$/.test(match[2]) ? 100 : 1) * (/%$/.test(match[2]) ? 255 : 1),\n b = parseInt(match[3], 10) / (/%$/.test(match[3]) ? 100 : 1) * (/%$/.test(match[3]) ? 255 : 1);\n\n return [\n parseInt(r, 10),\n parseInt(g, 10),\n parseInt(b, 10),\n match[4] ? parseFloat(match[4]) : 1\n ];\n }\n };\n\n /**\n * Returns new color object, when given a color in RGBA format\n * @static\n * @function\n * @memberOf fabric.Color\n * @param {String} color\n * @return {fabric.Color}\n */\n fabric.Color.fromRgba = Color.fromRgb;\n\n /**\n * Returns new color object, when given a color in HSL format\n * @param {String} color Color value ex: hsl(0-260,0%-100%,0%-100%)\n * @memberOf fabric.Color\n * @return {fabric.Color}\n */\n fabric.Color.fromHsl = function(color) {\n return Color.fromSource(Color.sourceFromHsl(color));\n };\n\n /**\n * Returns array representation (ex: [100, 100, 200, 1]) of a color that's in HSL or HSLA format.\n * Adapted from https://github.com/mjijackson\n * @memberOf fabric.Color\n * @param {String} color Color value ex: hsl(0-360,0%-100%,0%-100%) or hsla(0-360,0%-100%,0%-100%, 0-1)\n * @return {Array} source\n * @see http://http://www.w3.org/TR/css3-color/#hsl-color\n */\n fabric.Color.sourceFromHsl = function(color) {\n var match = color.match(Color.reHSLa);\n if (!match) {\n return;\n }\n\n var h = (((parseFloat(match[1]) % 360) + 360) % 360) / 360,\n s = parseFloat(match[2]) / (/%$/.test(match[2]) ? 100 : 1),\n l = parseFloat(match[3]) / (/%$/.test(match[3]) ? 100 : 1),\n r, g, b;\n\n if (s === 0) {\n r = g = b = l;\n }\n else {\n var q = l <= 0.5 ? l * (s + 1) : l + s - l * s,\n p = l * 2 - q;\n\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n\n return [\n Math.round(r * 255),\n Math.round(g * 255),\n Math.round(b * 255),\n match[4] ? parseFloat(match[4]) : 1\n ];\n };\n\n /**\n * Returns new color object, when given a color in HSLA format\n * @static\n * @function\n * @memberOf fabric.Color\n * @param {String} color\n * @return {fabric.Color}\n */\n fabric.Color.fromHsla = Color.fromHsl;\n\n /**\n * Returns new color object, when given a color in HEX format\n * @static\n * @memberOf fabric.Color\n * @param {String} color Color value ex: FF5555\n * @return {fabric.Color}\n */\n fabric.Color.fromHex = function(color) {\n return Color.fromSource(Color.sourceFromHex(color));\n };\n\n /**\n * Returns array representation (ex: [100, 100, 200, 1]) of a color that's in HEX format\n * @static\n * @memberOf fabric.Color\n * @param {String} color ex: FF5555 or FF5544CC (RGBa)\n * @return {Array} source\n */\n fabric.Color.sourceFromHex = function(color) {\n if (color.match(Color.reHex)) {\n var value = color.slice(color.indexOf('#') + 1),\n isShortNotation = (value.length === 3 || value.length === 4),\n isRGBa = (value.length === 8 || value.length === 4),\n r = isShortNotation ? (value.charAt(0) + value.charAt(0)) : value.substring(0, 2),\n g = isShortNotation ? (value.charAt(1) + value.charAt(1)) : value.substring(2, 4),\n b = isShortNotation ? (value.charAt(2) + value.charAt(2)) : value.substring(4, 6),\n a = isRGBa ? (isShortNotation ? (value.charAt(3) + value.charAt(3)) : value.substring(6, 8)) : 'FF';\n\n return [\n parseInt(r, 16),\n parseInt(g, 16),\n parseInt(b, 16),\n parseFloat((parseInt(a, 16) / 255).toFixed(2))\n ];\n }\n };\n\n /**\n * Returns new color object, when given color in array representation (ex: [200, 100, 100, 0.5])\n * @static\n * @memberOf fabric.Color\n * @param {Array} source\n * @return {fabric.Color}\n */\n fabric.Color.fromSource = function(source) {\n var oColor = new Color();\n oColor.setSource(source);\n return oColor;\n };\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function() {\n\n /* _FROM_SVG_START_ */\n function getColorStop(el) {\n var style = el.getAttribute('style'),\n offset = el.getAttribute('offset') || 0,\n color, colorAlpha, opacity, i;\n\n // convert percents to absolute values\n offset = parseFloat(offset) / (/%$/.test(offset) ? 100 : 1);\n offset = offset < 0 ? 0 : offset > 1 ? 1 : offset;\n if (style) {\n var keyValuePairs = style.split(/\\s*;\\s*/);\n\n if (keyValuePairs[keyValuePairs.length - 1] === '') {\n keyValuePairs.pop();\n }\n\n for (i = keyValuePairs.length; i--; ) {\n\n var split = keyValuePairs[i].split(/\\s*:\\s*/),\n key = split[0].trim(),\n value = split[1].trim();\n\n if (key === 'stop-color') {\n color = value;\n }\n else if (key === 'stop-opacity') {\n opacity = value;\n }\n }\n }\n\n if (!color) {\n color = el.getAttribute('stop-color') || 'rgb(0,0,0)';\n }\n if (!opacity) {\n opacity = el.getAttribute('stop-opacity');\n }\n\n color = new fabric.Color(color);\n colorAlpha = color.getAlpha();\n opacity = isNaN(parseFloat(opacity)) ? 1 : parseFloat(opacity);\n opacity *= colorAlpha;\n\n return {\n offset: offset,\n color: color.toRgb(),\n opacity: opacity\n };\n }\n\n function getLinearCoords(el) {\n return {\n x1: el.getAttribute('x1') || 0,\n y1: el.getAttribute('y1') || 0,\n x2: el.getAttribute('x2') || '100%',\n y2: el.getAttribute('y2') || 0\n };\n }\n\n function getRadialCoords(el) {\n return {\n x1: el.getAttribute('fx') || el.getAttribute('cx') || '50%',\n y1: el.getAttribute('fy') || el.getAttribute('cy') || '50%',\n r1: 0,\n x2: el.getAttribute('cx') || '50%',\n y2: el.getAttribute('cy') || '50%',\n r2: el.getAttribute('r') || '50%'\n };\n }\n /* _FROM_SVG_END_ */\n\n var clone = fabric.util.object.clone;\n\n /**\n * Gradient class\n * @class fabric.Gradient\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-2#gradients}\n * @see {@link fabric.Gradient#initialize} for constructor definition\n */\n fabric.Gradient = fabric.util.createClass(/** @lends fabric.Gradient.prototype */ {\n\n /**\n * Horizontal offset for aligning gradients coming from SVG when outside pathgroups\n * @type Number\n * @default 0\n */\n offsetX: 0,\n\n /**\n * Vertical offset for aligning gradients coming from SVG when outside pathgroups\n * @type Number\n * @default 0\n */\n offsetY: 0,\n\n /**\n * Constructor\n * @param {Object} [options] Options object with type, coords, gradientUnits and colorStops\n * @return {fabric.Gradient} thisArg\n */\n initialize: function(options) {\n options || (options = { });\n\n var coords = { };\n\n this.id = fabric.Object.__uid++;\n this.type = options.type || 'linear';\n\n coords = {\n x1: options.coords.x1 || 0,\n y1: options.coords.y1 || 0,\n x2: options.coords.x2 || 0,\n y2: options.coords.y2 || 0\n };\n\n if (this.type === 'radial') {\n coords.r1 = options.coords.r1 || 0;\n coords.r2 = options.coords.r2 || 0;\n }\n this.coords = coords;\n this.colorStops = options.colorStops.slice();\n if (options.gradientTransform) {\n this.gradientTransform = options.gradientTransform;\n }\n this.offsetX = options.offsetX || this.offsetX;\n this.offsetY = options.offsetY || this.offsetY;\n },\n\n /**\n * Adds another colorStop\n * @param {Object} colorStop Object with offset and color\n * @return {fabric.Gradient} thisArg\n */\n addColorStop: function(colorStops) {\n for (var position in colorStops) {\n var color = new fabric.Color(colorStops[position]);\n this.colorStops.push({\n offset: parseFloat(position),\n color: color.toRgb(),\n opacity: color.getAlpha()\n });\n }\n return this;\n },\n\n /**\n * Returns object representation of a gradient\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object}\n */\n toObject: function(propertiesToInclude) {\n var object = {\n type: this.type,\n coords: this.coords,\n colorStops: this.colorStops,\n offsetX: this.offsetX,\n offsetY: this.offsetY,\n gradientTransform: this.gradientTransform ? this.gradientTransform.concat() : this.gradientTransform\n };\n fabric.util.populateWithProperties(this, object, propertiesToInclude);\n\n return object;\n },\n\n /* _TO_SVG_START_ */\n /**\n * Returns SVG representation of an gradient\n * @param {Object} object Object to create a gradient for\n * @return {String} SVG representation of an gradient (linear/radial)\n */\n toSVG: function(object) {\n var coords = clone(this.coords, true), i, len,\n markup, commonAttributes, colorStops = clone(this.colorStops, true),\n needsSwap = coords.r1 > coords.r2,\n transform = this.gradientTransform ? this.gradientTransform.concat() : fabric.iMatrix.concat(),\n offsetX = object.width / 2 - this.offsetX, offsetY = object.height / 2 - this.offsetY;\n // colorStops must be sorted ascending\n colorStops.sort(function(a, b) {\n return a.offset - b.offset;\n });\n\n if (object.type === 'path') {\n offsetX -= object.pathOffset.x;\n offsetY -= object.pathOffset.y;\n }\n\n transform[4] -= offsetX;\n transform[5] -= offsetY;\n\n commonAttributes = 'id=\"SVGID_' + this.id +\n '\" gradientUnits=\"userSpaceOnUse\"';\n commonAttributes += ' gradientTransform=\"matrix(' + transform.join(' ') + ')\" ';\n\n if (this.type === 'linear') {\n markup = [\n '\\n'\n ];\n }\n else if (this.type === 'radial') {\n // svg radial gradient has just 1 radius. the biggest.\n markup = [\n '\\n'\n ];\n }\n\n if (this.type === 'radial') {\n if (needsSwap) {\n // svg goes from internal to external radius. if radius are inverted, swap color stops.\n colorStops = colorStops.concat();\n colorStops.reverse();\n for (i = 0, len = colorStops.length; i < len; i++) {\n colorStops[i].offset = 1 - colorStops[i].offset;\n }\n }\n var minRadius = Math.min(coords.r1, coords.r2);\n if (minRadius > 0) {\n // i have to shift all colorStops and add new one in 0.\n var maxRadius = Math.max(coords.r1, coords.r2),\n percentageShift = minRadius / maxRadius;\n for (i = 0, len = colorStops.length; i < len; i++) {\n colorStops[i].offset += percentageShift * (1 - colorStops[i].offset);\n }\n }\n }\n\n for (i = 0, len = colorStops.length; i < len; i++) {\n var colorStop = colorStops[i];\n markup.push(\n '\\n'\n );\n }\n\n markup.push((this.type === 'linear' ? '\\n' : '\\n'));\n\n return markup.join('');\n },\n /* _TO_SVG_END_ */\n\n /**\n * Returns an instance of CanvasGradient\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @return {CanvasGradient}\n */\n toLive: function(ctx) {\n var gradient, coords = fabric.util.object.clone(this.coords), i, len;\n\n if (!this.type) {\n return;\n }\n\n if (this.type === 'linear') {\n gradient = ctx.createLinearGradient(\n coords.x1, coords.y1, coords.x2, coords.y2);\n }\n else if (this.type === 'radial') {\n gradient = ctx.createRadialGradient(\n coords.x1, coords.y1, coords.r1, coords.x2, coords.y2, coords.r2);\n }\n\n for (i = 0, len = this.colorStops.length; i < len; i++) {\n var color = this.colorStops[i].color,\n opacity = this.colorStops[i].opacity,\n offset = this.colorStops[i].offset;\n\n if (typeof opacity !== 'undefined') {\n color = new fabric.Color(color).setAlpha(opacity).toRgba();\n }\n gradient.addColorStop(offset, color);\n }\n\n return gradient;\n }\n });\n\n fabric.util.object.extend(fabric.Gradient, {\n\n /* _FROM_SVG_START_ */\n /**\n * Returns {@link fabric.Gradient} instance from an SVG element\n * @static\n * @memberOf fabric.Gradient\n * @param {SVGGradientElement} el SVG gradient element\n * @param {fabric.Object} instance\n * @return {fabric.Gradient} Gradient instance\n * @see http://www.w3.org/TR/SVG/pservers.html#LinearGradientElement\n * @see http://www.w3.org/TR/SVG/pservers.html#RadialGradientElement\n */\n fromElement: function(el, instance) {\n /**\n * @example:\n *\n * \n * \n * \n * \n *\n * OR\n *\n * \n * \n * \n * \n *\n * OR\n *\n * \n * \n * \n * \n * \n *\n * OR\n *\n * \n * \n * \n * \n * \n *\n */\n\n var colorStopEls = el.getElementsByTagName('stop'),\n type,\n gradientUnits = el.getAttribute('gradientUnits') || 'objectBoundingBox',\n gradientTransform = el.getAttribute('gradientTransform'),\n colorStops = [],\n coords, ellipseMatrix, i;\n\n if (el.nodeName === 'linearGradient' || el.nodeName === 'LINEARGRADIENT') {\n type = 'linear';\n }\n else {\n type = 'radial';\n }\n\n if (type === 'linear') {\n coords = getLinearCoords(el);\n }\n else if (type === 'radial') {\n coords = getRadialCoords(el);\n }\n\n for (i = colorStopEls.length; i--; ) {\n colorStops.push(getColorStop(colorStopEls[i]));\n }\n\n ellipseMatrix = _convertPercentUnitsToValues(instance, coords, gradientUnits);\n\n var gradient = new fabric.Gradient({\n type: type,\n coords: coords,\n colorStops: colorStops,\n offsetX: -instance.left,\n offsetY: -instance.top\n });\n\n if (gradientTransform || ellipseMatrix !== '') {\n gradient.gradientTransform = fabric.parseTransformAttribute((gradientTransform || '') + ellipseMatrix);\n }\n\n return gradient;\n },\n /* _FROM_SVG_END_ */\n\n /**\n * Returns {@link fabric.Gradient} instance from its object representation\n * @static\n * @memberOf fabric.Gradient\n * @param {Object} obj\n * @param {Object} [options] Options object\n */\n forObject: function(obj, options) {\n options || (options = { });\n _convertPercentUnitsToValues(obj, options.coords, 'userSpaceOnUse');\n return new fabric.Gradient(options);\n }\n });\n\n /**\n * @private\n */\n function _convertPercentUnitsToValues(object, options, gradientUnits) {\n var propValue, addFactor = 0, multFactor = 1, ellipseMatrix = '';\n for (var prop in options) {\n if (options[prop] === 'Infinity') {\n options[prop] = 1;\n }\n else if (options[prop] === '-Infinity') {\n options[prop] = 0;\n }\n propValue = parseFloat(options[prop], 10);\n if (typeof options[prop] === 'string' && /^(\\d+\\.\\d+)%|(\\d+)%$/.test(options[prop])) {\n multFactor = 0.01;\n }\n else {\n multFactor = 1;\n }\n if (prop === 'x1' || prop === 'x2' || prop === 'r2') {\n multFactor *= gradientUnits === 'objectBoundingBox' ? object.width : 1;\n addFactor = gradientUnits === 'objectBoundingBox' ? object.left || 0 : 0;\n }\n else if (prop === 'y1' || prop === 'y2') {\n multFactor *= gradientUnits === 'objectBoundingBox' ? object.height : 1;\n addFactor = gradientUnits === 'objectBoundingBox' ? object.top || 0 : 0;\n }\n options[prop] = propValue * multFactor + addFactor;\n }\n if (object.type === 'ellipse' &&\n options.r2 !== null &&\n gradientUnits === 'objectBoundingBox' &&\n object.rx !== object.ry) {\n\n var scaleFactor = object.ry / object.rx;\n ellipseMatrix = ' scale(1, ' + scaleFactor + ')';\n if (options.y1) {\n options.y1 /= scaleFactor;\n }\n if (options.y2) {\n options.y2 /= scaleFactor;\n }\n }\n return ellipseMatrix;\n }\n})();\n\n\n(function() {\n\n 'use strict';\n\n var toFixed = fabric.util.toFixed;\n\n /**\n * Pattern class\n * @class fabric.Pattern\n * @see {@link http://fabricjs.com/patterns|Pattern demo}\n * @see {@link http://fabricjs.com/dynamic-patterns|DynamicPattern demo}\n * @see {@link fabric.Pattern#initialize} for constructor definition\n */\n\n\n fabric.Pattern = fabric.util.createClass(/** @lends fabric.Pattern.prototype */ {\n\n /**\n * Repeat property of a pattern (one of repeat, repeat-x, repeat-y or no-repeat)\n * @type String\n * @default\n */\n repeat: 'repeat',\n\n /**\n * Pattern horizontal offset from object's left/top corner\n * @type Number\n * @default\n */\n offsetX: 0,\n\n /**\n * Pattern vertical offset from object's left/top corner\n * @type Number\n * @default\n */\n offsetY: 0,\n\n /**\n * crossOrigin value (one of \"\", \"anonymous\", \"use-credentials\")\n * @see https://developer.mozilla.org/en-US/docs/HTML/CORS_settings_attributes\n * @type String\n * @default\n */\n crossOrigin: '',\n\n /**\n * transform matrix to change the pattern, imported from svgs.\n * @type Array\n * @default\n */\n patternTransform: null,\n\n /**\n * Constructor\n * @param {Object} [options] Options object\n * @param {Function} [callback] function to invoke after callback init.\n * @return {fabric.Pattern} thisArg\n */\n initialize: function(options, callback) {\n options || (options = { });\n\n this.id = fabric.Object.__uid++;\n this.setOptions(options);\n if (!options.source || (options.source && typeof options.source !== 'string')) {\n callback && callback(this);\n return;\n }\n // function string\n if (typeof fabric.util.getFunctionBody(options.source) !== 'undefined') {\n this.source = new Function(fabric.util.getFunctionBody(options.source));\n callback && callback(this);\n }\n else {\n // img src string\n var _this = this;\n this.source = fabric.util.createImage();\n fabric.util.loadImage(options.source, function(img) {\n _this.source = img;\n callback && callback(_this);\n }, null, this.crossOrigin);\n }\n },\n\n /**\n * Returns object representation of a pattern\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} Object representation of a pattern instance\n */\n toObject: function(propertiesToInclude) {\n var NUM_FRACTION_DIGITS = fabric.Object.NUM_FRACTION_DIGITS,\n source, object;\n\n // callback\n if (typeof this.source === 'function') {\n source = String(this.source);\n }\n // element\n else if (typeof this.source.src === 'string') {\n source = this.source.src;\n }\n // element\n else if (typeof this.source === 'object' && this.source.toDataURL) {\n source = this.source.toDataURL();\n }\n\n object = {\n type: 'pattern',\n source: source,\n repeat: this.repeat,\n crossOrigin: this.crossOrigin,\n offsetX: toFixed(this.offsetX, NUM_FRACTION_DIGITS),\n offsetY: toFixed(this.offsetY, NUM_FRACTION_DIGITS),\n patternTransform: this.patternTransform ? this.patternTransform.concat() : null\n };\n fabric.util.populateWithProperties(this, object, propertiesToInclude);\n\n return object;\n },\n\n /* _TO_SVG_START_ */\n /**\n * Returns SVG representation of a pattern\n * @param {fabric.Object} object\n * @return {String} SVG representation of a pattern\n */\n toSVG: function(object) {\n var patternSource = typeof this.source === 'function' ? this.source() : this.source,\n patternWidth = patternSource.width / object.width,\n patternHeight = patternSource.height / object.height,\n patternOffsetX = this.offsetX / object.width,\n patternOffsetY = this.offsetY / object.height,\n patternImgSrc = '';\n if (this.repeat === 'repeat-x' || this.repeat === 'no-repeat') {\n patternHeight = 1;\n if (patternOffsetY) {\n patternHeight += Math.abs(patternOffsetY);\n }\n }\n if (this.repeat === 'repeat-y' || this.repeat === 'no-repeat') {\n patternWidth = 1;\n if (patternOffsetX) {\n patternWidth += Math.abs(patternOffsetX);\n }\n\n }\n if (patternSource.src) {\n patternImgSrc = patternSource.src;\n }\n else if (patternSource.toDataURL) {\n patternImgSrc = patternSource.toDataURL();\n }\n\n return '\\n' +\n '\\n' +\n '\\n';\n },\n /* _TO_SVG_END_ */\n\n setOptions: function(options) {\n for (var prop in options) {\n this[prop] = options[prop];\n }\n },\n\n /**\n * Returns an instance of CanvasPattern\n * @param {CanvasRenderingContext2D} ctx Context to create pattern\n * @return {CanvasPattern}\n */\n toLive: function(ctx) {\n var source = typeof this.source === 'function' ? this.source() : this.source;\n\n // if the image failed to load, return, and allow rest to continue loading\n if (!source) {\n return '';\n }\n\n // if an image\n if (typeof source.src !== 'undefined') {\n if (!source.complete) {\n return '';\n }\n if (source.naturalWidth === 0 || source.naturalHeight === 0) {\n return '';\n }\n }\n return ctx.createPattern(source, this.repeat);\n }\n });\n})();\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n toFixed = fabric.util.toFixed;\n\n if (fabric.Shadow) {\n fabric.warn('fabric.Shadow is already defined.');\n return;\n }\n\n /**\n * Shadow class\n * @class fabric.Shadow\n * @see {@link http://fabricjs.com/shadows|Shadow demo}\n * @see {@link fabric.Shadow#initialize} for constructor definition\n */\n fabric.Shadow = fabric.util.createClass(/** @lends fabric.Shadow.prototype */ {\n\n /**\n * Shadow color\n * @type String\n * @default\n */\n color: 'rgb(0,0,0)',\n\n /**\n * Shadow blur\n * @type Number\n */\n blur: 0,\n\n /**\n * Shadow horizontal offset\n * @type Number\n * @default\n */\n offsetX: 0,\n\n /**\n * Shadow vertical offset\n * @type Number\n * @default\n */\n offsetY: 0,\n\n /**\n * Whether the shadow should affect stroke operations\n * @type Boolean\n * @default\n */\n affectStroke: false,\n\n /**\n * Indicates whether toObject should include default values\n * @type Boolean\n * @default\n */\n includeDefaultValues: true,\n\n /**\n * Constructor\n * @param {Object|String} [options] Options object with any of color, blur, offsetX, offsetY properties or string (e.g. \"rgba(0,0,0,0.2) 2px 2px 10px\")\n * @return {fabric.Shadow} thisArg\n */\n initialize: function(options) {\n\n if (typeof options === 'string') {\n options = this._parseShadow(options);\n }\n\n for (var prop in options) {\n this[prop] = options[prop];\n }\n\n this.id = fabric.Object.__uid++;\n },\n\n /**\n * @private\n * @param {String} shadow Shadow value to parse\n * @return {Object} Shadow object with color, offsetX, offsetY and blur\n */\n _parseShadow: function(shadow) {\n var shadowStr = shadow.trim(),\n offsetsAndBlur = fabric.Shadow.reOffsetsAndBlur.exec(shadowStr) || [],\n color = shadowStr.replace(fabric.Shadow.reOffsetsAndBlur, '') || 'rgb(0,0,0)';\n\n return {\n color: color.trim(),\n offsetX: parseInt(offsetsAndBlur[1], 10) || 0,\n offsetY: parseInt(offsetsAndBlur[2], 10) || 0,\n blur: parseInt(offsetsAndBlur[3], 10) || 0\n };\n },\n\n /**\n * Returns a string representation of an instance\n * @see http://www.w3.org/TR/css-text-decor-3/#text-shadow\n * @return {String} Returns CSS3 text-shadow declaration\n */\n toString: function() {\n return [this.offsetX, this.offsetY, this.blur, this.color].join('px ');\n },\n\n /* _TO_SVG_START_ */\n /**\n * Returns SVG representation of a shadow\n * @param {fabric.Object} object\n * @return {String} SVG representation of a shadow\n */\n toSVG: function(object) {\n var fBoxX = 40, fBoxY = 40, NUM_FRACTION_DIGITS = fabric.Object.NUM_FRACTION_DIGITS,\n offset = fabric.util.rotateVector(\n { x: this.offsetX, y: this.offsetY },\n fabric.util.degreesToRadians(-object.angle)),\n BLUR_BOX = 20, color = new fabric.Color(this.color);\n\n if (object.width && object.height) {\n //http://www.w3.org/TR/SVG/filters.html#FilterEffectsRegion\n // we add some extra space to filter box to contain the blur ( 20 )\n fBoxX = toFixed((Math.abs(offset.x) + this.blur) / object.width, NUM_FRACTION_DIGITS) * 100 + BLUR_BOX;\n fBoxY = toFixed((Math.abs(offset.y) + this.blur) / object.height, NUM_FRACTION_DIGITS) * 100 + BLUR_BOX;\n }\n if (object.flipX) {\n offset.x *= -1;\n }\n if (object.flipY) {\n offset.y *= -1;\n }\n\n return (\n '\\n' +\n '\\t\\n' +\n '\\t\\n' +\n '\\t\\n' +\n '\\t\\n' +\n '\\t\\n' +\n '\\t\\t\\n' +\n '\\t\\t\\n' +\n '\\t\\n' +\n '\\n');\n },\n /* _TO_SVG_END_ */\n\n /**\n * Returns object representation of a shadow\n * @return {Object} Object representation of a shadow instance\n */\n toObject: function() {\n if (this.includeDefaultValues) {\n return {\n color: this.color,\n blur: this.blur,\n offsetX: this.offsetX,\n offsetY: this.offsetY,\n affectStroke: this.affectStroke\n };\n }\n var obj = { }, proto = fabric.Shadow.prototype;\n\n ['color', 'blur', 'offsetX', 'offsetY', 'affectStroke'].forEach(function(prop) {\n if (this[prop] !== proto[prop]) {\n obj[prop] = this[prop];\n }\n }, this);\n\n return obj;\n }\n });\n\n /**\n * Regex matching shadow offsetX, offsetY and blur (ex: \"2px 2px 10px rgba(0,0,0,0.2)\", \"rgb(0,255,0) 2px 2px\")\n * @static\n * @field\n * @memberOf fabric.Shadow\n */\n // eslint-disable-next-line max-len\n fabric.Shadow.reOffsetsAndBlur = /(?:\\s|^)(-?\\d+(?:px)?(?:\\s?|$))?(-?\\d+(?:px)?(?:\\s?|$))?(\\d+(?:px)?)?(?:\\s?|$)(?:$|\\s)/;\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function () {\n\n 'use strict';\n\n if (fabric.StaticCanvas) {\n fabric.warn('fabric.StaticCanvas is already defined.');\n return;\n }\n\n // aliases for faster resolution\n var extend = fabric.util.object.extend,\n getElementOffset = fabric.util.getElementOffset,\n removeFromArray = fabric.util.removeFromArray,\n toFixed = fabric.util.toFixed,\n transformPoint = fabric.util.transformPoint,\n invertTransform = fabric.util.invertTransform,\n getNodeCanvas = fabric.util.getNodeCanvas,\n createCanvasElement = fabric.util.createCanvasElement,\n\n CANVAS_INIT_ERROR = new Error('Could not initialize `canvas` element');\n\n /**\n * Static canvas class\n * @class fabric.StaticCanvas\n * @mixes fabric.Collection\n * @mixes fabric.Observable\n * @see {@link http://fabricjs.com/static_canvas|StaticCanvas demo}\n * @see {@link fabric.StaticCanvas#initialize} for constructor definition\n * @fires before:render\n * @fires after:render\n * @fires canvas:cleared\n * @fires object:added\n * @fires object:removed\n */\n fabric.StaticCanvas = fabric.util.createClass(fabric.CommonMethods, /** @lends fabric.StaticCanvas.prototype */ {\n\n /**\n * Constructor\n * @param {HTMLElement | String} el <canvas> element to initialize instance on\n * @param {Object} [options] Options object\n * @return {Object} thisArg\n */\n initialize: function(el, options) {\n options || (options = { });\n this.renderAndResetBound = this.renderAndReset.bind(this);\n this.requestRenderAllBound = this.requestRenderAll.bind(this);\n this._initStatic(el, options);\n },\n\n /**\n * Background color of canvas instance.\n * Should be set via {@link fabric.StaticCanvas#setBackgroundColor}.\n * @type {(String|fabric.Pattern)}\n * @default\n */\n backgroundColor: '',\n\n /**\n * Background image of canvas instance.\n * Should be set via {@link fabric.StaticCanvas#setBackgroundImage}.\n * Backwards incompatibility note: The \"backgroundImageOpacity\"\n * and \"backgroundImageStretch\" properties are deprecated since 1.3.9.\n * Use {@link fabric.Image#opacity}, {@link fabric.Image#width} and {@link fabric.Image#height}.\n * since 2.4.0 image caching is active, please when putting an image as background, add to the\n * canvas property a reference to the canvas it is on. Otherwise the image cannot detect the zoom\n * vale. As an alternative you can disable image objectCaching\n * @type fabric.Image\n * @default\n */\n backgroundImage: null,\n\n /**\n * Overlay color of canvas instance.\n * Should be set via {@link fabric.StaticCanvas#setOverlayColor}\n * @since 1.3.9\n * @type {(String|fabric.Pattern)}\n * @default\n */\n overlayColor: '',\n\n /**\n * Overlay image of canvas instance.\n * Should be set via {@link fabric.StaticCanvas#setOverlayImage}.\n * Backwards incompatibility note: The \"overlayImageLeft\"\n * and \"overlayImageTop\" properties are deprecated since 1.3.9.\n * Use {@link fabric.Image#left} and {@link fabric.Image#top}.\n * since 2.4.0 image caching is active, please when putting an image as overlay, add to the\n * canvas property a reference to the canvas it is on. Otherwise the image cannot detect the zoom\n * vale. As an alternative you can disable image objectCaching\n * @type fabric.Image\n * @default\n */\n overlayImage: null,\n\n /**\n * Indicates whether toObject/toDatalessObject should include default values\n * if set to false, takes precedence over the object value.\n * @type Boolean\n * @default\n */\n includeDefaultValues: true,\n\n /**\n * Indicates whether objects' state should be saved\n * @type Boolean\n * @default\n */\n stateful: false,\n\n /**\n * Indicates whether {@link fabric.Collection.add}, {@link fabric.Collection.insertAt} and {@link fabric.Collection.remove},\n * {@link fabric.StaticCanvas.moveTo}, {@link fabric.StaticCanvas.clear} and many more, should also re-render canvas.\n * Disabling this option will not give a performance boost when adding/removing a lot of objects to/from canvas at once\n * since the renders are quequed and executed one per frame.\n * Disabling is suggested anyway and managing the renders of the app manually is not a big effort ( canvas.requestRenderAll() )\n * Left default to true to do not break documentation and old app, fiddles.\n * @type Boolean\n * @default\n */\n renderOnAddRemove: true,\n\n /**\n * Function that determines clipping of entire canvas area\n * Being passed context as first argument.\n * If you are using code minification, ctx argument can be minified/manglied you should use\n * as a workaround `var ctx = arguments[0];` in the function;\n * See clipping canvas area in {@link https://github.com/kangax/fabric.js/wiki/FAQ}\n * @deprecated since 2.0.0\n * @type Function\n * @default\n */\n clipTo: null,\n\n /**\n * Indicates whether object controls (borders/controls) are rendered above overlay image\n * @type Boolean\n * @default\n */\n controlsAboveOverlay: false,\n\n /**\n * Indicates whether the browser can be scrolled when using a touchscreen and dragging on the canvas\n * @type Boolean\n * @default\n */\n allowTouchScrolling: false,\n\n /**\n * Indicates whether this canvas will use image smoothing, this is on by default in browsers\n * @type Boolean\n * @default\n */\n imageSmoothingEnabled: true,\n\n /**\n * The transformation (in the format of Canvas transform) which focuses the viewport\n * @type Array\n * @default\n */\n viewportTransform: fabric.iMatrix.concat(),\n\n /**\n * if set to false background image is not affected by viewport transform\n * @since 1.6.3\n * @type Boolean\n * @default\n */\n backgroundVpt: true,\n\n /**\n * if set to false overlya image is not affected by viewport transform\n * @since 1.6.3\n * @type Boolean\n * @default\n */\n overlayVpt: true,\n\n /**\n * Callback; invoked right before object is about to be scaled/rotated\n * @deprecated since 2.3.0\n * Use before:transform event\n */\n onBeforeScaleRotate: function () {\n /* NOOP */\n },\n\n /**\n * When true, canvas is scaled by devicePixelRatio for better rendering on retina screens\n * @type Boolean\n * @default\n */\n enableRetinaScaling: true,\n\n /**\n * Describe canvas element extension over design\n * properties are tl,tr,bl,br.\n * if canvas is not zoomed/panned those points are the four corner of canvas\n * if canvas is viewportTransformed you those points indicate the extension\n * of canvas element in plain untrasformed coordinates\n * The coordinates get updated with @method calcViewportBoundaries.\n * @memberOf fabric.StaticCanvas.prototype\n */\n vptCoords: { },\n\n /**\n * Based on vptCoords and object.aCoords, skip rendering of objects that\n * are not included in current viewport.\n * May greatly help in applications with crowded canvas and use of zoom/pan\n * If One of the corner of the bounding box of the object is on the canvas\n * the objects get rendered.\n * @memberOf fabric.StaticCanvas.prototype\n * @type Boolean\n * @default\n */\n skipOffscreen: true,\n\n /**\n * a fabricObject that, without stroke define a clipping area with their shape. filled in black\n * the clipPath object gets used when the canvas has rendered, and the context is placed in the\n * top left corner of the canvas.\n * clipPath will clip away controls, if you do not want this to happen use controlsAboveOverlay = true\n * @type fabric.Object\n */\n clipPath: undefined,\n\n /**\n * @private\n * @param {HTMLElement | String} el <canvas> element to initialize instance on\n * @param {Object} [options] Options object\n */\n _initStatic: function(el, options) {\n var cb = this.requestRenderAllBound;\n this._objects = [];\n this._createLowerCanvas(el);\n this._initOptions(options);\n this._setImageSmoothing();\n // only initialize retina scaling once\n if (!this.interactive) {\n this._initRetinaScaling();\n }\n\n if (options.overlayImage) {\n this.setOverlayImage(options.overlayImage, cb);\n }\n if (options.backgroundImage) {\n this.setBackgroundImage(options.backgroundImage, cb);\n }\n if (options.backgroundColor) {\n this.setBackgroundColor(options.backgroundColor, cb);\n }\n if (options.overlayColor) {\n this.setOverlayColor(options.overlayColor, cb);\n }\n this.calcOffset();\n },\n\n /**\n * @private\n */\n _isRetinaScaling: function() {\n return (fabric.devicePixelRatio !== 1 && this.enableRetinaScaling);\n },\n\n /**\n * @private\n * @return {Number} retinaScaling if applied, otherwise 1;\n */\n getRetinaScaling: function() {\n return this._isRetinaScaling() ? fabric.devicePixelRatio : 1;\n },\n\n /**\n * @private\n */\n _initRetinaScaling: function() {\n if (!this._isRetinaScaling()) {\n return;\n }\n this.lowerCanvasEl.setAttribute('width', this.width * fabric.devicePixelRatio);\n this.lowerCanvasEl.setAttribute('height', this.height * fabric.devicePixelRatio);\n\n this.contextContainer.scale(fabric.devicePixelRatio, fabric.devicePixelRatio);\n },\n\n /**\n * Calculates canvas element offset relative to the document\n * This method is also attached as \"resize\" event handler of window\n * @return {fabric.Canvas} instance\n * @chainable\n */\n calcOffset: function () {\n this._offset = getElementOffset(this.lowerCanvasEl);\n return this;\n },\n\n /**\n * Sets {@link fabric.StaticCanvas#overlayImage|overlay image} for this canvas\n * @param {(fabric.Image|String)} image fabric.Image instance or URL of an image to set overlay to\n * @param {Function} callback callback to invoke when image is loaded and set as an overlay\n * @param {Object} [options] Optional options to set for the {@link fabric.Image|overlay image}.\n * @return {fabric.Canvas} thisArg\n * @chainable\n * @see {@link http://jsfiddle.net/fabricjs/MnzHT/|jsFiddle demo}\n * @example Normal overlayImage with left/top = 0\n * canvas.setOverlayImage('http://fabricjs.com/assets/jail_cell_bars.png', canvas.renderAll.bind(canvas), {\n * // Needed to position overlayImage at 0/0\n * originX: 'left',\n * originY: 'top'\n * });\n * @example overlayImage with different properties\n * canvas.setOverlayImage('http://fabricjs.com/assets/jail_cell_bars.png', canvas.renderAll.bind(canvas), {\n * opacity: 0.5,\n * angle: 45,\n * left: 400,\n * top: 400,\n * originX: 'left',\n * originY: 'top'\n * });\n * @example Stretched overlayImage #1 - width/height correspond to canvas width/height\n * fabric.Image.fromURL('http://fabricjs.com/assets/jail_cell_bars.png', function(img) {\n * img.set({width: canvas.width, height: canvas.height, originX: 'left', originY: 'top'});\n * canvas.setOverlayImage(img, canvas.renderAll.bind(canvas));\n * });\n * @example Stretched overlayImage #2 - width/height correspond to canvas width/height\n * canvas.setOverlayImage('http://fabricjs.com/assets/jail_cell_bars.png', canvas.renderAll.bind(canvas), {\n * width: canvas.width,\n * height: canvas.height,\n * // Needed to position overlayImage at 0/0\n * originX: 'left',\n * originY: 'top'\n * });\n * @example overlayImage loaded from cross-origin\n * canvas.setOverlayImage('http://fabricjs.com/assets/jail_cell_bars.png', canvas.renderAll.bind(canvas), {\n * opacity: 0.5,\n * angle: 45,\n * left: 400,\n * top: 400,\n * originX: 'left',\n * originY: 'top',\n * crossOrigin: 'anonymous'\n * });\n */\n setOverlayImage: function (image, callback, options) {\n return this.__setBgOverlayImage('overlayImage', image, callback, options);\n },\n\n /**\n * Sets {@link fabric.StaticCanvas#backgroundImage|background image} for this canvas\n * @param {(fabric.Image|String)} image fabric.Image instance or URL of an image to set background to\n * @param {Function} callback Callback to invoke when image is loaded and set as background\n * @param {Object} [options] Optional options to set for the {@link fabric.Image|background image}.\n * @return {fabric.Canvas} thisArg\n * @chainable\n * @see {@link http://jsfiddle.net/djnr8o7a/28/|jsFiddle demo}\n * @example Normal backgroundImage with left/top = 0\n * canvas.setBackgroundImage('http://fabricjs.com/assets/honey_im_subtle.png', canvas.renderAll.bind(canvas), {\n * // Needed to position backgroundImage at 0/0\n * originX: 'left',\n * originY: 'top'\n * });\n * @example backgroundImage with different properties\n * canvas.setBackgroundImage('http://fabricjs.com/assets/honey_im_subtle.png', canvas.renderAll.bind(canvas), {\n * opacity: 0.5,\n * angle: 45,\n * left: 400,\n * top: 400,\n * originX: 'left',\n * originY: 'top'\n * });\n * @example Stretched backgroundImage #1 - width/height correspond to canvas width/height\n * fabric.Image.fromURL('http://fabricjs.com/assets/honey_im_subtle.png', function(img) {\n * img.set({width: canvas.width, height: canvas.height, originX: 'left', originY: 'top'});\n * canvas.setBackgroundImage(img, canvas.renderAll.bind(canvas));\n * });\n * @example Stretched backgroundImage #2 - width/height correspond to canvas width/height\n * canvas.setBackgroundImage('http://fabricjs.com/assets/honey_im_subtle.png', canvas.renderAll.bind(canvas), {\n * width: canvas.width,\n * height: canvas.height,\n * // Needed to position backgroundImage at 0/0\n * originX: 'left',\n * originY: 'top'\n * });\n * @example backgroundImage loaded from cross-origin\n * canvas.setBackgroundImage('http://fabricjs.com/assets/honey_im_subtle.png', canvas.renderAll.bind(canvas), {\n * opacity: 0.5,\n * angle: 45,\n * left: 400,\n * top: 400,\n * originX: 'left',\n * originY: 'top',\n * crossOrigin: 'anonymous'\n * });\n */\n // TODO: fix stretched examples\n setBackgroundImage: function (image, callback, options) {\n return this.__setBgOverlayImage('backgroundImage', image, callback, options);\n },\n\n /**\n * Sets {@link fabric.StaticCanvas#overlayColor|foreground color} for this canvas\n * @param {(String|fabric.Pattern)} overlayColor Color or pattern to set foreground color to\n * @param {Function} callback Callback to invoke when foreground color is set\n * @return {fabric.Canvas} thisArg\n * @chainable\n * @see {@link http://jsfiddle.net/fabricjs/pB55h/|jsFiddle demo}\n * @example Normal overlayColor - color value\n * canvas.setOverlayColor('rgba(255, 73, 64, 0.6)', canvas.renderAll.bind(canvas));\n * @example fabric.Pattern used as overlayColor\n * canvas.setOverlayColor({\n * source: 'http://fabricjs.com/assets/escheresque_ste.png'\n * }, canvas.renderAll.bind(canvas));\n * @example fabric.Pattern used as overlayColor with repeat and offset\n * canvas.setOverlayColor({\n * source: 'http://fabricjs.com/assets/escheresque_ste.png',\n * repeat: 'repeat',\n * offsetX: 200,\n * offsetY: 100\n * }, canvas.renderAll.bind(canvas));\n */\n setOverlayColor: function(overlayColor, callback) {\n return this.__setBgOverlayColor('overlayColor', overlayColor, callback);\n },\n\n /**\n * Sets {@link fabric.StaticCanvas#backgroundColor|background color} for this canvas\n * @param {(String|fabric.Pattern)} backgroundColor Color or pattern to set background color to\n * @param {Function} callback Callback to invoke when background color is set\n * @return {fabric.Canvas} thisArg\n * @chainable\n * @see {@link http://jsfiddle.net/fabricjs/hXzvk/|jsFiddle demo}\n * @example Normal backgroundColor - color value\n * canvas.setBackgroundColor('rgba(255, 73, 64, 0.6)', canvas.renderAll.bind(canvas));\n * @example fabric.Pattern used as backgroundColor\n * canvas.setBackgroundColor({\n * source: 'http://fabricjs.com/assets/escheresque_ste.png'\n * }, canvas.renderAll.bind(canvas));\n * @example fabric.Pattern used as backgroundColor with repeat and offset\n * canvas.setBackgroundColor({\n * source: 'http://fabricjs.com/assets/escheresque_ste.png',\n * repeat: 'repeat',\n * offsetX: 200,\n * offsetY: 100\n * }, canvas.renderAll.bind(canvas));\n */\n setBackgroundColor: function(backgroundColor, callback) {\n return this.__setBgOverlayColor('backgroundColor', backgroundColor, callback);\n },\n\n /**\n * @private\n * @see {@link http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#dom-context-2d-imagesmoothingenabled|WhatWG Canvas Standard}\n */\n _setImageSmoothing: function() {\n var ctx = this.getContext();\n\n ctx.imageSmoothingEnabled = ctx.imageSmoothingEnabled || ctx.webkitImageSmoothingEnabled\n || ctx.mozImageSmoothingEnabled || ctx.msImageSmoothingEnabled || ctx.oImageSmoothingEnabled;\n ctx.imageSmoothingEnabled = this.imageSmoothingEnabled;\n },\n\n /**\n * @private\n * @param {String} property Property to set ({@link fabric.StaticCanvas#backgroundImage|backgroundImage}\n * or {@link fabric.StaticCanvas#overlayImage|overlayImage})\n * @param {(fabric.Image|String|null)} image fabric.Image instance, URL of an image or null to set background or overlay to\n * @param {Function} callback Callback to invoke when image is loaded and set as background or overlay\n * @param {Object} [options] Optional options to set for the {@link fabric.Image|image}.\n */\n __setBgOverlayImage: function(property, image, callback, options) {\n if (typeof image === 'string') {\n fabric.util.loadImage(image, function(img) {\n if (img) {\n var instance = new fabric.Image(img, options);\n this[property] = instance;\n instance.canvas = this;\n }\n callback && callback(img);\n }, this, options && options.crossOrigin);\n }\n else {\n options && image.setOptions(options);\n this[property] = image;\n image && (image.canvas = this);\n callback && callback(image);\n }\n\n return this;\n },\n\n /**\n * @private\n * @param {String} property Property to set ({@link fabric.StaticCanvas#backgroundColor|backgroundColor}\n * or {@link fabric.StaticCanvas#overlayColor|overlayColor})\n * @param {(Object|String|null)} color Object with pattern information, color value or null\n * @param {Function} [callback] Callback is invoked when color is set\n */\n __setBgOverlayColor: function(property, color, callback) {\n this[property] = color;\n this._initGradient(color, property);\n this._initPattern(color, property, callback);\n return this;\n },\n\n /**\n * @private\n */\n _createCanvasElement: function() {\n var element = createCanvasElement();\n if (!element) {\n throw CANVAS_INIT_ERROR;\n }\n if (!element.style) {\n element.style = { };\n }\n if (typeof element.getContext === 'undefined') {\n throw CANVAS_INIT_ERROR;\n }\n return element;\n },\n\n /**\n * @private\n * @param {Object} [options] Options object\n */\n _initOptions: function (options) {\n var lowerCanvasEl = this.lowerCanvasEl;\n this._setOptions(options);\n\n this.width = this.width || parseInt(lowerCanvasEl.width, 10) || 0;\n this.height = this.height || parseInt(lowerCanvasEl.height, 10) || 0;\n\n if (!this.lowerCanvasEl.style) {\n return;\n }\n\n lowerCanvasEl.width = this.width;\n lowerCanvasEl.height = this.height;\n\n lowerCanvasEl.style.width = this.width + 'px';\n lowerCanvasEl.style.height = this.height + 'px';\n\n this.viewportTransform = this.viewportTransform.slice();\n },\n\n /**\n * Creates a bottom canvas\n * @private\n * @param {HTMLElement} [canvasEl]\n */\n _createLowerCanvas: function (canvasEl) {\n // canvasEl === 'HTMLCanvasElement' does not work on jsdom/node\n if (canvasEl && canvasEl.getContext) {\n this.lowerCanvasEl = canvasEl;\n }\n else {\n this.lowerCanvasEl = fabric.util.getById(canvasEl) || this._createCanvasElement();\n }\n\n fabric.util.addClass(this.lowerCanvasEl, 'lower-canvas');\n\n if (this.interactive) {\n this._applyCanvasStyle(this.lowerCanvasEl);\n }\n\n this.contextContainer = this.lowerCanvasEl.getContext('2d');\n },\n\n /**\n * Returns canvas width (in px)\n * @return {Number}\n */\n getWidth: function () {\n return this.width;\n },\n\n /**\n * Returns canvas height (in px)\n * @return {Number}\n */\n getHeight: function () {\n return this.height;\n },\n\n /**\n * Sets width of this canvas instance\n * @param {Number|String} value Value to set width to\n * @param {Object} [options] Options object\n * @param {Boolean} [options.backstoreOnly=false] Set the given dimensions only as canvas backstore dimensions\n * @param {Boolean} [options.cssOnly=false] Set the given dimensions only as css dimensions\n * @return {fabric.Canvas} instance\n * @chainable true\n */\n setWidth: function (value, options) {\n return this.setDimensions({ width: value }, options);\n },\n\n /**\n * Sets height of this canvas instance\n * @param {Number|String} value Value to set height to\n * @param {Object} [options] Options object\n * @param {Boolean} [options.backstoreOnly=false] Set the given dimensions only as canvas backstore dimensions\n * @param {Boolean} [options.cssOnly=false] Set the given dimensions only as css dimensions\n * @return {fabric.Canvas} instance\n * @chainable true\n */\n setHeight: function (value, options) {\n return this.setDimensions({ height: value }, options);\n },\n\n /**\n * Sets dimensions (width, height) of this canvas instance. when options.cssOnly flag active you should also supply the unit of measure (px/%/em)\n * @param {Object} dimensions Object with width/height properties\n * @param {Number|String} [dimensions.width] Width of canvas element\n * @param {Number|String} [dimensions.height] Height of canvas element\n * @param {Object} [options] Options object\n * @param {Boolean} [options.backstoreOnly=false] Set the given dimensions only as canvas backstore dimensions\n * @param {Boolean} [options.cssOnly=false] Set the given dimensions only as css dimensions\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n setDimensions: function (dimensions, options) {\n var cssValue;\n\n options = options || {};\n\n for (var prop in dimensions) {\n cssValue = dimensions[prop];\n\n if (!options.cssOnly) {\n this._setBackstoreDimension(prop, dimensions[prop]);\n cssValue += 'px';\n this.hasLostContext = true;\n }\n\n if (!options.backstoreOnly) {\n this._setCssDimension(prop, cssValue);\n }\n }\n if (this._isCurrentlyDrawing) {\n this.freeDrawingBrush && this.freeDrawingBrush._setBrushStyles();\n }\n this._initRetinaScaling();\n this._setImageSmoothing();\n this.calcOffset();\n\n if (!options.cssOnly) {\n this.requestRenderAll();\n }\n\n return this;\n },\n\n /**\n * Helper for setting width/height\n * @private\n * @param {String} prop property (width|height)\n * @param {Number} value value to set property to\n * @return {fabric.Canvas} instance\n * @chainable true\n */\n _setBackstoreDimension: function (prop, value) {\n this.lowerCanvasEl[prop] = value;\n\n if (this.upperCanvasEl) {\n this.upperCanvasEl[prop] = value;\n }\n\n if (this.cacheCanvasEl) {\n this.cacheCanvasEl[prop] = value;\n }\n\n this[prop] = value;\n\n return this;\n },\n\n /**\n * Helper for setting css width/height\n * @private\n * @param {String} prop property (width|height)\n * @param {String} value value to set property to\n * @return {fabric.Canvas} instance\n * @chainable true\n */\n _setCssDimension: function (prop, value) {\n this.lowerCanvasEl.style[prop] = value;\n\n if (this.upperCanvasEl) {\n this.upperCanvasEl.style[prop] = value;\n }\n\n if (this.wrapperEl) {\n this.wrapperEl.style[prop] = value;\n }\n\n return this;\n },\n\n /**\n * Returns canvas zoom level\n * @return {Number}\n */\n getZoom: function () {\n return this.viewportTransform[0];\n },\n\n /**\n * Sets viewport transform of this canvas instance\n * @param {Array} vpt the transform in the form of context.transform\n * @return {fabric.Canvas} instance\n * @chainable true\n */\n setViewportTransform: function (vpt) {\n var activeObject = this._activeObject, object, ignoreVpt = false, skipAbsolute = true, i, len;\n this.viewportTransform = vpt;\n for (i = 0, len = this._objects.length; i < len; i++) {\n object = this._objects[i];\n object.group || object.setCoords(ignoreVpt, skipAbsolute);\n }\n if (activeObject && activeObject.type === 'activeSelection') {\n activeObject.setCoords(ignoreVpt, skipAbsolute);\n }\n this.calcViewportBoundaries();\n this.renderOnAddRemove && this.requestRenderAll();\n return this;\n },\n\n /**\n * Sets zoom level of this canvas instance, zoom centered around point\n * @param {fabric.Point} point to zoom with respect to\n * @param {Number} value to set zoom to, less than 1 zooms out\n * @return {fabric.Canvas} instance\n * @chainable true\n */\n zoomToPoint: function (point, value) {\n // TODO: just change the scale, preserve other transformations\n var before = point, vpt = this.viewportTransform.slice(0);\n point = transformPoint(point, invertTransform(this.viewportTransform));\n vpt[0] = value;\n vpt[3] = value;\n var after = transformPoint(point, vpt);\n vpt[4] += before.x - after.x;\n vpt[5] += before.y - after.y;\n return this.setViewportTransform(vpt);\n },\n\n /**\n * Sets zoom level of this canvas instance\n * @param {Number} value to set zoom to, less than 1 zooms out\n * @return {fabric.Canvas} instance\n * @chainable true\n */\n setZoom: function (value) {\n this.zoomToPoint(new fabric.Point(0, 0), value);\n return this;\n },\n\n /**\n * Pan viewport so as to place point at top left corner of canvas\n * @param {fabric.Point} point to move to\n * @return {fabric.Canvas} instance\n * @chainable true\n */\n absolutePan: function (point) {\n var vpt = this.viewportTransform.slice(0);\n vpt[4] = -point.x;\n vpt[5] = -point.y;\n return this.setViewportTransform(vpt);\n },\n\n /**\n * Pans viewpoint relatively\n * @param {fabric.Point} point (position vector) to move by\n * @return {fabric.Canvas} instance\n * @chainable true\n */\n relativePan: function (point) {\n return this.absolutePan(new fabric.Point(\n -point.x - this.viewportTransform[4],\n -point.y - this.viewportTransform[5]\n ));\n },\n\n /**\n * Returns <canvas> element corresponding to this instance\n * @return {HTMLCanvasElement}\n */\n getElement: function () {\n return this.lowerCanvasEl;\n },\n\n /**\n * @private\n * @param {fabric.Object} obj Object that was added\n */\n _onObjectAdded: function(obj) {\n this.stateful && obj.setupState();\n obj._set('canvas', this);\n obj.setCoords();\n this.fire('object:added', { target: obj });\n obj.fire('added');\n },\n\n /**\n * @private\n * @param {fabric.Object} obj Object that was removed\n */\n _onObjectRemoved: function(obj) {\n this.fire('object:removed', { target: obj });\n obj.fire('removed');\n delete obj.canvas;\n },\n\n /**\n * Clears specified context of canvas element\n * @param {CanvasRenderingContext2D} ctx Context to clear\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n clearContext: function(ctx) {\n ctx.clearRect(0, 0, this.width, this.height);\n return this;\n },\n\n /**\n * Returns context of canvas where objects are drawn\n * @return {CanvasRenderingContext2D}\n */\n getContext: function () {\n return this.contextContainer;\n },\n\n /**\n * Clears all contexts (background, main, top) of an instance\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n clear: function () {\n this._objects.length = 0;\n this.backgroundImage = null;\n this.overlayImage = null;\n this.backgroundColor = '';\n this.overlayColor = '';\n if (this._hasITextHandlers) {\n this.off('mouse:up', this._mouseUpITextHandler);\n this._iTextInstances = null;\n this._hasITextHandlers = false;\n }\n this.clearContext(this.contextContainer);\n this.fire('canvas:cleared');\n this.renderOnAddRemove && this.requestRenderAll();\n return this;\n },\n\n /**\n * Renders the canvas\n * @return {fabric.Canvas} instance\n * @chainable\n */\n renderAll: function () {\n var canvasToDrawOn = this.contextContainer;\n this.renderCanvas(canvasToDrawOn, this._objects);\n return this;\n },\n\n /**\n * Function created to be instance bound at initialization\n * used in requestAnimationFrame rendering\n * Let the fabricJS call it. If you call it manually you could have more\n * animationFrame stacking on to of each other\n * for an imperative rendering, use canvas.renderAll\n * @private\n * @return {fabric.Canvas} instance\n * @chainable\n */\n renderAndReset: function() {\n this.isRendering = 0;\n this.renderAll();\n },\n\n /**\n * Append a renderAll request to next animation frame.\n * unless one is already in progress, in that case nothing is done\n * a boolean flag will avoid appending more.\n * @return {fabric.Canvas} instance\n * @chainable\n */\n requestRenderAll: function () {\n if (!this.isRendering) {\n this.isRendering = fabric.util.requestAnimFrame(this.renderAndResetBound);\n }\n return this;\n },\n\n /**\n * Calculate the position of the 4 corner of canvas with current viewportTransform.\n * helps to determinate when an object is in the current rendering viewport using\n * object absolute coordinates ( aCoords )\n * @return {Object} points.tl\n * @chainable\n */\n calcViewportBoundaries: function() {\n var points = { }, width = this.width, height = this.height,\n iVpt = invertTransform(this.viewportTransform);\n points.tl = transformPoint({ x: 0, y: 0 }, iVpt);\n points.br = transformPoint({ x: width, y: height }, iVpt);\n points.tr = new fabric.Point(points.br.x, points.tl.y);\n points.bl = new fabric.Point(points.tl.x, points.br.y);\n this.vptCoords = points;\n return points;\n },\n\n cancelRequestedRender: function() {\n if (this.isRendering) {\n fabric.util.cancelAnimFrame(this.isRendering);\n this.isRendering = 0;\n }\n },\n\n /**\n * Renders background, objects, overlay and controls.\n * @param {CanvasRenderingContext2D} ctx\n * @param {Array} objects to render\n * @return {fabric.Canvas} instance\n * @chainable\n */\n renderCanvas: function(ctx, objects) {\n var v = this.viewportTransform, path = this.clipPath;\n this.cancelRequestedRender();\n this.calcViewportBoundaries();\n this.clearContext(ctx);\n this.fire('before:render', { ctx: ctx, });\n if (this.clipTo) {\n fabric.util.clipContext(this, ctx);\n }\n this._renderBackground(ctx);\n\n ctx.save();\n //apply viewport transform once for all rendering process\n ctx.transform(v[0], v[1], v[2], v[3], v[4], v[5]);\n this._renderObjects(ctx, objects);\n ctx.restore();\n if (!this.controlsAboveOverlay && this.interactive) {\n this.drawControls(ctx);\n }\n if (this.clipTo) {\n ctx.restore();\n }\n if (path) {\n path.canvas = this;\n // needed to setup a couple of variables\n path.shouldCache();\n path._transformDone = true;\n path.renderCache({ forClipping: true });\n this.drawClipPathOnCanvas(ctx);\n }\n this._renderOverlay(ctx);\n if (this.controlsAboveOverlay && this.interactive) {\n this.drawControls(ctx);\n }\n this.fire('after:render', { ctx: ctx, });\n },\n\n /**\n * Paint the cached clipPath on the lowerCanvasEl\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n drawClipPathOnCanvas: function(ctx) {\n var v = this.viewportTransform, path = this.clipPath;\n ctx.save();\n ctx.transform(v[0], v[1], v[2], v[3], v[4], v[5]);\n // DEBUG: uncomment this line, comment the following\n // ctx.globalAlpha = 0.4;\n ctx.globalCompositeOperation = 'destination-in';\n path.transform(ctx);\n ctx.scale(1 / path.zoomX, 1 / path.zoomY);\n ctx.drawImage(path._cacheCanvas, -path.cacheTranslationX, -path.cacheTranslationY);\n ctx.restore();\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @param {Array} objects to render\n */\n _renderObjects: function(ctx, objects) {\n var i, len;\n for (i = 0, len = objects.length; i < len; ++i) {\n objects[i] && objects[i].render(ctx);\n }\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @param {string} property 'background' or 'overlay'\n */\n _renderBackgroundOrOverlay: function(ctx, property) {\n var object = this[property + 'Color'], v;\n if (object) {\n ctx.fillStyle = object.toLive\n ? object.toLive(ctx, this)\n : object;\n\n ctx.fillRect(\n object.offsetX || 0,\n object.offsetY || 0,\n this.width,\n this.height);\n }\n object = this[property + 'Image'];\n if (object) {\n if (this[property + 'Vpt']) {\n v = this.viewportTransform;\n ctx.save();\n ctx.transform(v[0], v[1], v[2], v[3], v[4], v[5]);\n }\n object.render(ctx);\n this[property + 'Vpt'] && ctx.restore();\n }\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderBackground: function(ctx) {\n this._renderBackgroundOrOverlay(ctx, 'background');\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderOverlay: function(ctx) {\n this._renderBackgroundOrOverlay(ctx, 'overlay');\n },\n\n /**\n * Returns coordinates of a center of canvas.\n * Returned value is an object with top and left properties\n * @return {Object} object with \"top\" and \"left\" number values\n */\n getCenter: function () {\n return {\n top: this.height / 2,\n left: this.width / 2\n };\n },\n\n /**\n * Centers object horizontally in the canvas\n * @param {fabric.Object} object Object to center horizontally\n * @return {fabric.Canvas} thisArg\n */\n centerObjectH: function (object) {\n return this._centerObject(object, new fabric.Point(this.getCenter().left, object.getCenterPoint().y));\n },\n\n /**\n * Centers object vertically in the canvas\n * @param {fabric.Object} object Object to center vertically\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n centerObjectV: function (object) {\n return this._centerObject(object, new fabric.Point(object.getCenterPoint().x, this.getCenter().top));\n },\n\n /**\n * Centers object vertically and horizontally in the canvas\n * @param {fabric.Object} object Object to center vertically and horizontally\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n centerObject: function(object) {\n var center = this.getCenter();\n\n return this._centerObject(object, new fabric.Point(center.left, center.top));\n },\n\n /**\n * Centers object vertically and horizontally in the viewport\n * @param {fabric.Object} object Object to center vertically and horizontally\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n viewportCenterObject: function(object) {\n var vpCenter = this.getVpCenter();\n\n return this._centerObject(object, vpCenter);\n },\n\n /**\n * Centers object horizontally in the viewport, object.top is unchanged\n * @param {fabric.Object} object Object to center vertically and horizontally\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n viewportCenterObjectH: function(object) {\n var vpCenter = this.getVpCenter();\n this._centerObject(object, new fabric.Point(vpCenter.x, object.getCenterPoint().y));\n return this;\n },\n\n /**\n * Centers object Vertically in the viewport, object.top is unchanged\n * @param {fabric.Object} object Object to center vertically and horizontally\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n viewportCenterObjectV: function(object) {\n var vpCenter = this.getVpCenter();\n\n return this._centerObject(object, new fabric.Point(object.getCenterPoint().x, vpCenter.y));\n },\n\n /**\n * Calculate the point in canvas that correspond to the center of actual viewport.\n * @return {fabric.Point} vpCenter, viewport center\n * @chainable\n */\n getVpCenter: function() {\n var center = this.getCenter(),\n iVpt = invertTransform(this.viewportTransform);\n return transformPoint({ x: center.left, y: center.top }, iVpt);\n },\n\n /**\n * @private\n * @param {fabric.Object} object Object to center\n * @param {fabric.Point} center Center point\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n _centerObject: function(object, center) {\n object.setPositionByOrigin(center, 'center', 'center');\n object.setCoords();\n this.renderOnAddRemove && this.requestRenderAll();\n return this;\n },\n\n /**\n * Returs dataless JSON representation of canvas\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {String} json string\n */\n toDatalessJSON: function (propertiesToInclude) {\n return this.toDatalessObject(propertiesToInclude);\n },\n\n /**\n * Returns object representation of canvas\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} object representation of an instance\n */\n toObject: function (propertiesToInclude) {\n return this._toObjectMethod('toObject', propertiesToInclude);\n },\n\n /**\n * Returns dataless object representation of canvas\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} object representation of an instance\n */\n toDatalessObject: function (propertiesToInclude) {\n return this._toObjectMethod('toDatalessObject', propertiesToInclude);\n },\n\n /**\n * @private\n */\n _toObjectMethod: function (methodName, propertiesToInclude) {\n\n var clipPath = this.clipPath, data = {\n version: fabric.version,\n objects: this._toObjects(methodName, propertiesToInclude),\n };\n if (clipPath) {\n data.clipPath = this._toObjectMethod(clipPath, methodName, propertiesToInclude);\n }\n extend(data, this.__serializeBgOverlay(methodName, propertiesToInclude));\n\n fabric.util.populateWithProperties(this, data, propertiesToInclude);\n\n return data;\n },\n\n /**\n * @private\n */\n _toObjects: function(methodName, propertiesToInclude) {\n return this._objects.filter(function(object) {\n return !object.excludeFromExport;\n }).map(function(instance) {\n return this._toObject(instance, methodName, propertiesToInclude);\n }, this);\n },\n\n /**\n * @private\n */\n _toObject: function(instance, methodName, propertiesToInclude) {\n var originalValue;\n\n if (!this.includeDefaultValues) {\n originalValue = instance.includeDefaultValues;\n instance.includeDefaultValues = false;\n }\n\n var object = instance[methodName](propertiesToInclude);\n if (!this.includeDefaultValues) {\n instance.includeDefaultValues = originalValue;\n }\n return object;\n },\n\n /**\n * @private\n */\n __serializeBgOverlay: function(methodName, propertiesToInclude) {\n var data = { }, bgImage = this.backgroundImage, overlay = this.overlayImage;\n\n if (this.backgroundColor) {\n data.background = this.backgroundColor.toObject\n ? this.backgroundColor.toObject(propertiesToInclude)\n : this.backgroundColor;\n }\n\n if (this.overlayColor) {\n data.overlay = this.overlayColor.toObject\n ? this.overlayColor.toObject(propertiesToInclude)\n : this.overlayColor;\n }\n if (bgImage && !bgImage.excludeFromExport) {\n data.backgroundImage = this._toObject(bgImage, methodName, propertiesToInclude);\n }\n if (overlay && !overlay.excludeFromExport) {\n data.overlayImage = this._toObject(overlay, methodName, propertiesToInclude);\n }\n\n return data;\n },\n\n /* _TO_SVG_START_ */\n /**\n * When true, getSvgTransform() will apply the StaticCanvas.viewportTransform to the SVG transformation. When true,\n * a zoomed canvas will then produce zoomed SVG output.\n * @type Boolean\n * @default\n */\n svgViewportTransformation: true,\n\n /**\n * Returns SVG representation of canvas\n * @function\n * @param {Object} [options] Options object for SVG output\n * @param {Boolean} [options.suppressPreamble=false] If true xml tag is not included\n * @param {Object} [options.viewBox] SVG viewbox object\n * @param {Number} [options.viewBox.x] x-cooridnate of viewbox\n * @param {Number} [options.viewBox.y] y-coordinate of viewbox\n * @param {Number} [options.viewBox.width] Width of viewbox\n * @param {Number} [options.viewBox.height] Height of viewbox\n * @param {String} [options.encoding=UTF-8] Encoding of SVG output\n * @param {String} [options.width] desired width of svg with or without units\n * @param {String} [options.height] desired height of svg with or without units\n * @param {Function} [reviver] Method for further parsing of svg elements, called after each fabric object converted into svg representation.\n * @return {String} SVG string\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-3#serialization}\n * @see {@link http://jsfiddle.net/fabricjs/jQ3ZZ/|jsFiddle demo}\n * @example Normal SVG output\n * var svg = canvas.toSVG();\n * @example SVG output without preamble (without <?xml ../>)\n * var svg = canvas.toSVG({suppressPreamble: true});\n * @example SVG output with viewBox attribute\n * var svg = canvas.toSVG({\n * viewBox: {\n * x: 100,\n * y: 100,\n * width: 200,\n * height: 300\n * }\n * });\n * @example SVG output with different encoding (default: UTF-8)\n * var svg = canvas.toSVG({encoding: 'ISO-8859-1'});\n * @example Modify SVG output with reviver function\n * var svg = canvas.toSVG(null, function(svg) {\n * return svg.replace('stroke-dasharray: ; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 10; ', '');\n * });\n */\n toSVG: function(options, reviver) {\n options || (options = { });\n options.reviver = reviver;\n var markup = [];\n\n this._setSVGPreamble(markup, options);\n this._setSVGHeader(markup, options);\n if (this.clipPath) {\n markup.push('\\n');\n }\n this._setSVGBgOverlayColor(markup, 'backgroundColor');\n this._setSVGBgOverlayImage(markup, 'backgroundImage', reviver);\n this._setSVGObjects(markup, reviver);\n if (this.clipPath) {\n markup.push('\\n');\n }\n this._setSVGBgOverlayColor(markup, 'overlayColor');\n this._setSVGBgOverlayImage(markup, 'overlayImage', reviver);\n\n markup.push('');\n\n return markup.join('');\n },\n\n /**\n * @private\n */\n _setSVGPreamble: function(markup, options) {\n if (options.suppressPreamble) {\n return;\n }\n markup.push(\n '\\n',\n '\\n'\n );\n },\n\n /**\n * @private\n */\n _setSVGHeader: function(markup, options) {\n var width = options.width || this.width,\n height = options.height || this.height,\n vpt, viewBox = 'viewBox=\"0 0 ' + this.width + ' ' + this.height + '\" ',\n NUM_FRACTION_DIGITS = fabric.Object.NUM_FRACTION_DIGITS;\n\n if (options.viewBox) {\n viewBox = 'viewBox=\"' +\n options.viewBox.x + ' ' +\n options.viewBox.y + ' ' +\n options.viewBox.width + ' ' +\n options.viewBox.height + '\" ';\n }\n else {\n if (this.svgViewportTransformation) {\n vpt = this.viewportTransform;\n viewBox = 'viewBox=\"' +\n toFixed(-vpt[4] / vpt[0], NUM_FRACTION_DIGITS) + ' ' +\n toFixed(-vpt[5] / vpt[3], NUM_FRACTION_DIGITS) + ' ' +\n toFixed(this.width / vpt[0], NUM_FRACTION_DIGITS) + ' ' +\n toFixed(this.height / vpt[3], NUM_FRACTION_DIGITS) + '\" ';\n }\n }\n\n markup.push(\n '\\n',\n 'Created with Fabric.js ', fabric.version, '\\n',\n '\\n',\n this.createSVGFontFacesMarkup(),\n this.createSVGRefElementsMarkup(),\n this.createSVGClipPathMarkup(options),\n '\\n'\n );\n },\n\n createSVGClipPathMarkup: function(options) {\n var clipPath = this.clipPath;\n if (clipPath) {\n clipPath.clipPathId = 'CLIPPATH_' + fabric.Object.__uid++;\n return '\\n' +\n this.clipPath.toClipPathSVG(options.reviver) +\n '\\n';\n }\n return '';\n },\n\n /**\n * Creates markup containing SVG referenced elements like patterns, gradients etc.\n * @return {String}\n */\n createSVGRefElementsMarkup: function() {\n var _this = this,\n markup = ['backgroundColor', 'overlayColor'].map(function(prop) {\n var fill = _this[prop];\n if (fill && fill.toLive) {\n return fill.toSVG(_this, false);\n }\n });\n return markup.join('');\n },\n\n /**\n * Creates markup containing SVG font faces,\n * font URLs for font faces must be collected by developers\n * and are not extracted from the DOM by fabricjs\n * @param {Array} objects Array of fabric objects\n * @return {String}\n */\n createSVGFontFacesMarkup: function() {\n var markup = '', fontList = { }, obj, fontFamily,\n style, row, rowIndex, _char, charIndex, i, len,\n fontPaths = fabric.fontPaths, objects = this._objects;\n\n for (i = 0, len = objects.length; i < len; i++) {\n obj = objects[i];\n fontFamily = obj.fontFamily;\n if (obj.type.indexOf('text') === -1 || fontList[fontFamily] || !fontPaths[fontFamily]) {\n continue;\n }\n fontList[fontFamily] = true;\n if (!obj.styles) {\n continue;\n }\n style = obj.styles;\n for (rowIndex in style) {\n row = style[rowIndex];\n for (charIndex in row) {\n _char = row[charIndex];\n fontFamily = _char.fontFamily;\n if (!fontList[fontFamily] && fontPaths[fontFamily]) {\n fontList[fontFamily] = true;\n }\n }\n }\n }\n\n for (var j in fontList) {\n markup += [\n '\\t\\t@font-face {\\n',\n '\\t\\t\\tfont-family: \\'', j, '\\';\\n',\n '\\t\\t\\tsrc: url(\\'', fontPaths[j], '\\');\\n',\n '\\t\\t}\\n'\n ].join('');\n }\n\n if (markup) {\n markup = [\n '\\t\\n'\n ].join('');\n }\n\n return markup;\n },\n\n /**\n * @private\n */\n _setSVGObjects: function(markup, reviver) {\n var instance, i, len, objects = this._objects;\n for (i = 0, len = objects.length; i < len; i++) {\n instance = objects[i];\n if (instance.excludeFromExport) {\n continue;\n }\n this._setSVGObject(markup, instance, reviver);\n }\n },\n\n /**\n * @private\n */\n _setSVGObject: function(markup, instance, reviver) {\n markup.push(instance.toSVG(reviver));\n },\n\n /**\n * @private\n */\n _setSVGBgOverlayImage: function(markup, property, reviver) {\n if (this[property] && !this[property].excludeFromExport && this[property].toSVG) {\n markup.push(this[property].toSVG(reviver));\n }\n },\n\n /**\n * @private\n */\n _setSVGBgOverlayColor: function(markup, property) {\n var filler = this[property], vpt = this.viewportTransform, finalWidth = this.width / vpt[0],\n finalHeight = this.height / vpt[3];\n if (!filler) {\n return;\n }\n if (filler.toLive) {\n var repeat = filler.repeat;\n markup.push(\n '\\n'\n );\n }\n else {\n markup.push(\n '\\n'\n );\n }\n },\n /* _TO_SVG_END_ */\n\n /**\n * Moves an object or the objects of a multiple selection\n * to the bottom of the stack of drawn objects\n * @param {fabric.Object} object Object to send to back\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n sendToBack: function (object) {\n if (!object) {\n return this;\n }\n var activeSelection = this._activeObject,\n i, obj, objs;\n if (object === activeSelection && object.type === 'activeSelection') {\n objs = activeSelection._objects;\n for (i = objs.length; i--;) {\n obj = objs[i];\n removeFromArray(this._objects, obj);\n this._objects.unshift(obj);\n }\n }\n else {\n removeFromArray(this._objects, object);\n this._objects.unshift(object);\n }\n this.renderOnAddRemove && this.requestRenderAll();\n return this;\n },\n\n /**\n * Moves an object or the objects of a multiple selection\n * to the top of the stack of drawn objects\n * @param {fabric.Object} object Object to send\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n bringToFront: function (object) {\n if (!object) {\n return this;\n }\n var activeSelection = this._activeObject,\n i, obj, objs;\n if (object === activeSelection && object.type === 'activeSelection') {\n objs = activeSelection._objects;\n for (i = 0; i < objs.length; i++) {\n obj = objs[i];\n removeFromArray(this._objects, obj);\n this._objects.push(obj);\n }\n }\n else {\n removeFromArray(this._objects, object);\n this._objects.push(object);\n }\n this.renderOnAddRemove && this.requestRenderAll();\n return this;\n },\n\n /**\n * Moves an object or a selection down in stack of drawn objects\n * An optional paramter, intersecting allowes to move the object in behind\n * the first intersecting object. Where intersection is calculated with\n * bounding box. If no intersection is found, there will not be change in the\n * stack.\n * @param {fabric.Object} object Object to send\n * @param {Boolean} [intersecting] If `true`, send object behind next lower intersecting object\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n sendBackwards: function (object, intersecting) {\n if (!object) {\n return this;\n }\n var activeSelection = this._activeObject,\n i, obj, idx, newIdx, objs, objsMoved = 0;\n\n if (object === activeSelection && object.type === 'activeSelection') {\n objs = activeSelection._objects;\n for (i = 0; i < objs.length; i++) {\n obj = objs[i];\n idx = this._objects.indexOf(obj);\n if (idx > 0 + objsMoved) {\n newIdx = idx - 1;\n removeFromArray(this._objects, obj);\n this._objects.splice(newIdx, 0, obj);\n }\n objsMoved++;\n }\n }\n else {\n idx = this._objects.indexOf(object);\n if (idx !== 0) {\n // if object is not on the bottom of stack\n newIdx = this._findNewLowerIndex(object, idx, intersecting);\n removeFromArray(this._objects, object);\n this._objects.splice(newIdx, 0, object);\n }\n }\n this.renderOnAddRemove && this.requestRenderAll();\n return this;\n },\n\n /**\n * @private\n */\n _findNewLowerIndex: function(object, idx, intersecting) {\n var newIdx, i;\n\n if (intersecting) {\n newIdx = idx;\n\n // traverse down the stack looking for the nearest intersecting object\n for (i = idx - 1; i >= 0; --i) {\n\n var isIntersecting = object.intersectsWithObject(this._objects[i]) ||\n object.isContainedWithinObject(this._objects[i]) ||\n this._objects[i].isContainedWithinObject(object);\n\n if (isIntersecting) {\n newIdx = i;\n break;\n }\n }\n }\n else {\n newIdx = idx - 1;\n }\n\n return newIdx;\n },\n\n /**\n * Moves an object or a selection up in stack of drawn objects\n * An optional paramter, intersecting allowes to move the object in front\n * of the first intersecting object. Where intersection is calculated with\n * bounding box. If no intersection is found, there will not be change in the\n * stack.\n * @param {fabric.Object} object Object to send\n * @param {Boolean} [intersecting] If `true`, send object in front of next upper intersecting object\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n bringForward: function (object, intersecting) {\n if (!object) {\n return this;\n }\n var activeSelection = this._activeObject,\n i, obj, idx, newIdx, objs, objsMoved = 0;\n\n if (object === activeSelection && object.type === 'activeSelection') {\n objs = activeSelection._objects;\n for (i = objs.length; i--;) {\n obj = objs[i];\n idx = this._objects.indexOf(obj);\n if (idx < this._objects.length - 1 - objsMoved) {\n newIdx = idx + 1;\n removeFromArray(this._objects, obj);\n this._objects.splice(newIdx, 0, obj);\n }\n objsMoved++;\n }\n }\n else {\n idx = this._objects.indexOf(object);\n if (idx !== this._objects.length - 1) {\n // if object is not on top of stack (last item in an array)\n newIdx = this._findNewUpperIndex(object, idx, intersecting);\n removeFromArray(this._objects, object);\n this._objects.splice(newIdx, 0, object);\n }\n }\n this.renderOnAddRemove && this.requestRenderAll();\n return this;\n },\n\n /**\n * @private\n */\n _findNewUpperIndex: function(object, idx, intersecting) {\n var newIdx, i, len;\n\n if (intersecting) {\n newIdx = idx;\n\n // traverse up the stack looking for the nearest intersecting object\n for (i = idx + 1, len = this._objects.length; i < len; ++i) {\n\n var isIntersecting = object.intersectsWithObject(this._objects[i]) ||\n object.isContainedWithinObject(this._objects[i]) ||\n this._objects[i].isContainedWithinObject(object);\n\n if (isIntersecting) {\n newIdx = i;\n break;\n }\n }\n }\n else {\n newIdx = idx + 1;\n }\n\n return newIdx;\n },\n\n /**\n * Moves an object to specified level in stack of drawn objects\n * @param {fabric.Object} object Object to send\n * @param {Number} index Position to move to\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n moveTo: function (object, index) {\n removeFromArray(this._objects, object);\n this._objects.splice(index, 0, object);\n return this.renderOnAddRemove && this.requestRenderAll();\n },\n\n /**\n * Clears a canvas element and dispose objects\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n dispose: function () {\n // cancel eventually ongoing renders\n if (this.isRendering) {\n fabric.util.cancelAnimFrame(this.isRendering);\n this.isRendering = 0;\n }\n this.forEachObject(function(object) {\n object.dispose && object.dispose();\n });\n this._objects = [];\n if (this.backgroundImage && this.backgroundImage.dispose) {\n this.backgroundImage.dispose();\n }\n this.backgroundImage = null;\n if (this.overlayImage && this.overlayImage.dispose) {\n this.overlayImage.dispose();\n }\n this.overlayImage = null;\n this._iTextInstances = null;\n this.contextContainer = null;\n fabric.util.cleanUpJsdomNode(this.lowerCanvasEl);\n this.lowerCanvasEl = undefined;\n return this;\n },\n\n /**\n * Returns a string representation of an instance\n * @return {String} string representation of an instance\n */\n toString: function () {\n return '#';\n }\n });\n\n extend(fabric.StaticCanvas.prototype, fabric.Observable);\n extend(fabric.StaticCanvas.prototype, fabric.Collection);\n extend(fabric.StaticCanvas.prototype, fabric.DataURLExporter);\n\n extend(fabric.StaticCanvas, /** @lends fabric.StaticCanvas */ {\n\n /**\n * @static\n * @type String\n * @default\n */\n EMPTY_JSON: '{\"objects\": [], \"background\": \"white\"}',\n\n /**\n * Provides a way to check support of some of the canvas methods\n * (either those of HTMLCanvasElement itself, or rendering context)\n *\n * @param {String} methodName Method to check support for;\n * Could be one of \"setLineDash\"\n * @return {Boolean | null} `true` if method is supported (or at least exists),\n * `null` if canvas element or context can not be initialized\n */\n supports: function (methodName) {\n var el = createCanvasElement();\n\n if (!el || !el.getContext) {\n return null;\n }\n\n var ctx = el.getContext('2d');\n if (!ctx) {\n return null;\n }\n\n switch (methodName) {\n\n case 'setLineDash':\n return typeof ctx.setLineDash !== 'undefined';\n\n default:\n return null;\n }\n }\n });\n\n /**\n * Returns JSON representation of canvas\n * @function\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {String} JSON string\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-3#serialization}\n * @see {@link http://jsfiddle.net/fabricjs/pec86/|jsFiddle demo}\n * @example JSON without additional properties\n * var json = canvas.toJSON();\n * @example JSON with additional properties included\n * var json = canvas.toJSON(['lockMovementX', 'lockMovementY', 'lockRotation', 'lockScalingX', 'lockScalingY', 'lockUniScaling']);\n * @example JSON without default values\n * canvas.includeDefaultValues = false;\n * var json = canvas.toJSON();\n */\n fabric.StaticCanvas.prototype.toJSON = fabric.StaticCanvas.prototype.toObject;\n\n if (fabric.isLikelyNode) {\n fabric.StaticCanvas.prototype.createPNGStream = function() {\n var impl = getNodeCanvas(this.lowerCanvasEl);\n return impl && impl.createPNGStream();\n };\n fabric.StaticCanvas.prototype.createJPEGStream = function(opts) {\n var impl = getNodeCanvas(this.lowerCanvasEl);\n return impl && impl.createJPEGStream(opts);\n };\n }\n})();\n\n\n/**\n * BaseBrush class\n * @class fabric.BaseBrush\n * @see {@link http://fabricjs.com/freedrawing|Freedrawing demo}\n */\nfabric.BaseBrush = fabric.util.createClass(/** @lends fabric.BaseBrush.prototype */ {\n\n /**\n * Color of a brush\n * @type String\n * @default\n */\n color: 'rgb(0, 0, 0)',\n\n /**\n * Width of a brush, has to be a Number, no string literals\n * @type Number\n * @default\n */\n width: 1,\n\n /**\n * Shadow object representing shadow of this shape.\n * Backwards incompatibility note: This property replaces \"shadowColor\" (String), \"shadowOffsetX\" (Number),\n * \"shadowOffsetY\" (Number) and \"shadowBlur\" (Number) since v1.2.12\n * @type fabric.Shadow\n * @default\n */\n shadow: null,\n\n /**\n * Line endings style of a brush (one of \"butt\", \"round\", \"square\")\n * @type String\n * @default\n */\n strokeLineCap: 'round',\n\n /**\n * Corner style of a brush (one of \"bevel\", \"round\", \"miter\")\n * @type String\n * @default\n */\n strokeLineJoin: 'round',\n\n /**\n * Maximum miter length (used for strokeLineJoin = \"miter\") of a brush's\n * @type Number\n * @default\n */\n strokeMiterLimit: 10,\n\n /**\n * Stroke Dash Array.\n * @type Array\n * @default\n */\n strokeDashArray: null,\n\n /**\n * Sets shadow of an object\n * @param {Object|String} [options] Options object or string (e.g. \"2px 2px 10px rgba(0,0,0,0.2)\")\n * @return {fabric.Object} thisArg\n * @chainable\n */\n setShadow: function(options) {\n this.shadow = new fabric.Shadow(options);\n return this;\n },\n\n /**\n * Sets brush styles\n * @private\n */\n _setBrushStyles: function() {\n var ctx = this.canvas.contextTop;\n ctx.strokeStyle = this.color;\n ctx.lineWidth = this.width;\n ctx.lineCap = this.strokeLineCap;\n ctx.miterLimit = this.strokeMiterLimit;\n ctx.lineJoin = this.strokeLineJoin;\n if (fabric.StaticCanvas.supports('setLineDash')) {\n ctx.setLineDash(this.strokeDashArray || []);\n }\n },\n\n /**\n * Sets the transformation on given context\n * @param {RenderingContext2d} ctx context to render on\n * @private\n */\n _saveAndTransform: function(ctx) {\n var v = this.canvas.viewportTransform;\n ctx.save();\n ctx.transform(v[0], v[1], v[2], v[3], v[4], v[5]);\n },\n\n /**\n * Sets brush shadow styles\n * @private\n */\n _setShadow: function() {\n if (!this.shadow) {\n return;\n }\n\n var ctx = this.canvas.contextTop,\n zoom = this.canvas.getZoom();\n\n ctx.shadowColor = this.shadow.color;\n ctx.shadowBlur = this.shadow.blur * zoom;\n ctx.shadowOffsetX = this.shadow.offsetX * zoom;\n ctx.shadowOffsetY = this.shadow.offsetY * zoom;\n },\n\n /**\n * Removes brush shadow styles\n * @private\n */\n _resetShadow: function() {\n var ctx = this.canvas.contextTop;\n\n ctx.shadowColor = '';\n ctx.shadowBlur = ctx.shadowOffsetX = ctx.shadowOffsetY = 0;\n }\n});\n\n\n(function() {\n\n /**\n * PencilBrush class\n * @class fabric.PencilBrush\n * @extends fabric.BaseBrush\n */\n fabric.PencilBrush = fabric.util.createClass(fabric.BaseBrush, /** @lends fabric.PencilBrush.prototype */ {\n\n /**\n * Constructor\n * @param {fabric.Canvas} canvas\n * @return {fabric.PencilBrush} Instance of a pencil brush\n */\n initialize: function(canvas) {\n this.canvas = canvas;\n this._points = [];\n },\n\n /**\n * Invoked inside on mouse down and mouse move\n * @param {Object} pointer\n */\n _drawSegment: function (ctx, p1, p2) {\n var midPoint = p1.midPointFrom(p2);\n ctx.quadraticCurveTo(p1.x, p1.y, midPoint.x, midPoint.y);\n return midPoint;\n },\n\n /**\n * Inovoked on mouse down\n * @param {Object} pointer\n */\n onMouseDown: function(pointer) {\n this._prepareForDrawing(pointer);\n // capture coordinates immediately\n // this allows to draw dots (when movement never occurs)\n this._captureDrawingPath(pointer);\n this._render();\n },\n\n /**\n * Inovoked on mouse move\n * @param {Object} pointer\n */\n onMouseMove: function(pointer) {\n if (this._captureDrawingPath(pointer) && this._points.length > 1) {\n if (this.needsFullRender) {\n // redraw curve\n // clear top canvas\n this.canvas.clearContext(this.canvas.contextTop);\n this._render();\n }\n else {\n var points = this._points, length = points.length, ctx = this.canvas.contextTop;\n // draw the curve update\n this._saveAndTransform(ctx);\n if (this.oldEnd) {\n ctx.beginPath();\n ctx.moveTo(this.oldEnd.x, this.oldEnd.y);\n }\n this.oldEnd = this._drawSegment(ctx, points[length - 2], points[length - 1], true);\n ctx.stroke();\n ctx.restore();\n }\n }\n },\n\n /**\n * Invoked on mouse up\n */\n onMouseUp: function() {\n this.oldEnd = undefined;\n this._finalizeAndAddPath();\n },\n\n /**\n * @private\n * @param {Object} pointer Actual mouse position related to the canvas.\n */\n _prepareForDrawing: function(pointer) {\n\n var p = new fabric.Point(pointer.x, pointer.y);\n\n this._reset();\n this._addPoint(p);\n this.canvas.contextTop.moveTo(p.x, p.y);\n },\n\n /**\n * @private\n * @param {fabric.Point} point Point to be added to points array\n */\n _addPoint: function(point) {\n if (this._points.length > 1 && point.eq(this._points[this._points.length - 1])) {\n return false;\n }\n this._points.push(point);\n return true;\n },\n\n /**\n * Clear points array and set contextTop canvas style.\n * @private\n */\n _reset: function() {\n this._points.length = 0;\n this._setBrushStyles();\n var color = new fabric.Color(this.color);\n this.needsFullRender = (color.getAlpha() < 1);\n this._setShadow();\n },\n\n /**\n * @private\n * @param {Object} pointer Actual mouse position related to the canvas.\n */\n _captureDrawingPath: function(pointer) {\n var pointerPoint = new fabric.Point(pointer.x, pointer.y);\n return this._addPoint(pointerPoint);\n },\n\n /**\n * Draw a smooth path on the topCanvas using quadraticCurveTo\n * @private\n */\n _render: function() {\n var ctx = this.canvas.contextTop, i, len,\n p1 = this._points[0],\n p2 = this._points[1];\n\n this._saveAndTransform(ctx);\n ctx.beginPath();\n //if we only have 2 points in the path and they are the same\n //it means that the user only clicked the canvas without moving the mouse\n //then we should be drawing a dot. A path isn't drawn between two identical dots\n //that's why we set them apart a bit\n if (this._points.length === 2 && p1.x === p2.x && p1.y === p2.y) {\n var width = this.width / 1000;\n p1 = new fabric.Point(p1.x, p1.y);\n p2 = new fabric.Point(p2.x, p2.y);\n p1.x -= width;\n p2.x += width;\n }\n ctx.moveTo(p1.x, p1.y);\n\n for (i = 1, len = this._points.length; i < len; i++) {\n // we pick the point between pi + 1 & pi + 2 as the\n // end point and p1 as our control point.\n this._drawSegment(ctx, p1, p2);\n p1 = this._points[i];\n p2 = this._points[i + 1];\n }\n // Draw last line as a straight line while\n // we wait for the next point to be able to calculate\n // the bezier control point\n ctx.lineTo(p1.x, p1.y);\n ctx.stroke();\n ctx.restore();\n },\n\n /**\n * Converts points to SVG path\n * @param {Array} points Array of points\n * @return {String} SVG path\n */\n convertPointsToSVGPath: function(points) {\n var path = [], i, width = this.width / 1000,\n p1 = new fabric.Point(points[0].x, points[0].y),\n p2 = new fabric.Point(points[1].x, points[1].y),\n len = points.length, multSignX = 1, multSignY = 1, manyPoints = len > 2;\n\n if (manyPoints) {\n multSignX = points[2].x < p2.x ? -1 : points[2].x === p2.x ? 0 : 1;\n multSignY = points[2].y < p2.y ? -1 : points[2].y === p2.y ? 0 : 1;\n }\n path.push('M ', p1.x - multSignX * width, ' ', p1.y - multSignY * width, ' ');\n for (i = 1; i < len; i++) {\n if (!p1.eq(p2)) {\n var midPoint = p1.midPointFrom(p2);\n // p1 is our bezier control point\n // midpoint is our endpoint\n // start point is p(i-1) value.\n path.push('Q ', p1.x, ' ', p1.y, ' ', midPoint.x, ' ', midPoint.y, ' ');\n }\n p1 = points[i];\n if ((i + 1) < points.length) {\n p2 = points[i + 1];\n }\n }\n if (manyPoints) {\n multSignX = p1.x > points[i - 2].x ? 1 : p1.x === points[i - 2].x ? 0 : -1;\n multSignY = p1.y > points[i - 2].y ? 1 : p1.y === points[i - 2].y ? 0 : -1;\n }\n path.push('L ', p1.x + multSignX * width, ' ', p1.y + multSignY * width);\n return path;\n },\n\n /**\n * Creates fabric.Path object to add on canvas\n * @param {String} pathData Path data\n * @return {fabric.Path} Path to add on canvas\n */\n createPath: function(pathData) {\n var path = new fabric.Path(pathData, {\n fill: null,\n stroke: this.color,\n strokeWidth: this.width,\n strokeLineCap: this.strokeLineCap,\n strokeMiterLimit: this.strokeMiterLimit,\n strokeLineJoin: this.strokeLineJoin,\n strokeDashArray: this.strokeDashArray,\n });\n var position = new fabric.Point(path.left + path.width / 2, path.top + path.height / 2);\n position = path.translateToGivenOrigin(position, 'center', 'center', path.originX, path.originY);\n path.top = position.y;\n path.left = position.x;\n if (this.shadow) {\n this.shadow.affectStroke = true;\n path.setShadow(this.shadow);\n }\n\n return path;\n },\n\n /**\n * On mouseup after drawing the path on contextTop canvas\n * we use the points captured to create an new fabric path object\n * and add it to the fabric canvas.\n */\n _finalizeAndAddPath: function() {\n var ctx = this.canvas.contextTop;\n ctx.closePath();\n\n var pathData = this.convertPointsToSVGPath(this._points).join('');\n if (pathData === 'M 0 0 Q 0 0 0 0 L 0 0') {\n // do not create 0 width/height paths, as they are\n // rendered inconsistently across browsers\n // Firefox 4, for example, renders a dot,\n // whereas Chrome 10 renders nothing\n this.canvas.requestRenderAll();\n return;\n }\n\n var path = this.createPath(pathData);\n this.canvas.clearContext(this.canvas.contextTop);\n this.canvas.add(path);\n this.canvas.renderAll();\n path.setCoords();\n this._resetShadow();\n\n\n // fire event 'path' created\n this.canvas.fire('path:created', { path: path });\n }\n });\n})();\n\n\n/**\n * CircleBrush class\n * @class fabric.CircleBrush\n */\nfabric.CircleBrush = fabric.util.createClass(fabric.BaseBrush, /** @lends fabric.CircleBrush.prototype */ {\n\n /**\n * Width of a brush\n * @type Number\n * @default\n */\n width: 10,\n\n /**\n * Constructor\n * @param {fabric.Canvas} canvas\n * @return {fabric.CircleBrush} Instance of a circle brush\n */\n initialize: function(canvas) {\n this.canvas = canvas;\n this.points = [];\n },\n\n /**\n * Invoked inside on mouse down and mouse move\n * @param {Object} pointer\n */\n drawDot: function(pointer) {\n var point = this.addPoint(pointer),\n ctx = this.canvas.contextTop;\n this._saveAndTransform(ctx);\n ctx.fillStyle = point.fill;\n ctx.beginPath();\n ctx.arc(point.x, point.y, point.radius, 0, Math.PI * 2, false);\n ctx.closePath();\n ctx.fill();\n\n ctx.restore();\n },\n\n /**\n * Invoked on mouse down\n */\n onMouseDown: function(pointer) {\n this.points.length = 0;\n this.canvas.clearContext(this.canvas.contextTop);\n this._setShadow();\n this.drawDot(pointer);\n },\n\n /**\n * Render the full state of the brush\n * @private\n */\n _render: function() {\n var ctx = this.canvas.contextTop, i, len,\n points = this.points, point;\n this._saveAndTransform(ctx);\n for (i = 0, len = points.length; i < len; i++) {\n point = points[i];\n ctx.fillStyle = point.fill;\n ctx.beginPath();\n ctx.arc(point.x, point.y, point.radius, 0, Math.PI * 2, false);\n ctx.closePath();\n ctx.fill();\n }\n ctx.restore();\n },\n\n /**\n * Invoked on mouse move\n * @param {Object} pointer\n */\n onMouseMove: function(pointer) {\n this.drawDot(pointer);\n },\n\n /**\n * Invoked on mouse up\n */\n onMouseUp: function() {\n var originalRenderOnAddRemove = this.canvas.renderOnAddRemove, i, len;\n this.canvas.renderOnAddRemove = false;\n\n var circles = [];\n\n for (i = 0, len = this.points.length; i < len; i++) {\n var point = this.points[i],\n circle = new fabric.Circle({\n radius: point.radius,\n left: point.x,\n top: point.y,\n originX: 'center',\n originY: 'center',\n fill: point.fill\n });\n\n this.shadow && circle.setShadow(this.shadow);\n\n circles.push(circle);\n }\n var group = new fabric.Group(circles);\n group.canvas = this.canvas;\n\n this.canvas.add(group);\n this.canvas.fire('path:created', { path: group });\n\n this.canvas.clearContext(this.canvas.contextTop);\n this._resetShadow();\n this.canvas.renderOnAddRemove = originalRenderOnAddRemove;\n this.canvas.requestRenderAll();\n },\n\n /**\n * @param {Object} pointer\n * @return {fabric.Point} Just added pointer point\n */\n addPoint: function(pointer) {\n var pointerPoint = new fabric.Point(pointer.x, pointer.y),\n\n circleRadius = fabric.util.getRandomInt(\n Math.max(0, this.width - 20), this.width + 20) / 2,\n\n circleColor = new fabric.Color(this.color)\n .setAlpha(fabric.util.getRandomInt(0, 100) / 100)\n .toRgba();\n\n pointerPoint.radius = circleRadius;\n pointerPoint.fill = circleColor;\n\n this.points.push(pointerPoint);\n\n return pointerPoint;\n }\n});\n\n\n/**\n * SprayBrush class\n * @class fabric.SprayBrush\n */\nfabric.SprayBrush = fabric.util.createClass( fabric.BaseBrush, /** @lends fabric.SprayBrush.prototype */ {\n\n /**\n * Width of a spray\n * @type Number\n * @default\n */\n width: 10,\n\n /**\n * Density of a spray (number of dots per chunk)\n * @type Number\n * @default\n */\n density: 20,\n\n /**\n * Width of spray dots\n * @type Number\n * @default\n */\n dotWidth: 1,\n\n /**\n * Width variance of spray dots\n * @type Number\n * @default\n */\n dotWidthVariance: 1,\n\n /**\n * Whether opacity of a dot should be random\n * @type Boolean\n * @default\n */\n randomOpacity: false,\n\n /**\n * Whether overlapping dots (rectangles) should be removed (for performance reasons)\n * @type Boolean\n * @default\n */\n optimizeOverlapping: true,\n\n /**\n * Constructor\n * @param {fabric.Canvas} canvas\n * @return {fabric.SprayBrush} Instance of a spray brush\n */\n initialize: function(canvas) {\n this.canvas = canvas;\n this.sprayChunks = [];\n },\n\n /**\n * Invoked on mouse down\n * @param {Object} pointer\n */\n onMouseDown: function(pointer) {\n this.sprayChunks.length = 0;\n this.canvas.clearContext(this.canvas.contextTop);\n this._setShadow();\n\n this.addSprayChunk(pointer);\n this.render(this.sprayChunkPoints);\n },\n\n /**\n * Invoked on mouse move\n * @param {Object} pointer\n */\n onMouseMove: function(pointer) {\n this.addSprayChunk(pointer);\n this.render(this.sprayChunkPoints);\n },\n\n /**\n * Invoked on mouse up\n */\n onMouseUp: function() {\n var originalRenderOnAddRemove = this.canvas.renderOnAddRemove;\n this.canvas.renderOnAddRemove = false;\n\n var rects = [];\n\n for (var i = 0, ilen = this.sprayChunks.length; i < ilen; i++) {\n var sprayChunk = this.sprayChunks[i];\n\n for (var j = 0, jlen = sprayChunk.length; j < jlen; j++) {\n\n var rect = new fabric.Rect({\n width: sprayChunk[j].width,\n height: sprayChunk[j].width,\n left: sprayChunk[j].x + 1,\n top: sprayChunk[j].y + 1,\n originX: 'center',\n originY: 'center',\n fill: this.color\n });\n rects.push(rect);\n }\n }\n\n if (this.optimizeOverlapping) {\n rects = this._getOptimizedRects(rects);\n }\n\n var group = new fabric.Group(rects);\n this.shadow && group.setShadow(this.shadow);\n this.canvas.add(group);\n this.canvas.fire('path:created', { path: group });\n\n this.canvas.clearContext(this.canvas.contextTop);\n this._resetShadow();\n this.canvas.renderOnAddRemove = originalRenderOnAddRemove;\n this.canvas.requestRenderAll();\n },\n\n /**\n * @private\n * @param {Array} rects\n */\n _getOptimizedRects: function(rects) {\n\n // avoid creating duplicate rects at the same coordinates\n var uniqueRects = { }, key, i, len;\n\n for (i = 0, len = rects.length; i < len; i++) {\n key = rects[i].left + '' + rects[i].top;\n if (!uniqueRects[key]) {\n uniqueRects[key] = rects[i];\n }\n }\n var uniqueRectsArray = [];\n for (key in uniqueRects) {\n uniqueRectsArray.push(uniqueRects[key]);\n }\n\n return uniqueRectsArray;\n },\n\n /**\n * Render new chunk of spray brush\n */\n render: function(sprayChunk) {\n var ctx = this.canvas.contextTop, i, len;\n ctx.fillStyle = this.color;\n\n this._saveAndTransform(ctx);\n\n for (i = 0, len = sprayChunk.length; i < len; i++) {\n var point = sprayChunk[i];\n if (typeof point.opacity !== 'undefined') {\n ctx.globalAlpha = point.opacity;\n }\n ctx.fillRect(point.x, point.y, point.width, point.width);\n }\n ctx.restore();\n },\n\n /**\n * Render all spray chunks\n */\n _render: function() {\n var ctx = this.canvas.contextTop, i, ilen;\n ctx.fillStyle = this.color;\n\n this._saveAndTransform(ctx);\n\n for (i = 0, ilen = this.sprayChunks.length; i < ilen; i++) {\n this.render(this.sprayChunks[i]);\n }\n ctx.restore();\n },\n\n /**\n * @param {Object} pointer\n */\n addSprayChunk: function(pointer) {\n this.sprayChunkPoints = [];\n\n var x, y, width, radius = this.width / 2, i;\n\n for (i = 0; i < this.density; i++) {\n\n x = fabric.util.getRandomInt(pointer.x - radius, pointer.x + radius);\n y = fabric.util.getRandomInt(pointer.y - radius, pointer.y + radius);\n\n if (this.dotWidthVariance) {\n width = fabric.util.getRandomInt(\n // bottom clamp width to 1\n Math.max(1, this.dotWidth - this.dotWidthVariance),\n this.dotWidth + this.dotWidthVariance);\n }\n else {\n width = this.dotWidth;\n }\n\n var point = new fabric.Point(x, y);\n point.width = width;\n\n if (this.randomOpacity) {\n point.opacity = fabric.util.getRandomInt(0, 100) / 100;\n }\n\n this.sprayChunkPoints.push(point);\n }\n\n this.sprayChunks.push(this.sprayChunkPoints);\n }\n});\n\n\n/**\n * PatternBrush class\n * @class fabric.PatternBrush\n * @extends fabric.BaseBrush\n */\nfabric.PatternBrush = fabric.util.createClass(fabric.PencilBrush, /** @lends fabric.PatternBrush.prototype */ {\n\n getPatternSrc: function() {\n\n var dotWidth = 20,\n dotDistance = 5,\n patternCanvas = fabric.util.createCanvasElement(),\n patternCtx = patternCanvas.getContext('2d');\n\n patternCanvas.width = patternCanvas.height = dotWidth + dotDistance;\n\n patternCtx.fillStyle = this.color;\n patternCtx.beginPath();\n patternCtx.arc(dotWidth / 2, dotWidth / 2, dotWidth / 2, 0, Math.PI * 2, false);\n patternCtx.closePath();\n patternCtx.fill();\n\n return patternCanvas;\n },\n\n getPatternSrcFunction: function() {\n return String(this.getPatternSrc).replace('this.color', '\"' + this.color + '\"');\n },\n\n /**\n * Creates \"pattern\" instance property\n */\n getPattern: function() {\n return this.canvas.contextTop.createPattern(this.source || this.getPatternSrc(), 'repeat');\n },\n\n /**\n * Sets brush styles\n */\n _setBrushStyles: function() {\n this.callSuper('_setBrushStyles');\n this.canvas.contextTop.strokeStyle = this.getPattern();\n },\n\n /**\n * Creates path\n */\n createPath: function(pathData) {\n var path = this.callSuper('createPath', pathData),\n topLeft = path._getLeftTopCoords().scalarAdd(path.strokeWidth / 2);\n\n path.stroke = new fabric.Pattern({\n source: this.source || this.getPatternSrcFunction(),\n offsetX: -topLeft.x,\n offsetY: -topLeft.y\n });\n return path;\n }\n});\n\n\n(function() {\n\n var getPointer = fabric.util.getPointer,\n degreesToRadians = fabric.util.degreesToRadians,\n radiansToDegrees = fabric.util.radiansToDegrees,\n atan2 = Math.atan2,\n abs = Math.abs,\n supportLineDash = fabric.StaticCanvas.supports('setLineDash'),\n\n STROKE_OFFSET = 0.5;\n\n /**\n * Canvas class\n * @class fabric.Canvas\n * @extends fabric.StaticCanvas\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-1#canvas}\n * @see {@link fabric.Canvas#initialize} for constructor definition\n *\n * @fires object:modified\n * @fires object:rotated\n * @fires object:scaled\n * @fires object:moved\n * @fires object:skewed\n * @fires object:rotating\n * @fires object:scaling\n * @fires object:moving\n * @fires object:skewing\n * @fires object:selected this event is deprecated. use selection:created\n *\n * @fires before:transform\n * @fires before:selection:cleared\n * @fires selection:cleared\n * @fires selection:updated\n * @fires selection:created\n *\n * @fires path:created\n * @fires mouse:down\n * @fires mouse:move\n * @fires mouse:up\n * @fires mouse:down:before\n * @fires mouse:move:before\n * @fires mouse:up:before\n * @fires mouse:over\n * @fires mouse:out\n * @fires mouse:dblclick\n *\n * @fires dragover\n * @fires dragenter\n * @fires dragleave\n * @fires drop\n *\n */\n fabric.Canvas = fabric.util.createClass(fabric.StaticCanvas, /** @lends fabric.Canvas.prototype */ {\n\n /**\n * Constructor\n * @param {HTMLElement | String} el <canvas> element to initialize instance on\n * @param {Object} [options] Options object\n * @return {Object} thisArg\n */\n initialize: function(el, options) {\n options || (options = { });\n this.renderAndResetBound = this.renderAndReset.bind(this);\n this.requestRenderAllBound = this.requestRenderAll.bind(this);\n this._initStatic(el, options);\n this._initInteractive();\n this._createCacheCanvas();\n },\n\n /**\n * When true, objects can be transformed by one side (unproportionally)\n * @type Boolean\n * @default\n */\n uniScaleTransform: false,\n\n /**\n * Indicates which key enable unproportional scaling\n * values: 'altKey', 'shiftKey', 'ctrlKey'.\n * If `null` or 'none' or any other string that is not a modifier key\n * feature is disabled feature disabled.\n * @since 1.6.2\n * @type String\n * @default\n */\n uniScaleKey: 'shiftKey',\n\n /**\n * When true, objects use center point as the origin of scale transformation.\n * Backwards incompatibility note: This property replaces \"centerTransform\" (Boolean).\n * @since 1.3.4\n * @type Boolean\n * @default\n */\n centeredScaling: false,\n\n /**\n * When true, objects use center point as the origin of rotate transformation.\n * Backwards incompatibility note: This property replaces \"centerTransform\" (Boolean).\n * @since 1.3.4\n * @type Boolean\n * @default\n */\n centeredRotation: false,\n\n /**\n * Indicates which key enable centered Transform\n * values: 'altKey', 'shiftKey', 'ctrlKey'.\n * If `null` or 'none' or any other string that is not a modifier key\n * feature is disabled feature disabled.\n * @since 1.6.2\n * @type String\n * @default\n */\n centeredKey: 'altKey',\n\n /**\n * Indicates which key enable alternate action on corner\n * values: 'altKey', 'shiftKey', 'ctrlKey'.\n * If `null` or 'none' or any other string that is not a modifier key\n * feature is disabled feature disabled.\n * @since 1.6.2\n * @type String\n * @default\n */\n altActionKey: 'shiftKey',\n\n /**\n * Indicates that canvas is interactive. This property should not be changed.\n * @type Boolean\n * @default\n */\n interactive: true,\n\n /**\n * Indicates whether group selection should be enabled\n * @type Boolean\n * @default\n */\n selection: true,\n\n /**\n * Indicates which key or keys enable multiple click selection\n * Pass value as a string or array of strings\n * values: 'altKey', 'shiftKey', 'ctrlKey'.\n * If `null` or empty or containing any other string that is not a modifier key\n * feature is disabled.\n * @since 1.6.2\n * @type String|Array\n * @default\n */\n selectionKey: 'shiftKey',\n\n /**\n * Indicates which key enable alternative selection\n * in case of target overlapping with active object\n * values: 'altKey', 'shiftKey', 'ctrlKey'.\n * For a series of reason that come from the general expectations on how\n * things should work, this feature works only for preserveObjectStacking true.\n * If `null` or 'none' or any other string that is not a modifier key\n * feature is disabled.\n * @since 1.6.5\n * @type null|String\n * @default\n */\n altSelectionKey: null,\n\n /**\n * Color of selection\n * @type String\n * @default\n */\n selectionColor: 'rgba(100, 100, 255, 0.3)', // blue\n\n /**\n * Default dash array pattern\n * If not empty the selection border is dashed\n * @type Array\n */\n selectionDashArray: [],\n\n /**\n * Color of the border of selection (usually slightly darker than color of selection itself)\n * @type String\n * @default\n */\n selectionBorderColor: 'rgba(255, 255, 255, 0.3)',\n\n /**\n * Width of a line used in object/group selection\n * @type Number\n * @default\n */\n selectionLineWidth: 1,\n\n /**\n * Select only shapes that are fully contained in the dragged selection rectangle.\n * @type Boolean\n * @default\n */\n selectionFullyContained: false,\n\n /**\n * Default cursor value used when hovering over an object on canvas\n * @type String\n * @default\n */\n hoverCursor: 'move',\n\n /**\n * Default cursor value used when moving an object on canvas\n * @type String\n * @default\n */\n moveCursor: 'move',\n\n /**\n * Default cursor value used for the entire canvas\n * @type String\n * @default\n */\n defaultCursor: 'default',\n\n /**\n * Cursor value used during free drawing\n * @type String\n * @default\n */\n freeDrawingCursor: 'crosshair',\n\n /**\n * Cursor value used for rotation point\n * @type String\n * @default\n */\n rotationCursor: 'crosshair',\n\n /**\n * Cursor value used for disabled elements ( corners with disabled action )\n * @type String\n * @since 2.0.0\n * @default\n */\n notAllowedCursor: 'not-allowed',\n\n /**\n * Default element class that's given to wrapper (div) element of canvas\n * @type String\n * @default\n */\n containerClass: 'canvas-container',\n\n /**\n * When true, object detection happens on per-pixel basis rather than on per-bounding-box\n * @type Boolean\n * @default\n */\n perPixelTargetFind: false,\n\n /**\n * Number of pixels around target pixel to tolerate (consider active) during object detection\n * @type Number\n * @default\n */\n targetFindTolerance: 0,\n\n /**\n * When true, target detection is skipped when hovering over canvas. This can be used to improve performance.\n * @type Boolean\n * @default\n */\n skipTargetFind: false,\n\n /**\n * When true, mouse events on canvas (mousedown/mousemove/mouseup) result in free drawing.\n * After mousedown, mousemove creates a shape,\n * and then mouseup finalizes it and adds an instance of `fabric.Path` onto canvas.\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-4#free_drawing}\n * @type Boolean\n * @default\n */\n isDrawingMode: false,\n\n /**\n * Indicates whether objects should remain in current stack position when selected.\n * When false objects are brought to top and rendered as part of the selection group\n * @type Boolean\n * @default\n */\n preserveObjectStacking: false,\n\n /**\n * Indicates the angle that an object will lock to while rotating.\n * @type Number\n * @since 1.6.7\n * @default\n */\n snapAngle: 0,\n\n /**\n * Indicates the distance from the snapAngle the rotation will lock to the snapAngle.\n * When `null`, the snapThreshold will default to the snapAngle.\n * @type null|Number\n * @since 1.6.7\n * @default\n */\n snapThreshold: null,\n\n /**\n * Indicates if the right click on canvas can output the context menu or not\n * @type Boolean\n * @since 1.6.5\n * @default\n */\n stopContextMenu: false,\n\n /**\n * Indicates if the canvas can fire right click events\n * @type Boolean\n * @since 1.6.5\n * @default\n */\n fireRightClick: false,\n\n /**\n * Indicates if the canvas can fire middle click events\n * @type Boolean\n * @since 1.7.8\n * @default\n */\n fireMiddleClick: false,\n\n /**\n * @private\n */\n _initInteractive: function() {\n this._currentTransform = null;\n this._groupSelector = null;\n this._initWrapperElement();\n this._createUpperCanvas();\n this._initEventListeners();\n\n this._initRetinaScaling();\n\n this.freeDrawingBrush = fabric.PencilBrush && new fabric.PencilBrush(this);\n\n this.calcOffset();\n },\n\n /**\n * Divides objects in two groups, one to render immediately\n * and one to render as activeGroup.\n * @return {Array} objects to render immediately and pushes the other in the activeGroup.\n */\n _chooseObjectsToRender: function() {\n var activeObjects = this.getActiveObjects(),\n object, objsToRender, activeGroupObjects;\n\n if (activeObjects.length > 0 && !this.preserveObjectStacking) {\n objsToRender = [];\n activeGroupObjects = [];\n for (var i = 0, length = this._objects.length; i < length; i++) {\n object = this._objects[i];\n if (activeObjects.indexOf(object) === -1 ) {\n objsToRender.push(object);\n }\n else {\n activeGroupObjects.push(object);\n }\n }\n if (activeObjects.length > 1) {\n this._activeObject._objects = activeGroupObjects;\n }\n objsToRender.push.apply(objsToRender, activeGroupObjects);\n }\n else {\n objsToRender = this._objects;\n }\n return objsToRender;\n },\n\n /**\n * Renders both the top canvas and the secondary container canvas.\n * @return {fabric.Canvas} instance\n * @chainable\n */\n renderAll: function () {\n if (this.contextTopDirty && !this._groupSelector && !this.isDrawingMode) {\n this.clearContext(this.contextTop);\n this.contextTopDirty = false;\n }\n if (this.hasLostContext) {\n this.renderTopLayer(this.contextTop);\n }\n var canvasToDrawOn = this.contextContainer;\n this.renderCanvas(canvasToDrawOn, this._chooseObjectsToRender());\n return this;\n },\n\n renderTopLayer: function(ctx) {\n ctx.save();\n if (this.isDrawingMode && this._isCurrentlyDrawing) {\n this.freeDrawingBrush && this.freeDrawingBrush._render();\n this.contextTopDirty = true;\n }\n // we render the top context - last object\n if (this.selection && this._groupSelector) {\n this._drawSelection(ctx);\n this.contextTopDirty = true;\n }\n ctx.restore();\n },\n\n /**\n * Method to render only the top canvas.\n * Also used to render the group selection box.\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n renderTop: function () {\n var ctx = this.contextTop;\n this.clearContext(ctx);\n this.renderTopLayer(ctx);\n this.fire('after:render');\n return this;\n },\n\n /**\n * Resets the current transform to its original values and chooses the type of resizing based on the event\n * @private\n */\n _resetCurrentTransform: function() {\n var t = this._currentTransform;\n\n t.target.set({\n scaleX: t.original.scaleX,\n scaleY: t.original.scaleY,\n skewX: t.original.skewX,\n skewY: t.original.skewY,\n left: t.original.left,\n top: t.original.top\n });\n\n if (this._shouldCenterTransform(t.target)) {\n if (t.originX !== 'center') {\n if (t.originX === 'right') {\n t.mouseXSign = -1;\n }\n else {\n t.mouseXSign = 1;\n }\n }\n if (t.originY !== 'center') {\n if (t.originY === 'bottom') {\n t.mouseYSign = -1;\n }\n else {\n t.mouseYSign = 1;\n }\n }\n\n t.originX = 'center';\n t.originY = 'center';\n }\n else {\n t.originX = t.original.originX;\n t.originY = t.original.originY;\n }\n },\n\n /**\n * Checks if point is contained within an area of given object\n * @param {Event} e Event object\n * @param {fabric.Object} target Object to test against\n * @param {Object} [point] x,y object of point coordinates we want to check.\n * @return {Boolean} true if point is contained within an area of given object\n */\n containsPoint: function (e, target, point) {\n var ignoreZoom = true,\n pointer = point || this.getPointer(e, ignoreZoom),\n xy;\n\n if (target.group && target.group === this._activeObject && target.group.type === 'activeSelection') {\n xy = this._normalizePointer(target.group, pointer);\n }\n else {\n xy = { x: pointer.x, y: pointer.y };\n }\n // http://www.geog.ubc.ca/courses/klink/gis.notes/ncgia/u32.html\n // http://idav.ucdavis.edu/~okreylos/TAship/Spring2000/PointInPolygon.html\n return (target.containsPoint(xy) || target._findTargetCorner(pointer));\n },\n\n /**\n * @private\n */\n _normalizePointer: function (object, pointer) {\n var m = object.calcTransformMatrix(),\n invertedM = fabric.util.invertTransform(m),\n vptPointer = this.restorePointerVpt(pointer);\n return fabric.util.transformPoint(vptPointer, invertedM);\n },\n\n /**\n * Returns true if object is transparent at a certain location\n * @param {fabric.Object} target Object to check\n * @param {Number} x Left coordinate\n * @param {Number} y Top coordinate\n * @return {Boolean}\n */\n isTargetTransparent: function (target, x, y) {\n // in case the target is the activeObject, we cannot execute this optimization\n // because we need to draw controls too.\n if (target.shouldCache() && target._cacheCanvas && target !== this._activeObject) {\n var normalizedPointer = this._normalizePointer(target, {x: x, y: y}),\n targetRelativeX = Math.max(target.cacheTranslationX + (normalizedPointer.x * target.zoomX), 0),\n targetRelativeY = Math.max(target.cacheTranslationY + (normalizedPointer.y * target.zoomY), 0);\n\n var isTransparent = fabric.util.isTransparent(\n target._cacheContext, Math.round(targetRelativeX), Math.round(targetRelativeY), this.targetFindTolerance);\n\n return isTransparent;\n }\n\n var ctx = this.contextCache,\n originalColor = target.selectionBackgroundColor, v = this.viewportTransform;\n\n target.selectionBackgroundColor = '';\n\n this.clearContext(ctx);\n\n ctx.save();\n ctx.transform(v[0], v[1], v[2], v[3], v[4], v[5]);\n target.render(ctx);\n ctx.restore();\n\n target === this._activeObject && target._renderControls(ctx, {\n hasBorders: false,\n transparentCorners: false\n }, {\n hasBorders: false,\n });\n\n target.selectionBackgroundColor = originalColor;\n\n var isTransparent = fabric.util.isTransparent(\n ctx, x, y, this.targetFindTolerance);\n\n return isTransparent;\n },\n\n /**\n * takes an event and determins if selection key has been pressed\n * @private\n * @param {Event} e Event object\n */\n _isSelectionKeyPressed: function(e) {\n var selectionKeyPressed = false;\n\n if (Object.prototype.toString.call(this.selectionKey) === '[object Array]') {\n selectionKeyPressed = !!this.selectionKey.find(function(key) { return e[key] === true; });\n }\n else {\n selectionKeyPressed = e[this.selectionKey];\n }\n\n return selectionKeyPressed;\n },\n\n /**\n * @private\n * @param {Event} e Event object\n * @param {fabric.Object} target\n */\n _shouldClearSelection: function (e, target) {\n var activeObjects = this.getActiveObjects(),\n activeObject = this._activeObject;\n\n return (\n !target\n ||\n (target &&\n activeObject &&\n activeObjects.length > 1 &&\n activeObjects.indexOf(target) === -1 &&\n activeObject !== target &&\n !this._isSelectionKeyPressed(e))\n ||\n (target && !target.evented)\n ||\n (target &&\n !target.selectable &&\n activeObject &&\n activeObject !== target)\n );\n },\n\n /**\n * centeredScaling from object can't override centeredScaling from canvas.\n * this should be fixed, since object setting should take precedence over canvas.\n * @private\n * @param {fabric.Object} target\n */\n _shouldCenterTransform: function (target) {\n if (!target) {\n return;\n }\n\n var t = this._currentTransform,\n centerTransform;\n\n if (t.action === 'scale' || t.action === 'scaleX' || t.action === 'scaleY') {\n centerTransform = this.centeredScaling || target.centeredScaling;\n }\n else if (t.action === 'rotate') {\n centerTransform = this.centeredRotation || target.centeredRotation;\n }\n\n return centerTransform ? !t.altKey : t.altKey;\n },\n\n /**\n * @private\n */\n _getOriginFromCorner: function(target, corner) {\n var origin = {\n x: target.originX,\n y: target.originY\n };\n\n if (corner === 'ml' || corner === 'tl' || corner === 'bl') {\n origin.x = 'right';\n }\n else if (corner === 'mr' || corner === 'tr' || corner === 'br') {\n origin.x = 'left';\n }\n\n if (corner === 'tl' || corner === 'mt' || corner === 'tr') {\n origin.y = 'bottom';\n }\n else if (corner === 'bl' || corner === 'mb' || corner === 'br') {\n origin.y = 'top';\n }\n\n return origin;\n },\n\n /**\n * @private\n * @param {Boolean} alreadySelected true if target is already selected\n * @param {String} corner a string representing the corner ml, mr, tl ...\n * @param {Event} e Event object\n * @param {fabric.Object} [target] inserted back to help overriding. Unused\n */\n _getActionFromCorner: function(alreadySelected, corner, e /* target */) {\n if (!corner || !alreadySelected) {\n return 'drag';\n }\n\n switch (corner) {\n case 'mtr':\n return 'rotate';\n case 'ml':\n case 'mr':\n return e[this.altActionKey] ? 'skewY' : 'scaleX';\n case 'mt':\n case 'mb':\n return e[this.altActionKey] ? 'skewX' : 'scaleY';\n default:\n return 'scale';\n }\n },\n\n /**\n * @private\n * @param {Event} e Event object\n * @param {fabric.Object} target\n */\n _setupCurrentTransform: function (e, target, alreadySelected) {\n if (!target) {\n return;\n }\n\n var pointer = this.getPointer(e),\n corner = target._findTargetCorner(this.getPointer(e, true)),\n action = this._getActionFromCorner(alreadySelected, corner, e, target),\n origin = this._getOriginFromCorner(target, corner);\n\n this._currentTransform = {\n target: target,\n action: action,\n corner: corner,\n scaleX: target.scaleX,\n scaleY: target.scaleY,\n skewX: target.skewX,\n skewY: target.skewY,\n // used by transation\n offsetX: pointer.x - target.left,\n offsetY: pointer.y - target.top,\n originX: origin.x,\n originY: origin.y,\n ex: pointer.x,\n ey: pointer.y,\n lastX: pointer.x,\n lastY: pointer.y,\n // unsure they are usefull anymore.\n // left: target.left,\n // top: target.top,\n theta: degreesToRadians(target.angle),\n // end of unsure\n width: target.width * target.scaleX,\n mouseXSign: 1,\n mouseYSign: 1,\n shiftKey: e.shiftKey,\n altKey: e[this.centeredKey],\n original: fabric.util.saveObjectTransform(target),\n };\n\n this._currentTransform.original.originX = origin.x;\n this._currentTransform.original.originY = origin.y;\n\n this._resetCurrentTransform();\n this._beforeTransform(e);\n },\n\n /**\n * Translates object by \"setting\" its left/top\n * @private\n * @param {Number} x pointer's x coordinate\n * @param {Number} y pointer's y coordinate\n * @return {Boolean} true if the translation occurred\n */\n _translateObject: function (x, y) {\n var transform = this._currentTransform,\n target = transform.target,\n newLeft = x - transform.offsetX,\n newTop = y - transform.offsetY,\n moveX = !target.get('lockMovementX') && target.left !== newLeft,\n moveY = !target.get('lockMovementY') && target.top !== newTop;\n\n moveX && target.set('left', newLeft);\n moveY && target.set('top', newTop);\n return moveX || moveY;\n },\n\n /**\n * Check if we are increasing a positive skew or lower it,\n * checking mouse direction and pressed corner.\n * @private\n */\n _changeSkewTransformOrigin: function(mouseMove, t, by) {\n var property = 'originX', origins = { 0: 'center' },\n skew = t.target.skewX, originA = 'left', originB = 'right',\n corner = t.corner === 'mt' || t.corner === 'ml' ? 1 : -1,\n flipSign = 1;\n\n mouseMove = mouseMove > 0 ? 1 : -1;\n if (by === 'y') {\n skew = t.target.skewY;\n originA = 'top';\n originB = 'bottom';\n property = 'originY';\n }\n origins[-1] = originA;\n origins[1] = originB;\n\n t.target.flipX && (flipSign *= -1);\n t.target.flipY && (flipSign *= -1);\n\n if (skew === 0) {\n t.skewSign = -corner * mouseMove * flipSign;\n t[property] = origins[-mouseMove];\n }\n else {\n skew = skew > 0 ? 1 : -1;\n t.skewSign = skew;\n t[property] = origins[skew * corner * flipSign];\n }\n },\n\n /**\n * Skew object by mouse events\n * @private\n * @param {Number} x pointer's x coordinate\n * @param {Number} y pointer's y coordinate\n * @param {String} by Either 'x' or 'y'\n * @return {Boolean} true if the skewing occurred\n */\n _skewObject: function (x, y, by) {\n var t = this._currentTransform,\n target = t.target, skewed = false,\n lockSkewingX = target.get('lockSkewingX'),\n lockSkewingY = target.get('lockSkewingY');\n\n if ((lockSkewingX && by === 'x') || (lockSkewingY && by === 'y')) {\n return false;\n }\n\n // Get the constraint point\n var center = target.getCenterPoint(),\n actualMouseByCenter = target.toLocalPoint(new fabric.Point(x, y), 'center', 'center')[by],\n lastMouseByCenter = target.toLocalPoint(new fabric.Point(t.lastX, t.lastY), 'center', 'center')[by],\n actualMouseByOrigin, constraintPosition, dim = target._getTransformedDimensions();\n\n this._changeSkewTransformOrigin(actualMouseByCenter - lastMouseByCenter, t, by);\n actualMouseByOrigin = target.toLocalPoint(new fabric.Point(x, y), t.originX, t.originY)[by];\n constraintPosition = target.translateToOriginPoint(center, t.originX, t.originY);\n // Actually skew the object\n skewed = this._setObjectSkew(actualMouseByOrigin, t, by, dim);\n t.lastX = x;\n t.lastY = y;\n // Make sure the constraints apply\n target.setPositionByOrigin(constraintPosition, t.originX, t.originY);\n return skewed;\n },\n\n /**\n * Set object skew\n * @private\n * @return {Boolean} true if the skewing occurred\n */\n _setObjectSkew: function(localMouse, transform, by, _dim) {\n var target = transform.target, newValue, skewed = false,\n skewSign = transform.skewSign, newDim, dimNoSkew,\n otherBy, _otherBy, _by, newDimMouse, skewX, skewY;\n\n if (by === 'x') {\n otherBy = 'y';\n _otherBy = 'Y';\n _by = 'X';\n skewX = 0;\n skewY = target.skewY;\n }\n else {\n otherBy = 'x';\n _otherBy = 'X';\n _by = 'Y';\n skewX = target.skewX;\n skewY = 0;\n }\n\n dimNoSkew = target._getTransformedDimensions(skewX, skewY);\n newDimMouse = 2 * Math.abs(localMouse) - dimNoSkew[by];\n if (newDimMouse <= 2) {\n newValue = 0;\n }\n else {\n newValue = skewSign * Math.atan((newDimMouse / target['scale' + _by]) /\n (dimNoSkew[otherBy] / target['scale' + _otherBy]));\n newValue = fabric.util.radiansToDegrees(newValue);\n }\n skewed = target['skew' + _by] !== newValue;\n target.set('skew' + _by, newValue);\n if (target['skew' + _otherBy] !== 0) {\n newDim = target._getTransformedDimensions();\n newValue = (_dim[otherBy] / newDim[otherBy]) * target['scale' + _otherBy];\n target.set('scale' + _otherBy, newValue);\n }\n return skewed;\n },\n\n /**\n * Scales object by invoking its scaleX/scaleY methods\n * @private\n * @param {Number} x pointer's x coordinate\n * @param {Number} y pointer's y coordinate\n * @param {String} by Either 'x' or 'y' - specifies dimension constraint by which to scale an object.\n * When not provided, an object is scaled by both dimensions equally\n * @return {Boolean} true if the scaling occurred\n */\n _scaleObject: function (x, y, by) {\n var t = this._currentTransform,\n target = t.target,\n lockScalingX = target.lockScalingX,\n lockScalingY = target.lockScalingY,\n lockScalingFlip = target.lockScalingFlip;\n\n if (lockScalingX && lockScalingY) {\n return false;\n }\n\n // Get the constraint point\n var constraintPosition = target.translateToOriginPoint(target.getCenterPoint(), t.originX, t.originY),\n localMouse = target.toLocalPoint(new fabric.Point(x, y), t.originX, t.originY),\n dim = target._getTransformedDimensions(), scaled = false;\n\n this._setLocalMouse(localMouse, t);\n\n // Actually scale the object\n scaled = this._setObjectScale(localMouse, t, lockScalingX, lockScalingY, by, lockScalingFlip, dim);\n\n // Make sure the constraints apply\n target.setPositionByOrigin(constraintPosition, t.originX, t.originY);\n return scaled;\n },\n\n /**\n * @private\n * @return {Boolean} true if the scaling occurred\n */\n _setObjectScale: function(localMouse, transform, lockScalingX, lockScalingY, by, lockScalingFlip, _dim) {\n var target = transform.target, forbidScalingX = false, forbidScalingY = false, scaled = false,\n scaleX = localMouse.x * target.scaleX / _dim.x,\n scaleY = localMouse.y * target.scaleY / _dim.y,\n changeX = target.scaleX !== scaleX,\n changeY = target.scaleY !== scaleY;\n\n if (lockScalingFlip && scaleX <= 0 && scaleX < target.scaleX) {\n forbidScalingX = true;\n localMouse.x = 0;\n }\n\n if (lockScalingFlip && scaleY <= 0 && scaleY < target.scaleY) {\n forbidScalingY = true;\n localMouse.y = 0;\n }\n\n if (by === 'equally' && !lockScalingX && !lockScalingY) {\n scaled = this._scaleObjectEqually(localMouse, target, transform, _dim);\n }\n else if (!by) {\n forbidScalingX || lockScalingX || (target.set('scaleX', scaleX) && (scaled = scaled || changeX));\n forbidScalingY || lockScalingY || (target.set('scaleY', scaleY) && (scaled = scaled || changeY));\n }\n else if (by === 'x' && !target.get('lockUniScaling')) {\n forbidScalingX || lockScalingX || (target.set('scaleX', scaleX) && (scaled = changeX));\n }\n else if (by === 'y' && !target.get('lockUniScaling')) {\n forbidScalingY || lockScalingY || (target.set('scaleY', scaleY) && (scaled = changeY));\n }\n transform.newScaleX = scaleX;\n transform.newScaleY = scaleY;\n forbidScalingX || forbidScalingY || this._flipObject(transform, by);\n return scaled;\n },\n\n /**\n * @private\n * @return {Boolean} true if the scaling occurred\n */\n _scaleObjectEqually: function(localMouse, target, transform, _dim) {\n\n var dist = localMouse.y + localMouse.x,\n lastDist = _dim.y * transform.original.scaleY / target.scaleY +\n _dim.x * transform.original.scaleX / target.scaleX,\n scaled, signX = localMouse.x < 0 ? -1 : 1,\n signY = localMouse.y < 0 ? -1 : 1, newScaleX, newScaleY;\n\n // We use transform.scaleX/Y instead of target.scaleX/Y\n // because the object may have a min scale and we'll loose the proportions\n newScaleX = signX * Math.abs(transform.original.scaleX * dist / lastDist);\n newScaleY = signY * Math.abs(transform.original.scaleY * dist / lastDist);\n scaled = newScaleX !== target.scaleX || newScaleY !== target.scaleY;\n target.set('scaleX', newScaleX);\n target.set('scaleY', newScaleY);\n return scaled;\n },\n\n /**\n * @private\n */\n _flipObject: function(transform, by) {\n if (transform.newScaleX < 0 && by !== 'y') {\n if (transform.originX === 'left') {\n transform.originX = 'right';\n }\n else if (transform.originX === 'right') {\n transform.originX = 'left';\n }\n }\n\n if (transform.newScaleY < 0 && by !== 'x') {\n if (transform.originY === 'top') {\n transform.originY = 'bottom';\n }\n else if (transform.originY === 'bottom') {\n transform.originY = 'top';\n }\n }\n },\n\n /**\n * @private\n */\n _setLocalMouse: function(localMouse, t) {\n var target = t.target, zoom = this.getZoom(),\n padding = target.padding / zoom;\n\n if (t.originX === 'right') {\n localMouse.x *= -1;\n }\n else if (t.originX === 'center') {\n localMouse.x *= t.mouseXSign * 2;\n if (localMouse.x < 0) {\n t.mouseXSign = -t.mouseXSign;\n }\n }\n\n if (t.originY === 'bottom') {\n localMouse.y *= -1;\n }\n else if (t.originY === 'center') {\n localMouse.y *= t.mouseYSign * 2;\n if (localMouse.y < 0) {\n t.mouseYSign = -t.mouseYSign;\n }\n }\n\n // adjust the mouse coordinates when dealing with padding\n if (abs(localMouse.x) > padding) {\n if (localMouse.x < 0) {\n localMouse.x += padding;\n }\n else {\n localMouse.x -= padding;\n }\n }\n else { // mouse is within the padding, set to 0\n localMouse.x = 0;\n }\n\n if (abs(localMouse.y) > padding) {\n if (localMouse.y < 0) {\n localMouse.y += padding;\n }\n else {\n localMouse.y -= padding;\n }\n }\n else {\n localMouse.y = 0;\n }\n },\n\n /**\n * Rotates object by invoking its rotate method\n * @private\n * @param {Number} x pointer's x coordinate\n * @param {Number} y pointer's y coordinate\n * @return {Boolean} true if the rotation occurred\n */\n _rotateObject: function (x, y) {\n\n var t = this._currentTransform,\n target = t.target, constraintPosition,\n constraintPosition = target.translateToOriginPoint(target.getCenterPoint(), t.originX, t.originY);\n\n if (target.lockRotation) {\n return false;\n }\n\n var lastAngle = atan2(t.ey - constraintPosition.y, t.ex - constraintPosition.x),\n curAngle = atan2(y - constraintPosition.y, x - constraintPosition.x),\n angle = radiansToDegrees(curAngle - lastAngle + t.theta),\n hasRotated = true;\n\n if (target.snapAngle > 0) {\n var snapAngle = target.snapAngle,\n snapThreshold = target.snapThreshold || snapAngle,\n rightAngleLocked = Math.ceil(angle / snapAngle) * snapAngle,\n leftAngleLocked = Math.floor(angle / snapAngle) * snapAngle;\n\n if (Math.abs(angle - leftAngleLocked) < snapThreshold) {\n angle = leftAngleLocked;\n }\n else if (Math.abs(angle - rightAngleLocked) < snapThreshold) {\n angle = rightAngleLocked;\n }\n }\n\n // normalize angle to positive value\n if (angle < 0) {\n angle = 360 + angle;\n }\n angle %= 360;\n\n if (target.angle === angle) {\n hasRotated = false;\n }\n else {\n // rotation only happen here\n target.angle = angle;\n // Make sure the constraints apply\n target.setPositionByOrigin(constraintPosition, t.originX, t.originY);\n }\n\n return hasRotated;\n },\n\n /**\n * Set the cursor type of the canvas element\n * @param {String} value Cursor type of the canvas element.\n * @see http://www.w3.org/TR/css3-ui/#cursor\n */\n setCursor: function (value) {\n this.upperCanvasEl.style.cursor = value;\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx to draw the selection on\n */\n _drawSelection: function (ctx) {\n var groupSelector = this._groupSelector,\n left = groupSelector.left,\n top = groupSelector.top,\n aleft = abs(left),\n atop = abs(top);\n\n if (this.selectionColor) {\n ctx.fillStyle = this.selectionColor;\n\n ctx.fillRect(\n groupSelector.ex - ((left > 0) ? 0 : -left),\n groupSelector.ey - ((top > 0) ? 0 : -top),\n aleft,\n atop\n );\n }\n\n if (!this.selectionLineWidth || !this.selectionBorderColor) {\n return;\n }\n ctx.lineWidth = this.selectionLineWidth;\n ctx.strokeStyle = this.selectionBorderColor;\n\n // selection border\n if (this.selectionDashArray.length > 1 && !supportLineDash) {\n\n var px = groupSelector.ex + STROKE_OFFSET - ((left > 0) ? 0 : aleft),\n py = groupSelector.ey + STROKE_OFFSET - ((top > 0) ? 0 : atop);\n\n ctx.beginPath();\n\n fabric.util.drawDashedLine(ctx, px, py, px + aleft, py, this.selectionDashArray);\n fabric.util.drawDashedLine(ctx, px, py + atop - 1, px + aleft, py + atop - 1, this.selectionDashArray);\n fabric.util.drawDashedLine(ctx, px, py, px, py + atop, this.selectionDashArray);\n fabric.util.drawDashedLine(ctx, px + aleft - 1, py, px + aleft - 1, py + atop, this.selectionDashArray);\n\n ctx.closePath();\n ctx.stroke();\n }\n else {\n fabric.Object.prototype._setLineDash.call(this, ctx, this.selectionDashArray);\n ctx.strokeRect(\n groupSelector.ex + STROKE_OFFSET - ((left > 0) ? 0 : aleft),\n groupSelector.ey + STROKE_OFFSET - ((top > 0) ? 0 : atop),\n aleft,\n atop\n );\n }\n },\n\n /**\n * Method that determines what object we are clicking on\n * the skipGroup parameter is for internal use, is needed for shift+click action\n * 11/09/2018 TODO: would be cool if findTarget could discern between being a full target\n * or the outside part of the corner.\n * @param {Event} e mouse event\n * @param {Boolean} skipGroup when true, activeGroup is skipped and only objects are traversed through\n * @return {fabric.Object} the target found\n */\n findTarget: function (e, skipGroup) {\n if (this.skipTargetFind) {\n return;\n }\n\n var ignoreZoom = true,\n pointer = this.getPointer(e, ignoreZoom),\n activeObject = this._activeObject,\n aObjects = this.getActiveObjects(),\n activeTarget, activeTargetSubs;\n\n // first check current group (if one exists)\n // active group does not check sub targets like normal groups.\n // if active group just exits.\n this.targets = [];\n\n if (aObjects.length > 1 && !skipGroup && activeObject === this._searchPossibleTargets([activeObject], pointer)) {\n return activeObject;\n }\n // if we hit the corner of an activeObject, let's return that.\n if (aObjects.length === 1 && activeObject._findTargetCorner(pointer)) {\n return activeObject;\n }\n if (aObjects.length === 1 &&\n activeObject === this._searchPossibleTargets([activeObject], pointer)) {\n if (!this.preserveObjectStacking) {\n return activeObject;\n }\n else {\n activeTarget = activeObject;\n activeTargetSubs = this.targets;\n this.targets = [];\n }\n }\n var target = this._searchPossibleTargets(this._objects, pointer);\n if (e[this.altSelectionKey] && target && activeTarget && target !== activeTarget) {\n target = activeTarget;\n this.targets = activeTargetSubs;\n }\n return target;\n },\n\n /**\n * Checks point is inside the object.\n * @param {Object} [pointer] x,y object of point coordinates we want to check.\n * @param {fabric.Object} obj Object to test against\n * @param {Object} [globalPointer] x,y object of point coordinates relative to canvas used to search per pixel target.\n * @return {Boolean} true if point is contained within an area of given object\n * @private\n */\n _checkTarget: function(pointer, obj, globalPointer) {\n if (obj &&\n obj.visible &&\n obj.evented &&\n this.containsPoint(null, obj, pointer)){\n if ((this.perPixelTargetFind || obj.perPixelTargetFind) && !obj.isEditing) {\n var isTransparent = this.isTargetTransparent(obj, globalPointer.x, globalPointer.y);\n if (!isTransparent) {\n return true;\n }\n }\n else {\n return true;\n }\n }\n },\n\n /**\n * Function used to search inside objects an object that contains pointer in bounding box or that contains pointerOnCanvas when painted\n * @param {Array} [objects] objects array to look into\n * @param {Object} [pointer] x,y object of point coordinates we want to check.\n * @return {fabric.Object} object that contains pointer\n * @private\n */\n _searchPossibleTargets: function(objects, pointer) {\n // Cache all targets where their bounding box contains point.\n var target, i = objects.length, subTarget;\n // Do not check for currently grouped objects, since we check the parent group itself.\n // until we call this function specifically to search inside the activeGroup\n while (i--) {\n var objToCheck = objects[i];\n var pointerToUse = objToCheck.group && objToCheck.group.type !== 'activeSelection' ?\n this._normalizePointer(objToCheck.group, pointer) : pointer;\n if (this._checkTarget(pointerToUse, objToCheck, pointer)) {\n target = objects[i];\n if (target.subTargetCheck && target instanceof fabric.Group) {\n subTarget = this._searchPossibleTargets(target._objects, pointer);\n subTarget && this.targets.push(subTarget);\n }\n break;\n }\n }\n return target;\n },\n\n /**\n * Returns pointer coordinates without the effect of the viewport\n * @param {Object} pointer with \"x\" and \"y\" number values\n * @return {Object} object with \"x\" and \"y\" number values\n */\n restorePointerVpt: function(pointer) {\n return fabric.util.transformPoint(\n pointer,\n fabric.util.invertTransform(this.viewportTransform)\n );\n },\n\n /**\n * Returns pointer coordinates relative to canvas.\n * Can return coordinates with or without viewportTransform.\n * ignoreZoom false gives back coordinates that represent\n * the point clicked on canvas element.\n * ignoreZoom true gives back coordinates after being processed\n * by the viewportTransform ( sort of coordinates of what is displayed\n * on the canvas where you are clicking.\n * ignoreZoom true = HTMLElement coordinates relative to top,left\n * ignoreZoom false, default = fabric space coordinates, the same used for shape position\n * To interact with your shapes top and left you want to use ignoreZoom true\n * most of the time, while ignoreZoom false will give you coordinates\n * compatible with the object.oCoords system.\n * of the time.\n * @param {Event} e\n * @param {Boolean} ignoreZoom\n * @return {Object} object with \"x\" and \"y\" number values\n */\n getPointer: function (e, ignoreZoom) {\n // return cached values if we are in the event processing chain\n if (this._absolutePointer && !ignoreZoom) {\n return this._absolutePointer;\n }\n if (this._pointer && ignoreZoom) {\n return this._pointer;\n }\n\n var pointer = getPointer(e),\n upperCanvasEl = this.upperCanvasEl,\n bounds = upperCanvasEl.getBoundingClientRect(),\n boundsWidth = bounds.width || 0,\n boundsHeight = bounds.height || 0,\n cssScale;\n\n if (!boundsWidth || !boundsHeight ) {\n if ('top' in bounds && 'bottom' in bounds) {\n boundsHeight = Math.abs( bounds.top - bounds.bottom );\n }\n if ('right' in bounds && 'left' in bounds) {\n boundsWidth = Math.abs( bounds.right - bounds.left );\n }\n }\n\n this.calcOffset();\n pointer.x = pointer.x - this._offset.left;\n pointer.y = pointer.y - this._offset.top;\n if (!ignoreZoom) {\n pointer = this.restorePointerVpt(pointer);\n }\n\n if (boundsWidth === 0 || boundsHeight === 0) {\n // If bounds are not available (i.e. not visible), do not apply scale.\n cssScale = { width: 1, height: 1 };\n }\n else {\n cssScale = {\n width: upperCanvasEl.width / boundsWidth,\n height: upperCanvasEl.height / boundsHeight\n };\n }\n\n return {\n x: pointer.x * cssScale.width,\n y: pointer.y * cssScale.height\n };\n },\n\n /**\n * @private\n * @throws {CANVAS_INIT_ERROR} If canvas can not be initialized\n */\n _createUpperCanvas: function () {\n var lowerCanvasClass = this.lowerCanvasEl.className.replace(/\\s*lower-canvas\\s*/, '');\n\n // there is no need to create a new upperCanvas element if we have already one.\n if (this.upperCanvasEl) {\n this.upperCanvasEl.className = '';\n }\n else {\n this.upperCanvasEl = this._createCanvasElement();\n }\n fabric.util.addClass(this.upperCanvasEl, 'upper-canvas ' + lowerCanvasClass);\n\n this.wrapperEl.appendChild(this.upperCanvasEl);\n\n this._copyCanvasStyle(this.lowerCanvasEl, this.upperCanvasEl);\n this._applyCanvasStyle(this.upperCanvasEl);\n this.contextTop = this.upperCanvasEl.getContext('2d');\n },\n\n /**\n * @private\n */\n _createCacheCanvas: function () {\n this.cacheCanvasEl = this._createCanvasElement();\n this.cacheCanvasEl.setAttribute('width', this.width);\n this.cacheCanvasEl.setAttribute('height', this.height);\n this.contextCache = this.cacheCanvasEl.getContext('2d');\n },\n\n /**\n * @private\n */\n _initWrapperElement: function () {\n this.wrapperEl = fabric.util.wrapElement(this.lowerCanvasEl, 'div', {\n 'class': this.containerClass\n });\n fabric.util.setStyle(this.wrapperEl, {\n width: this.width + 'px',\n height: this.height + 'px',\n position: 'relative'\n });\n fabric.util.makeElementUnselectable(this.wrapperEl);\n },\n\n /**\n * @private\n * @param {HTMLElement} element canvas element to apply styles on\n */\n _applyCanvasStyle: function (element) {\n var width = this.width || element.width,\n height = this.height || element.height;\n\n fabric.util.setStyle(element, {\n position: 'absolute',\n width: width + 'px',\n height: height + 'px',\n left: 0,\n top: 0,\n 'touch-action': this.allowTouchScrolling ? 'manipulation' : 'none'\n });\n element.width = width;\n element.height = height;\n fabric.util.makeElementUnselectable(element);\n },\n\n /**\n * Copy the entire inline style from one element (fromEl) to another (toEl)\n * @private\n * @param {Element} fromEl Element style is copied from\n * @param {Element} toEl Element copied style is applied to\n */\n _copyCanvasStyle: function (fromEl, toEl) {\n toEl.style.cssText = fromEl.style.cssText;\n },\n\n /**\n * Returns context of canvas where object selection is drawn\n * @return {CanvasRenderingContext2D}\n */\n getSelectionContext: function() {\n return this.contextTop;\n },\n\n /**\n * Returns <canvas> element on which object selection is drawn\n * @return {HTMLCanvasElement}\n */\n getSelectionElement: function () {\n return this.upperCanvasEl;\n },\n\n /**\n * Returns currently active object\n * @return {fabric.Object} active object\n */\n getActiveObject: function () {\n return this._activeObject;\n },\n\n /**\n * Returns an array with the current selected objects\n * @return {fabric.Object} active object\n */\n getActiveObjects: function () {\n var active = this._activeObject;\n if (active) {\n if (active.type === 'activeSelection' && active._objects) {\n return active._objects.slice(0);\n }\n else {\n return [active];\n }\n }\n return [];\n },\n\n /**\n * @private\n * @param {fabric.Object} obj Object that was removed\n */\n _onObjectRemoved: function(obj) {\n // removing active object should fire \"selection:cleared\" events\n if (obj === this._activeObject) {\n this.fire('before:selection:cleared', { target: obj });\n this._discardActiveObject();\n this.fire('selection:cleared', { target: obj });\n obj.fire('deselected');\n }\n if (this._hoveredTarget === obj) {\n this._hoveredTarget = null;\n }\n this.callSuper('_onObjectRemoved', obj);\n },\n\n /**\n * @private\n * Compares the old activeObject with the current one and fires correct events\n * @param {fabric.Object} obj old activeObject\n */\n _fireSelectionEvents: function(oldObjects, e) {\n var somethingChanged = false, objects = this.getActiveObjects(),\n added = [], removed = [], opt = { e: e };\n oldObjects.forEach(function(oldObject) {\n if (objects.indexOf(oldObject) === -1) {\n somethingChanged = true;\n oldObject.fire('deselected', opt);\n removed.push(oldObject);\n }\n });\n objects.forEach(function(object) {\n if (oldObjects.indexOf(object) === -1) {\n somethingChanged = true;\n object.fire('selected', opt);\n added.push(object);\n }\n });\n if (oldObjects.length > 0 && objects.length > 0) {\n opt.selected = added;\n opt.deselected = removed;\n // added for backward compatibility\n opt.updated = added[0] || removed[0];\n opt.target = this._activeObject;\n somethingChanged && this.fire('selection:updated', opt);\n }\n else if (objects.length > 0) {\n // deprecated event\n if (objects.length === 1) {\n opt.target = added[0];\n this.fire('object:selected', opt);\n }\n opt.selected = added;\n // added for backward compatibility\n opt.target = this._activeObject;\n this.fire('selection:created', opt);\n }\n else if (oldObjects.length > 0) {\n opt.deselected = removed;\n this.fire('selection:cleared', opt);\n }\n },\n\n /**\n * Sets given object as the only active object on canvas\n * @param {fabric.Object} object Object to set as an active one\n * @param {Event} [e] Event (passed along when firing \"object:selected\")\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n setActiveObject: function (object, e) {\n var currentActives = this.getActiveObjects();\n this._setActiveObject(object, e);\n this._fireSelectionEvents(currentActives, e);\n return this;\n },\n\n /**\n * @private\n * @param {Object} object to set as active\n * @param {Event} [e] Event (passed along when firing \"object:selected\")\n * @return {Boolean} true if the selection happened\n */\n _setActiveObject: function(object, e) {\n if (this._activeObject === object) {\n return false;\n }\n if (!this._discardActiveObject(e, object)) {\n return false;\n }\n if (object.onSelect({ e: e })) {\n return false;\n }\n this._activeObject = object;\n return true;\n },\n\n /**\n * @private\n */\n _discardActiveObject: function(e, object) {\n var obj = this._activeObject;\n if (obj) {\n // onDeselect return TRUE to cancel selection;\n if (obj.onDeselect({ e: e, object: object })) {\n return false;\n }\n this._activeObject = null;\n }\n return true;\n },\n\n /**\n * Discards currently active object and fire events. If the function is called by fabric\n * as a consequence of a mouse event, the event is passed as a parameter and\n * sent to the fire function for the custom events. When used as a method the\n * e param does not have any application.\n * @param {event} e\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n discardActiveObject: function (e) {\n var currentActives = this.getActiveObjects();\n if (currentActives.length) {\n this.fire('before:selection:cleared', { target: currentActives[0], e: e });\n }\n this._discardActiveObject(e);\n this._fireSelectionEvents(currentActives, e);\n return this;\n },\n\n /**\n * Clears a canvas element and removes all event listeners\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n dispose: function () {\n var wrapper = this.wrapperEl;\n this.removeListeners();\n wrapper.removeChild(this.upperCanvasEl);\n wrapper.removeChild(this.lowerCanvasEl);\n this.contextCache = null;\n this.contextTop = null;\n ['upperCanvasEl', 'cacheCanvasEl'].forEach((function(element) {\n fabric.util.cleanUpJsdomNode(this[element]);\n this[element] = undefined;\n }).bind(this));\n if (wrapper.parentNode) {\n wrapper.parentNode.replaceChild(this.lowerCanvasEl, this.wrapperEl);\n }\n delete this.wrapperEl;\n fabric.StaticCanvas.prototype.dispose.call(this);\n return this;\n },\n\n /**\n * Clears all contexts (background, main, top) of an instance\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n clear: function () {\n // this.discardActiveGroup();\n this.discardActiveObject();\n this.clearContext(this.contextTop);\n return this.callSuper('clear');\n },\n\n /**\n * Draws objects' controls (borders/controls)\n * @param {CanvasRenderingContext2D} ctx Context to render controls on\n */\n drawControls: function(ctx) {\n var activeObject = this._activeObject;\n\n if (activeObject) {\n activeObject._renderControls(ctx);\n }\n },\n\n /**\n * @private\n */\n _toObject: function(instance, methodName, propertiesToInclude) {\n //If the object is part of the current selection group, it should\n //be transformed appropriately\n //i.e. it should be serialised as it would appear if the selection group\n //were to be destroyed.\n var originalProperties = this._realizeGroupTransformOnObject(instance),\n object = this.callSuper('_toObject', instance, methodName, propertiesToInclude);\n //Undo the damage we did by changing all of its properties\n this._unwindGroupTransformOnObject(instance, originalProperties);\n return object;\n },\n\n /**\n * Realises an object's group transformation on it\n * @private\n * @param {fabric.Object} [instance] the object to transform (gets mutated)\n * @returns the original values of instance which were changed\n */\n _realizeGroupTransformOnObject: function(instance) {\n if (instance.group && instance.group.type === 'activeSelection' && this._activeObject === instance.group) {\n var layoutProps = ['angle', 'flipX', 'flipY', 'left', 'scaleX', 'scaleY', 'skewX', 'skewY', 'top'];\n //Copy all the positionally relevant properties across now\n var originalValues = {};\n layoutProps.forEach(function(prop) {\n originalValues[prop] = instance[prop];\n });\n this._activeObject.realizeTransform(instance);\n return originalValues;\n }\n else {\n return null;\n }\n },\n\n /**\n * Restores the changed properties of instance\n * @private\n * @param {fabric.Object} [instance] the object to un-transform (gets mutated)\n * @param {Object} [originalValues] the original values of instance, as returned by _realizeGroupTransformOnObject\n */\n _unwindGroupTransformOnObject: function(instance, originalValues) {\n if (originalValues) {\n instance.set(originalValues);\n }\n },\n\n /**\n * @private\n */\n _setSVGObject: function(markup, instance, reviver) {\n //If the object is in a selection group, simulate what would happen to that\n //object when the group is deselected\n var originalProperties = this._realizeGroupTransformOnObject(instance);\n this.callSuper('_setSVGObject', markup, instance, reviver);\n this._unwindGroupTransformOnObject(instance, originalProperties);\n },\n\n setViewportTransform: function (vpt) {\n if (this.renderOnAddRemove && this._activeObject && this._activeObject.isEditing) {\n this._activeObject.clearContextTop();\n }\n fabric.StaticCanvas.prototype.setViewportTransform.call(this, vpt);\n }\n });\n\n // copying static properties manually to work around Opera's bug,\n // where \"prototype\" property is enumerable and overrides existing prototype\n for (var prop in fabric.StaticCanvas) {\n if (prop !== 'prototype') {\n fabric.Canvas[prop] = fabric.StaticCanvas[prop];\n }\n }\n\n if (fabric.isTouchSupported) {\n /** @ignore */\n fabric.Canvas.prototype._setCursorFromEvent = function() { };\n }\n})();\n\n\n(function() {\n\n var cursorOffset = {\n mt: 0, // n\n tr: 1, // ne\n mr: 2, // e\n br: 3, // se\n mb: 4, // s\n bl: 5, // sw\n ml: 6, // w\n tl: 7 // nw\n },\n addListener = fabric.util.addListener,\n removeListener = fabric.util.removeListener,\n RIGHT_CLICK = 3, MIDDLE_CLICK = 2, LEFT_CLICK = 1,\n addEventOptions = { passive: false };\n\n function checkClick(e, value) {\n return 'which' in e ? e.which === value : e.button === value - 1;\n }\n\n fabric.util.object.extend(fabric.Canvas.prototype, /** @lends fabric.Canvas.prototype */ {\n\n /**\n * Map of cursor style values for each of the object controls\n * @private\n */\n cursorMap: [\n 'n-resize',\n 'ne-resize',\n 'e-resize',\n 'se-resize',\n 's-resize',\n 'sw-resize',\n 'w-resize',\n 'nw-resize'\n ],\n\n /**\n * Adds mouse listeners to canvas\n * @private\n */\n _initEventListeners: function () {\n // in case we initialized the class twice. This should not happen normally\n // but in some kind of applications where the canvas element may be changed\n // this is a workaround to having double listeners.\n this.removeListeners();\n this._bindEvents();\n this.addOrRemove(addListener, 'add');\n },\n\n addOrRemove: function(functor, eventjsFunctor) {\n functor(fabric.window, 'resize', this._onResize);\n functor(this.upperCanvasEl, 'mousedown', this._onMouseDown);\n functor(this.upperCanvasEl, 'mousemove', this._onMouseMove, addEventOptions);\n functor(this.upperCanvasEl, 'mouseout', this._onMouseOut);\n functor(this.upperCanvasEl, 'mouseenter', this._onMouseEnter);\n functor(this.upperCanvasEl, 'wheel', this._onMouseWheel);\n functor(this.upperCanvasEl, 'contextmenu', this._onContextMenu);\n functor(this.upperCanvasEl, 'dblclick', this._onDoubleClick);\n functor(this.upperCanvasEl, 'touchstart', this._onMouseDown, addEventOptions);\n functor(this.upperCanvasEl, 'touchmove', this._onMouseMove, addEventOptions);\n functor(this.upperCanvasEl, 'dragover', this._onDragOver);\n functor(this.upperCanvasEl, 'dragenter', this._onDragEnter);\n functor(this.upperCanvasEl, 'dragleave', this._onDragLeave);\n functor(this.upperCanvasEl, 'drop', this._onDrop);\n if (typeof eventjs !== 'undefined' && eventjsFunctor in eventjs) {\n eventjs[eventjsFunctor](this.upperCanvasEl, 'gesture', this._onGesture);\n eventjs[eventjsFunctor](this.upperCanvasEl, 'drag', this._onDrag);\n eventjs[eventjsFunctor](this.upperCanvasEl, 'orientation', this._onOrientationChange);\n eventjs[eventjsFunctor](this.upperCanvasEl, 'shake', this._onShake);\n eventjs[eventjsFunctor](this.upperCanvasEl, 'longpress', this._onLongPress);\n }\n },\n\n /**\n * Removes all event listeners\n */\n removeListeners: function() {\n this.addOrRemove(removeListener, 'remove');\n // if you dispose on a mouseDown, before mouse up, you need to clean document to...\n removeListener(fabric.document, 'mouseup', this._onMouseUp);\n removeListener(fabric.document, 'touchend', this._onMouseUp, addEventOptions);\n removeListener(fabric.document, 'mousemove', this._onMouseMove, addEventOptions);\n removeListener(fabric.document, 'touchmove', this._onMouseMove, addEventOptions);\n },\n\n /**\n * @private\n */\n _bindEvents: function() {\n if (this.eventsBound) {\n // for any reason we pass here twice we do not want to bind events twice.\n return;\n }\n this._onMouseDown = this._onMouseDown.bind(this);\n this._onMouseMove = this._onMouseMove.bind(this);\n this._onMouseUp = this._onMouseUp.bind(this);\n this._onResize = this._onResize.bind(this);\n this._onGesture = this._onGesture.bind(this);\n this._onDrag = this._onDrag.bind(this);\n this._onShake = this._onShake.bind(this);\n this._onLongPress = this._onLongPress.bind(this);\n this._onOrientationChange = this._onOrientationChange.bind(this);\n this._onMouseWheel = this._onMouseWheel.bind(this);\n this._onMouseOut = this._onMouseOut.bind(this);\n this._onMouseEnter = this._onMouseEnter.bind(this);\n this._onContextMenu = this._onContextMenu.bind(this);\n this._onDoubleClick = this._onDoubleClick.bind(this);\n this._onDragOver = this._onDragOver.bind(this);\n this._onDragEnter = this._simpleEventHandler.bind(this, 'dragenter');\n this._onDragLeave = this._simpleEventHandler.bind(this, 'dragleave');\n this._onDrop = this._simpleEventHandler.bind(this, 'drop');\n this.eventsBound = true;\n },\n\n /**\n * @private\n * @param {Event} [e] Event object fired on Event.js gesture\n * @param {Event} [self] Inner Event object\n */\n _onGesture: function(e, self) {\n this.__onTransformGesture && this.__onTransformGesture(e, self);\n },\n\n /**\n * @private\n * @param {Event} [e] Event object fired on Event.js drag\n * @param {Event} [self] Inner Event object\n */\n _onDrag: function(e, self) {\n this.__onDrag && this.__onDrag(e, self);\n },\n\n /**\n * @private\n * @param {Event} [e] Event object fired on wheel event\n */\n _onMouseWheel: function(e) {\n this.__onMouseWheel(e);\n },\n\n /**\n * @private\n * @param {Event} e Event object fired on mousedown\n */\n _onMouseOut: function(e) {\n var target = this._hoveredTarget;\n this.fire('mouse:out', { target: target, e: e });\n this._hoveredTarget = null;\n target && target.fire('mouseout', { e: e });\n if (this._iTextInstances) {\n this._iTextInstances.forEach(function(obj) {\n if (obj.isEditing) {\n obj.hiddenTextarea.focus();\n }\n });\n }\n },\n\n /**\n * @private\n * @param {Event} e Event object fired on mouseenter\n */\n _onMouseEnter: function(e) {\n if (!this.findTarget(e)) {\n this.fire('mouse:over', { target: null, e: e });\n this._hoveredTarget = null;\n }\n },\n\n /**\n * @private\n * @param {Event} [e] Event object fired on Event.js orientation change\n * @param {Event} [self] Inner Event object\n */\n _onOrientationChange: function(e, self) {\n this.__onOrientationChange && this.__onOrientationChange(e, self);\n },\n\n /**\n * @private\n * @param {Event} [e] Event object fired on Event.js shake\n * @param {Event} [self] Inner Event object\n */\n _onShake: function(e, self) {\n this.__onShake && this.__onShake(e, self);\n },\n\n /**\n * @private\n * @param {Event} [e] Event object fired on Event.js shake\n * @param {Event} [self] Inner Event object\n */\n _onLongPress: function(e, self) {\n this.__onLongPress && this.__onLongPress(e, self);\n },\n\n /**\n * prevent default to allow drop event to be fired\n * @private\n * @param {Event} [e] Event object fired on Event.js shake\n */\n _onDragOver: function(e) {\n e.preventDefault();\n var target = this._simpleEventHandler('dragover', e);\n this._fireEnterLeaveEvents(target, e);\n },\n\n /**\n * @private\n * @param {Event} e Event object fired on mousedown\n */\n _onContextMenu: function (e) {\n if (this.stopContextMenu) {\n e.stopPropagation();\n e.preventDefault();\n }\n return false;\n },\n\n /**\n * @private\n * @param {Event} e Event object fired on mousedown\n */\n _onDoubleClick: function (e) {\n this._cacheTransformEventData(e);\n this._handleEvent(e, 'dblclick');\n this._resetTransformEventData(e);\n },\n\n /**\n * @private\n * @param {Event} e Event object fired on mousedown\n */\n _onMouseDown: function (e) {\n this.__onMouseDown(e);\n this._resetTransformEventData();\n addListener(fabric.document, 'touchend', this._onMouseUp, addEventOptions);\n addListener(fabric.document, 'touchmove', this._onMouseMove, addEventOptions);\n\n removeListener(this.upperCanvasEl, 'mousemove', this._onMouseMove, addEventOptions);\n removeListener(this.upperCanvasEl, 'touchmove', this._onMouseMove, addEventOptions);\n\n if (e.type === 'touchstart') {\n // Unbind mousedown to prevent double triggers from touch devices\n removeListener(this.upperCanvasEl, 'mousedown', this._onMouseDown);\n }\n else {\n addListener(fabric.document, 'mouseup', this._onMouseUp);\n addListener(fabric.document, 'mousemove', this._onMouseMove, addEventOptions);\n }\n },\n\n /**\n * @private\n * @param {Event} e Event object fired on mouseup\n */\n _onMouseUp: function (e) {\n this.__onMouseUp(e);\n this._resetTransformEventData();\n removeListener(fabric.document, 'mouseup', this._onMouseUp);\n removeListener(fabric.document, 'touchend', this._onMouseUp, addEventOptions);\n\n removeListener(fabric.document, 'mousemove', this._onMouseMove, addEventOptions);\n removeListener(fabric.document, 'touchmove', this._onMouseMove, addEventOptions);\n\n addListener(this.upperCanvasEl, 'mousemove', this._onMouseMove, addEventOptions);\n addListener(this.upperCanvasEl, 'touchmove', this._onMouseMove, addEventOptions);\n\n if (e.type === 'touchend') {\n // Wait 400ms before rebinding mousedown to prevent double triggers\n // from touch devices\n var _this = this;\n setTimeout(function() {\n addListener(_this.upperCanvasEl, 'mousedown', _this._onMouseDown);\n }, 400);\n }\n },\n\n /**\n * @private\n * @param {Event} e Event object fired on mousemove\n */\n _onMouseMove: function (e) {\n !this.allowTouchScrolling && e.preventDefault && e.preventDefault();\n this.__onMouseMove(e);\n },\n\n /**\n * @private\n */\n _onResize: function () {\n this.calcOffset();\n },\n\n /**\n * Decides whether the canvas should be redrawn in mouseup and mousedown events.\n * @private\n * @param {Object} target\n */\n _shouldRender: function(target) {\n var activeObject = this._activeObject;\n\n if (\n !!activeObject !== !!target ||\n (activeObject && target && (activeObject !== target))\n ) {\n // this covers: switch of target, from target to no target, selection of target\n // multiSelection with key and mouse\n return true;\n }\n else if (activeObject && activeObject.isEditing) {\n // if we mouse up/down over a editing textbox a cursor change,\n // there is no need to re render\n return false;\n }\n return false;\n },\n\n /**\n * Method that defines the actions when mouse is released on canvas.\n * The method resets the currentTransform parameters, store the image corner\n * position in the image object and render the canvas on top.\n * @private\n * @param {Event} e Event object fired on mouseup\n */\n __onMouseUp: function (e) {\n var target, transform = this._currentTransform,\n groupSelector = this._groupSelector, shouldRender = false,\n isClick = (!groupSelector || (groupSelector.left === 0 && groupSelector.top === 0));\n this._cacheTransformEventData(e);\n target = this._target;\n this._handleEvent(e, 'up:before');\n // if right/middle click just fire events and return\n // target undefined will make the _handleEvent search the target\n if (checkClick(e, RIGHT_CLICK)) {\n if (this.fireRightClick) {\n this._handleEvent(e, 'up', RIGHT_CLICK, isClick);\n }\n return;\n }\n\n if (checkClick(e, MIDDLE_CLICK)) {\n if (this.fireMiddleClick) {\n this._handleEvent(e, 'up', MIDDLE_CLICK, isClick);\n }\n this._resetTransformEventData();\n return;\n }\n\n if (this.isDrawingMode && this._isCurrentlyDrawing) {\n this._onMouseUpInDrawingMode(e);\n return;\n }\n\n if (transform) {\n this._finalizeCurrentTransform(e);\n shouldRender = transform.actionPerformed;\n }\n\n if (!isClick) {\n this._maybeGroupObjects(e);\n shouldRender || (shouldRender = this._shouldRender(target));\n }\n if (target) {\n target.isMoving = false;\n }\n this._setCursorFromEvent(e, target);\n this._handleEvent(e, 'up', LEFT_CLICK, isClick);\n this._groupSelector = null;\n this._currentTransform = null;\n // reset the target information about which corner is selected\n target && (target.__corner = 0);\n if (shouldRender) {\n this.requestRenderAll();\n }\n else if (!isClick) {\n this.renderTop();\n }\n },\n\n /**\n * @private\n * Handle event firing for target and subtargets\n * @param {Event} e event from mouse\n * @param {String} eventType event to fire (up, down or move)\n * @return {Fabric.Object} target return the the target found, for internal reasons.\n */\n _simpleEventHandler: function(eventType, e) {\n var target = this.findTarget(e),\n targets = this.targets,\n options = {\n e: e,\n target: target,\n subTargets: targets,\n };\n this.fire(eventType, options);\n target && target.fire(eventType, options);\n if (!targets) {\n return target;\n }\n for (var i = 0; i < targets.length; i++) {\n targets[i].fire(eventType, options);\n }\n return target;\n },\n\n /**\n * @private\n * Handle event firing for target and subtargets\n * @param {Event} e event from mouse\n * @param {String} eventType event to fire (up, down or move)\n * @param {fabric.Object} targetObj receiving event\n * @param {Number} [button] button used in the event 1 = left, 2 = middle, 3 = right\n * @param {Boolean} isClick for left button only, indicates that the mouse up happened without move.\n */\n _handleEvent: function(e, eventType, button, isClick) {\n var target = this._target,\n targets = this.targets || [],\n options = {\n e: e,\n target: target,\n subTargets: targets,\n button: button || LEFT_CLICK,\n isClick: isClick || false,\n pointer: this._pointer,\n absolutePointer: this._absolutePointer,\n transform: this._currentTransform\n };\n this.fire('mouse:' + eventType, options);\n target && target.fire('mouse' + eventType, options);\n for (var i = 0; i < targets.length; i++) {\n targets[i].fire('mouse' + eventType, options);\n }\n },\n\n /**\n * @private\n * @param {Event} e send the mouse event that generate the finalize down, so it can be used in the event\n */\n _finalizeCurrentTransform: function(e) {\n\n var transform = this._currentTransform,\n target = transform.target,\n eventName,\n options = {\n e: e,\n target: target,\n transform: transform,\n };\n\n if (target._scaling) {\n target._scaling = false;\n }\n\n target.setCoords();\n\n if (transform.actionPerformed || (this.stateful && target.hasStateChanged())) {\n if (transform.actionPerformed) {\n eventName = this._addEventOptions(options, transform);\n this._fire(eventName, options);\n }\n this._fire('modified', options);\n }\n },\n\n /**\n * Mutate option object in order to add by property and give back the event name.\n * @private\n * @param {Object} options to mutate\n * @param {Object} transform to inspect action from\n */\n _addEventOptions: function(options, transform) {\n // we can probably add more details at low cost\n // scale change, rotation changes, translation changes\n var eventName, by;\n switch (transform.action) {\n case 'scaleX':\n eventName = 'scaled';\n by = 'x';\n break;\n case 'scaleY':\n eventName = 'scaled';\n by = 'y';\n break;\n case 'skewX':\n eventName = 'skewed';\n by = 'x';\n break;\n case 'skewY':\n eventName = 'skewed';\n by = 'y';\n break;\n case 'scale':\n eventName = 'scaled';\n by = 'equally';\n break;\n case 'rotate':\n eventName = 'rotated';\n break;\n case 'drag':\n eventName = 'moved';\n break;\n }\n options.by = by;\n return eventName;\n },\n\n /**\n * @private\n * @param {Event} e Event object fired on mousedown\n */\n _onMouseDownInDrawingMode: function(e) {\n this._isCurrentlyDrawing = true;\n if (this.getActiveObject()) {\n this.discardActiveObject(e).requestRenderAll();\n }\n if (this.clipTo) {\n fabric.util.clipContext(this, this.contextTop);\n }\n var pointer = this.getPointer(e);\n this.freeDrawingBrush.onMouseDown(pointer);\n this._handleEvent(e, 'down');\n },\n\n /**\n * @private\n * @param {Event} e Event object fired on mousemove\n */\n _onMouseMoveInDrawingMode: function(e) {\n if (this._isCurrentlyDrawing) {\n var pointer = this.getPointer(e);\n this.freeDrawingBrush.onMouseMove(pointer);\n }\n this.setCursor(this.freeDrawingCursor);\n this._handleEvent(e, 'move');\n },\n\n /**\n * @private\n * @param {Event} e Event object fired on mouseup\n */\n _onMouseUpInDrawingMode: function(e) {\n this._isCurrentlyDrawing = false;\n if (this.clipTo) {\n this.contextTop.restore();\n }\n this.freeDrawingBrush.onMouseUp();\n this._handleEvent(e, 'up');\n },\n\n /**\n * Method that defines the actions when mouse is clicked on canvas.\n * The method inits the currentTransform parameters and renders all the\n * canvas so the current image can be placed on the top canvas and the rest\n * in on the container one.\n * @private\n * @param {Event} e Event object fired on mousedown\n */\n __onMouseDown: function (e) {\n this._cacheTransformEventData(e);\n this._handleEvent(e, 'down:before');\n var target = this._target;\n // if right click just fire events\n if (checkClick(e, RIGHT_CLICK)) {\n if (this.fireRightClick) {\n this._handleEvent(e, 'down', RIGHT_CLICK);\n }\n return;\n }\n\n if (checkClick(e, MIDDLE_CLICK)) {\n if (this.fireMiddleClick) {\n this._handleEvent(e, 'down', MIDDLE_CLICK);\n }\n return;\n }\n\n if (this.isDrawingMode) {\n this._onMouseDownInDrawingMode(e);\n return;\n }\n\n // ignore if some object is being transformed at this moment\n if (this._currentTransform) {\n return;\n }\n\n var pointer = this._pointer;\n // save pointer for check in __onMouseUp event\n this._previousPointer = pointer;\n var shouldRender = this._shouldRender(target),\n shouldGroup = this._shouldGroup(e, target);\n if (this._shouldClearSelection(e, target)) {\n this.discardActiveObject(e);\n }\n else if (shouldGroup) {\n this._handleGrouping(e, target);\n target = this._activeObject;\n }\n\n if (this.selection && (!target ||\n (!target.selectable && !target.isEditing && target !== this._activeObject))) {\n this._groupSelector = {\n ex: pointer.x,\n ey: pointer.y,\n top: 0,\n left: 0\n };\n }\n\n if (target) {\n var alreadySelected = target === this._activeObject;\n if (target.selectable) {\n this.setActiveObject(target, e);\n }\n if (target === this._activeObject && (target.__corner || !shouldGroup)) {\n this._setupCurrentTransform(e, target, alreadySelected);\n }\n }\n this._handleEvent(e, 'down');\n // we must renderAll so that we update the visuals\n (shouldRender || shouldGroup) && this.requestRenderAll();\n },\n\n /**\n * reset cache form common information needed during event processing\n * @private\n */\n _resetTransformEventData: function() {\n this._target = null;\n this._pointer = null;\n this._absolutePointer = null;\n },\n\n /**\n * Cache common information needed during event processing\n * @private\n * @param {Event} e Event object fired on event\n */\n _cacheTransformEventData: function(e) {\n // reset in order to avoid stale caching\n this._resetTransformEventData();\n this._pointer = this.getPointer(e, true);\n this._absolutePointer = this.restorePointerVpt(this._pointer);\n this._target = this._currentTransform ? this._currentTransform.target : this.findTarget(e) || null;\n },\n\n /**\n * @private\n */\n _beforeTransform: function(e) {\n var t = this._currentTransform;\n this.stateful && t.target.saveState();\n this.fire('before:transform', {\n e: e,\n transform: t,\n });\n // determine if it's a drag or rotate case\n if (t.corner) {\n this.onBeforeScaleRotate(t.target);\n }\n },\n\n /**\n * Method that defines the actions when mouse is hovering the canvas.\n * The currentTransform parameter will definde whether the user is rotating/scaling/translating\n * an image or neither of them (only hovering). A group selection is also possible and would cancel\n * all any other type of action.\n * In case of an image transformation only the top canvas will be rendered.\n * @private\n * @param {Event} e Event object fired on mousemove\n */\n __onMouseMove: function (e) {\n this._handleEvent(e, 'move:before');\n this._cacheTransformEventData(e);\n var target, pointer;\n\n if (this.isDrawingMode) {\n this._onMouseMoveInDrawingMode(e);\n return;\n }\n if (typeof e.touches !== 'undefined' && e.touches.length > 1) {\n return;\n }\n\n var groupSelector = this._groupSelector;\n\n // We initially clicked in an empty area, so we draw a box for multiple selection\n if (groupSelector) {\n pointer = this._pointer;\n\n groupSelector.left = pointer.x - groupSelector.ex;\n groupSelector.top = pointer.y - groupSelector.ey;\n\n this.renderTop();\n }\n else if (!this._currentTransform) {\n target = this.findTarget(e) || null;\n this._setCursorFromEvent(e, target);\n this._fireOverOutEvents(target, e);\n }\n else {\n this._transformObject(e);\n }\n this._handleEvent(e, 'move');\n this._resetTransformEventData();\n },\n\n /**\n * Manage the mouseout, mouseover events for the fabric object on the canvas\n * @param {Fabric.Object} target the target where the target from the mousemove event\n * @param {Event} e Event object fired on mousemove\n * @private\n */\n _fireOverOutEvents: function(target, e) {\n this.fireSynteticInOutEvents(target, e, {\n targetName: '_hoveredTarget',\n canvasEvtOut: 'mouse:out',\n evtOut: 'mouseout',\n canvasEvtIn: 'mouse:over',\n evtIn: 'mouseover',\n });\n },\n\n /**\n * Manage the dragEnter, dragLeave events for the fabric objects on the canvas\n * @param {Fabric.Object} target the target where the target from the onDrag event\n * @param {Event} e Event object fired on ondrag\n * @private\n */\n _fireEnterLeaveEvents: function(target, e) {\n this.fireSynteticInOutEvents(target, e, {\n targetName: '_draggedoverTarget',\n evtOut: 'dragleave',\n evtIn: 'dragenter',\n });\n },\n\n /**\n * Manage the syntetic in/out events for the fabric objects on the canvas\n * @param {Fabric.Object} target the target where the target from the supported events\n * @param {Event} e Event object fired\n * @param {Object} config configuration for the function to work\n * @param {String} config.targetName property on the canvas where the old target is stored\n * @param {String} [config.canvasEvtOut] name of the event to fire at canvas level for out\n * @param {String} config.evtOut name of the event to fire for out\n * @param {String} [config.canvasEvtIn] name of the event to fire at canvas level for in\n * @param {String} config.evtIn name of the event to fire for in\n * @private\n */\n fireSynteticInOutEvents: function(target, e, config) {\n var inOpt, outOpt, oldTarget = this[config.targetName], outFires, inFires,\n targetChanged = oldTarget !== target, canvasEvtIn = config.canvasEvtIn, canvasEvtOut = config.canvasEvtOut;\n if (targetChanged) {\n inOpt = { e: e, target: target, previousTarget: oldTarget };\n outOpt = { e: e, target: oldTarget, nextTarget: target };\n this[config.targetName] = target;\n }\n inFires = target && targetChanged;\n outFires = oldTarget && targetChanged;\n if (outFires) {\n canvasEvtOut && this.fire(canvasEvtOut, outOpt);\n oldTarget.fire(config.evtOut, outOpt);\n }\n if (inFires) {\n canvasEvtIn && this.fire(canvasEvtIn, inOpt);\n target.fire(config.evtIn, inOpt);\n }\n },\n\n /**\n * Method that defines actions when an Event Mouse Wheel\n * @param {Event} e Event object fired on mouseup\n */\n __onMouseWheel: function(e) {\n this._cacheTransformEventData(e);\n this._handleEvent(e, 'wheel');\n this._resetTransformEventData();\n },\n\n /**\n * @private\n * @param {Event} e Event fired on mousemove\n */\n _transformObject: function(e) {\n var pointer = this.getPointer(e),\n transform = this._currentTransform;\n\n transform.reset = false;\n transform.target.isMoving = true;\n transform.shiftKey = e.shiftKey;\n transform.altKey = e[this.centeredKey];\n\n this._beforeScaleTransform(e, transform);\n this._performTransformAction(e, transform, pointer);\n\n transform.actionPerformed && this.requestRenderAll();\n },\n\n /**\n * @private\n */\n _performTransformAction: function(e, transform, pointer) {\n var x = pointer.x,\n y = pointer.y,\n action = transform.action,\n actionPerformed = false,\n options = {\n target: transform.target,\n e: e,\n transform: transform,\n pointer: pointer\n };\n\n if (action === 'rotate') {\n (actionPerformed = this._rotateObject(x, y)) && this._fire('rotating', options);\n }\n else if (action === 'scale') {\n (actionPerformed = this._onScale(e, transform, x, y)) && this._fire('scaling', options);\n }\n else if (action === 'scaleX') {\n (actionPerformed = this._scaleObject(x, y, 'x')) && this._fire('scaling', options);\n }\n else if (action === 'scaleY') {\n (actionPerformed = this._scaleObject(x, y, 'y')) && this._fire('scaling', options);\n }\n else if (action === 'skewX') {\n (actionPerformed = this._skewObject(x, y, 'x')) && this._fire('skewing', options);\n }\n else if (action === 'skewY') {\n (actionPerformed = this._skewObject(x, y, 'y')) && this._fire('skewing', options);\n }\n else {\n actionPerformed = this._translateObject(x, y);\n if (actionPerformed) {\n this._fire('moving', options);\n this.setCursor(options.target.moveCursor || this.moveCursor);\n }\n }\n transform.actionPerformed = transform.actionPerformed || actionPerformed;\n },\n\n /**\n * @private\n */\n _fire: function(eventName, options) {\n this.fire('object:' + eventName, options);\n options.target.fire(eventName, options);\n },\n\n /**\n * @private\n */\n _beforeScaleTransform: function(e, transform) {\n if (transform.action === 'scale' || transform.action === 'scaleX' || transform.action === 'scaleY') {\n var centerTransform = this._shouldCenterTransform(transform.target);\n\n // Switch from a normal resize to center-based\n if ((centerTransform && (transform.originX !== 'center' || transform.originY !== 'center')) ||\n // Switch from center-based resize to normal one\n (!centerTransform && transform.originX === 'center' && transform.originY === 'center')\n ) {\n this._resetCurrentTransform();\n transform.reset = true;\n }\n }\n },\n\n /**\n * @private\n * @param {Event} e Event object\n * @param {Object} transform current tranform\n * @param {Number} x mouse position x from origin\n * @param {Number} y mouse poistion y from origin\n * @return {Boolean} true if the scaling occurred\n */\n _onScale: function(e, transform, x, y) {\n if (this._isUniscalePossible(e, transform.target)) {\n transform.currentAction = 'scale';\n return this._scaleObject(x, y);\n }\n else {\n // Switch from a normal resize to proportional\n if (!transform.reset && transform.currentAction === 'scale') {\n this._resetCurrentTransform();\n }\n\n transform.currentAction = 'scaleEqually';\n return this._scaleObject(x, y, 'equally');\n }\n },\n\n /**\n * @private\n * @param {Event} e Event object\n * @param {fabric.Object} target current target\n * @return {Boolean} true if unproportional scaling is possible\n */\n _isUniscalePossible: function(e, target) {\n return (e[this.uniScaleKey] || this.uniScaleTransform) && !target.get('lockUniScaling');\n },\n\n /**\n * Sets the cursor depending on where the canvas is being hovered.\n * Note: very buggy in Opera\n * @param {Event} e Event object\n * @param {Object} target Object that the mouse is hovering, if so.\n */\n _setCursorFromEvent: function (e, target) {\n if (!target) {\n this.setCursor(this.defaultCursor);\n return false;\n }\n\n var hoverCursor = target.hoverCursor || this.hoverCursor,\n activeSelection = this._activeObject && this._activeObject.type === 'activeSelection' ?\n this._activeObject : null,\n // only show proper corner when group selection is not active\n corner = (!activeSelection || !activeSelection.contains(target))\n && target._findTargetCorner(this.getPointer(e, true));\n\n if (!corner) {\n this.setCursor(hoverCursor);\n }\n else {\n this.setCursor(this.getCornerCursor(corner, target, e));\n }\n },\n\n /**\n * @private\n */\n getCornerCursor: function(corner, target, e) {\n if (this.actionIsDisabled(corner, target, e)) {\n return this.notAllowedCursor;\n }\n else if (corner in cursorOffset) {\n return this._getRotatedCornerCursor(corner, target, e);\n }\n else if (corner === 'mtr' && target.hasRotatingPoint) {\n return this.rotationCursor;\n }\n else {\n return this.defaultCursor;\n }\n },\n\n actionIsDisabled: function(corner, target, e) {\n if (corner === 'mt' || corner === 'mb') {\n return e[this.altActionKey] ? target.lockSkewingX : target.lockScalingY;\n }\n else if (corner === 'ml' || corner === 'mr') {\n return e[this.altActionKey] ? target.lockSkewingY : target.lockScalingX;\n }\n else if (corner === 'mtr') {\n return target.lockRotation;\n }\n else {\n return this._isUniscalePossible(e, target) ?\n target.lockScalingX && target.lockScalingY : target.lockScalingX || target.lockScalingY;\n }\n },\n\n /**\n * @private\n */\n _getRotatedCornerCursor: function(corner, target, e) {\n var n = Math.round((target.angle % 360) / 45);\n\n if (n < 0) {\n n += 8; // full circle ahead\n }\n n += cursorOffset[corner];\n if (e[this.altActionKey] && cursorOffset[corner] % 2 === 0) {\n //if we are holding shift and we are on a mx corner...\n n += 2;\n }\n // normalize n to be from 0 to 7\n n %= 8;\n\n return this.cursorMap[n];\n }\n });\n})();\n\n\n(function() {\n\n var min = Math.min,\n max = Math.max;\n\n fabric.util.object.extend(fabric.Canvas.prototype, /** @lends fabric.Canvas.prototype */ {\n\n /**\n * @private\n * @param {Event} e Event object\n * @param {fabric.Object} target\n * @return {Boolean}\n */\n _shouldGroup: function(e, target) {\n var activeObject = this._activeObject;\n return activeObject && this._isSelectionKeyPressed(e) && target && target.selectable && this.selection &&\n (activeObject !== target || activeObject.type === 'activeSelection') && !target.onSelect({ e: e });\n },\n\n /**\n * @private\n * @param {Event} e Event object\n * @param {fabric.Object} target\n */\n _handleGrouping: function (e, target) {\n var activeObject = this._activeObject;\n // avoid multi select when shift click on a corner\n if (activeObject.__corner) {\n return;\n }\n if (target === activeObject) {\n // if it's a group, find target again, using activeGroup objects\n target = this.findTarget(e, true);\n // if even object is not found or we are on activeObjectCorner, bail out\n if (!target || !target.selectable) {\n return;\n }\n }\n if (activeObject && activeObject.type === 'activeSelection') {\n this._updateActiveSelection(target, e);\n }\n else {\n this._createActiveSelection(target, e);\n }\n },\n\n /**\n * @private\n */\n _updateActiveSelection: function(target, e) {\n var activeSelection = this._activeObject,\n currentActiveObjects = activeSelection._objects.slice(0);\n if (activeSelection.contains(target)) {\n activeSelection.removeWithUpdate(target);\n this._hoveredTarget = target;\n if (activeSelection.size() === 1) {\n // activate last remaining object\n this._setActiveObject(activeSelection.item(0), e);\n }\n }\n else {\n activeSelection.addWithUpdate(target);\n this._hoveredTarget = activeSelection;\n }\n this._fireSelectionEvents(currentActiveObjects, e);\n },\n\n /**\n * @private\n */\n _createActiveSelection: function(target, e) {\n var currentActives = this.getActiveObjects(), group = this._createGroup(target);\n this._hoveredTarget = group;\n this._setActiveObject(group, e);\n this._fireSelectionEvents(currentActives, e);\n },\n\n /**\n * @private\n * @param {Object} target\n */\n _createGroup: function(target) {\n var objects = this._objects,\n isActiveLower = objects.indexOf(this._activeObject) < objects.indexOf(target),\n groupObjects = isActiveLower\n ? [this._activeObject, target]\n : [target, this._activeObject];\n this._activeObject.isEditing && this._activeObject.exitEditing();\n return new fabric.ActiveSelection(groupObjects, {\n canvas: this\n });\n },\n\n /**\n * @private\n * @param {Event} e mouse event\n */\n _groupSelectedObjects: function (e) {\n\n var group = this._collectObjects(e),\n aGroup;\n\n // do not create group for 1 element only\n if (group.length === 1) {\n this.setActiveObject(group[0], e);\n }\n else if (group.length > 1) {\n aGroup = new fabric.ActiveSelection(group.reverse(), {\n canvas: this\n });\n this.setActiveObject(aGroup, e);\n }\n },\n\n /**\n * @private\n */\n _collectObjects: function(e) {\n var group = [],\n currentObject,\n x1 = this._groupSelector.ex,\n y1 = this._groupSelector.ey,\n x2 = x1 + this._groupSelector.left,\n y2 = y1 + this._groupSelector.top,\n selectionX1Y1 = new fabric.Point(min(x1, x2), min(y1, y2)),\n selectionX2Y2 = new fabric.Point(max(x1, x2), max(y1, y2)),\n allowIntersect = !this.selectionFullyContained,\n isClick = x1 === x2 && y1 === y2;\n // we iterate reverse order to collect top first in case of click.\n for (var i = this._objects.length; i--; ) {\n currentObject = this._objects[i];\n\n if (!currentObject || !currentObject.selectable || !currentObject.visible || currentObject.onSelect({ e: e })) {\n continue;\n }\n\n if ((allowIntersect && currentObject.intersectsWithRect(selectionX1Y1, selectionX2Y2)) ||\n currentObject.isContainedWithinRect(selectionX1Y1, selectionX2Y2) ||\n (allowIntersect && currentObject.containsPoint(selectionX1Y1)) ||\n (allowIntersect && currentObject.containsPoint(selectionX2Y2))\n ) {\n group.push(currentObject);\n\n // only add one object if it's a click\n if (isClick) {\n break;\n }\n }\n }\n\n return group;\n },\n\n /**\n * @private\n */\n _maybeGroupObjects: function(e) {\n if (this.selection && this._groupSelector) {\n this._groupSelectedObjects(e);\n }\n this.setCursor(this.defaultCursor);\n // clear selection and current transformation\n this._groupSelector = null;\n }\n });\n\n})();\n\n\n(function () {\n fabric.util.object.extend(fabric.StaticCanvas.prototype, /** @lends fabric.StaticCanvas.prototype */ {\n\n /**\n * Exports canvas element to a dataurl image. Note that when multiplier is used, cropping is scaled appropriately\n * @param {Object} [options] Options object\n * @param {String} [options.format=png] The format of the output image. Either \"jpeg\" or \"png\"\n * @param {Number} [options.quality=1] Quality level (0..1). Only used for jpeg.\n * @param {Number} [options.multiplier=1] Multiplier to scale by, to have consistent\n * @param {Number} [options.left] Cropping left offset. Introduced in v1.2.14\n * @param {Number} [options.top] Cropping top offset. Introduced in v1.2.14\n * @param {Number} [options.width] Cropping width. Introduced in v1.2.14\n * @param {Number} [options.height] Cropping height. Introduced in v1.2.14\n * @param {Boolean} [options.enableRetinaScaling] Enable retina scaling for clone image. Introduce in 2.0.0\n * @return {String} Returns a data: URL containing a representation of the object in the format specified by options.format\n * @see {@link http://jsfiddle.net/fabricjs/NfZVb/|jsFiddle demo}\n * @example Generate jpeg dataURL with lower quality\n * var dataURL = canvas.toDataURL({\n * format: 'jpeg',\n * quality: 0.8\n * });\n * @example Generate cropped png dataURL (clipping of canvas)\n * var dataURL = canvas.toDataURL({\n * format: 'png',\n * left: 100,\n * top: 100,\n * width: 200,\n * height: 200\n * });\n * @example Generate double scaled png dataURL\n * var dataURL = canvas.toDataURL({\n * format: 'png',\n * multiplier: 2\n * });\n */\n toDataURL: function (options) {\n options || (options = { });\n\n var format = options.format || 'png',\n quality = options.quality || 1,\n multiplier = (options.multiplier || 1) * (options.enableRetinaScaling ? this.getRetinaScaling() : 1),\n canvasEl = this.toCanvasElement(multiplier, options);\n return fabric.util.toDataURL(canvasEl, format, quality);\n },\n\n /**\n * Create a new HTMLCanvas element painted with the current canvas content.\n * No need to resize the actual one or repaint it.\n * Will transfer object ownership to a new canvas, paint it, and set everything back.\n * This is an intermediary step used to get to a dataUrl but also it is usefull to\n * create quick image copies of a canvas without passing for the dataUrl string\n * @param {Number} [multiplier] a zoom factor.\n * @param {Object} [cropping] Cropping informations\n * @param {Number} [cropping.left] Cropping left offset.\n * @param {Number} [cropping.top] Cropping top offset.\n * @param {Number} [cropping.width] Cropping width.\n * @param {Number} [cropping.height] Cropping height.\n */\n toCanvasElement: function(multiplier, cropping) {\n multiplier = multiplier || 1;\n cropping = cropping || { };\n var scaledWidth = (cropping.width || this.width) * multiplier,\n scaledHeight = (cropping.height || this.height) * multiplier,\n zoom = this.getZoom(),\n originalWidth = this.width,\n originalHeight = this.height,\n newZoom = zoom * multiplier,\n vp = this.viewportTransform,\n translateX = (vp[4] - (cropping.left || 0)) * multiplier,\n translateY = (vp[5] - (cropping.top || 0)) * multiplier,\n originalInteractive = this.interactive,\n originalContext = this.contextContainer,\n newVp = [newZoom, 0, 0, newZoom, translateX, translateY],\n canvasEl = fabric.util.createCanvasElement();\n canvasEl.width = scaledWidth;\n canvasEl.height = scaledHeight;\n this.interactive = false;\n this.viewportTransform = newVp;\n this.width = scaledWidth;\n this.height = scaledHeight;\n this.calcViewportBoundaries();\n this.contextContainer = canvasEl.getContext('2d');\n // will be renderAllExport();\n this.renderAll();\n this.viewportTransform = vp;\n this.width = originalWidth;\n this.height = originalHeight;\n this.calcViewportBoundaries();\n this.contextContainer = originalContext;\n this.interactive = originalInteractive;\n return canvasEl;\n },\n });\n\n})();\n\n\nfabric.util.object.extend(fabric.StaticCanvas.prototype, /** @lends fabric.StaticCanvas.prototype */ {\n\n /**\n * Populates canvas with data from the specified dataless JSON.\n * JSON format must conform to the one of {@link fabric.Canvas#toDatalessJSON}\n * @deprecated since 1.2.2\n * @param {String|Object} json JSON string or object\n * @param {Function} callback Callback, invoked when json is parsed\n * and corresponding objects (e.g: {@link fabric.Image})\n * are initialized\n * @param {Function} [reviver] Method for further parsing of JSON elements, called after each fabric object created.\n * @return {fabric.Canvas} instance\n * @chainable\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-3#deserialization}\n */\n loadFromDatalessJSON: function (json, callback, reviver) {\n return this.loadFromJSON(json, callback, reviver);\n },\n\n /**\n * Populates canvas with data from the specified JSON.\n * JSON format must conform to the one of {@link fabric.Canvas#toJSON}\n * @param {String|Object} json JSON string or object\n * @param {Function} callback Callback, invoked when json is parsed\n * and corresponding objects (e.g: {@link fabric.Image})\n * are initialized\n * @param {Function} [reviver] Method for further parsing of JSON elements, called after each fabric object created.\n * @return {fabric.Canvas} instance\n * @chainable\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-3#deserialization}\n * @see {@link http://jsfiddle.net/fabricjs/fmgXt/|jsFiddle demo}\n * @example loadFromJSON\n * canvas.loadFromJSON(json, canvas.renderAll.bind(canvas));\n * @example loadFromJSON with reviver\n * canvas.loadFromJSON(json, canvas.renderAll.bind(canvas), function(o, object) {\n * // `o` = json object\n * // `object` = fabric.Object instance\n * // ... do some stuff ...\n * });\n */\n loadFromJSON: function (json, callback, reviver) {\n if (!json) {\n return;\n }\n\n // serialize if it wasn't already\n var serialized = (typeof json === 'string')\n ? JSON.parse(json)\n : fabric.util.object.clone(json);\n\n var _this = this,\n renderOnAddRemove = this.renderOnAddRemove;\n this.renderOnAddRemove = false;\n\n this._enlivenObjects(serialized.objects, function (enlivenedObjects) {\n _this.clear();\n _this._setBgOverlay(serialized, function () {\n enlivenedObjects.forEach(function(obj, index) {\n // we splice the array just in case some custom classes restored from JSON\n // will add more object to canvas at canvas init.\n _this.insertAt(obj, index);\n });\n _this.renderOnAddRemove = renderOnAddRemove;\n // remove parts i cannot set as options\n delete serialized.objects;\n delete serialized.backgroundImage;\n delete serialized.overlayImage;\n delete serialized.background;\n delete serialized.overlay;\n // this._initOptions does too many things to just\n // call it. Normally loading an Object from JSON\n // create the Object instance. Here the Canvas is\n // already an instance and we are just loading things over it\n _this._setOptions(serialized);\n _this.renderAll();\n callback && callback();\n });\n }, reviver);\n return this;\n },\n\n /**\n * @private\n * @param {Object} serialized Object with background and overlay information\n * @param {Function} callback Invoked after all background and overlay images/patterns loaded\n */\n _setBgOverlay: function(serialized, callback) {\n var loaded = {\n backgroundColor: false,\n overlayColor: false,\n backgroundImage: false,\n overlayImage: false\n };\n\n if (!serialized.backgroundImage && !serialized.overlayImage && !serialized.background && !serialized.overlay) {\n callback && callback();\n return;\n }\n\n var cbIfLoaded = function () {\n if (loaded.backgroundImage && loaded.overlayImage && loaded.backgroundColor && loaded.overlayColor) {\n callback && callback();\n }\n };\n\n this.__setBgOverlay('backgroundImage', serialized.backgroundImage, loaded, cbIfLoaded);\n this.__setBgOverlay('overlayImage', serialized.overlayImage, loaded, cbIfLoaded);\n this.__setBgOverlay('backgroundColor', serialized.background, loaded, cbIfLoaded);\n this.__setBgOverlay('overlayColor', serialized.overlay, loaded, cbIfLoaded);\n },\n\n /**\n * @private\n * @param {String} property Property to set (backgroundImage, overlayImage, backgroundColor, overlayColor)\n * @param {(Object|String)} value Value to set\n * @param {Object} loaded Set loaded property to true if property is set\n * @param {Object} callback Callback function to invoke after property is set\n */\n __setBgOverlay: function(property, value, loaded, callback) {\n var _this = this;\n\n if (!value) {\n loaded[property] = true;\n callback && callback();\n return;\n }\n\n if (property === 'backgroundImage' || property === 'overlayImage') {\n fabric.util.enlivenObjects([value], function(enlivedObject){\n _this[property] = enlivedObject[0];\n loaded[property] = true;\n callback && callback();\n });\n }\n else {\n this['set' + fabric.util.string.capitalize(property, true)](value, function() {\n loaded[property] = true;\n callback && callback();\n });\n }\n },\n\n /**\n * @private\n * @param {Array} objects\n * @param {Function} callback\n * @param {Function} [reviver]\n */\n _enlivenObjects: function (objects, callback, reviver) {\n if (!objects || objects.length === 0) {\n callback && callback([]);\n return;\n }\n\n fabric.util.enlivenObjects(objects, function(enlivenedObjects) {\n callback && callback(enlivenedObjects);\n }, null, reviver);\n },\n\n /**\n * @private\n * @param {String} format\n * @param {Function} callback\n */\n _toDataURL: function (format, callback) {\n this.clone(function (clone) {\n callback(clone.toDataURL(format));\n });\n },\n\n /**\n * @private\n * @param {String} format\n * @param {Number} multiplier\n * @param {Function} callback\n */\n _toDataURLWithMultiplier: function (format, multiplier, callback) {\n this.clone(function (clone) {\n callback(clone.toDataURLWithMultiplier(format, multiplier));\n });\n },\n\n /**\n * Clones canvas instance\n * @param {Object} [callback] Receives cloned instance as a first argument\n * @param {Array} [properties] Array of properties to include in the cloned canvas and children\n */\n clone: function (callback, properties) {\n var data = JSON.stringify(this.toJSON(properties));\n this.cloneWithoutData(function(clone) {\n clone.loadFromJSON(data, function() {\n callback && callback(clone);\n });\n });\n },\n\n /**\n * Clones canvas instance without cloning existing data.\n * This essentially copies canvas dimensions, clipping properties, etc.\n * but leaves data empty (so that you can populate it with your own)\n * @param {Object} [callback] Receives cloned instance as a first argument\n */\n cloneWithoutData: function(callback) {\n var el = fabric.util.createCanvasElement();\n\n el.width = this.width;\n el.height = this.height;\n\n var clone = new fabric.Canvas(el);\n clone.clipTo = this.clipTo;\n if (this.backgroundImage) {\n clone.setBackgroundImage(this.backgroundImage.src, function() {\n clone.renderAll();\n callback && callback(clone);\n });\n clone.backgroundImageOpacity = this.backgroundImageOpacity;\n clone.backgroundImageStretch = this.backgroundImageStretch;\n }\n else {\n callback && callback(clone);\n }\n }\n});\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n extend = fabric.util.object.extend,\n clone = fabric.util.object.clone,\n toFixed = fabric.util.toFixed,\n capitalize = fabric.util.string.capitalize,\n degreesToRadians = fabric.util.degreesToRadians,\n supportsLineDash = fabric.StaticCanvas.supports('setLineDash'),\n objectCaching = !fabric.isLikelyNode,\n ALIASING_LIMIT = 2;\n\n if (fabric.Object) {\n return;\n }\n\n /**\n * Root object class from which all 2d shape classes inherit from\n * @class fabric.Object\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-1#objects}\n * @see {@link fabric.Object#initialize} for constructor definition\n *\n * @fires added\n * @fires removed\n *\n * @fires selected\n * @fires deselected\n * @fires modified\n * @fires modified\n * @fires moved\n * @fires scaled\n * @fires rotated\n * @fires skewed\n *\n * @fires rotating\n * @fires scaling\n * @fires moving\n * @fires skewing\n *\n * @fires mousedown\n * @fires mouseup\n * @fires mouseover\n * @fires mouseout\n * @fires mousewheel\n * @fires mousedblclick\n *\n * @fires dragover\n * @fires dragenter\n * @fires dragleave\n * @fires drop\n */\n fabric.Object = fabric.util.createClass(fabric.CommonMethods, /** @lends fabric.Object.prototype */ {\n\n /**\n * Type of an object (rect, circle, path, etc.).\n * Note that this property is meant to be read-only and not meant to be modified.\n * If you modify, certain parts of Fabric (such as JSON loading) won't work correctly.\n * @type String\n * @default\n */\n type: 'object',\n\n /**\n * Horizontal origin of transformation of an object (one of \"left\", \"right\", \"center\")\n * See http://jsfiddle.net/1ow02gea/244/ on how originX/originY affect objects in groups\n * @type String\n * @default\n */\n originX: 'left',\n\n /**\n * Vertical origin of transformation of an object (one of \"top\", \"bottom\", \"center\")\n * See http://jsfiddle.net/1ow02gea/244/ on how originX/originY affect objects in groups\n * @type String\n * @default\n */\n originY: 'top',\n\n /**\n * Top position of an object. Note that by default it's relative to object top. You can change this by setting originY={top/center/bottom}\n * @type Number\n * @default\n */\n top: 0,\n\n /**\n * Left position of an object. Note that by default it's relative to object left. You can change this by setting originX={left/center/right}\n * @type Number\n * @default\n */\n left: 0,\n\n /**\n * Object width\n * @type Number\n * @default\n */\n width: 0,\n\n /**\n * Object height\n * @type Number\n * @default\n */\n height: 0,\n\n /**\n * Object scale factor (horizontal)\n * @type Number\n * @default\n */\n scaleX: 1,\n\n /**\n * Object scale factor (vertical)\n * @type Number\n * @default\n */\n scaleY: 1,\n\n /**\n * When true, an object is rendered as flipped horizontally\n * @type Boolean\n * @default\n */\n flipX: false,\n\n /**\n * When true, an object is rendered as flipped vertically\n * @type Boolean\n * @default\n */\n flipY: false,\n\n /**\n * Opacity of an object\n * @type Number\n * @default\n */\n opacity: 1,\n\n /**\n * Angle of rotation of an object (in degrees)\n * @type Number\n * @default\n */\n angle: 0,\n\n /**\n * Angle of skew on x axes of an object (in degrees)\n * @type Number\n * @default\n */\n skewX: 0,\n\n /**\n * Angle of skew on y axes of an object (in degrees)\n * @type Number\n * @default\n */\n skewY: 0,\n\n /**\n * Size of object's controlling corners (in pixels)\n * @type Number\n * @default\n */\n cornerSize: 13,\n\n /**\n * When true, object's controlling corners are rendered as transparent inside (i.e. stroke instead of fill)\n * @type Boolean\n * @default\n */\n transparentCorners: true,\n\n /**\n * Default cursor value used when hovering over this object on canvas\n * @type String\n * @default\n */\n hoverCursor: null,\n\n /**\n * Default cursor value used when moving this object on canvas\n * @type String\n * @default\n */\n moveCursor: null,\n\n /**\n * Padding between object and its controlling borders (in pixels)\n * @type Number\n * @default\n */\n padding: 0,\n\n /**\n * Color of controlling borders of an object (when it's active)\n * @type String\n * @default\n */\n borderColor: 'rgba(102,153,255,0.75)',\n\n /**\n * Array specifying dash pattern of an object's borders (hasBorder must be true)\n * @since 1.6.2\n * @type Array\n */\n borderDashArray: null,\n\n /**\n * Color of controlling corners of an object (when it's active)\n * @type String\n * @default\n */\n cornerColor: 'rgba(102,153,255,0.5)',\n\n /**\n * Color of controlling corners of an object (when it's active and transparentCorners false)\n * @since 1.6.2\n * @type String\n * @default\n */\n cornerStrokeColor: null,\n\n /**\n * Specify style of control, 'rect' or 'circle'\n * @since 1.6.2\n * @type String\n */\n cornerStyle: 'rect',\n\n /**\n * Array specifying dash pattern of an object's control (hasBorder must be true)\n * @since 1.6.2\n * @type Array\n */\n cornerDashArray: null,\n\n /**\n * When true, this object will use center point as the origin of transformation\n * when being scaled via the controls.\n * Backwards incompatibility note: This property replaces \"centerTransform\" (Boolean).\n * @since 1.3.4\n * @type Boolean\n * @default\n */\n centeredScaling: false,\n\n /**\n * When true, this object will use center point as the origin of transformation\n * when being rotated via the controls.\n * Backwards incompatibility note: This property replaces \"centerTransform\" (Boolean).\n * @since 1.3.4\n * @type Boolean\n * @default\n */\n centeredRotation: true,\n\n /**\n * Color of object's fill\n * takes css colors https://www.w3.org/TR/css-color-3/\n * @type String\n * @default\n */\n fill: 'rgb(0,0,0)',\n\n /**\n * Fill rule used to fill an object\n * accepted values are nonzero, evenodd\n * Backwards incompatibility note: This property was used for setting globalCompositeOperation until v1.4.12 (use `fabric.Object#globalCompositeOperation` instead)\n * @type String\n * @default\n */\n fillRule: 'nonzero',\n\n /**\n * Composite rule used for canvas globalCompositeOperation\n * @type String\n * @default\n */\n globalCompositeOperation: 'source-over',\n\n /**\n * Background color of an object.\n * takes css colors https://www.w3.org/TR/css-color-3/\n * @type String\n * @default\n */\n backgroundColor: '',\n\n /**\n * Selection Background color of an object. colored layer behind the object when it is active.\n * does not mix good with globalCompositeOperation methods.\n * @type String\n * @default\n */\n selectionBackgroundColor: '',\n\n /**\n * When defined, an object is rendered via stroke and this property specifies its color\n * takes css colors https://www.w3.org/TR/css-color-3/\n * @type String\n * @default\n */\n stroke: null,\n\n /**\n * Width of a stroke used to render this object\n * @type Number\n * @default\n */\n strokeWidth: 1,\n\n /**\n * Array specifying dash pattern of an object's stroke (stroke must be defined)\n * @type Array\n */\n strokeDashArray: null,\n\n /**\n * Line offset of an object's stroke\n * @type Number\n * @default\n */\n strokeDashOffset: 0,\n\n /**\n * Line endings style of an object's stroke (one of \"butt\", \"round\", \"square\")\n * @type String\n * @default\n */\n strokeLineCap: 'butt',\n\n /**\n * Corner style of an object's stroke (one of \"bevil\", \"round\", \"miter\")\n * @type String\n * @default\n */\n strokeLineJoin: 'miter',\n\n /**\n * Maximum miter length (used for strokeLineJoin = \"miter\") of an object's stroke\n * @type Number\n * @default\n */\n strokeMiterLimit: 4,\n\n /**\n * Shadow object representing shadow of this shape\n * @type fabric.Shadow\n * @default\n */\n shadow: null,\n\n /**\n * Opacity of object's controlling borders when object is active and moving\n * @type Number\n * @default\n */\n borderOpacityWhenMoving: 0.4,\n\n /**\n * Scale factor of object's controlling borders\n * @type Number\n * @default\n */\n borderScaleFactor: 1,\n\n /**\n * Transform matrix (similar to SVG's transform matrix)\n * @type Array\n */\n transformMatrix: null,\n\n /**\n * Minimum allowed scale value of an object\n * @type Number\n * @default\n */\n minScaleLimit: 0,\n\n /**\n * When set to `false`, an object can not be selected for modification (using either point-click-based or group-based selection).\n * But events still fire on it.\n * @type Boolean\n * @default\n */\n selectable: true,\n\n /**\n * When set to `false`, an object can not be a target of events. All events propagate through it. Introduced in v1.3.4\n * @type Boolean\n * @default\n */\n evented: true,\n\n /**\n * When set to `false`, an object is not rendered on canvas\n * @type Boolean\n * @default\n */\n visible: true,\n\n /**\n * When set to `false`, object's controls are not displayed and can not be used to manipulate object\n * @type Boolean\n * @default\n */\n hasControls: true,\n\n /**\n * When set to `false`, object's controlling borders are not rendered\n * @type Boolean\n * @default\n */\n hasBorders: true,\n\n /**\n * When set to `false`, object's controlling rotating point will not be visible or selectable\n * @type Boolean\n * @default\n */\n hasRotatingPoint: true,\n\n /**\n * Offset for object's controlling rotating point (when enabled via `hasRotatingPoint`)\n * @type Number\n * @default\n */\n rotatingPointOffset: 40,\n\n /**\n * When set to `true`, objects are \"found\" on canvas on per-pixel basis rather than according to bounding box\n * @type Boolean\n * @default\n */\n perPixelTargetFind: false,\n\n /**\n * When `false`, default object's values are not included in its serialization\n * @type Boolean\n * @default\n */\n includeDefaultValues: true,\n\n /**\n * Function that determines clipping of an object (context is passed as a first argument).\n * If you are using code minification, ctx argument can be minified/manglied you should use\n * as a workaround `var ctx = arguments[0];` in the function;\n * Note that context origin is at the object's center point (not left/top corner)\n * @deprecated since 2.0.0\n * @type Function\n */\n clipTo: null,\n\n /**\n * When `true`, object horizontal movement is locked\n * @type Boolean\n * @default\n */\n lockMovementX: false,\n\n /**\n * When `true`, object vertical movement is locked\n * @type Boolean\n * @default\n */\n lockMovementY: false,\n\n /**\n * When `true`, object rotation is locked\n * @type Boolean\n * @default\n */\n lockRotation: false,\n\n /**\n * When `true`, object horizontal scaling is locked\n * @type Boolean\n * @default\n */\n lockScalingX: false,\n\n /**\n * When `true`, object vertical scaling is locked\n * @type Boolean\n * @default\n */\n lockScalingY: false,\n\n /**\n * When `true`, object non-uniform scaling is locked\n * @type Boolean\n * @default\n */\n lockUniScaling: false,\n\n /**\n * When `true`, object horizontal skewing is locked\n * @type Boolean\n * @default\n */\n lockSkewingX: false,\n\n /**\n * When `true`, object vertical skewing is locked\n * @type Boolean\n * @default\n */\n lockSkewingY: false,\n\n /**\n * When `true`, object cannot be flipped by scaling into negative values\n * @type Boolean\n * @default\n */\n lockScalingFlip: false,\n\n /**\n * When `true`, object is not exported in OBJECT/JSON\n * since 1.6.3\n * @type Boolean\n * @default\n */\n excludeFromExport: false,\n\n /**\n * When `true`, object is cached on an additional canvas.\n * default to true\n * since 1.7.0\n * @type Boolean\n * @default true\n */\n objectCaching: objectCaching,\n\n /**\n * When `true`, object properties are checked for cache invalidation. In some particular\n * situation you may want this to be disabled ( spray brush, very big, groups)\n * or if your application does not allow you to modify properties for groups child you want\n * to disable it for groups.\n * default to false\n * since 1.7.0\n * @type Boolean\n * @default false\n */\n statefullCache: false,\n\n /**\n * When `true`, cache does not get updated during scaling. The picture will get blocky if scaled\n * too much and will be redrawn with correct details at the end of scaling.\n * this setting is performance and application dependant.\n * default to true\n * since 1.7.0\n * @type Boolean\n * @default true\n */\n noScaleCache: true,\n\n /**\n * When `false`, the stoke width will scale with the object.\n * When `true`, the stroke will always match the exact pixel size entered for stroke width.\n * default to false\n * @since 2.6.0\n * @type Boolean\n * @default false\n * @type Boolean\n * @default false\n */\n strokeUniform: false,\n\n /**\n * When set to `true`, object's cache will be rerendered next render call.\n * since 1.7.0\n * @type Boolean\n * @default true\n */\n dirty: true,\n\n /**\n * keeps the value of the last hovered corner during mouse move.\n * 0 is no corner, or 'mt', 'ml', 'mtr' etc..\n * It should be private, but there is no harm in using it as\n * a read-only property.\n * @type number|string|any\n * @default 0\n */\n __corner: 0,\n\n /**\n * Determines if the fill or the stroke is drawn first (one of \"fill\" or \"stroke\")\n * @type String\n * @default\n */\n paintFirst: 'fill',\n\n /**\n * List of properties to consider when checking if state\n * of an object is changed (fabric.Object#hasStateChanged)\n * as well as for history (undo/redo) purposes\n * @type Array\n */\n stateProperties: (\n 'top left width height scaleX scaleY flipX flipY originX originY transformMatrix ' +\n 'stroke strokeWidth strokeDashArray strokeLineCap strokeDashOffset strokeLineJoin strokeMiterLimit ' +\n 'angle opacity fill globalCompositeOperation shadow clipTo visible backgroundColor ' +\n 'skewX skewY fillRule paintFirst clipPath strokeUniform'\n ).split(' '),\n\n /**\n * List of properties to consider when checking if cache needs refresh\n * Those properties are checked by statefullCache ON ( or lazy mode if we want ) or from single\n * calls to Object.set(key, value). If the key is in this list, the object is marked as dirty\n * and refreshed at the next render\n * @type Array\n */\n cacheProperties: (\n 'fill stroke strokeWidth strokeDashArray width height paintFirst strokeUniform' +\n ' strokeLineCap strokeDashOffset strokeLineJoin strokeMiterLimit backgroundColor clipPath'\n ).split(' '),\n\n /**\n * a fabricObject that, without stroke define a clipping area with their shape. filled in black\n * the clipPath object gets used when the object has rendered, and the context is placed in the center\n * of the object cacheCanvas.\n * If you want 0,0 of a clipPath to align with an object center, use clipPath.originX/Y to 'center'\n * @type fabric.Object\n */\n clipPath: undefined,\n\n /**\n * Meaningful ONLY when the object is used as clipPath.\n * if true, the clipPath will make the object clip to the outside of the clipPath\n * since 2.4.0\n * @type boolean\n * @default false\n */\n inverted: false,\n\n /**\n * Meaningful ONLY when the object is used as clipPath.\n * if true, the clipPath will have its top and left relative to canvas, and will\n * not be influenced by the object transform. This will make the clipPath relative\n * to the canvas, but clipping just a particular object.\n * WARNING this is beta, this feature may change or be renamed.\n * since 2.4.0\n * @type boolean\n * @default false\n */\n absolutePositioned: false,\n\n /**\n * Constructor\n * @param {Object} [options] Options object\n */\n initialize: function(options) {\n if (options) {\n this.setOptions(options);\n }\n },\n\n /**\n * Create a the canvas used to keep the cached copy of the object\n * @private\n */\n _createCacheCanvas: function() {\n this._cacheProperties = {};\n this._cacheCanvas = fabric.util.createCanvasElement();\n this._cacheContext = this._cacheCanvas.getContext('2d');\n this._updateCacheCanvas();\n // if canvas gets created, is empty, so dirty.\n this.dirty = true;\n },\n\n /**\n * Limit the cache dimensions so that X * Y do not cross fabric.perfLimitSizeTotal\n * and each side do not cross fabric.cacheSideLimit\n * those numbers are configurable so that you can get as much detail as you want\n * making bargain with performances.\n * @param {Object} dims\n * @param {Object} dims.width width of canvas\n * @param {Object} dims.height height of canvas\n * @param {Object} dims.zoomX zoomX zoom value to unscale the canvas before drawing cache\n * @param {Object} dims.zoomY zoomY zoom value to unscale the canvas before drawing cache\n * @return {Object}.width width of canvas\n * @return {Object}.height height of canvas\n * @return {Object}.zoomX zoomX zoom value to unscale the canvas before drawing cache\n * @return {Object}.zoomY zoomY zoom value to unscale the canvas before drawing cache\n */\n _limitCacheSize: function(dims) {\n var perfLimitSizeTotal = fabric.perfLimitSizeTotal,\n width = dims.width, height = dims.height,\n max = fabric.maxCacheSideLimit, min = fabric.minCacheSideLimit;\n if (width <= max && height <= max && width * height <= perfLimitSizeTotal) {\n if (width < min) {\n dims.width = min;\n }\n if (height < min) {\n dims.height = min;\n }\n return dims;\n }\n var ar = width / height, limitedDims = fabric.util.limitDimsByArea(ar, perfLimitSizeTotal),\n capValue = fabric.util.capValue,\n x = capValue(min, limitedDims.x, max),\n y = capValue(min, limitedDims.y, max);\n if (width > x) {\n dims.zoomX /= width / x;\n dims.width = x;\n dims.capped = true;\n }\n if (height > y) {\n dims.zoomY /= height / y;\n dims.height = y;\n dims.capped = true;\n }\n return dims;\n },\n\n /**\n * Return the dimension and the zoom level needed to create a cache canvas\n * big enough to host the object to be cached.\n * @private\n * @return {Object}.x width of object to be cached\n * @return {Object}.y height of object to be cached\n * @return {Object}.width width of canvas\n * @return {Object}.height height of canvas\n * @return {Object}.zoomX zoomX zoom value to unscale the canvas before drawing cache\n * @return {Object}.zoomY zoomY zoom value to unscale the canvas before drawing cache\n */\n _getCacheCanvasDimensions: function() {\n var objectScale = this.getTotalObjectScaling(),\n dim = this._getNonTransformedDimensions(),\n zoomX = objectScale.scaleX,\n zoomY = objectScale.scaleY,\n width = dim.x * zoomX,\n height = dim.y * zoomY;\n return {\n // for sure this ALIASING_LIMIT is slightly crating problem\n // in situation in wich the cache canvas gets an upper limit\n width: width + ALIASING_LIMIT,\n height: height + ALIASING_LIMIT,\n zoomX: zoomX,\n zoomY: zoomY,\n x: dim.x,\n y: dim.y\n };\n },\n\n /**\n * Update width and height of the canvas for cache\n * returns true or false if canvas needed resize.\n * @private\n * @return {Boolean} true if the canvas has been resized\n */\n _updateCacheCanvas: function() {\n var targetCanvas = this.canvas;\n if (this.noScaleCache && targetCanvas && targetCanvas._currentTransform) {\n var target = targetCanvas._currentTransform.target,\n action = targetCanvas._currentTransform.action;\n if (this === target && action.slice && action.slice(0, 5) === 'scale') {\n return false;\n }\n }\n var canvas = this._cacheCanvas,\n dims = this._limitCacheSize(this._getCacheCanvasDimensions()),\n minCacheSize = fabric.minCacheSideLimit,\n width = dims.width, height = dims.height, drawingWidth, drawingHeight,\n zoomX = dims.zoomX, zoomY = dims.zoomY,\n dimensionsChanged = width !== this.cacheWidth || height !== this.cacheHeight,\n zoomChanged = this.zoomX !== zoomX || this.zoomY !== zoomY,\n shouldRedraw = dimensionsChanged || zoomChanged,\n additionalWidth = 0, additionalHeight = 0, shouldResizeCanvas = false;\n if (dimensionsChanged) {\n var canvasWidth = this._cacheCanvas.width,\n canvasHeight = this._cacheCanvas.height,\n sizeGrowing = width > canvasWidth || height > canvasHeight,\n sizeShrinking = (width < canvasWidth * 0.9 || height < canvasHeight * 0.9) &&\n canvasWidth > minCacheSize && canvasHeight > minCacheSize;\n shouldResizeCanvas = sizeGrowing || sizeShrinking;\n if (sizeGrowing && !dims.capped && (width > minCacheSize || height > minCacheSize)) {\n additionalWidth = width * 0.1;\n additionalHeight = height * 0.1;\n }\n }\n if (shouldRedraw) {\n if (shouldResizeCanvas) {\n canvas.width = Math.ceil(width + additionalWidth);\n canvas.height = Math.ceil(height + additionalHeight);\n }\n else {\n this._cacheContext.setTransform(1, 0, 0, 1, 0, 0);\n this._cacheContext.clearRect(0, 0, canvas.width, canvas.height);\n }\n drawingWidth = dims.x * zoomX / 2;\n drawingHeight = dims.y * zoomY / 2;\n this.cacheTranslationX = Math.round(canvas.width / 2 - drawingWidth) + drawingWidth;\n this.cacheTranslationY = Math.round(canvas.height / 2 - drawingHeight) + drawingHeight;\n this.cacheWidth = width;\n this.cacheHeight = height;\n this._cacheContext.translate(this.cacheTranslationX, this.cacheTranslationY);\n this._cacheContext.scale(zoomX, zoomY);\n this.zoomX = zoomX;\n this.zoomY = zoomY;\n return true;\n }\n return false;\n },\n\n /**\n * Sets object's properties from options\n * @param {Object} [options] Options object\n */\n setOptions: function(options) {\n this._setOptions(options);\n this._initGradient(options.fill, 'fill');\n this._initGradient(options.stroke, 'stroke');\n this._initClipping(options);\n this._initPattern(options.fill, 'fill');\n this._initPattern(options.stroke, 'stroke');\n },\n\n /**\n * Transforms context when rendering an object\n * @param {CanvasRenderingContext2D} ctx Context\n */\n transform: function(ctx) {\n var m;\n if (this.group && !this.group._transformDone) {\n m = this.calcTransformMatrix();\n }\n else {\n m = this.calcOwnMatrix();\n }\n ctx.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n },\n\n /**\n * Returns an object representation of an instance\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} Object representation of an instance\n */\n toObject: function(propertiesToInclude) {\n var NUM_FRACTION_DIGITS = fabric.Object.NUM_FRACTION_DIGITS,\n\n object = {\n type: this.type,\n version: fabric.version,\n originX: this.originX,\n originY: this.originY,\n left: toFixed(this.left, NUM_FRACTION_DIGITS),\n top: toFixed(this.top, NUM_FRACTION_DIGITS),\n width: toFixed(this.width, NUM_FRACTION_DIGITS),\n height: toFixed(this.height, NUM_FRACTION_DIGITS),\n fill: (this.fill && this.fill.toObject) ? this.fill.toObject() : this.fill,\n stroke: (this.stroke && this.stroke.toObject) ? this.stroke.toObject() : this.stroke,\n strokeWidth: toFixed(this.strokeWidth, NUM_FRACTION_DIGITS),\n strokeDashArray: this.strokeDashArray ? this.strokeDashArray.concat() : this.strokeDashArray,\n strokeLineCap: this.strokeLineCap,\n strokeDashOffset: this.strokeDashOffset,\n strokeLineJoin: this.strokeLineJoin,\n strokeMiterLimit: toFixed(this.strokeMiterLimit, NUM_FRACTION_DIGITS),\n scaleX: toFixed(this.scaleX, NUM_FRACTION_DIGITS),\n scaleY: toFixed(this.scaleY, NUM_FRACTION_DIGITS),\n angle: toFixed(this.angle, NUM_FRACTION_DIGITS),\n flipX: this.flipX,\n flipY: this.flipY,\n opacity: toFixed(this.opacity, NUM_FRACTION_DIGITS),\n shadow: (this.shadow && this.shadow.toObject) ? this.shadow.toObject() : this.shadow,\n visible: this.visible,\n clipTo: this.clipTo && String(this.clipTo),\n backgroundColor: this.backgroundColor,\n fillRule: this.fillRule,\n paintFirst: this.paintFirst,\n globalCompositeOperation: this.globalCompositeOperation,\n transformMatrix: this.transformMatrix ? this.transformMatrix.concat() : null,\n skewX: toFixed(this.skewX, NUM_FRACTION_DIGITS),\n skewY: toFixed(this.skewY, NUM_FRACTION_DIGITS),\n };\n\n if (this.clipPath) {\n object.clipPath = this.clipPath.toObject(propertiesToInclude);\n object.clipPath.inverted = this.clipPath.inverted;\n object.clipPath.absolutePositioned = this.clipPath.absolutePositioned;\n }\n\n fabric.util.populateWithProperties(this, object, propertiesToInclude);\n if (!this.includeDefaultValues) {\n object = this._removeDefaultValues(object);\n }\n\n return object;\n },\n\n /**\n * Returns (dataless) object representation of an instance\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} Object representation of an instance\n */\n toDatalessObject: function(propertiesToInclude) {\n // will be overwritten by subclasses\n return this.toObject(propertiesToInclude);\n },\n\n /**\n * @private\n * @param {Object} object\n */\n _removeDefaultValues: function(object) {\n var prototype = fabric.util.getKlass(object.type).prototype,\n stateProperties = prototype.stateProperties;\n stateProperties.forEach(function(prop) {\n if (object[prop] === prototype[prop]) {\n delete object[prop];\n }\n var isArray = Object.prototype.toString.call(object[prop]) === '[object Array]' &&\n Object.prototype.toString.call(prototype[prop]) === '[object Array]';\n\n // basically a check for [] === []\n if (isArray && object[prop].length === 0 && prototype[prop].length === 0) {\n delete object[prop];\n }\n });\n\n return object;\n },\n\n /**\n * Returns a string representation of an instance\n * @return {String}\n */\n toString: function() {\n return '#';\n },\n\n /**\n * Return the object scale factor counting also the group scaling\n * @return {Object} object with scaleX and scaleY properties\n */\n getObjectScaling: function() {\n var scaleX = this.scaleX, scaleY = this.scaleY;\n if (this.group) {\n var scaling = this.group.getObjectScaling();\n scaleX *= scaling.scaleX;\n scaleY *= scaling.scaleY;\n }\n return { scaleX: scaleX, scaleY: scaleY };\n },\n\n /**\n * Return the object scale factor counting also the group scaling, zoom and retina\n * @return {Object} object with scaleX and scaleY properties\n */\n getTotalObjectScaling: function() {\n var scale = this.getObjectScaling(), scaleX = scale.scaleX, scaleY = scale.scaleY;\n if (this.canvas) {\n var zoom = this.canvas.getZoom();\n var retina = this.canvas.getRetinaScaling();\n scaleX *= zoom * retina;\n scaleY *= zoom * retina;\n }\n return { scaleX: scaleX, scaleY: scaleY };\n },\n\n /**\n * Return the object opacity counting also the group property\n * @return {Number}\n */\n getObjectOpacity: function() {\n var opacity = this.opacity;\n if (this.group) {\n opacity *= this.group.getObjectOpacity();\n }\n return opacity;\n },\n\n /**\n * @private\n * @param {String} key\n * @param {*} value\n * @return {fabric.Object} thisArg\n */\n _set: function(key, value) {\n var shouldConstrainValue = (key === 'scaleX' || key === 'scaleY'),\n isChanged = this[key] !== value, groupNeedsUpdate = false;\n\n if (shouldConstrainValue) {\n value = this._constrainScale(value);\n }\n if (key === 'scaleX' && value < 0) {\n this.flipX = !this.flipX;\n value *= -1;\n }\n else if (key === 'scaleY' && value < 0) {\n this.flipY = !this.flipY;\n value *= -1;\n }\n else if (key === 'shadow' && value && !(value instanceof fabric.Shadow)) {\n value = new fabric.Shadow(value);\n }\n else if (key === 'dirty' && this.group) {\n this.group.set('dirty', value);\n }\n\n this[key] = value;\n\n if (isChanged) {\n groupNeedsUpdate = this.group && this.group.isOnACache();\n if (this.cacheProperties.indexOf(key) > -1) {\n this.dirty = true;\n groupNeedsUpdate && this.group.set('dirty', true);\n }\n else if (groupNeedsUpdate && this.stateProperties.indexOf(key) > -1) {\n this.group.set('dirty', true);\n }\n }\n\n return this;\n },\n\n /**\n * This callback function is called by the parent group of an object every\n * time a non-delegated property changes on the group. It is passed the key\n * and value as parameters. Not adding in this function's signature to avoid\n * Travis build error about unused variables.\n */\n setOnGroup: function() {\n // implemented by sub-classes, as needed.\n },\n\n /**\n * Retrieves viewportTransform from Object's canvas if possible\n * @method getViewportTransform\n * @memberOf fabric.Object.prototype\n * @return {Array}\n */\n getViewportTransform: function() {\n if (this.canvas && this.canvas.viewportTransform) {\n return this.canvas.viewportTransform;\n }\n return fabric.iMatrix.concat();\n },\n\n /*\n * @private\n * return if the object would be visible in rendering\n * @memberOf fabric.Object.prototype\n * @return {Boolean}\n */\n isNotVisible: function() {\n return this.opacity === 0 ||\n (this.width === 0 && this.height === 0 && this.strokeWidth === 0) ||\n !this.visible;\n },\n\n /**\n * Renders an object on a specified context\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n render: function(ctx) {\n // do not render if width/height are zeros or object is not visible\n if (this.isNotVisible()) {\n return;\n }\n if (this.canvas && this.canvas.skipOffscreen && !this.group && !this.isOnScreen()) {\n return;\n }\n ctx.save();\n this._setupCompositeOperation(ctx);\n this.drawSelectionBackground(ctx);\n this.transform(ctx);\n this._setOpacity(ctx);\n this._setShadow(ctx, this);\n if (this.transformMatrix) {\n ctx.transform.apply(ctx, this.transformMatrix);\n }\n this.clipTo && fabric.util.clipContext(this, ctx);\n if (this.shouldCache()) {\n this.renderCache();\n this.drawCacheOnCanvas(ctx);\n }\n else {\n this._removeCacheCanvas();\n this.dirty = false;\n this.drawObject(ctx);\n if (this.objectCaching && this.statefullCache) {\n this.saveState({ propertySet: 'cacheProperties' });\n }\n }\n this.clipTo && ctx.restore();\n ctx.restore();\n },\n\n renderCache: function(options) {\n options = options || {};\n if (!this._cacheCanvas) {\n this._createCacheCanvas();\n }\n if (this.isCacheDirty()) {\n this.statefullCache && this.saveState({ propertySet: 'cacheProperties' });\n this.drawObject(this._cacheContext, options.forClipping);\n this.dirty = false;\n }\n },\n\n /**\n * Remove cacheCanvas and its dimensions from the objects\n */\n _removeCacheCanvas: function() {\n this._cacheCanvas = null;\n this.cacheWidth = 0;\n this.cacheHeight = 0;\n },\n\n /**\n * When set to `true`, force the object to have its own cache, even if it is inside a group\n * it may be needed when your object behave in a particular way on the cache and always needs\n * its own isolated canvas to render correctly.\n * Created to be overridden\n * since 1.7.12\n * @returns false\n */\n needsItsOwnCache: function() {\n if (this.paintFirst === 'stroke' && typeof this.shadow === 'object') {\n return true;\n }\n if (this.clipPath) {\n return true;\n }\n return false;\n },\n\n /**\n * Decide if the object should cache or not. Create its own cache level\n * objectCaching is a global flag, wins over everything\n * needsItsOwnCache should be used when the object drawing method requires\n * a cache step. None of the fabric classes requires it.\n * Generally you do not cache objects in groups because the group outside is cached.\n * @return {Boolean}\n */\n shouldCache: function() {\n this.ownCaching = this.objectCaching &&\n (!this.group || this.needsItsOwnCache() || !this.group.isOnACache());\n return this.ownCaching;\n },\n\n /**\n * Check if this object or a child object will cast a shadow\n * used by Group.shouldCache to know if child has a shadow recursively\n * @return {Boolean}\n */\n willDrawShadow: function() {\n return !!this.shadow && (this.shadow.offsetX !== 0 || this.shadow.offsetY !== 0);\n },\n\n /**\n * Execute the drawing operation for an object clipPath\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n drawClipPathOnCache: function(ctx) {\n var path = this.clipPath;\n ctx.save();\n // DEBUG: uncomment this line, comment the following\n // ctx.globalAlpha = 0.4\n if (path.inverted) {\n ctx.globalCompositeOperation = 'destination-out';\n }\n else {\n ctx.globalCompositeOperation = 'destination-in';\n }\n //ctx.scale(1 / 2, 1 / 2);\n if (path.absolutePositioned) {\n var m = fabric.util.invertTransform(this.calcTransformMatrix());\n ctx.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n }\n path.transform(ctx);\n ctx.scale(1 / path.zoomX, 1 / path.zoomY);\n ctx.drawImage(path._cacheCanvas, -path.cacheTranslationX, -path.cacheTranslationY);\n ctx.restore();\n },\n\n /**\n * Execute the drawing operation for an object on a specified context\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n drawObject: function(ctx, forClipping) {\n var originalFill = this.fill, originalStroke = this.stroke;\n if (forClipping) {\n this.fill = 'black';\n this.stroke = '';\n this._setClippingProperties(ctx);\n }\n else {\n this._renderBackground(ctx);\n this._setStrokeStyles(ctx, this);\n this._setFillStyles(ctx, this);\n }\n this._render(ctx);\n this._drawClipPath(ctx);\n this.fill = originalFill;\n this.stroke = originalStroke;\n },\n\n _drawClipPath: function(ctx) {\n var path = this.clipPath;\n if (!path) { return; }\n // needed to setup a couple of variables\n // path canvas gets overridden with this one.\n // TODO find a better solution?\n path.canvas = this.canvas;\n path.shouldCache();\n path._transformDone = true;\n path.renderCache({ forClipping: true });\n this.drawClipPathOnCache(ctx);\n },\n\n /**\n * Paint the cached copy of the object on the target context.\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n drawCacheOnCanvas: function(ctx) {\n ctx.scale(1 / this.zoomX, 1 / this.zoomY);\n ctx.drawImage(this._cacheCanvas, -this.cacheTranslationX, -this.cacheTranslationY);\n },\n\n /**\n * Check if cache is dirty\n * @param {Boolean} skipCanvas skip canvas checks because this object is painted\n * on parent canvas.\n */\n isCacheDirty: function(skipCanvas) {\n if (this.isNotVisible()) {\n return false;\n }\n if (this._cacheCanvas && !skipCanvas && this._updateCacheCanvas()) {\n // in this case the context is already cleared.\n return true;\n }\n else {\n if (this.dirty ||\n (this.clipPath && this.clipPath.absolutePositioned) ||\n (this.statefullCache && this.hasStateChanged('cacheProperties'))\n ) {\n if (this._cacheCanvas && !skipCanvas) {\n var width = this.cacheWidth / this.zoomX;\n var height = this.cacheHeight / this.zoomY;\n this._cacheContext.clearRect(-width / 2, -height / 2, width, height);\n }\n return true;\n }\n }\n return false;\n },\n\n /**\n * Draws a background for the object big as its untransformed dimensions\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderBackground: function(ctx) {\n if (!this.backgroundColor) {\n return;\n }\n var dim = this._getNonTransformedDimensions();\n ctx.fillStyle = this.backgroundColor;\n\n ctx.fillRect(\n -dim.x / 2,\n -dim.y / 2,\n dim.x,\n dim.y\n );\n // if there is background color no other shadows\n // should be casted\n this._removeShadow(ctx);\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _setOpacity: function(ctx) {\n if (this.group && !this.group._transformDone) {\n ctx.globalAlpha = this.getObjectOpacity();\n }\n else {\n ctx.globalAlpha *= this.opacity;\n }\n },\n\n _setStrokeStyles: function(ctx, decl) {\n if (decl.stroke) {\n ctx.lineWidth = decl.strokeWidth;\n ctx.lineCap = decl.strokeLineCap;\n ctx.lineDashOffset = decl.strokeDashOffset;\n ctx.lineJoin = decl.strokeLineJoin;\n ctx.miterLimit = decl.strokeMiterLimit;\n ctx.strokeStyle = decl.stroke.toLive\n ? decl.stroke.toLive(ctx, this)\n : decl.stroke;\n }\n },\n\n _setFillStyles: function(ctx, decl) {\n if (decl.fill) {\n ctx.fillStyle = decl.fill.toLive\n ? decl.fill.toLive(ctx, this)\n : decl.fill;\n }\n },\n\n _setClippingProperties: function(ctx) {\n ctx.globalAlpha = 1;\n ctx.strokeStyle = 'transparent';\n ctx.fillStyle = '#000000';\n },\n\n /**\n * @private\n * Sets line dash\n * @param {CanvasRenderingContext2D} ctx Context to set the dash line on\n * @param {Array} dashArray array representing dashes\n * @param {Function} alternative function to call if browser does not support lineDash\n */\n _setLineDash: function(ctx, dashArray, alternative) {\n if (!dashArray) {\n return;\n }\n // Spec requires the concatenation of two copies the dash list when the number of elements is odd\n if (1 & dashArray.length) {\n dashArray.push.apply(dashArray, dashArray);\n }\n if (supportsLineDash) {\n ctx.setLineDash(dashArray);\n }\n else {\n alternative && alternative(ctx);\n }\n if (this.strokeUniform) {\n ctx.setLineDash(ctx.getLineDash().map(function(value) { return value * ctx.lineWidth; }));\n }\n },\n\n /**\n * Renders controls and borders for the object\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @param {Object} [styleOverride] properties to override the object style\n */\n _renderControls: function(ctx, styleOverride) {\n var vpt = this.getViewportTransform(),\n matrix = this.calcTransformMatrix(),\n options, drawBorders, drawControls;\n styleOverride = styleOverride || { };\n drawBorders = typeof styleOverride.hasBorders !== 'undefined' ? styleOverride.hasBorders : this.hasBorders;\n drawControls = typeof styleOverride.hasControls !== 'undefined' ? styleOverride.hasControls : this.hasControls;\n matrix = fabric.util.multiplyTransformMatrices(vpt, matrix);\n options = fabric.util.qrDecompose(matrix);\n ctx.save();\n ctx.translate(options.translateX, options.translateY);\n ctx.lineWidth = 1 * this.borderScaleFactor;\n if (!this.group) {\n ctx.globalAlpha = this.isMoving ? this.borderOpacityWhenMoving : 1;\n }\n if (styleOverride.forActiveSelection) {\n ctx.rotate(degreesToRadians(options.angle));\n drawBorders && this.drawBordersInGroup(ctx, options, styleOverride);\n }\n else {\n ctx.rotate(degreesToRadians(this.angle));\n drawBorders && this.drawBorders(ctx, styleOverride);\n }\n drawControls && this.drawControls(ctx, styleOverride);\n ctx.restore();\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _setShadow: function(ctx) {\n if (!this.shadow) {\n return;\n }\n\n var shadow = this.shadow, canvas = this.canvas,\n multX = (canvas && canvas.viewportTransform[0]) || 1,\n multY = (canvas && canvas.viewportTransform[3]) || 1,\n scaling = this.getObjectScaling();\n if (canvas && canvas._isRetinaScaling()) {\n multX *= fabric.devicePixelRatio;\n multY *= fabric.devicePixelRatio;\n }\n ctx.shadowColor = shadow.color;\n ctx.shadowBlur = shadow.blur * fabric.browserShadowBlurConstant *\n (multX + multY) * (scaling.scaleX + scaling.scaleY) / 4;\n ctx.shadowOffsetX = shadow.offsetX * multX * scaling.scaleX;\n ctx.shadowOffsetY = shadow.offsetY * multY * scaling.scaleY;\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _removeShadow: function(ctx) {\n if (!this.shadow) {\n return;\n }\n\n ctx.shadowColor = '';\n ctx.shadowBlur = ctx.shadowOffsetX = ctx.shadowOffsetY = 0;\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @param {Object} filler fabric.Pattern or fabric.Gradient\n * @return {Object} offset.offsetX offset for text rendering\n * @return {Object} offset.offsetY offset for text rendering\n */\n _applyPatternGradientTransform: function(ctx, filler) {\n if (!filler || !filler.toLive) {\n return { offsetX: 0, offsetY: 0 };\n }\n var t = filler.gradientTransform || filler.patternTransform;\n var offsetX = -this.width / 2 + filler.offsetX || 0,\n offsetY = -this.height / 2 + filler.offsetY || 0;\n ctx.translate(offsetX, offsetY);\n if (t) {\n ctx.transform(t[0], t[1], t[2], t[3], t[4], t[5]);\n }\n return { offsetX: offsetX, offsetY: offsetY };\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderPaintInOrder: function(ctx) {\n if (this.paintFirst === 'stroke') {\n this._renderStroke(ctx);\n this._renderFill(ctx);\n }\n else {\n this._renderFill(ctx);\n this._renderStroke(ctx);\n }\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderFill: function(ctx) {\n if (!this.fill) {\n return;\n }\n\n ctx.save();\n this._applyPatternGradientTransform(ctx, this.fill);\n if (this.fillRule === 'evenodd') {\n ctx.fill('evenodd');\n }\n else {\n ctx.fill();\n }\n ctx.restore();\n },\n\n _renderStroke: function(ctx) {\n if (!this.stroke || this.strokeWidth === 0) {\n return;\n }\n\n if (this.shadow && !this.shadow.affectStroke) {\n this._removeShadow(ctx);\n }\n\n ctx.save();\n if (this.strokeUniform) {\n ctx.scale(1 / this.scaleX, 1 / this.scaleY);\n }\n this._setLineDash(ctx, this.strokeDashArray, this._renderDashedStroke);\n this._applyPatternGradientTransform(ctx, this.stroke);\n ctx.stroke();\n ctx.restore();\n },\n\n /**\n * This function is an helper for svg import. it returns the center of the object in the svg\n * untransformed coordinates\n * @private\n * @return {Object} center point from element coordinates\n */\n _findCenterFromElement: function() {\n return { x: this.left + this.width / 2, y: this.top + this.height / 2 };\n },\n\n /**\n * This function is an helper for svg import. it decompose the transformMatrix\n * and assign properties to object.\n * untransformed coordinates\n * @private\n * @chainable\n */\n _assignTransformMatrixProps: function() {\n if (this.transformMatrix) {\n var options = fabric.util.qrDecompose(this.transformMatrix);\n this.flipX = false;\n this.flipY = false;\n this.set('scaleX', options.scaleX);\n this.set('scaleY', options.scaleY);\n this.angle = options.angle;\n this.skewX = options.skewX;\n this.skewY = 0;\n }\n },\n\n /**\n * This function is an helper for svg import. it removes the transform matrix\n * and set to object properties that fabricjs can handle\n * @private\n * @param {Object} preserveAspectRatioOptions\n * @return {thisArg}\n */\n _removeTransformMatrix: function(preserveAspectRatioOptions) {\n var center = this._findCenterFromElement();\n if (this.transformMatrix) {\n this._assignTransformMatrixProps();\n center = fabric.util.transformPoint(center, this.transformMatrix);\n }\n this.transformMatrix = null;\n if (preserveAspectRatioOptions) {\n this.scaleX *= preserveAspectRatioOptions.scaleX;\n this.scaleY *= preserveAspectRatioOptions.scaleY;\n this.cropX = preserveAspectRatioOptions.cropX;\n this.cropY = preserveAspectRatioOptions.cropY;\n center.x += preserveAspectRatioOptions.offsetLeft;\n center.y += preserveAspectRatioOptions.offsetTop;\n this.width = preserveAspectRatioOptions.width;\n this.height = preserveAspectRatioOptions.height;\n }\n this.setPositionByOrigin(center, 'center', 'center');\n },\n\n /**\n * Clones an instance, using a callback method will work for every object.\n * @param {Function} callback Callback is invoked with a clone as a first argument\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n */\n clone: function(callback, propertiesToInclude) {\n var objectForm = this.toObject(propertiesToInclude);\n if (this.constructor.fromObject) {\n this.constructor.fromObject(objectForm, callback);\n }\n else {\n fabric.Object._fromObject('Object', objectForm, callback);\n }\n },\n\n /**\n * Creates an instance of fabric.Image out of an object\n * could make use of both toDataUrl or toCanvasElement.\n * @param {Function} callback callback, invoked with an instance as a first argument\n * @param {Object} [options] for clone as image, passed to toDataURL\n * @param {String} [options.format=png] The format of the output image. Either \"jpeg\" or \"png\"\n * @param {Number} [options.quality=1] Quality level (0..1). Only used for jpeg.\n * @param {Number} [options.multiplier=1] Multiplier to scale by\n * @param {Number} [options.left] Cropping left offset. Introduced in v1.2.14\n * @param {Number} [options.top] Cropping top offset. Introduced in v1.2.14\n * @param {Number} [options.width] Cropping width. Introduced in v1.2.14\n * @param {Number} [options.height] Cropping height. Introduced in v1.2.14\n * @param {Boolean} [options.enableRetinaScaling] Enable retina scaling for clone image. Introduce in 1.6.4\n * @param {Boolean} [options.withoutTransform] Remove current object transform ( no scale , no angle, no flip, no skew ). Introduced in 2.3.4\n * @param {Boolean} [options.withoutShadow] Remove current object shadow. Introduced in 2.4.2\n * @return {fabric.Object} thisArg\n */\n cloneAsImage: function(callback, options) {\n var canvasEl = this.toCanvasElement(options);\n if (callback) {\n callback(new fabric.Image(canvasEl));\n }\n return this;\n },\n\n /**\n * Converts an object into a HTMLCanvas element\n * @param {Object} options Options object\n * @param {Number} [options.multiplier=1] Multiplier to scale by\n * @param {Number} [options.left] Cropping left offset. Introduced in v1.2.14\n * @param {Number} [options.top] Cropping top offset. Introduced in v1.2.14\n * @param {Number} [options.width] Cropping width. Introduced in v1.2.14\n * @param {Number} [options.height] Cropping height. Introduced in v1.2.14\n * @param {Boolean} [options.enableRetinaScaling] Enable retina scaling for clone image. Introduce in 1.6.4\n * @param {Boolean} [options.withoutTransform] Remove current object transform ( no scale , no angle, no flip, no skew ). Introduced in 2.3.4\n * @param {Boolean} [options.withoutShadow] Remove current object shadow. Introduced in 2.4.2\n * @return {String} Returns a data: URL containing a representation of the object in the format specified by options.format\n */\n toCanvasElement: function(options) {\n options || (options = { });\n\n var utils = fabric.util, origParams = utils.saveObjectTransform(this),\n originalShadow = this.shadow, abs = Math.abs,\n multiplier = (options.multiplier || 1) * (options.enableRetinaScaling ? fabric.devicePixelRatio : 1);\n\n if (options.withoutTransform) {\n utils.resetObjectTransform(this);\n }\n if (options.withoutShadow) {\n this.shadow = null;\n }\n\n var el = fabric.util.createCanvasElement(),\n // skip canvas zoom and calculate with setCoords now.\n boundingRect = this.getBoundingRect(true, true),\n shadow = this.shadow, scaling,\n shadowOffset = { x: 0, y: 0 }, shadowBlur;\n\n if (shadow) {\n shadowBlur = shadow.blur;\n scaling = this.getObjectScaling();\n shadowOffset.x = 2 * Math.round((abs(shadow.offsetX) + shadowBlur) * abs(scaling.scaleX));\n shadowOffset.y = 2 * Math.round((abs(shadow.offsetY) + shadowBlur) * abs(scaling.scaleY));\n }\n el.width = boundingRect.width + shadowOffset.x;\n el.height = boundingRect.height + shadowOffset.y;\n el.width += el.width % 2 ? 2 - el.width % 2 : 0;\n el.height += el.height % 2 ? 2 - el.height % 2 : 0;\n var canvas = new fabric.StaticCanvas(el, {\n enableRetinaScaling: false,\n renderOnAddRemove: false,\n skipOffscreen: false,\n });\n if (options.format === 'jpeg') {\n canvas.backgroundColor = '#fff';\n }\n this.setPositionByOrigin(new fabric.Point(canvas.width / 2, canvas.height / 2), 'center', 'center');\n\n var originalCanvas = this.canvas;\n canvas.add(this);\n var canvasEl = canvas.toCanvasElement(multiplier || 1, options);\n this.shadow = originalShadow;\n this.canvas = originalCanvas;\n this.set(origParams).setCoords();\n // canvas.dispose will call image.dispose that will nullify the elements\n // since this canvas is a simple element for the process, we remove references\n // to objects in this way in order to avoid object trashing.\n canvas._objects = [];\n canvas.dispose();\n canvas = null;\n\n return canvasEl;\n },\n\n /**\n * Converts an object into a data-url-like string\n * @param {Object} options Options object\n * @param {String} [options.format=png] The format of the output image. Either \"jpeg\" or \"png\"\n * @param {Number} [options.quality=1] Quality level (0..1). Only used for jpeg.\n * @param {Number} [options.multiplier=1] Multiplier to scale by\n * @param {Number} [options.left] Cropping left offset. Introduced in v1.2.14\n * @param {Number} [options.top] Cropping top offset. Introduced in v1.2.14\n * @param {Number} [options.width] Cropping width. Introduced in v1.2.14\n * @param {Number} [options.height] Cropping height. Introduced in v1.2.14\n * @param {Boolean} [options.enableRetinaScaling] Enable retina scaling for clone image. Introduce in 1.6.4\n * @param {Boolean} [options.withoutTransform] Remove current object transform ( no scale , no angle, no flip, no skew ). Introduced in 2.3.4\n * @param {Boolean} [options.withoutShadow] Remove current object shadow. Introduced in 2.4.2\n * @return {String} Returns a data: URL containing a representation of the object in the format specified by options.format\n */\n toDataURL: function(options) {\n options || (options = { });\n return fabric.util.toDataURL(this.toCanvasElement(options), options.format || 'png', options.quality || 1);\n },\n\n /**\n * Returns true if specified type is identical to the type of an instance\n * @param {String} type Type to check against\n * @return {Boolean}\n */\n isType: function(type) {\n return this.type === type;\n },\n\n /**\n * Returns complexity of an instance\n * @return {Number} complexity of this instance (is 1 unless subclassed)\n */\n complexity: function() {\n return 1;\n },\n\n /**\n * Returns a JSON representation of an instance\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} JSON\n */\n toJSON: function(propertiesToInclude) {\n // delegate, not alias\n return this.toObject(propertiesToInclude);\n },\n\n /**\n * Sets gradient (fill or stroke) of an object\n * Backwards incompatibility note: This method was named \"setGradientFill\" until v1.1.0\n * @param {String} property Property name 'stroke' or 'fill'\n * @param {Object} [options] Options object\n * @param {String} [options.type] Type of gradient 'radial' or 'linear'\n * @param {Number} [options.x1=0] x-coordinate of start point\n * @param {Number} [options.y1=0] y-coordinate of start point\n * @param {Number} [options.x2=0] x-coordinate of end point\n * @param {Number} [options.y2=0] y-coordinate of end point\n * @param {Number} [options.r1=0] Radius of start point (only for radial gradients)\n * @param {Number} [options.r2=0] Radius of end point (only for radial gradients)\n * @param {Object} [options.colorStops] Color stops object eg. {0: 'ff0000', 1: '000000'}\n * @param {Object} [options.gradientTransform] transformMatrix for gradient\n * @return {fabric.Object} thisArg\n * @chainable\n * @see {@link http://jsfiddle.net/fabricjs/58y8b/|jsFiddle demo}\n * @example Set linear gradient\n * object.setGradient('fill', {\n * type: 'linear',\n * x1: -object.width / 2,\n * y1: 0,\n * x2: object.width / 2,\n * y2: 0,\n * colorStops: {\n * 0: 'red',\n * 0.5: '#005555',\n * 1: 'rgba(0,0,255,0.5)'\n * }\n * });\n * canvas.renderAll();\n * @example Set radial gradient\n * object.setGradient('fill', {\n * type: 'radial',\n * x1: 0,\n * y1: 0,\n * x2: 0,\n * y2: 0,\n * r1: object.width / 2,\n * r2: 10,\n * colorStops: {\n * 0: 'red',\n * 0.5: '#005555',\n * 1: 'rgba(0,0,255,0.5)'\n * }\n * });\n * canvas.renderAll();\n */\n setGradient: function(property, options) {\n options || (options = { });\n\n var gradient = { colorStops: [] };\n\n gradient.type = options.type || (options.r1 || options.r2 ? 'radial' : 'linear');\n gradient.coords = {\n x1: options.x1,\n y1: options.y1,\n x2: options.x2,\n y2: options.y2\n };\n\n if (options.r1 || options.r2) {\n gradient.coords.r1 = options.r1;\n gradient.coords.r2 = options.r2;\n }\n\n gradient.gradientTransform = options.gradientTransform;\n fabric.Gradient.prototype.addColorStop.call(gradient, options.colorStops);\n\n return this.set(property, fabric.Gradient.forObject(this, gradient));\n },\n\n /**\n * Sets pattern fill of an object\n * @param {Object} options Options object\n * @param {(String|HTMLImageElement)} options.source Pattern source\n * @param {String} [options.repeat=repeat] Repeat property of a pattern (one of repeat, repeat-x, repeat-y or no-repeat)\n * @param {Number} [options.offsetX=0] Pattern horizontal offset from object's left/top corner\n * @param {Number} [options.offsetY=0] Pattern vertical offset from object's left/top corner\n * @param {Function} [callback] Callback to invoke when image set as a pattern\n * @return {fabric.Object} thisArg\n * @chainable\n * @see {@link http://jsfiddle.net/fabricjs/QT3pa/|jsFiddle demo}\n * @example Set pattern\n * object.setPatternFill({\n * source: 'http://fabricjs.com/assets/escheresque_ste.png',\n * repeat: 'repeat'\n * },canvas.renderAll.bind(canvas));\n */\n setPatternFill: function(options, callback) {\n return this.set('fill', new fabric.Pattern(options, callback));\n },\n\n /**\n * Sets {@link fabric.Object#shadow|shadow} of an object\n * @param {Object|String} [options] Options object or string (e.g. \"2px 2px 10px rgba(0,0,0,0.2)\")\n * @param {String} [options.color=rgb(0,0,0)] Shadow color\n * @param {Number} [options.blur=0] Shadow blur\n * @param {Number} [options.offsetX=0] Shadow horizontal offset\n * @param {Number} [options.offsetY=0] Shadow vertical offset\n * @return {fabric.Object} thisArg\n * @chainable\n * @see {@link http://jsfiddle.net/fabricjs/7gvJG/|jsFiddle demo}\n * @example Set shadow with string notation\n * object.setShadow('2px 2px 10px rgba(0,0,0,0.2)');\n * canvas.renderAll();\n * @example Set shadow with object notation\n * object.setShadow({\n * color: 'red',\n * blur: 10,\n * offsetX: 20,\n * offsetY: 20\n * });\n * canvas.renderAll();\n */\n setShadow: function(options) {\n return this.set('shadow', options ? new fabric.Shadow(options) : null);\n },\n\n /**\n * Sets \"color\" of an instance (alias of `set('fill', …)`)\n * @param {String} color Color value\n * @return {fabric.Object} thisArg\n * @chainable\n */\n setColor: function(color) {\n this.set('fill', color);\n return this;\n },\n\n /**\n * Sets \"angle\" of an instance with centered rotation\n * @param {Number} angle Angle value (in degrees)\n * @return {fabric.Object} thisArg\n * @chainable\n */\n rotate: function(angle) {\n var shouldCenterOrigin = (this.originX !== 'center' || this.originY !== 'center') && this.centeredRotation;\n\n if (shouldCenterOrigin) {\n this._setOriginToCenter();\n }\n\n this.set('angle', angle);\n\n if (shouldCenterOrigin) {\n this._resetOrigin();\n }\n\n return this;\n },\n\n /**\n * Centers object horizontally on canvas to which it was added last.\n * You might need to call `setCoords` on an object after centering, to update controls area.\n * @return {fabric.Object} thisArg\n * @chainable\n */\n centerH: function () {\n this.canvas && this.canvas.centerObjectH(this);\n return this;\n },\n\n /**\n * Centers object horizontally on current viewport of canvas to which it was added last.\n * You might need to call `setCoords` on an object after centering, to update controls area.\n * @return {fabric.Object} thisArg\n * @chainable\n */\n viewportCenterH: function () {\n this.canvas && this.canvas.viewportCenterObjectH(this);\n return this;\n },\n\n /**\n * Centers object vertically on canvas to which it was added last.\n * You might need to call `setCoords` on an object after centering, to update controls area.\n * @return {fabric.Object} thisArg\n * @chainable\n */\n centerV: function () {\n this.canvas && this.canvas.centerObjectV(this);\n return this;\n },\n\n /**\n * Centers object vertically on current viewport of canvas to which it was added last.\n * You might need to call `setCoords` on an object after centering, to update controls area.\n * @return {fabric.Object} thisArg\n * @chainable\n */\n viewportCenterV: function () {\n this.canvas && this.canvas.viewportCenterObjectV(this);\n return this;\n },\n\n /**\n * Centers object vertically and horizontally on canvas to which is was added last\n * You might need to call `setCoords` on an object after centering, to update controls area.\n * @return {fabric.Object} thisArg\n * @chainable\n */\n center: function () {\n this.canvas && this.canvas.centerObject(this);\n return this;\n },\n\n /**\n * Centers object on current viewport of canvas to which it was added last.\n * You might need to call `setCoords` on an object after centering, to update controls area.\n * @return {fabric.Object} thisArg\n * @chainable\n */\n viewportCenter: function () {\n this.canvas && this.canvas.viewportCenterObject(this);\n return this;\n },\n\n /**\n * Returns coordinates of a pointer relative to an object\n * @param {Event} e Event to operate upon\n * @param {Object} [pointer] Pointer to operate upon (instead of event)\n * @return {Object} Coordinates of a pointer (x, y)\n */\n getLocalPointer: function(e, pointer) {\n pointer = pointer || this.canvas.getPointer(e);\n var pClicked = new fabric.Point(pointer.x, pointer.y),\n objectLeftTop = this._getLeftTopCoords();\n if (this.angle) {\n pClicked = fabric.util.rotatePoint(\n pClicked, objectLeftTop, degreesToRadians(-this.angle));\n }\n return {\n x: pClicked.x - objectLeftTop.x,\n y: pClicked.y - objectLeftTop.y\n };\n },\n\n /**\n * Sets canvas globalCompositeOperation for specific object\n * custom composition operation for the particular object can be specified using globalCompositeOperation property\n * @param {CanvasRenderingContext2D} ctx Rendering canvas context\n */\n _setupCompositeOperation: function (ctx) {\n if (this.globalCompositeOperation) {\n ctx.globalCompositeOperation = this.globalCompositeOperation;\n }\n }\n });\n\n fabric.util.createAccessors && fabric.util.createAccessors(fabric.Object);\n\n extend(fabric.Object.prototype, fabric.Observable);\n\n /**\n * Defines the number of fraction digits to use when serializing object values.\n * You can use it to increase/decrease precision of such values like left, top, scaleX, scaleY, etc.\n * @static\n * @memberOf fabric.Object\n * @constant\n * @type Number\n */\n fabric.Object.NUM_FRACTION_DIGITS = 2;\n\n fabric.Object._fromObject = function(className, object, callback, extraParam) {\n var klass = fabric[className];\n object = clone(object, true);\n fabric.util.enlivenPatterns([object.fill, object.stroke], function(patterns) {\n if (typeof patterns[0] !== 'undefined') {\n object.fill = patterns[0];\n }\n if (typeof patterns[1] !== 'undefined') {\n object.stroke = patterns[1];\n }\n fabric.util.enlivenObjects([object.clipPath], function(enlivedProps) {\n object.clipPath = enlivedProps[0];\n var instance = extraParam ? new klass(object[extraParam], object) : new klass(object);\n callback && callback(instance);\n });\n });\n };\n\n /**\n * Unique id used internally when creating SVG elements\n * @static\n * @memberOf fabric.Object\n * @type Number\n */\n fabric.Object.__uid = 0;\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function() {\n\n var degreesToRadians = fabric.util.degreesToRadians,\n originXOffset = {\n left: -0.5,\n center: 0,\n right: 0.5\n },\n originYOffset = {\n top: -0.5,\n center: 0,\n bottom: 0.5\n };\n\n fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prototype */ {\n\n /**\n * Translates the coordinates from a set of origin to another (based on the object's dimensions)\n * @param {fabric.Point} point The point which corresponds to the originX and originY params\n * @param {String} fromOriginX Horizontal origin: 'left', 'center' or 'right'\n * @param {String} fromOriginY Vertical origin: 'top', 'center' or 'bottom'\n * @param {String} toOriginX Horizontal origin: 'left', 'center' or 'right'\n * @param {String} toOriginY Vertical origin: 'top', 'center' or 'bottom'\n * @return {fabric.Point}\n */\n translateToGivenOrigin: function(point, fromOriginX, fromOriginY, toOriginX, toOriginY) {\n var x = point.x,\n y = point.y,\n offsetX, offsetY, dim;\n\n if (typeof fromOriginX === 'string') {\n fromOriginX = originXOffset[fromOriginX];\n }\n else {\n fromOriginX -= 0.5;\n }\n\n if (typeof toOriginX === 'string') {\n toOriginX = originXOffset[toOriginX];\n }\n else {\n toOriginX -= 0.5;\n }\n\n offsetX = toOriginX - fromOriginX;\n\n if (typeof fromOriginY === 'string') {\n fromOriginY = originYOffset[fromOriginY];\n }\n else {\n fromOriginY -= 0.5;\n }\n\n if (typeof toOriginY === 'string') {\n toOriginY = originYOffset[toOriginY];\n }\n else {\n toOriginY -= 0.5;\n }\n\n offsetY = toOriginY - fromOriginY;\n\n if (offsetX || offsetY) {\n dim = this._getTransformedDimensions();\n x = point.x + offsetX * dim.x;\n y = point.y + offsetY * dim.y;\n }\n\n return new fabric.Point(x, y);\n },\n\n /**\n * Translates the coordinates from origin to center coordinates (based on the object's dimensions)\n * @param {fabric.Point} point The point which corresponds to the originX and originY params\n * @param {String} originX Horizontal origin: 'left', 'center' or 'right'\n * @param {String} originY Vertical origin: 'top', 'center' or 'bottom'\n * @return {fabric.Point}\n */\n translateToCenterPoint: function(point, originX, originY) {\n var p = this.translateToGivenOrigin(point, originX, originY, 'center', 'center');\n if (this.angle) {\n return fabric.util.rotatePoint(p, point, degreesToRadians(this.angle));\n }\n return p;\n },\n\n /**\n * Translates the coordinates from center to origin coordinates (based on the object's dimensions)\n * @param {fabric.Point} center The point which corresponds to center of the object\n * @param {String} originX Horizontal origin: 'left', 'center' or 'right'\n * @param {String} originY Vertical origin: 'top', 'center' or 'bottom'\n * @return {fabric.Point}\n */\n translateToOriginPoint: function(center, originX, originY) {\n var p = this.translateToGivenOrigin(center, 'center', 'center', originX, originY);\n if (this.angle) {\n return fabric.util.rotatePoint(p, center, degreesToRadians(this.angle));\n }\n return p;\n },\n\n /**\n * Returns the real center coordinates of the object\n * @return {fabric.Point}\n */\n getCenterPoint: function() {\n var leftTop = new fabric.Point(this.left, this.top);\n return this.translateToCenterPoint(leftTop, this.originX, this.originY);\n },\n\n /**\n * Returns the coordinates of the object based on center coordinates\n * @param {fabric.Point} point The point which corresponds to the originX and originY params\n * @return {fabric.Point}\n */\n // getOriginPoint: function(center) {\n // return this.translateToOriginPoint(center, this.originX, this.originY);\n // },\n\n /**\n * Returns the coordinates of the object as if it has a different origin\n * @param {String} originX Horizontal origin: 'left', 'center' or 'right'\n * @param {String} originY Vertical origin: 'top', 'center' or 'bottom'\n * @return {fabric.Point}\n */\n getPointByOrigin: function(originX, originY) {\n var center = this.getCenterPoint();\n return this.translateToOriginPoint(center, originX, originY);\n },\n\n /**\n * Returns the point in local coordinates\n * @param {fabric.Point} point The point relative to the global coordinate system\n * @param {String} originX Horizontal origin: 'left', 'center' or 'right'\n * @param {String} originY Vertical origin: 'top', 'center' or 'bottom'\n * @return {fabric.Point}\n */\n toLocalPoint: function(point, originX, originY) {\n var center = this.getCenterPoint(),\n p, p2;\n\n if (typeof originX !== 'undefined' && typeof originY !== 'undefined' ) {\n p = this.translateToGivenOrigin(center, 'center', 'center', originX, originY);\n }\n else {\n p = new fabric.Point(this.left, this.top);\n }\n\n p2 = new fabric.Point(point.x, point.y);\n if (this.angle) {\n p2 = fabric.util.rotatePoint(p2, center, -degreesToRadians(this.angle));\n }\n return p2.subtractEquals(p);\n },\n\n /**\n * Returns the point in global coordinates\n * @param {fabric.Point} The point relative to the local coordinate system\n * @return {fabric.Point}\n */\n // toGlobalPoint: function(point) {\n // return fabric.util.rotatePoint(point, this.getCenterPoint(), degreesToRadians(this.angle)).addEquals(new fabric.Point(this.left, this.top));\n // },\n\n /**\n * Sets the position of the object taking into consideration the object's origin\n * @param {fabric.Point} pos The new position of the object\n * @param {String} originX Horizontal origin: 'left', 'center' or 'right'\n * @param {String} originY Vertical origin: 'top', 'center' or 'bottom'\n * @return {void}\n */\n setPositionByOrigin: function(pos, originX, originY) {\n var center = this.translateToCenterPoint(pos, originX, originY),\n position = this.translateToOriginPoint(center, this.originX, this.originY);\n this.set('left', position.x);\n this.set('top', position.y);\n },\n\n /**\n * @param {String} to One of 'left', 'center', 'right'\n */\n adjustPosition: function(to) {\n var angle = degreesToRadians(this.angle),\n hypotFull = this.getScaledWidth(),\n xFull = fabric.util.cos(angle) * hypotFull,\n yFull = fabric.util.sin(angle) * hypotFull,\n offsetFrom, offsetTo;\n\n //TODO: this function does not consider mixed situation like top, center.\n if (typeof this.originX === 'string') {\n offsetFrom = originXOffset[this.originX];\n }\n else {\n offsetFrom = this.originX - 0.5;\n }\n if (typeof to === 'string') {\n offsetTo = originXOffset[to];\n }\n else {\n offsetTo = to - 0.5;\n }\n this.left += xFull * (offsetTo - offsetFrom);\n this.top += yFull * (offsetTo - offsetFrom);\n this.setCoords();\n this.originX = to;\n },\n\n /**\n * Sets the origin/position of the object to it's center point\n * @private\n * @return {void}\n */\n _setOriginToCenter: function() {\n this._originalOriginX = this.originX;\n this._originalOriginY = this.originY;\n\n var center = this.getCenterPoint();\n\n this.originX = 'center';\n this.originY = 'center';\n\n this.left = center.x;\n this.top = center.y;\n },\n\n /**\n * Resets the origin/position of the object to it's original origin\n * @private\n * @return {void}\n */\n _resetOrigin: function() {\n var originPoint = this.translateToOriginPoint(\n this.getCenterPoint(),\n this._originalOriginX,\n this._originalOriginY);\n\n this.originX = this._originalOriginX;\n this.originY = this._originalOriginY;\n\n this.left = originPoint.x;\n this.top = originPoint.y;\n\n this._originalOriginX = null;\n this._originalOriginY = null;\n },\n\n /**\n * @private\n */\n _getLeftTopCoords: function() {\n return this.translateToOriginPoint(this.getCenterPoint(), 'left', 'top');\n },\n });\n\n})();\n\n\n(function() {\n\n function getCoords(coords) {\n return [\n new fabric.Point(coords.tl.x, coords.tl.y),\n new fabric.Point(coords.tr.x, coords.tr.y),\n new fabric.Point(coords.br.x, coords.br.y),\n new fabric.Point(coords.bl.x, coords.bl.y)\n ];\n }\n\n var degreesToRadians = fabric.util.degreesToRadians,\n multiplyMatrices = fabric.util.multiplyTransformMatrices,\n transformPoint = fabric.util.transformPoint;\n\n fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prototype */ {\n\n /**\n * Describe object's corner position in canvas element coordinates.\n * properties are tl,mt,tr,ml,mr,bl,mb,br,mtr for the main controls.\n * each property is an object with x, y and corner.\n * The `corner` property contains in a similar manner the 4 points of the\n * interactive area of the corner.\n * The coordinates depends from this properties: width, height, scaleX, scaleY\n * skewX, skewY, angle, strokeWidth, viewportTransform, top, left, padding.\n * The coordinates get updated with @method setCoords.\n * You can calculate them without updating with @method calcCoords;\n * @memberOf fabric.Object.prototype\n */\n oCoords: null,\n\n /**\n * Describe object's corner position in canvas object absolute coordinates\n * properties are tl,tr,bl,br and describe the four main corner.\n * each property is an object with x, y, instance of Fabric.Point.\n * The coordinates depends from this properties: width, height, scaleX, scaleY\n * skewX, skewY, angle, strokeWidth, top, left.\n * Those coordinates are usefull to understand where an object is. They get updated\n * with oCoords but they do not need to be updated when zoom or panning change.\n * The coordinates get updated with @method setCoords.\n * You can calculate them without updating with @method calcCoords(true);\n * @memberOf fabric.Object.prototype\n */\n aCoords: null,\n\n /**\n * storage for object transform matrix\n */\n ownMatrixCache: null,\n\n /**\n * storage for object full transform matrix\n */\n matrixCache: null,\n\n /**\n * return correct set of coordinates for intersection\n */\n getCoords: function(absolute, calculate) {\n if (!this.oCoords) {\n this.setCoords();\n }\n var coords = absolute ? this.aCoords : this.oCoords;\n return getCoords(calculate ? this.calcCoords(absolute) : coords);\n },\n\n /**\n * Checks if object intersects with an area formed by 2 points\n * @param {Object} pointTL top-left point of area\n * @param {Object} pointBR bottom-right point of area\n * @param {Boolean} [absolute] use coordinates without viewportTransform\n * @param {Boolean} [calculate] use coordinates of current position instead of .oCoords\n * @return {Boolean} true if object intersects with an area formed by 2 points\n */\n intersectsWithRect: function(pointTL, pointBR, absolute, calculate) {\n var coords = this.getCoords(absolute, calculate),\n intersection = fabric.Intersection.intersectPolygonRectangle(\n coords,\n pointTL,\n pointBR\n );\n return intersection.status === 'Intersection';\n },\n\n /**\n * Checks if object intersects with another object\n * @param {Object} other Object to test\n * @param {Boolean} [absolute] use coordinates without viewportTransform\n * @param {Boolean} [calculate] use coordinates of current position instead of .oCoords\n * @return {Boolean} true if object intersects with another object\n */\n intersectsWithObject: function(other, absolute, calculate) {\n var intersection = fabric.Intersection.intersectPolygonPolygon(\n this.getCoords(absolute, calculate),\n other.getCoords(absolute, calculate)\n );\n\n return intersection.status === 'Intersection'\n || other.isContainedWithinObject(this, absolute, calculate)\n || this.isContainedWithinObject(other, absolute, calculate);\n },\n\n /**\n * Checks if object is fully contained within area of another object\n * @param {Object} other Object to test\n * @param {Boolean} [absolute] use coordinates without viewportTransform\n * @param {Boolean} [calculate] use coordinates of current position instead of .oCoords\n * @return {Boolean} true if object is fully contained within area of another object\n */\n isContainedWithinObject: function(other, absolute, calculate) {\n var points = this.getCoords(absolute, calculate),\n i = 0, lines = other._getImageLines(\n calculate ? other.calcCoords(absolute) : absolute ? other.aCoords : other.oCoords\n );\n for (; i < 4; i++) {\n if (!other.containsPoint(points[i], lines)) {\n return false;\n }\n }\n return true;\n },\n\n /**\n * Checks if object is fully contained within area formed by 2 points\n * @param {Object} pointTL top-left point of area\n * @param {Object} pointBR bottom-right point of area\n * @param {Boolean} [absolute] use coordinates without viewportTransform\n * @param {Boolean} [calculate] use coordinates of current position instead of .oCoords\n * @return {Boolean} true if object is fully contained within area formed by 2 points\n */\n isContainedWithinRect: function(pointTL, pointBR, absolute, calculate) {\n var boundingRect = this.getBoundingRect(absolute, calculate);\n\n return (\n boundingRect.left >= pointTL.x &&\n boundingRect.left + boundingRect.width <= pointBR.x &&\n boundingRect.top >= pointTL.y &&\n boundingRect.top + boundingRect.height <= pointBR.y\n );\n },\n\n /**\n * Checks if point is inside the object\n * @param {fabric.Point} point Point to check against\n * @param {Object} [lines] object returned from @method _getImageLines\n * @param {Boolean} [absolute] use coordinates without viewportTransform\n * @param {Boolean} [calculate] use coordinates of current position instead of .oCoords\n * @return {Boolean} true if point is inside the object\n */\n containsPoint: function(point, lines, absolute, calculate) {\n var lines = lines || this._getImageLines(\n calculate ? this.calcCoords(absolute) : absolute ? this.aCoords : this.oCoords\n ),\n xPoints = this._findCrossPoints(point, lines);\n\n // if xPoints is odd then point is inside the object\n return (xPoints !== 0 && xPoints % 2 === 1);\n },\n\n /**\n * Checks if object is contained within the canvas with current viewportTransform\n * the check is done stopping at first point that appears on screen\n * @param {Boolean} [calculate] use coordinates of current position instead of .aCoords\n * @return {Boolean} true if object is fully or partially contained within canvas\n */\n isOnScreen: function(calculate) {\n if (!this.canvas) {\n return false;\n }\n var pointTL = this.canvas.vptCoords.tl, pointBR = this.canvas.vptCoords.br;\n var points = this.getCoords(true, calculate), point;\n for (var i = 0; i < 4; i++) {\n point = points[i];\n if (point.x <= pointBR.x && point.x >= pointTL.x && point.y <= pointBR.y && point.y >= pointTL.y) {\n return true;\n }\n }\n // no points on screen, check intersection with absolute coordinates\n if (this.intersectsWithRect(pointTL, pointBR, true, calculate)) {\n return true;\n }\n return this._containsCenterOfCanvas(pointTL, pointBR, calculate);\n },\n\n /**\n * Checks if the object contains the midpoint between canvas extremities\n * Does not make sense outside the context of isOnScreen and isPartiallyOnScreen\n * @private\n * @param {Fabric.Point} pointTL Top Left point\n * @param {Fabric.Point} pointBR Top Right point\n * @param {Boolean} calculate use coordinates of current position instead of .oCoords\n * @return {Boolean} true if the objects containe the point\n */\n _containsCenterOfCanvas: function(pointTL, pointBR, calculate) {\n // worst case scenario the object is so big that contains the screen\n var centerPoint = { x: (pointTL.x + pointBR.x) / 2, y: (pointTL.y + pointBR.y) / 2 };\n if (this.containsPoint(centerPoint, null, true, calculate)) {\n return true;\n }\n return false;\n },\n\n /**\n * Checks if object is partially contained within the canvas with current viewportTransform\n * @param {Boolean} [calculate] use coordinates of current position instead of .oCoords\n * @return {Boolean} true if object is partially contained within canvas\n */\n isPartiallyOnScreen: function(calculate) {\n if (!this.canvas) {\n return false;\n }\n var pointTL = this.canvas.vptCoords.tl, pointBR = this.canvas.vptCoords.br;\n if (this.intersectsWithRect(pointTL, pointBR, true, calculate)) {\n return true;\n }\n return this._containsCenterOfCanvas(pointTL, pointBR, calculate);\n },\n\n /**\n * Method that returns an object with the object edges in it, given the coordinates of the corners\n * @private\n * @param {Object} oCoords Coordinates of the object corners\n */\n _getImageLines: function(oCoords) {\n return {\n topline: {\n o: oCoords.tl,\n d: oCoords.tr\n },\n rightline: {\n o: oCoords.tr,\n d: oCoords.br\n },\n bottomline: {\n o: oCoords.br,\n d: oCoords.bl\n },\n leftline: {\n o: oCoords.bl,\n d: oCoords.tl\n }\n };\n },\n\n /**\n * Helper method to determine how many cross points are between the 4 object edges\n * and the horizontal line determined by a point on canvas\n * @private\n * @param {fabric.Point} point Point to check\n * @param {Object} lines Coordinates of the object being evaluated\n */\n // remove yi, not used but left code here just in case.\n _findCrossPoints: function(point, lines) {\n var b1, b2, a1, a2, xi, // yi,\n xcount = 0,\n iLine;\n\n for (var lineKey in lines) {\n iLine = lines[lineKey];\n // optimisation 1: line below point. no cross\n if ((iLine.o.y < point.y) && (iLine.d.y < point.y)) {\n continue;\n }\n // optimisation 2: line above point. no cross\n if ((iLine.o.y >= point.y) && (iLine.d.y >= point.y)) {\n continue;\n }\n // optimisation 3: vertical line case\n if ((iLine.o.x === iLine.d.x) && (iLine.o.x >= point.x)) {\n xi = iLine.o.x;\n // yi = point.y;\n }\n // calculate the intersection point\n else {\n b1 = 0;\n b2 = (iLine.d.y - iLine.o.y) / (iLine.d.x - iLine.o.x);\n a1 = point.y - b1 * point.x;\n a2 = iLine.o.y - b2 * iLine.o.x;\n\n xi = -(a1 - a2) / (b1 - b2);\n // yi = a1 + b1 * xi;\n }\n // dont count xi < point.x cases\n if (xi >= point.x) {\n xcount += 1;\n }\n // optimisation 4: specific for square images\n if (xcount === 2) {\n break;\n }\n }\n return xcount;\n },\n\n /**\n * Returns coordinates of object's bounding rectangle (left, top, width, height)\n * the box is intented as aligned to axis of canvas.\n * @param {Boolean} [absolute] use coordinates without viewportTransform\n * @param {Boolean} [calculate] use coordinates of current position instead of .oCoords / .aCoords\n * @return {Object} Object with left, top, width, height properties\n */\n getBoundingRect: function(absolute, calculate) {\n var coords = this.getCoords(absolute, calculate);\n return fabric.util.makeBoundingBoxFromPoints(coords);\n },\n\n /**\n * Returns width of an object bounding box counting transformations\n * before 2.0 it was named getWidth();\n * @return {Number} width value\n */\n getScaledWidth: function() {\n return this._getTransformedDimensions().x;\n },\n\n /**\n * Returns height of an object bounding box counting transformations\n * before 2.0 it was named getHeight();\n * @return {Number} height value\n */\n getScaledHeight: function() {\n return this._getTransformedDimensions().y;\n },\n\n /**\n * Makes sure the scale is valid and modifies it if necessary\n * @private\n * @param {Number} value\n * @return {Number}\n */\n _constrainScale: function(value) {\n if (Math.abs(value) < this.minScaleLimit) {\n if (value < 0) {\n return -this.minScaleLimit;\n }\n else {\n return this.minScaleLimit;\n }\n }\n else if (value === 0) {\n return 0.0001;\n }\n return value;\n },\n\n /**\n * Scales an object (equally by x and y)\n * @param {Number} value Scale factor\n * @return {fabric.Object} thisArg\n * @chainable\n */\n scale: function(value) {\n this._set('scaleX', value);\n this._set('scaleY', value);\n return this.setCoords();\n },\n\n /**\n * Scales an object to a given width, with respect to bounding box (scaling by x/y equally)\n * @param {Number} value New width value\n * @param {Boolean} absolute ignore viewport\n * @return {fabric.Object} thisArg\n * @chainable\n */\n scaleToWidth: function(value, absolute) {\n // adjust to bounding rect factor so that rotated shapes would fit as well\n var boundingRectFactor = this.getBoundingRect(absolute).width / this.getScaledWidth();\n return this.scale(value / this.width / boundingRectFactor);\n },\n\n /**\n * Scales an object to a given height, with respect to bounding box (scaling by x/y equally)\n * @param {Number} value New height value\n * @param {Boolean} absolute ignore viewport\n * @return {fabric.Object} thisArg\n * @chainable\n */\n scaleToHeight: function(value, absolute) {\n // adjust to bounding rect factor so that rotated shapes would fit as well\n var boundingRectFactor = this.getBoundingRect(absolute).height / this.getScaledHeight();\n return this.scale(value / this.height / boundingRectFactor);\n },\n\n /**\n * Calculate and returns the .coords of an object.\n * @return {Object} Object with tl, tr, br, bl ....\n * @chainable\n */\n calcCoords: function(absolute) {\n var rotateMatrix = this._calcRotateMatrix(),\n translateMatrix = this._calcTranslateMatrix(),\n startMatrix = multiplyMatrices(translateMatrix, rotateMatrix),\n vpt = this.getViewportTransform(),\n finalMatrix = absolute ? startMatrix : multiplyMatrices(vpt, startMatrix),\n dim = this._getTransformedDimensions(),\n w = dim.x / 2, h = dim.y / 2,\n tl = transformPoint({ x: -w, y: -h }, finalMatrix),\n tr = transformPoint({ x: w, y: -h }, finalMatrix),\n bl = transformPoint({ x: -w, y: h }, finalMatrix),\n br = transformPoint({ x: w, y: h }, finalMatrix);\n if (!absolute) {\n var padding = this.padding, angle = degreesToRadians(this.angle),\n cos = fabric.util.cos(angle), sin = fabric.util.sin(angle),\n cosP = cos * padding, sinP = sin * padding, cosPSinP = cosP + sinP,\n cosPMinusSinP = cosP - sinP;\n if (padding) {\n tl.x -= cosPMinusSinP;\n tl.y -= cosPSinP;\n tr.x += cosPSinP;\n tr.y -= cosPMinusSinP;\n bl.x -= cosPSinP;\n bl.y += cosPMinusSinP;\n br.x += cosPMinusSinP;\n br.y += cosPSinP;\n }\n var ml = new fabric.Point((tl.x + bl.x) / 2, (tl.y + bl.y) / 2),\n mt = new fabric.Point((tr.x + tl.x) / 2, (tr.y + tl.y) / 2),\n mr = new fabric.Point((br.x + tr.x) / 2, (br.y + tr.y) / 2),\n mb = new fabric.Point((br.x + bl.x) / 2, (br.y + bl.y) / 2),\n mtr = new fabric.Point(mt.x + sin * this.rotatingPointOffset, mt.y - cos * this.rotatingPointOffset);\n }\n\n // if (!absolute) {\n // var canvas = this.canvas;\n // setTimeout(function() {\n // canvas.contextTop.clearRect(0, 0, 700, 700);\n // canvas.contextTop.fillStyle = 'green';\n // canvas.contextTop.fillRect(mb.x, mb.y, 3, 3);\n // canvas.contextTop.fillRect(bl.x, bl.y, 3, 3);\n // canvas.contextTop.fillRect(br.x, br.y, 3, 3);\n // canvas.contextTop.fillRect(tl.x, tl.y, 3, 3);\n // canvas.contextTop.fillRect(tr.x, tr.y, 3, 3);\n // canvas.contextTop.fillRect(ml.x, ml.y, 3, 3);\n // canvas.contextTop.fillRect(mr.x, mr.y, 3, 3);\n // canvas.contextTop.fillRect(mt.x, mt.y, 3, 3);\n // canvas.contextTop.fillRect(mtr.x, mtr.y, 3, 3);\n // }, 50);\n // }\n\n var coords = {\n // corners\n tl: tl, tr: tr, br: br, bl: bl,\n };\n if (!absolute) {\n // middle\n coords.ml = ml;\n coords.mt = mt;\n coords.mr = mr;\n coords.mb = mb;\n // rotating point\n coords.mtr = mtr;\n }\n return coords;\n },\n\n /**\n * Sets corner position coordinates based on current angle, width and height.\n * See {@link https://github.com/kangax/fabric.js/wiki/When-to-call-setCoords|When-to-call-setCoords}\n * @param {Boolean} [ignoreZoom] set oCoords with or without the viewport transform.\n * @param {Boolean} [skipAbsolute] skip calculation of aCoords, usefull in setViewportTransform\n * @return {fabric.Object} thisArg\n * @chainable\n */\n setCoords: function(ignoreZoom, skipAbsolute) {\n this.oCoords = this.calcCoords(ignoreZoom);\n if (!skipAbsolute) {\n this.aCoords = this.calcCoords(true);\n }\n\n // set coordinates of the draggable boxes in the corners used to scale/rotate the image\n ignoreZoom || (this._setCornerCoords && this._setCornerCoords());\n\n return this;\n },\n\n /**\n * calculate rotation matrix of an object\n * @return {Array} rotation matrix for the object\n */\n _calcRotateMatrix: function() {\n if (this.angle) {\n var theta = degreesToRadians(this.angle), cos = fabric.util.cos(theta), sin = fabric.util.sin(theta);\n return [cos, sin, -sin, cos, 0, 0];\n }\n return fabric.iMatrix.concat();\n },\n\n /**\n * calculate the translation matrix for an object transform\n * @return {Array} rotation matrix for the object\n */\n _calcTranslateMatrix: function() {\n var center = this.getCenterPoint();\n return [1, 0, 0, 1, center.x, center.y];\n },\n\n transformMatrixKey: function(skipGroup) {\n var sep = '_', prefix = '';\n if (!skipGroup && this.group) {\n prefix = this.group.transformMatrixKey(skipGroup) + sep;\n };\n return prefix + this.top + sep + this.left + sep + this.scaleX + sep + this.scaleY +\n sep + this.skewX + sep + this.skewY + sep + this.angle + sep + this.originX + sep + this.originY +\n sep + this.width + sep + this.height + sep + this.strokeWidth + this.flipX + this.flipY;\n },\n\n /**\n * calculate trasform Matrix that represent current transformation from\n * object properties.\n * @param {Boolean} [skipGroup] return transformMatrix for object and not go upward with parents\n * @return {Array} matrix Transform Matrix for the object\n */\n calcTransformMatrix: function(skipGroup) {\n if (skipGroup) {\n return this.calcOwnMatrix();\n }\n var key = this.transformMatrixKey(), cache = this.matrixCache || (this.matrixCache = {});\n if (cache.key === key) {\n return cache.value;\n }\n var matrix = this.calcOwnMatrix();\n if (this.group) {\n matrix = multiplyMatrices(this.group.calcTransformMatrix(), matrix);\n }\n cache.key = key;\n cache.value = matrix;\n return matrix;\n },\n\n calcOwnMatrix: function() {\n var key = this.transformMatrixKey(true), cache = this.ownMatrixCache || (this.ownMatrixCache = {});\n if (cache.key === key) {\n return cache.value;\n }\n var matrix = this._calcTranslateMatrix(),\n rotateMatrix,\n dimensionMatrix = this._calcDimensionsTransformMatrix(this.skewX, this.skewY, true);\n if (this.angle) {\n rotateMatrix = this._calcRotateMatrix();\n matrix = multiplyMatrices(matrix, rotateMatrix);\n }\n matrix = multiplyMatrices(matrix, dimensionMatrix);\n cache.key = key;\n cache.value = matrix;\n return matrix;\n },\n\n _calcDimensionsTransformMatrix: function(skewX, skewY, flipping) {\n var skewMatrix,\n scaleX = this.scaleX * (flipping && this.flipX ? -1 : 1),\n scaleY = this.scaleY * (flipping && this.flipY ? -1 : 1),\n scaleMatrix = [scaleX, 0, 0, scaleY, 0, 0];\n if (skewX) {\n skewMatrix = [1, 0, Math.tan(degreesToRadians(skewX)), 1];\n scaleMatrix = multiplyMatrices(scaleMatrix, skewMatrix, true);\n }\n if (skewY) {\n skewMatrix = [1, Math.tan(degreesToRadians(skewY)), 0, 1];\n scaleMatrix = multiplyMatrices(scaleMatrix, skewMatrix, true);\n }\n return scaleMatrix;\n },\n\n\n /*\n * Calculate object dimensions from its properties\n * @private\n * @return {Object} .x width dimension\n * @return {Object} .y height dimension\n */\n _getNonTransformedDimensions: function() {\n var strokeWidth = this.strokeWidth,\n w = this.width + strokeWidth,\n h = this.height + strokeWidth;\n return { x: w, y: h };\n },\n\n /*\n * Calculate object bounding boxdimensions from its properties scale, skew.\n * @private\n * @return {Object} .x width dimension\n * @return {Object} .y height dimension\n */\n _getTransformedDimensions: function(skewX, skewY) {\n if (typeof skewX === 'undefined') {\n skewX = this.skewX;\n }\n if (typeof skewY === 'undefined') {\n skewY = this.skewY;\n }\n var dimensions = this._getNonTransformedDimensions(), dimX, dimY,\n noSkew = skewX === 0 && skewY === 0;\n\n if (this.strokeUniform) {\n dimX = this.width;\n dimY = this.height;\n }\n else {\n dimX = dimensions.x;\n dimY = dimensions.y;\n }\n if (noSkew) {\n return this._finalizeDiemensions(dimX * this.scaleX, dimY * this.scaleY);\n }\n else {\n dimX /= 2;\n dimY /= 2;\n }\n var points = [\n {\n x: -dimX,\n y: -dimY\n },\n {\n x: dimX,\n y: -dimY\n },\n {\n x: -dimX,\n y: dimY\n },\n {\n x: dimX,\n y: dimY\n }],\n i, transformMatrix = this._calcDimensionsTransformMatrix(skewX, skewY, false),\n bbox;\n for (i = 0; i < points.length; i++) {\n points[i] = fabric.util.transformPoint(points[i], transformMatrix);\n }\n bbox = fabric.util.makeBoundingBoxFromPoints(points);\n return this._finalizeDiemensions(bbox.width, bbox.height);\n },\n\n /*\n * Calculate object bounding boxdimensions from its properties scale, skew.\n * @param Number width width of the bbox\n * @param Number height height of the bbox\n * @private\n * @return {Object} .x finalized width dimension\n * @return {Object} .y finalized height dimension\n */\n _finalizeDiemensions: function(width, height) {\n return this.strokeUniform ?\n { x: width + this.strokeWidth, y: height + this.strokeWidth }\n :\n { x: width, y: height };\n },\n /*\n * Calculate object dimensions for controls. include padding and canvas zoom\n * private\n */\n _calculateCurrentDimensions: function() {\n var vpt = this.getViewportTransform(),\n dim = this._getTransformedDimensions(),\n p = fabric.util.transformPoint(dim, vpt, true);\n\n return p.scalarAdd(2 * this.padding);\n },\n });\n})();\n\n\nfabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prototype */ {\n\n /**\n * Moves an object to the bottom of the stack of drawn objects\n * @return {fabric.Object} thisArg\n * @chainable\n */\n sendToBack: function() {\n if (this.group) {\n fabric.StaticCanvas.prototype.sendToBack.call(this.group, this);\n }\n else {\n this.canvas.sendToBack(this);\n }\n return this;\n },\n\n /**\n * Moves an object to the top of the stack of drawn objects\n * @return {fabric.Object} thisArg\n * @chainable\n */\n bringToFront: function() {\n if (this.group) {\n fabric.StaticCanvas.prototype.bringToFront.call(this.group, this);\n }\n else {\n this.canvas.bringToFront(this);\n }\n return this;\n },\n\n /**\n * Moves an object down in stack of drawn objects\n * @param {Boolean} [intersecting] If `true`, send object behind next lower intersecting object\n * @return {fabric.Object} thisArg\n * @chainable\n */\n sendBackwards: function(intersecting) {\n if (this.group) {\n fabric.StaticCanvas.prototype.sendBackwards.call(this.group, this, intersecting);\n }\n else {\n this.canvas.sendBackwards(this, intersecting);\n }\n return this;\n },\n\n /**\n * Moves an object up in stack of drawn objects\n * @param {Boolean} [intersecting] If `true`, send object in front of next upper intersecting object\n * @return {fabric.Object} thisArg\n * @chainable\n */\n bringForward: function(intersecting) {\n if (this.group) {\n fabric.StaticCanvas.prototype.bringForward.call(this.group, this, intersecting);\n }\n else {\n this.canvas.bringForward(this, intersecting);\n }\n return this;\n },\n\n /**\n * Moves an object to specified level in stack of drawn objects\n * @param {Number} index New position of object\n * @return {fabric.Object} thisArg\n * @chainable\n */\n moveTo: function(index) {\n if (this.group && this.group.type !== 'activeSelection') {\n fabric.StaticCanvas.prototype.moveTo.call(this.group, this, index);\n }\n else {\n this.canvas.moveTo(this, index);\n }\n return this;\n }\n});\n\n\n/* _TO_SVG_START_ */\n(function() {\n function getSvgColorString(prop, value) {\n if (!value) {\n return prop + ': none; ';\n }\n else if (value.toLive) {\n return prop + ': url(#SVGID_' + value.id + '); ';\n }\n else {\n var color = new fabric.Color(value),\n str = prop + ': ' + color.toRgb() + '; ',\n opacity = color.getAlpha();\n if (opacity !== 1) {\n //change the color in rgb + opacity\n str += prop + '-opacity: ' + opacity.toString() + '; ';\n }\n return str;\n }\n }\n\n var toFixed = fabric.util.toFixed;\n\n fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prototype */ {\n /**\n * Returns styles-string for svg-export\n * @param {Boolean} skipShadow a boolean to skip shadow filter output\n * @return {String}\n */\n getSvgStyles: function(skipShadow) {\n\n var fillRule = this.fillRule ? this.fillRule : 'nonzero',\n strokeWidth = this.strokeWidth ? this.strokeWidth : '0',\n strokeDashArray = this.strokeDashArray ? this.strokeDashArray.join(' ') : 'none',\n strokeDashOffset = this.strokeDashOffset ? this.strokeDashOffset : '0',\n strokeLineCap = this.strokeLineCap ? this.strokeLineCap : 'butt',\n strokeLineJoin = this.strokeLineJoin ? this.strokeLineJoin : 'miter',\n strokeMiterLimit = this.strokeMiterLimit ? this.strokeMiterLimit : '4',\n opacity = typeof this.opacity !== 'undefined' ? this.opacity : '1',\n visibility = this.visible ? '' : ' visibility: hidden;',\n filter = skipShadow ? '' : this.getSvgFilter(),\n fill = getSvgColorString('fill', this.fill),\n stroke = getSvgColorString('stroke', this.stroke);\n\n return [\n stroke,\n 'stroke-width: ', strokeWidth, '; ',\n 'stroke-dasharray: ', strokeDashArray, '; ',\n 'stroke-linecap: ', strokeLineCap, '; ',\n 'stroke-dashoffset: ', strokeDashOffset, '; ',\n 'stroke-linejoin: ', strokeLineJoin, '; ',\n 'stroke-miterlimit: ', strokeMiterLimit, '; ',\n fill,\n 'fill-rule: ', fillRule, '; ',\n 'opacity: ', opacity, ';',\n filter,\n visibility\n ].join('');\n },\n\n /**\n * Returns styles-string for svg-export\n * @param {Object} style the object from which to retrieve style properties\n * @param {Boolean} useWhiteSpace a boolean to include an additional attribute in the style.\n * @return {String}\n */\n getSvgSpanStyles: function(style, useWhiteSpace) {\n var term = '; ';\n var fontFamily = style.fontFamily ?\n 'font-family: ' + (((style.fontFamily.indexOf('\\'') === -1 && style.fontFamily.indexOf('\"') === -1) ?\n '\\'' + style.fontFamily + '\\'' : style.fontFamily)) + term : '';\n var strokeWidth = style.strokeWidth ? 'stroke-width: ' + style.strokeWidth + term : '',\n fontFamily = fontFamily,\n fontSize = style.fontSize ? 'font-size: ' + style.fontSize + 'px' + term : '',\n fontStyle = style.fontStyle ? 'font-style: ' + style.fontStyle + term : '',\n fontWeight = style.fontWeight ? 'font-weight: ' + style.fontWeight + term : '',\n fill = style.fill ? getSvgColorString('fill', style.fill) : '',\n stroke = style.stroke ? getSvgColorString('stroke', style.stroke) : '',\n textDecoration = this.getSvgTextDecoration(style),\n deltaY = style.deltaY ? 'baseline-shift: ' + (-style.deltaY) + '; ' : '';\n if (textDecoration) {\n textDecoration = 'text-decoration: ' + textDecoration + term;\n }\n\n return [\n stroke,\n strokeWidth,\n fontFamily,\n fontSize,\n fontStyle,\n fontWeight,\n textDecoration,\n fill,\n deltaY,\n useWhiteSpace ? 'white-space: pre; ' : ''\n ].join('');\n },\n\n /**\n * Returns text-decoration property for svg-export\n * @param {Object} style the object from which to retrieve style properties\n * @return {String}\n */\n getSvgTextDecoration: function(style) {\n if ('overline' in style || 'underline' in style || 'linethrough' in style) {\n return (style.overline ? 'overline ' : '') +\n (style.underline ? 'underline ' : '') + (style.linethrough ? 'line-through ' : '');\n }\n return '';\n },\n\n /**\n * Returns filter for svg shadow\n * @return {String}\n */\n getSvgFilter: function() {\n return this.shadow ? 'filter: url(#SVGID_' + this.shadow.id + ');' : '';\n },\n\n /**\n * Returns id attribute for svg output\n * @return {String}\n */\n getSvgCommons: function() {\n return [\n this.id ? 'id=\"' + this.id + '\" ' : '',\n this.clipPath ? 'clip-path=\"url(#' + this.clipPath.clipPathId + ')\" ' : '',\n ].join('');\n },\n\n /**\n * Returns transform-string for svg-export\n * @param {Boolean} use the full transform or the single object one.\n * @return {String}\n */\n getSvgTransform: function(full, additionalTransform) {\n var transform = full ? this.calcTransformMatrix() : this.calcOwnMatrix(),\n svgTransform = transform.map(function(value) {\n return toFixed(value, fabric.Object.NUM_FRACTION_DIGITS);\n }).join(' ');\n return 'transform=\"matrix(' + svgTransform + ')' +\n (additionalTransform || '') + this.getSvgTransformMatrix() + '\" ';\n },\n\n /**\n * Returns transform-string for svg-export from the transform matrix of single elements\n * @return {String}\n */\n getSvgTransformMatrix: function() {\n return this.transformMatrix ? ' matrix(' + this.transformMatrix.join(' ') + ')' : '';\n },\n\n _setSVGBg: function(textBgRects) {\n if (this.backgroundColor) {\n var NUM_FRACTION_DIGITS = fabric.Object.NUM_FRACTION_DIGITS;\n textBgRects.push(\n '\\t\\t\\n');\n }\n },\n\n /**\n * Returns svg representation of an instance\n * @param {Function} [reviver] Method for further parsing of svg representation.\n * @return {String} svg representation of an instance\n */\n toSVG: function(reviver) {\n return this._createBaseSVGMarkup(this._toSVG(), { reviver: reviver });\n },\n\n /**\n * Returns svg clipPath representation of an instance\n * @param {Function} [reviver] Method for further parsing of svg representation.\n * @return {String} svg representation of an instance\n */\n toClipPathSVG: function(reviver) {\n return '\\t' + this._createBaseClipPathSVGMarkup(this._toSVG(), { reviver: reviver });\n },\n\n /**\n * @private\n */\n _createBaseClipPathSVGMarkup: function(objectMarkup, options) {\n options = options || {};\n var reviver = options.reviver,\n additionalTransform = options.additionalTransform || '',\n commonPieces = [\n this.getSvgTransform(true, additionalTransform),\n this.getSvgCommons(),\n ].join(''),\n // insert commons in the markup, style and svgCommons\n index = objectMarkup.indexOf('COMMON_PARTS');\n objectMarkup[index] = commonPieces;\n return reviver ? reviver(objectMarkup.join('')) : objectMarkup.join('');\n },\n\n /**\n * @private\n */\n _createBaseSVGMarkup: function(objectMarkup, options) {\n options = options || {};\n var noStyle = options.noStyle, withShadow = options.withShadow,\n reviver = options.reviver,\n styleInfo = noStyle ? '' : 'style=\"' + this.getSvgStyles() + '\" ',\n shadowInfo = withShadow ? 'style=\"' + this.getSvgFilter() + '\" ' : '',\n clipPath = this.clipPath,\n vectorEffect = this.strokeUniform ? 'vector-effect=\"non-scaling-stroke\" ' : '',\n absoluteClipPath = this.clipPath && this.clipPath.absolutePositioned,\n commonPieces, markup = [], clipPathMarkup,\n // insert commons in the markup, style and svgCommons\n index = objectMarkup.indexOf('COMMON_PARTS'),\n additionalTransform = options.additionalTransform;\n if (clipPath) {\n clipPath.clipPathId = 'CLIPPATH_' + fabric.Object.__uid++;\n clipPathMarkup = '\\n' +\n this.clipPath.toClipPathSVG(reviver) +\n '\\n';\n }\n if (absoluteClipPath) {\n markup.push(\n '\\n'\n );\n }\n markup.push(\n '\\n'\n );\n commonPieces = [\n styleInfo,\n vectorEffect,\n noStyle ? '' : this.addPaintOrder(), ' ',\n additionalTransform ? 'transform=\"' + additionalTransform + '\" ' : '',\n ].join('');\n objectMarkup[index] = commonPieces;\n if (this.fill && this.fill.toLive) {\n markup.push(this.fill.toSVG(this, false));\n }\n if (this.stroke && this.stroke.toLive) {\n markup.push(this.stroke.toSVG(this, false));\n }\n if (this.shadow) {\n markup.push(this.shadow.toSVG(this));\n }\n if (clipPath) {\n markup.push(clipPathMarkup);\n }\n markup.push(objectMarkup.join(''));\n markup.push('\\n');\n absoluteClipPath && markup.push('\\n');\n return reviver ? reviver(markup.join('')) : markup.join('');\n },\n\n addPaintOrder: function() {\n return this.paintFirst !== 'fill' ? ' paint-order=\"' + this.paintFirst + '\" ' : '';\n }\n });\n})();\n/* _TO_SVG_END_ */\n\n\n(function() {\n\n var extend = fabric.util.object.extend,\n originalSet = 'stateProperties';\n\n /*\n Depends on `stateProperties`\n */\n function saveProps(origin, destination, props) {\n var tmpObj = { }, deep = true;\n props.forEach(function(prop) {\n tmpObj[prop] = origin[prop];\n });\n extend(origin[destination], tmpObj, deep);\n }\n\n function _isEqual(origValue, currentValue, firstPass) {\n if (origValue === currentValue) {\n // if the objects are identical, return\n return true;\n }\n else if (Array.isArray(origValue)) {\n if (!Array.isArray(currentValue) || origValue.length !== currentValue.length) {\n return false;\n }\n for (var i = 0, len = origValue.length; i < len; i++) {\n if (!_isEqual(origValue[i], currentValue[i])) {\n return false;\n }\n }\n return true;\n }\n else if (origValue && typeof origValue === 'object') {\n var keys = Object.keys(origValue), key;\n if (!currentValue ||\n typeof currentValue !== 'object' ||\n (!firstPass && keys.length !== Object.keys(currentValue).length)\n ) {\n return false;\n }\n for (var i = 0, len = keys.length; i < len; i++) {\n key = keys[i];\n // since clipPath is in the statefull cache list and the clipPath objects\n // would be iterated as an object, this would lead to possible infinite recursion\n if (key === 'canvas') {\n continue;\n }\n if (!_isEqual(origValue[key], currentValue[key])) {\n return false;\n }\n }\n return true;\n }\n }\n\n\n fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prototype */ {\n\n /**\n * Returns true if object state (one of its state properties) was changed\n * @param {String} [propertySet] optional name for the set of property we want to save\n * @return {Boolean} true if instance' state has changed since `{@link fabric.Object#saveState}` was called\n */\n hasStateChanged: function(propertySet) {\n propertySet = propertySet || originalSet;\n var dashedPropertySet = '_' + propertySet;\n if (Object.keys(this[dashedPropertySet]).length < this[propertySet].length) {\n return true;\n }\n return !_isEqual(this[dashedPropertySet], this, true);\n },\n\n /**\n * Saves state of an object\n * @param {Object} [options] Object with additional `stateProperties` array to include when saving state\n * @return {fabric.Object} thisArg\n */\n saveState: function(options) {\n var propertySet = options && options.propertySet || originalSet,\n destination = '_' + propertySet;\n if (!this[destination]) {\n return this.setupState(options);\n }\n saveProps(this, destination, this[propertySet]);\n if (options && options.stateProperties) {\n saveProps(this, destination, options.stateProperties);\n }\n return this;\n },\n\n /**\n * Setups state of an object\n * @param {Object} [options] Object with additional `stateProperties` array to include when saving state\n * @return {fabric.Object} thisArg\n */\n setupState: function(options) {\n options = options || { };\n var propertySet = options.propertySet || originalSet;\n options.propertySet = propertySet;\n this['_' + propertySet] = { };\n this.saveState(options);\n return this;\n }\n });\n})();\n\n\n(function() {\n\n var degreesToRadians = fabric.util.degreesToRadians;\n\n fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prototype */ {\n\n /**\n * The object interactivity controls.\n * @private\n */\n _controlsVisibility: null,\n\n /**\n * Determines which corner has been clicked\n * @private\n * @param {Object} pointer The pointer indicating the mouse position\n * @return {String|Boolean} corner code (tl, tr, bl, br, etc.), or false if nothing is found\n */\n _findTargetCorner: function(pointer) {\n // objects in group, anykind, are not self modificable,\n // must not return an hovered corner.\n if (!this.hasControls || this.group || (!this.canvas || this.canvas._activeObject !== this)) {\n return false;\n }\n\n var ex = pointer.x,\n ey = pointer.y,\n xPoints,\n lines;\n this.__corner = 0;\n for (var i in this.oCoords) {\n\n if (!this.isControlVisible(i)) {\n continue;\n }\n\n if (i === 'mtr' && !this.hasRotatingPoint) {\n continue;\n }\n\n if (this.get('lockUniScaling') &&\n (i === 'mt' || i === 'mr' || i === 'mb' || i === 'ml')) {\n continue;\n }\n\n lines = this._getImageLines(this.oCoords[i].corner);\n\n // debugging\n\n // canvas.contextTop.fillRect(lines.bottomline.d.x, lines.bottomline.d.y, 2, 2);\n // canvas.contextTop.fillRect(lines.bottomline.o.x, lines.bottomline.o.y, 2, 2);\n\n // canvas.contextTop.fillRect(lines.leftline.d.x, lines.leftline.d.y, 2, 2);\n // canvas.contextTop.fillRect(lines.leftline.o.x, lines.leftline.o.y, 2, 2);\n\n // canvas.contextTop.fillRect(lines.topline.d.x, lines.topline.d.y, 2, 2);\n // canvas.contextTop.fillRect(lines.topline.o.x, lines.topline.o.y, 2, 2);\n\n // canvas.contextTop.fillRect(lines.rightline.d.x, lines.rightline.d.y, 2, 2);\n // canvas.contextTop.fillRect(lines.rightline.o.x, lines.rightline.o.y, 2, 2);\n\n xPoints = this._findCrossPoints({ x: ex, y: ey }, lines);\n if (xPoints !== 0 && xPoints % 2 === 1) {\n this.__corner = i;\n return i;\n }\n }\n return false;\n },\n\n /**\n * Sets the coordinates of the draggable boxes in the corners of\n * the image used to scale/rotate it.\n * @private\n */\n _setCornerCoords: function() {\n var coords = this.oCoords,\n newTheta = degreesToRadians(45 - this.angle),\n /* Math.sqrt(2 * Math.pow(this.cornerSize, 2)) / 2, */\n /* 0.707106 stands for sqrt(2)/2 */\n cornerHypotenuse = this.cornerSize * 0.707106,\n cosHalfOffset = cornerHypotenuse * fabric.util.cos(newTheta),\n sinHalfOffset = cornerHypotenuse * fabric.util.sin(newTheta),\n x, y;\n\n for (var point in coords) {\n x = coords[point].x;\n y = coords[point].y;\n coords[point].corner = {\n tl: {\n x: x - sinHalfOffset,\n y: y - cosHalfOffset\n },\n tr: {\n x: x + cosHalfOffset,\n y: y - sinHalfOffset\n },\n bl: {\n x: x - cosHalfOffset,\n y: y + sinHalfOffset\n },\n br: {\n x: x + sinHalfOffset,\n y: y + cosHalfOffset\n }\n };\n }\n },\n\n /**\n * Draws a colored layer behind the object, inside its selection borders.\n * Requires public options: padding, selectionBackgroundColor\n * this function is called when the context is transformed\n * has checks to be skipped when the object is on a staticCanvas\n * @param {CanvasRenderingContext2D} ctx Context to draw on\n * @return {fabric.Object} thisArg\n * @chainable\n */\n drawSelectionBackground: function(ctx) {\n if (!this.selectionBackgroundColor ||\n (this.canvas && !this.canvas.interactive) ||\n (this.canvas && this.canvas._activeObject !== this)\n ) {\n return this;\n }\n ctx.save();\n var center = this.getCenterPoint(), wh = this._calculateCurrentDimensions(),\n vpt = this.canvas.viewportTransform;\n ctx.translate(center.x, center.y);\n ctx.scale(1 / vpt[0], 1 / vpt[3]);\n ctx.rotate(degreesToRadians(this.angle));\n ctx.fillStyle = this.selectionBackgroundColor;\n ctx.fillRect(-wh.x / 2, -wh.y / 2, wh.x, wh.y);\n ctx.restore();\n return this;\n },\n\n /**\n * Draws borders of an object's bounding box.\n * Requires public properties: width, height\n * Requires public options: padding, borderColor\n * @param {CanvasRenderingContext2D} ctx Context to draw on\n * @param {Object} styleOverride object to override the object style\n * @return {fabric.Object} thisArg\n * @chainable\n */\n drawBorders: function(ctx, styleOverride) {\n styleOverride = styleOverride || {};\n var wh = this._calculateCurrentDimensions(),\n strokeWidth = 1 / this.borderScaleFactor,\n width = wh.x + strokeWidth,\n height = wh.y + strokeWidth,\n drawRotatingPoint = typeof styleOverride.hasRotatingPoint !== 'undefined' ?\n styleOverride.hasRotatingPoint : this.hasRotatingPoint,\n hasControls = typeof styleOverride.hasControls !== 'undefined' ?\n styleOverride.hasControls : this.hasControls,\n rotatingPointOffset = typeof styleOverride.rotatingPointOffset !== 'undefined' ?\n styleOverride.rotatingPointOffset : this.rotatingPointOffset;\n\n ctx.save();\n ctx.strokeStyle = styleOverride.borderColor || this.borderColor;\n this._setLineDash(ctx, styleOverride.borderDashArray || this.borderDashArray, null);\n\n ctx.strokeRect(\n -width / 2,\n -height / 2,\n width,\n height\n );\n\n if (drawRotatingPoint && this.isControlVisible('mtr') && hasControls) {\n\n var rotateHeight = -height / 2;\n\n ctx.beginPath();\n ctx.moveTo(0, rotateHeight);\n ctx.lineTo(0, rotateHeight - rotatingPointOffset);\n ctx.stroke();\n }\n\n ctx.restore();\n return this;\n },\n\n /**\n * Draws borders of an object's bounding box when it is inside a group.\n * Requires public properties: width, height\n * Requires public options: padding, borderColor\n * @param {CanvasRenderingContext2D} ctx Context to draw on\n * @param {object} options object representing current object parameters\n * @param {Object} styleOverride object to override the object style\n * @return {fabric.Object} thisArg\n * @chainable\n */\n drawBordersInGroup: function(ctx, options, styleOverride) {\n styleOverride = styleOverride || {};\n var p = this._getNonTransformedDimensions(),\n matrix = fabric.util.customTransformMatrix(options.scaleX, options.scaleY, options.skewX),\n wh = fabric.util.transformPoint(p, matrix),\n strokeWidth = 1 / this.borderScaleFactor,\n width = wh.x + strokeWidth,\n height = wh.y + strokeWidth;\n\n ctx.save();\n this._setLineDash(ctx, styleOverride.borderDashArray || this.borderDashArray, null);\n ctx.strokeStyle = styleOverride.borderColor || this.borderColor;\n\n ctx.strokeRect(\n -width / 2,\n -height / 2,\n width,\n height\n );\n\n ctx.restore();\n return this;\n },\n\n /**\n * Draws corners of an object's bounding box.\n * Requires public properties: width, height\n * Requires public options: cornerSize, padding\n * @param {CanvasRenderingContext2D} ctx Context to draw on\n * @param {Object} styleOverride object to override the object style\n * @return {fabric.Object} thisArg\n * @chainable\n */\n drawControls: function(ctx, styleOverride) {\n styleOverride = styleOverride || {};\n var wh = this._calculateCurrentDimensions(),\n width = wh.x,\n height = wh.y,\n scaleOffset = styleOverride.cornerSize || this.cornerSize,\n left = -(width + scaleOffset) / 2,\n top = -(height + scaleOffset) / 2,\n transparentCorners = typeof styleOverride.transparentCorners !== 'undefined' ?\n styleOverride.transparentCorners : this.transparentCorners,\n hasRotatingPoint = typeof styleOverride.hasRotatingPoint !== 'undefined' ?\n styleOverride.hasRotatingPoint : this.hasRotatingPoint,\n methodName = transparentCorners ? 'stroke' : 'fill';\n\n ctx.save();\n ctx.strokeStyle = ctx.fillStyle = styleOverride.cornerColor || this.cornerColor;\n if (!this.transparentCorners) {\n ctx.strokeStyle = styleOverride.cornerStrokeColor || this.cornerStrokeColor;\n }\n this._setLineDash(ctx, styleOverride.cornerDashArray || this.cornerDashArray, null);\n\n // top-left\n this._drawControl('tl', ctx, methodName,\n left,\n top, styleOverride);\n\n // top-right\n this._drawControl('tr', ctx, methodName,\n left + width,\n top, styleOverride);\n\n // bottom-left\n this._drawControl('bl', ctx, methodName,\n left,\n top + height, styleOverride);\n\n // bottom-right\n this._drawControl('br', ctx, methodName,\n left + width,\n top + height, styleOverride);\n\n if (!this.get('lockUniScaling')) {\n\n // middle-top\n this._drawControl('mt', ctx, methodName,\n left + width / 2,\n top, styleOverride);\n\n // middle-bottom\n this._drawControl('mb', ctx, methodName,\n left + width / 2,\n top + height, styleOverride);\n\n // middle-right\n this._drawControl('mr', ctx, methodName,\n left + width,\n top + height / 2, styleOverride);\n\n // middle-left\n this._drawControl('ml', ctx, methodName,\n left,\n top + height / 2, styleOverride);\n }\n\n // middle-top-rotate\n if (hasRotatingPoint) {\n this._drawControl('mtr', ctx, methodName,\n left + width / 2,\n top - this.rotatingPointOffset, styleOverride);\n }\n\n ctx.restore();\n\n return this;\n },\n\n /**\n * @private\n */\n _drawControl: function(control, ctx, methodName, left, top, styleOverride) {\n styleOverride = styleOverride || {};\n if (!this.isControlVisible(control)) {\n return;\n }\n var size = this.cornerSize, stroke = !this.transparentCorners && this.cornerStrokeColor;\n switch (styleOverride.cornerStyle || this.cornerStyle) {\n case 'circle':\n ctx.beginPath();\n ctx.arc(left + size / 2, top + size / 2, size / 2, 0, 2 * Math.PI, false);\n ctx[methodName]();\n if (stroke) {\n ctx.stroke();\n }\n break;\n default:\n this.transparentCorners || ctx.clearRect(left, top, size, size);\n ctx[methodName + 'Rect'](left, top, size, size);\n if (stroke) {\n ctx.strokeRect(left, top, size, size);\n }\n }\n },\n\n /**\n * Returns true if the specified control is visible, false otherwise.\n * @param {String} controlName The name of the control. Possible values are 'tl', 'tr', 'br', 'bl', 'ml', 'mt', 'mr', 'mb', 'mtr'.\n * @returns {Boolean} true if the specified control is visible, false otherwise\n */\n isControlVisible: function(controlName) {\n return this._getControlsVisibility()[controlName];\n },\n\n /**\n * Sets the visibility of the specified control.\n * @param {String} controlName The name of the control. Possible values are 'tl', 'tr', 'br', 'bl', 'ml', 'mt', 'mr', 'mb', 'mtr'.\n * @param {Boolean} visible true to set the specified control visible, false otherwise\n * @return {fabric.Object} thisArg\n * @chainable\n */\n setControlVisible: function(controlName, visible) {\n this._getControlsVisibility()[controlName] = visible;\n return this;\n },\n\n /**\n * Sets the visibility state of object controls.\n * @param {Object} [options] Options object\n * @param {Boolean} [options.bl] true to enable the bottom-left control, false to disable it\n * @param {Boolean} [options.br] true to enable the bottom-right control, false to disable it\n * @param {Boolean} [options.mb] true to enable the middle-bottom control, false to disable it\n * @param {Boolean} [options.ml] true to enable the middle-left control, false to disable it\n * @param {Boolean} [options.mr] true to enable the middle-right control, false to disable it\n * @param {Boolean} [options.mt] true to enable the middle-top control, false to disable it\n * @param {Boolean} [options.tl] true to enable the top-left control, false to disable it\n * @param {Boolean} [options.tr] true to enable the top-right control, false to disable it\n * @param {Boolean} [options.mtr] true to enable the middle-top-rotate control, false to disable it\n * @return {fabric.Object} thisArg\n * @chainable\n */\n setControlsVisibility: function(options) {\n options || (options = { });\n\n for (var p in options) {\n this.setControlVisible(p, options[p]);\n }\n return this;\n },\n\n /**\n * Returns the instance of the control visibility set for this object.\n * @private\n * @returns {Object}\n */\n _getControlsVisibility: function() {\n if (!this._controlsVisibility) {\n this._controlsVisibility = {\n tl: true,\n tr: true,\n br: true,\n bl: true,\n ml: true,\n mt: true,\n mr: true,\n mb: true,\n mtr: true\n };\n }\n return this._controlsVisibility;\n },\n\n /**\n * This callback function is called every time _discardActiveObject or _setActiveObject\n * try to to deselect this object. If the function returns true, the process is cancelled\n * @param {Object} [options] options sent from the upper functions\n * @param {Event} [options.e] event if the process is generated by an event\n */\n onDeselect: function() {\n // implemented by sub-classes, as needed.\n },\n\n\n /**\n * This callback function is called every time _discardActiveObject or _setActiveObject\n * try to to select this object. If the function returns true, the process is cancelled\n * @param {Object} [options] options sent from the upper functions\n * @param {Event} [options.e] event if the process is generated by an event\n */\n onSelect: function() {\n // implemented by sub-classes, as needed.\n }\n });\n})();\n\n\nfabric.util.object.extend(fabric.StaticCanvas.prototype, /** @lends fabric.StaticCanvas.prototype */ {\n\n /**\n * Animation duration (in ms) for fx* methods\n * @type Number\n * @default\n */\n FX_DURATION: 500,\n\n /**\n * Centers object horizontally with animation.\n * @param {fabric.Object} object Object to center\n * @param {Object} [callbacks] Callbacks object with optional \"onComplete\" and/or \"onChange\" properties\n * @param {Function} [callbacks.onComplete] Invoked on completion\n * @param {Function} [callbacks.onChange] Invoked on every step of animation\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n fxCenterObjectH: function (object, callbacks) {\n callbacks = callbacks || { };\n\n var empty = function() { },\n onComplete = callbacks.onComplete || empty,\n onChange = callbacks.onChange || empty,\n _this = this;\n\n fabric.util.animate({\n startValue: object.left,\n endValue: this.getCenter().left,\n duration: this.FX_DURATION,\n onChange: function(value) {\n object.set('left', value);\n _this.requestRenderAll();\n onChange();\n },\n onComplete: function() {\n object.setCoords();\n onComplete();\n }\n });\n\n return this;\n },\n\n /**\n * Centers object vertically with animation.\n * @param {fabric.Object} object Object to center\n * @param {Object} [callbacks] Callbacks object with optional \"onComplete\" and/or \"onChange\" properties\n * @param {Function} [callbacks.onComplete] Invoked on completion\n * @param {Function} [callbacks.onChange] Invoked on every step of animation\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n fxCenterObjectV: function (object, callbacks) {\n callbacks = callbacks || { };\n\n var empty = function() { },\n onComplete = callbacks.onComplete || empty,\n onChange = callbacks.onChange || empty,\n _this = this;\n\n fabric.util.animate({\n startValue: object.top,\n endValue: this.getCenter().top,\n duration: this.FX_DURATION,\n onChange: function(value) {\n object.set('top', value);\n _this.requestRenderAll();\n onChange();\n },\n onComplete: function() {\n object.setCoords();\n onComplete();\n }\n });\n\n return this;\n },\n\n /**\n * Same as `fabric.Canvas#remove` but animated\n * @param {fabric.Object} object Object to remove\n * @param {Object} [callbacks] Callbacks object with optional \"onComplete\" and/or \"onChange\" properties\n * @param {Function} [callbacks.onComplete] Invoked on completion\n * @param {Function} [callbacks.onChange] Invoked on every step of animation\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n fxRemove: function (object, callbacks) {\n callbacks = callbacks || { };\n\n var empty = function() { },\n onComplete = callbacks.onComplete || empty,\n onChange = callbacks.onChange || empty,\n _this = this;\n\n fabric.util.animate({\n startValue: object.opacity,\n endValue: 0,\n duration: this.FX_DURATION,\n onChange: function(value) {\n object.set('opacity', value);\n _this.requestRenderAll();\n onChange();\n },\n onComplete: function () {\n _this.remove(object);\n onComplete();\n }\n });\n\n return this;\n }\n});\n\nfabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prototype */ {\n /**\n * Animates object's properties\n * @param {String|Object} property Property to animate (if string) or properties to animate (if object)\n * @param {Number|Object} value Value to animate property to (if string was given first) or options object\n * @return {fabric.Object} thisArg\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-2#animation}\n * @chainable\n *\n * As object — multiple properties\n *\n * object.animate({ left: ..., top: ... });\n * object.animate({ left: ..., top: ... }, { duration: ... });\n *\n * As string — one property\n *\n * object.animate('left', ...);\n * object.animate('left', { duration: ... });\n *\n */\n animate: function() {\n if (arguments[0] && typeof arguments[0] === 'object') {\n var propsToAnimate = [], prop, skipCallbacks;\n for (prop in arguments[0]) {\n propsToAnimate.push(prop);\n }\n for (var i = 0, len = propsToAnimate.length; i < len; i++) {\n prop = propsToAnimate[i];\n skipCallbacks = i !== len - 1;\n this._animate(prop, arguments[0][prop], arguments[1], skipCallbacks);\n }\n }\n else {\n this._animate.apply(this, arguments);\n }\n return this;\n },\n\n /**\n * @private\n * @param {String} property Property to animate\n * @param {String} to Value to animate to\n * @param {Object} [options] Options object\n * @param {Boolean} [skipCallbacks] When true, callbacks like onchange and oncomplete are not invoked\n */\n _animate: function(property, to, options, skipCallbacks) {\n var _this = this, propPair;\n\n to = to.toString();\n\n if (!options) {\n options = { };\n }\n else {\n options = fabric.util.object.clone(options);\n }\n\n if (~property.indexOf('.')) {\n propPair = property.split('.');\n }\n\n var currentValue = propPair\n ? this.get(propPair[0])[propPair[1]]\n : this.get(property);\n\n if (!('from' in options)) {\n options.from = currentValue;\n }\n\n if (~to.indexOf('=')) {\n to = currentValue + parseFloat(to.replace('=', ''));\n }\n else {\n to = parseFloat(to);\n }\n\n fabric.util.animate({\n startValue: options.from,\n endValue: to,\n byValue: options.by,\n easing: options.easing,\n duration: options.duration,\n abort: options.abort && function() {\n return options.abort.call(_this);\n },\n onChange: function(value, valueProgress, timeProgress) {\n if (propPair) {\n _this[propPair[0]][propPair[1]] = value;\n }\n else {\n _this.set(property, value);\n }\n if (skipCallbacks) {\n return;\n }\n options.onChange && options.onChange(value, valueProgress, timeProgress);\n },\n onComplete: function(value, valueProgress, timeProgress) {\n if (skipCallbacks) {\n return;\n }\n\n _this.setCoords();\n options.onComplete && options.onComplete(value, valueProgress, timeProgress);\n }\n });\n }\n});\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n extend = fabric.util.object.extend,\n clone = fabric.util.object.clone,\n coordProps = { x1: 1, x2: 1, y1: 1, y2: 1 },\n supportsLineDash = fabric.StaticCanvas.supports('setLineDash');\n\n if (fabric.Line) {\n fabric.warn('fabric.Line is already defined');\n return;\n }\n\n /**\n * Line class\n * @class fabric.Line\n * @extends fabric.Object\n * @see {@link fabric.Line#initialize} for constructor definition\n */\n fabric.Line = fabric.util.createClass(fabric.Object, /** @lends fabric.Line.prototype */ {\n\n /**\n * Type of an object\n * @type String\n * @default\n */\n type: 'line',\n\n /**\n * x value or first line edge\n * @type Number\n * @default\n */\n x1: 0,\n\n /**\n * y value or first line edge\n * @type Number\n * @default\n */\n y1: 0,\n\n /**\n * x value or second line edge\n * @type Number\n * @default\n */\n x2: 0,\n\n /**\n * y value or second line edge\n * @type Number\n * @default\n */\n y2: 0,\n\n cacheProperties: fabric.Object.prototype.cacheProperties.concat('x1', 'x2', 'y1', 'y2'),\n\n /**\n * Constructor\n * @param {Array} [points] Array of points\n * @param {Object} [options] Options object\n * @return {fabric.Line} thisArg\n */\n initialize: function(points, options) {\n if (!points) {\n points = [0, 0, 0, 0];\n }\n\n this.callSuper('initialize', options);\n\n this.set('x1', points[0]);\n this.set('y1', points[1]);\n this.set('x2', points[2]);\n this.set('y2', points[3]);\n\n this._setWidthHeight(options);\n },\n\n /**\n * @private\n * @param {Object} [options] Options\n */\n _setWidthHeight: function(options) {\n options || (options = { });\n\n this.width = Math.abs(this.x2 - this.x1);\n this.height = Math.abs(this.y2 - this.y1);\n\n this.left = 'left' in options\n ? options.left\n : this._getLeftToOriginX();\n\n this.top = 'top' in options\n ? options.top\n : this._getTopToOriginY();\n },\n\n /**\n * @private\n * @param {String} key\n * @param {*} value\n */\n _set: function(key, value) {\n this.callSuper('_set', key, value);\n if (typeof coordProps[key] !== 'undefined') {\n this._setWidthHeight();\n }\n return this;\n },\n\n /**\n * @private\n * @return {Number} leftToOriginX Distance from left edge of canvas to originX of Line.\n */\n _getLeftToOriginX: makeEdgeToOriginGetter(\n { // property names\n origin: 'originX',\n axis1: 'x1',\n axis2: 'x2',\n dimension: 'width'\n },\n { // possible values of origin\n nearest: 'left',\n center: 'center',\n farthest: 'right'\n }\n ),\n\n /**\n * @private\n * @return {Number} topToOriginY Distance from top edge of canvas to originY of Line.\n */\n _getTopToOriginY: makeEdgeToOriginGetter(\n { // property names\n origin: 'originY',\n axis1: 'y1',\n axis2: 'y2',\n dimension: 'height'\n },\n { // possible values of origin\n nearest: 'top',\n center: 'center',\n farthest: 'bottom'\n }\n ),\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _render: function(ctx) {\n ctx.beginPath();\n\n if (!this.strokeDashArray || this.strokeDashArray && supportsLineDash) {\n // move from center (of virtual box) to its left/top corner\n // we can't assume x1, y1 is top left and x2, y2 is bottom right\n var p = this.calcLinePoints();\n ctx.moveTo(p.x1, p.y1);\n ctx.lineTo(p.x2, p.y2);\n }\n\n ctx.lineWidth = this.strokeWidth;\n\n // TODO: test this\n // make sure setting \"fill\" changes color of a line\n // (by copying fillStyle to strokeStyle, since line is stroked, not filled)\n var origStrokeStyle = ctx.strokeStyle;\n ctx.strokeStyle = this.stroke || ctx.fillStyle;\n this.stroke && this._renderStroke(ctx);\n ctx.strokeStyle = origStrokeStyle;\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderDashedStroke: function(ctx) {\n var p = this.calcLinePoints();\n\n ctx.beginPath();\n fabric.util.drawDashedLine(ctx, p.x1, p.y1, p.x2, p.y2, this.strokeDashArray);\n ctx.closePath();\n },\n\n /**\n * This function is an helper for svg import. it returns the center of the object in the svg\n * untransformed coordinates\n * @private\n * @return {Object} center point from element coordinates\n */\n _findCenterFromElement: function() {\n return {\n x: (this.x1 + this.x2) / 2,\n y: (this.y1 + this.y2) / 2,\n };\n },\n\n /**\n * Returns object representation of an instance\n * @methd toObject\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} object representation of an instance\n */\n toObject: function(propertiesToInclude) {\n return extend(this.callSuper('toObject', propertiesToInclude), this.calcLinePoints());\n },\n\n /*\n * Calculate object dimensions from its properties\n * @private\n */\n _getNonTransformedDimensions: function() {\n var dim = this.callSuper('_getNonTransformedDimensions');\n if (this.strokeLineCap === 'butt') {\n if (this.width === 0) {\n dim.y -= this.strokeWidth;\n }\n if (this.height === 0) {\n dim.x -= this.strokeWidth;\n }\n }\n return dim;\n },\n\n /**\n * Recalculates line points given width and height\n * @private\n */\n calcLinePoints: function() {\n var xMult = this.x1 <= this.x2 ? -1 : 1,\n yMult = this.y1 <= this.y2 ? -1 : 1,\n x1 = (xMult * this.width * 0.5),\n y1 = (yMult * this.height * 0.5),\n x2 = (xMult * this.width * -0.5),\n y2 = (yMult * this.height * -0.5);\n\n return {\n x1: x1,\n x2: x2,\n y1: y1,\n y2: y2\n };\n },\n\n /* _TO_SVG_START_ */\n /**\n * Returns svg representation of an instance\n * @return {Array} an array of strings with the specific svg representation\n * of the instance\n */\n _toSVG: function() {\n var p = this.calcLinePoints();\n return [\n '\\n'\n ];\n },\n /* _TO_SVG_END_ */\n });\n\n /* _FROM_SVG_START_ */\n /**\n * List of attribute names to account for when parsing SVG element (used by {@link fabric.Line.fromElement})\n * @static\n * @memberOf fabric.Line\n * @see http://www.w3.org/TR/SVG/shapes.html#LineElement\n */\n fabric.Line.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat('x1 y1 x2 y2'.split(' '));\n\n /**\n * Returns fabric.Line instance from an SVG element\n * @static\n * @memberOf fabric.Line\n * @param {SVGElement} element Element to parse\n * @param {Object} [options] Options object\n * @param {Function} [callback] callback function invoked after parsing\n */\n fabric.Line.fromElement = function(element, callback, options) {\n options = options || { };\n var parsedAttributes = fabric.parseAttributes(element, fabric.Line.ATTRIBUTE_NAMES),\n points = [\n parsedAttributes.x1 || 0,\n parsedAttributes.y1 || 0,\n parsedAttributes.x2 || 0,\n parsedAttributes.y2 || 0\n ];\n callback(new fabric.Line(points, extend(parsedAttributes, options)));\n };\n /* _FROM_SVG_END_ */\n\n /**\n * Returns fabric.Line instance from an object representation\n * @static\n * @memberOf fabric.Line\n * @param {Object} object Object to create an instance from\n * @param {function} [callback] invoked with new instance as first argument\n */\n fabric.Line.fromObject = function(object, callback) {\n function _callback(instance) {\n delete instance.points;\n callback && callback(instance);\n };\n var options = clone(object, true);\n options.points = [object.x1, object.y1, object.x2, object.y2];\n fabric.Object._fromObject('Line', options, _callback, 'points');\n };\n\n /**\n * Produces a function that calculates distance from canvas edge to Line origin.\n */\n function makeEdgeToOriginGetter(propertyNames, originValues) {\n var origin = propertyNames.origin,\n axis1 = propertyNames.axis1,\n axis2 = propertyNames.axis2,\n dimension = propertyNames.dimension,\n nearest = originValues.nearest,\n center = originValues.center,\n farthest = originValues.farthest;\n\n return function() {\n switch (this.get(origin)) {\n case nearest:\n return Math.min(this.get(axis1), this.get(axis2));\n case center:\n return Math.min(this.get(axis1), this.get(axis2)) + (0.5 * this.get(dimension));\n case farthest:\n return Math.max(this.get(axis1), this.get(axis2));\n }\n };\n\n }\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n pi = Math.PI;\n\n if (fabric.Circle) {\n fabric.warn('fabric.Circle is already defined.');\n return;\n }\n\n /**\n * Circle class\n * @class fabric.Circle\n * @extends fabric.Object\n * @see {@link fabric.Circle#initialize} for constructor definition\n */\n fabric.Circle = fabric.util.createClass(fabric.Object, /** @lends fabric.Circle.prototype */ {\n\n /**\n * Type of an object\n * @type String\n * @default\n */\n type: 'circle',\n\n /**\n * Radius of this circle\n * @type Number\n * @default\n */\n radius: 0,\n\n /**\n * Start angle of the circle, moving clockwise\n * deprectated type, this should be in degree, this was an oversight.\n * probably will change to degrees in next major version\n * @type Number\n * @default 0\n */\n startAngle: 0,\n\n /**\n * End angle of the circle\n * deprectated type, this should be in degree, this was an oversight.\n * probably will change to degrees in next major version\n * @type Number\n * @default 2Pi\n */\n endAngle: pi * 2,\n\n cacheProperties: fabric.Object.prototype.cacheProperties.concat('radius', 'startAngle', 'endAngle'),\n\n /**\n * @private\n * @param {String} key\n * @param {*} value\n * @return {fabric.Circle} thisArg\n */\n _set: function(key, value) {\n this.callSuper('_set', key, value);\n\n if (key === 'radius') {\n this.setRadius(value);\n }\n\n return this;\n },\n\n /**\n * Returns object representation of an instance\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} object representation of an instance\n */\n toObject: function(propertiesToInclude) {\n return this.callSuper('toObject', ['radius', 'startAngle', 'endAngle'].concat(propertiesToInclude));\n },\n\n /* _TO_SVG_START_ */\n\n /**\n * Returns svg representation of an instance\n * @return {Array} an array of strings with the specific svg representation\n * of the instance\n */\n _toSVG: function() {\n var svgString, x = 0, y = 0,\n angle = (this.endAngle - this.startAngle) % ( 2 * pi);\n\n if (angle === 0) {\n svgString = [\n '\\n'\n ];\n }\n else {\n var startX = fabric.util.cos(this.startAngle) * this.radius,\n startY = fabric.util.sin(this.startAngle) * this.radius,\n endX = fabric.util.cos(this.endAngle) * this.radius,\n endY = fabric.util.sin(this.endAngle) * this.radius,\n largeFlag = angle > pi ? '1' : '0';\n svgString = [\n '\\n'\n ];\n }\n return svgString;\n },\n /* _TO_SVG_END_ */\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx context to render on\n */\n _render: function(ctx) {\n ctx.beginPath();\n ctx.arc(\n 0,\n 0,\n this.radius,\n this.startAngle,\n this.endAngle, false);\n this._renderPaintInOrder(ctx);\n },\n\n /**\n * Returns horizontal radius of an object (according to how an object is scaled)\n * @return {Number}\n */\n getRadiusX: function() {\n return this.get('radius') * this.get('scaleX');\n },\n\n /**\n * Returns vertical radius of an object (according to how an object is scaled)\n * @return {Number}\n */\n getRadiusY: function() {\n return this.get('radius') * this.get('scaleY');\n },\n\n /**\n * Sets radius of an object (and updates width accordingly)\n * @return {fabric.Circle} thisArg\n */\n setRadius: function(value) {\n this.radius = value;\n return this.set('width', value * 2).set('height', value * 2);\n },\n });\n\n /* _FROM_SVG_START_ */\n /**\n * List of attribute names to account for when parsing SVG element (used by {@link fabric.Circle.fromElement})\n * @static\n * @memberOf fabric.Circle\n * @see: http://www.w3.org/TR/SVG/shapes.html#CircleElement\n */\n fabric.Circle.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat('cx cy r'.split(' '));\n\n /**\n * Returns {@link fabric.Circle} instance from an SVG element\n * @static\n * @memberOf fabric.Circle\n * @param {SVGElement} element Element to parse\n * @param {Function} [callback] Options callback invoked after parsing is finished\n * @param {Object} [options] Options object\n * @throws {Error} If value of `r` attribute is missing or invalid\n */\n fabric.Circle.fromElement = function(element, callback) {\n var parsedAttributes = fabric.parseAttributes(element, fabric.Circle.ATTRIBUTE_NAMES);\n\n if (!isValidRadius(parsedAttributes)) {\n throw new Error('value of `r` attribute is required and can not be negative');\n }\n\n parsedAttributes.left = (parsedAttributes.left || 0) - parsedAttributes.radius;\n parsedAttributes.top = (parsedAttributes.top || 0) - parsedAttributes.radius;\n callback(new fabric.Circle(parsedAttributes));\n };\n\n /**\n * @private\n */\n function isValidRadius(attributes) {\n return (('radius' in attributes) && (attributes.radius >= 0));\n }\n /* _FROM_SVG_END_ */\n\n /**\n * Returns {@link fabric.Circle} instance from an object representation\n * @static\n * @memberOf fabric.Circle\n * @param {Object} object Object to create an instance from\n * @param {function} [callback] invoked with new instance as first argument\n * @return {Object} Instance of fabric.Circle\n */\n fabric.Circle.fromObject = function(object, callback) {\n return fabric.Object._fromObject('Circle', object, callback);\n };\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { });\n\n if (fabric.Triangle) {\n fabric.warn('fabric.Triangle is already defined');\n return;\n }\n\n /**\n * Triangle class\n * @class fabric.Triangle\n * @extends fabric.Object\n * @return {fabric.Triangle} thisArg\n * @see {@link fabric.Triangle#initialize} for constructor definition\n */\n fabric.Triangle = fabric.util.createClass(fabric.Object, /** @lends fabric.Triangle.prototype */ {\n\n /**\n * Type of an object\n * @type String\n * @default\n */\n type: 'triangle',\n\n /**\n * Width is set to 100 to compensate the old initialize code that was setting it to 100\n * @type Number\n * @default\n */\n width: 100,\n\n /**\n * Height is set to 100 to compensate the old initialize code that was setting it to 100\n * @type Number\n * @default\n */\n height: 100,\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _render: function(ctx) {\n var widthBy2 = this.width / 2,\n heightBy2 = this.height / 2;\n\n ctx.beginPath();\n ctx.moveTo(-widthBy2, heightBy2);\n ctx.lineTo(0, -heightBy2);\n ctx.lineTo(widthBy2, heightBy2);\n ctx.closePath();\n\n this._renderPaintInOrder(ctx);\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderDashedStroke: function(ctx) {\n var widthBy2 = this.width / 2,\n heightBy2 = this.height / 2;\n\n ctx.beginPath();\n fabric.util.drawDashedLine(ctx, -widthBy2, heightBy2, 0, -heightBy2, this.strokeDashArray);\n fabric.util.drawDashedLine(ctx, 0, -heightBy2, widthBy2, heightBy2, this.strokeDashArray);\n fabric.util.drawDashedLine(ctx, widthBy2, heightBy2, -widthBy2, heightBy2, this.strokeDashArray);\n ctx.closePath();\n },\n\n /* _TO_SVG_START_ */\n /**\n * Returns svg representation of an instance\n * @return {Array} an array of strings with the specific svg representation\n * of the instance\n */\n _toSVG: function() {\n var widthBy2 = this.width / 2,\n heightBy2 = this.height / 2,\n points = [\n -widthBy2 + ' ' + heightBy2,\n '0 ' + -heightBy2,\n widthBy2 + ' ' + heightBy2\n ].join(',');\n return [\n ''\n ];\n },\n /* _TO_SVG_END_ */\n });\n\n /**\n * Returns {@link fabric.Triangle} instance from an object representation\n * @static\n * @memberOf fabric.Triangle\n * @param {Object} object Object to create an instance from\n * @param {function} [callback] invoked with new instance as first argument\n */\n fabric.Triangle.fromObject = function(object, callback) {\n return fabric.Object._fromObject('Triangle', object, callback);\n };\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n piBy2 = Math.PI * 2;\n\n if (fabric.Ellipse) {\n fabric.warn('fabric.Ellipse is already defined.');\n return;\n }\n\n /**\n * Ellipse class\n * @class fabric.Ellipse\n * @extends fabric.Object\n * @return {fabric.Ellipse} thisArg\n * @see {@link fabric.Ellipse#initialize} for constructor definition\n */\n fabric.Ellipse = fabric.util.createClass(fabric.Object, /** @lends fabric.Ellipse.prototype */ {\n\n /**\n * Type of an object\n * @type String\n * @default\n */\n type: 'ellipse',\n\n /**\n * Horizontal radius\n * @type Number\n * @default\n */\n rx: 0,\n\n /**\n * Vertical radius\n * @type Number\n * @default\n */\n ry: 0,\n\n cacheProperties: fabric.Object.prototype.cacheProperties.concat('rx', 'ry'),\n\n /**\n * Constructor\n * @param {Object} [options] Options object\n * @return {fabric.Ellipse} thisArg\n */\n initialize: function(options) {\n this.callSuper('initialize', options);\n this.set('rx', options && options.rx || 0);\n this.set('ry', options && options.ry || 0);\n },\n\n /**\n * @private\n * @param {String} key\n * @param {*} value\n * @return {fabric.Ellipse} thisArg\n */\n _set: function(key, value) {\n this.callSuper('_set', key, value);\n switch (key) {\n\n case 'rx':\n this.rx = value;\n this.set('width', value * 2);\n break;\n\n case 'ry':\n this.ry = value;\n this.set('height', value * 2);\n break;\n\n }\n return this;\n },\n\n /**\n * Returns horizontal radius of an object (according to how an object is scaled)\n * @return {Number}\n */\n getRx: function() {\n return this.get('rx') * this.get('scaleX');\n },\n\n /**\n * Returns Vertical radius of an object (according to how an object is scaled)\n * @return {Number}\n */\n getRy: function() {\n return this.get('ry') * this.get('scaleY');\n },\n\n /**\n * Returns object representation of an instance\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} object representation of an instance\n */\n toObject: function(propertiesToInclude) {\n return this.callSuper('toObject', ['rx', 'ry'].concat(propertiesToInclude));\n },\n\n /* _TO_SVG_START_ */\n /**\n * Returns svg representation of an instance\n * @return {Array} an array of strings with the specific svg representation\n * of the instance\n */\n _toSVG: function() {\n return [\n '\\n'\n ];\n },\n /* _TO_SVG_END_ */\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx context to render on\n */\n _render: function(ctx) {\n ctx.beginPath();\n ctx.save();\n ctx.transform(1, 0, 0, this.ry / this.rx, 0, 0);\n ctx.arc(\n 0,\n 0,\n this.rx,\n 0,\n piBy2,\n false);\n ctx.restore();\n this._renderPaintInOrder(ctx);\n },\n });\n\n /* _FROM_SVG_START_ */\n /**\n * List of attribute names to account for when parsing SVG element (used by {@link fabric.Ellipse.fromElement})\n * @static\n * @memberOf fabric.Ellipse\n * @see http://www.w3.org/TR/SVG/shapes.html#EllipseElement\n */\n fabric.Ellipse.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat('cx cy rx ry'.split(' '));\n\n /**\n * Returns {@link fabric.Ellipse} instance from an SVG element\n * @static\n * @memberOf fabric.Ellipse\n * @param {SVGElement} element Element to parse\n * @param {Function} [callback] Options callback invoked after parsing is finished\n * @return {fabric.Ellipse}\n */\n fabric.Ellipse.fromElement = function(element, callback) {\n\n var parsedAttributes = fabric.parseAttributes(element, fabric.Ellipse.ATTRIBUTE_NAMES);\n\n parsedAttributes.left = (parsedAttributes.left || 0) - parsedAttributes.rx;\n parsedAttributes.top = (parsedAttributes.top || 0) - parsedAttributes.ry;\n callback(new fabric.Ellipse(parsedAttributes));\n };\n /* _FROM_SVG_END_ */\n\n /**\n * Returns {@link fabric.Ellipse} instance from an object representation\n * @static\n * @memberOf fabric.Ellipse\n * @param {Object} object Object to create an instance from\n * @param {function} [callback] invoked with new instance as first argument\n * @return {fabric.Ellipse}\n */\n fabric.Ellipse.fromObject = function(object, callback) {\n return fabric.Object._fromObject('Ellipse', object, callback);\n };\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n extend = fabric.util.object.extend;\n\n if (fabric.Rect) {\n fabric.warn('fabric.Rect is already defined');\n return;\n }\n\n /**\n * Rectangle class\n * @class fabric.Rect\n * @extends fabric.Object\n * @return {fabric.Rect} thisArg\n * @see {@link fabric.Rect#initialize} for constructor definition\n */\n fabric.Rect = fabric.util.createClass(fabric.Object, /** @lends fabric.Rect.prototype */ {\n\n /**\n * List of properties to consider when checking if state of an object is changed ({@link fabric.Object#hasStateChanged})\n * as well as for history (undo/redo) purposes\n * @type Array\n */\n stateProperties: fabric.Object.prototype.stateProperties.concat('rx', 'ry'),\n\n /**\n * Type of an object\n * @type String\n * @default\n */\n type: 'rect',\n\n /**\n * Horizontal border radius\n * @type Number\n * @default\n */\n rx: 0,\n\n /**\n * Vertical border radius\n * @type Number\n * @default\n */\n ry: 0,\n\n cacheProperties: fabric.Object.prototype.cacheProperties.concat('rx', 'ry'),\n\n /**\n * Constructor\n * @param {Object} [options] Options object\n * @return {Object} thisArg\n */\n initialize: function(options) {\n this.callSuper('initialize', options);\n this._initRxRy();\n },\n\n /**\n * Initializes rx/ry attributes\n * @private\n */\n _initRxRy: function() {\n if (this.rx && !this.ry) {\n this.ry = this.rx;\n }\n else if (this.ry && !this.rx) {\n this.rx = this.ry;\n }\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _render: function(ctx) {\n\n // 1x1 case (used in spray brush) optimization was removed because\n // with caching and higher zoom level this makes more damage than help\n\n var rx = this.rx ? Math.min(this.rx, this.width / 2) : 0,\n ry = this.ry ? Math.min(this.ry, this.height / 2) : 0,\n w = this.width,\n h = this.height,\n x = -this.width / 2,\n y = -this.height / 2,\n isRounded = rx !== 0 || ry !== 0,\n /* \"magic number\" for bezier approximations of arcs (http://itc.ktu.lt/itc354/Riskus354.pdf) */\n k = 1 - 0.5522847498;\n ctx.beginPath();\n\n ctx.moveTo(x + rx, y);\n\n ctx.lineTo(x + w - rx, y);\n isRounded && ctx.bezierCurveTo(x + w - k * rx, y, x + w, y + k * ry, x + w, y + ry);\n\n ctx.lineTo(x + w, y + h - ry);\n isRounded && ctx.bezierCurveTo(x + w, y + h - k * ry, x + w - k * rx, y + h, x + w - rx, y + h);\n\n ctx.lineTo(x + rx, y + h);\n isRounded && ctx.bezierCurveTo(x + k * rx, y + h, x, y + h - k * ry, x, y + h - ry);\n\n ctx.lineTo(x, y + ry);\n isRounded && ctx.bezierCurveTo(x, y + k * ry, x + k * rx, y, x + rx, y);\n\n ctx.closePath();\n\n this._renderPaintInOrder(ctx);\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderDashedStroke: function(ctx) {\n var x = -this.width / 2,\n y = -this.height / 2,\n w = this.width,\n h = this.height;\n\n ctx.beginPath();\n fabric.util.drawDashedLine(ctx, x, y, x + w, y, this.strokeDashArray);\n fabric.util.drawDashedLine(ctx, x + w, y, x + w, y + h, this.strokeDashArray);\n fabric.util.drawDashedLine(ctx, x + w, y + h, x, y + h, this.strokeDashArray);\n fabric.util.drawDashedLine(ctx, x, y + h, x, y, this.strokeDashArray);\n ctx.closePath();\n },\n\n /**\n * Returns object representation of an instance\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} object representation of an instance\n */\n toObject: function(propertiesToInclude) {\n return this.callSuper('toObject', ['rx', 'ry'].concat(propertiesToInclude));\n },\n\n /* _TO_SVG_START_ */\n /**\n * Returns svg representation of an instance\n * @return {Array} an array of strings with the specific svg representation\n * of the instance\n */\n _toSVG: function() {\n var x = -this.width / 2, y = -this.height / 2;\n return [\n '\\n'\n ];\n },\n /* _TO_SVG_END_ */\n });\n\n /* _FROM_SVG_START_ */\n /**\n * List of attribute names to account for when parsing SVG element (used by `fabric.Rect.fromElement`)\n * @static\n * @memberOf fabric.Rect\n * @see: http://www.w3.org/TR/SVG/shapes.html#RectElement\n */\n fabric.Rect.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat('x y rx ry width height'.split(' '));\n\n /**\n * Returns {@link fabric.Rect} instance from an SVG element\n * @static\n * @memberOf fabric.Rect\n * @param {SVGElement} element Element to parse\n * @param {Function} callback callback function invoked after parsing\n * @param {Object} [options] Options object\n */\n fabric.Rect.fromElement = function(element, callback, options) {\n if (!element) {\n return callback(null);\n }\n options = options || { };\n\n var parsedAttributes = fabric.parseAttributes(element, fabric.Rect.ATTRIBUTE_NAMES);\n\n parsedAttributes.left = parsedAttributes.left || 0;\n parsedAttributes.top = parsedAttributes.top || 0;\n var rect = new fabric.Rect(extend((options ? fabric.util.object.clone(options) : { }), parsedAttributes));\n rect.visible = rect.visible && rect.width > 0 && rect.height > 0;\n callback(rect);\n };\n /* _FROM_SVG_END_ */\n\n /**\n * Returns {@link fabric.Rect} instance from an object representation\n * @static\n * @memberOf fabric.Rect\n * @param {Object} object Object to create an instance from\n * @param {Function} [callback] Callback to invoke when an fabric.Rect instance is created\n */\n fabric.Rect.fromObject = function(object, callback) {\n return fabric.Object._fromObject('Rect', object, callback);\n };\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n extend = fabric.util.object.extend,\n min = fabric.util.array.min,\n max = fabric.util.array.max,\n toFixed = fabric.util.toFixed;\n\n if (fabric.Polyline) {\n fabric.warn('fabric.Polyline is already defined');\n return;\n }\n\n /**\n * Polyline class\n * @class fabric.Polyline\n * @extends fabric.Object\n * @see {@link fabric.Polyline#initialize} for constructor definition\n */\n fabric.Polyline = fabric.util.createClass(fabric.Object, /** @lends fabric.Polyline.prototype */ {\n\n /**\n * Type of an object\n * @type String\n * @default\n */\n type: 'polyline',\n\n /**\n * Points array\n * @type Array\n * @default\n */\n points: null,\n\n cacheProperties: fabric.Object.prototype.cacheProperties.concat('points'),\n\n /**\n * Constructor\n * @param {Array} points Array of points (where each point is an object with x and y)\n * @param {Object} [options] Options object\n * @return {fabric.Polyline} thisArg\n * @example\n * var poly = new fabric.Polyline([\n * { x: 10, y: 10 },\n * { x: 50, y: 30 },\n * { x: 40, y: 70 },\n * { x: 60, y: 50 },\n * { x: 100, y: 150 },\n * { x: 40, y: 100 }\n * ], {\n * stroke: 'red',\n * left: 100,\n * top: 100\n * });\n */\n initialize: function(points, options) {\n options = options || {};\n this.points = points || [];\n this.callSuper('initialize', options);\n var calcDim = this._calcDimensions();\n if (typeof options.left === 'undefined') {\n this.left = calcDim.left;\n }\n if (typeof options.top === 'undefined') {\n this.top = calcDim.top;\n }\n this.width = calcDim.width;\n this.height = calcDim.height;\n this.pathOffset = {\n x: calcDim.left + this.width / 2,\n y: calcDim.top + this.height / 2\n };\n },\n\n /**\n * Calculate the polygon min and max point from points array,\n * returning an object with left, top, widht, height to measure the\n * polygon size\n * @return {Object} object.left X coordinate of the polygon leftmost point\n * @return {Object} object.top Y coordinate of the polygon topmost point\n * @return {Object} object.width distance between X coordinates of the polygon leftmost and rightmost point\n * @return {Object} object.height distance between Y coordinates of the polygon topmost and bottommost point\n * @private\n */\n _calcDimensions: function() {\n\n var points = this.points,\n minX = min(points, 'x') || 0,\n minY = min(points, 'y') || 0,\n maxX = max(points, 'x') || 0,\n maxY = max(points, 'y') || 0,\n width = (maxX - minX),\n height = (maxY - minY);\n\n return {\n left: minX,\n top: minY,\n width: width,\n height: height\n };\n },\n\n /**\n * Returns object representation of an instance\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} Object representation of an instance\n */\n toObject: function(propertiesToInclude) {\n return extend(this.callSuper('toObject', propertiesToInclude), {\n points: this.points.concat()\n });\n },\n\n /* _TO_SVG_START_ */\n /**\n * Returns svg representation of an instance\n * @return {Array} an array of strings with the specific svg representation\n * of the instance\n */\n _toSVG: function() {\n var points = [], diffX = this.pathOffset.x, diffY = this.pathOffset.y,\n NUM_FRACTION_DIGITS = fabric.Object.NUM_FRACTION_DIGITS;\n\n for (var i = 0, len = this.points.length; i < len; i++) {\n points.push(\n toFixed(this.points[i].x - diffX, NUM_FRACTION_DIGITS), ',',\n toFixed(this.points[i].y - diffY, NUM_FRACTION_DIGITS), ' '\n );\n }\n return [\n '<' + this.type + ' ', 'COMMON_PARTS',\n 'points=\"', points.join(''),\n '\" />\\n'\n ];\n },\n /* _TO_SVG_END_ */\n\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n commonRender: function(ctx) {\n var point, len = this.points.length,\n x = this.pathOffset.x,\n y = this.pathOffset.y;\n\n if (!len || isNaN(this.points[len - 1].y)) {\n // do not draw if no points or odd points\n // NaN comes from parseFloat of a empty string in parser\n return false;\n }\n ctx.beginPath();\n ctx.moveTo(this.points[0].x - x, this.points[0].y - y);\n for (var i = 0; i < len; i++) {\n point = this.points[i];\n ctx.lineTo(point.x - x, point.y - y);\n }\n return true;\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _render: function(ctx) {\n if (!this.commonRender(ctx)) {\n return;\n }\n this._renderPaintInOrder(ctx);\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderDashedStroke: function(ctx) {\n var p1, p2;\n\n ctx.beginPath();\n for (var i = 0, len = this.points.length; i < len; i++) {\n p1 = this.points[i];\n p2 = this.points[i + 1] || p1;\n fabric.util.drawDashedLine(ctx, p1.x, p1.y, p2.x, p2.y, this.strokeDashArray);\n }\n },\n\n /**\n * Returns complexity of an instance\n * @return {Number} complexity of this instance\n */\n complexity: function() {\n return this.get('points').length;\n }\n });\n\n /* _FROM_SVG_START_ */\n /**\n * List of attribute names to account for when parsing SVG element (used by {@link fabric.Polyline.fromElement})\n * @static\n * @memberOf fabric.Polyline\n * @see: http://www.w3.org/TR/SVG/shapes.html#PolylineElement\n */\n fabric.Polyline.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat();\n\n /**\n * Returns fabric.Polyline instance from an SVG element\n * @static\n * @memberOf fabric.Polyline\n * @param {SVGElement} element Element to parser\n * @param {Function} callback callback function invoked after parsing\n * @param {Object} [options] Options object\n */\n fabric.Polyline.fromElement = function(element, callback, options) {\n if (!element) {\n return callback(null);\n }\n options || (options = { });\n\n var points = fabric.parsePointsAttribute(element.getAttribute('points')),\n parsedAttributes = fabric.parseAttributes(element, fabric.Polyline.ATTRIBUTE_NAMES);\n\n callback(new fabric.Polyline(points, fabric.util.object.extend(parsedAttributes, options)));\n };\n /* _FROM_SVG_END_ */\n\n /**\n * Returns fabric.Polyline instance from an object representation\n * @static\n * @memberOf fabric.Polyline\n * @param {Object} object Object to create an instance from\n * @param {Function} [callback] Callback to invoke when an fabric.Path instance is created\n */\n fabric.Polyline.fromObject = function(object, callback) {\n return fabric.Object._fromObject('Polyline', object, callback, 'points');\n };\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n extend = fabric.util.object.extend;\n\n if (fabric.Polygon) {\n fabric.warn('fabric.Polygon is already defined');\n return;\n }\n\n /**\n * Polygon class\n * @class fabric.Polygon\n * @extends fabric.Polyline\n * @see {@link fabric.Polygon#initialize} for constructor definition\n */\n fabric.Polygon = fabric.util.createClass(fabric.Polyline, /** @lends fabric.Polygon.prototype */ {\n\n /**\n * Type of an object\n * @type String\n * @default\n */\n type: 'polygon',\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _render: function(ctx) {\n if (!this.commonRender(ctx)) {\n return;\n }\n ctx.closePath();\n this._renderPaintInOrder(ctx);\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderDashedStroke: function(ctx) {\n this.callSuper('_renderDashedStroke', ctx);\n ctx.closePath();\n },\n });\n\n /* _FROM_SVG_START_ */\n /**\n * List of attribute names to account for when parsing SVG element (used by `fabric.Polygon.fromElement`)\n * @static\n * @memberOf fabric.Polygon\n * @see: http://www.w3.org/TR/SVG/shapes.html#PolygonElement\n */\n fabric.Polygon.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat();\n\n /**\n * Returns {@link fabric.Polygon} instance from an SVG element\n * @static\n * @memberOf fabric.Polygon\n * @param {SVGElement} element Element to parse\n * @param {Function} callback callback function invoked after parsing\n * @param {Object} [options] Options object\n */\n fabric.Polygon.fromElement = function(element, callback, options) {\n if (!element) {\n return callback(null);\n }\n\n options || (options = { });\n\n var points = fabric.parsePointsAttribute(element.getAttribute('points')),\n parsedAttributes = fabric.parseAttributes(element, fabric.Polygon.ATTRIBUTE_NAMES);\n\n callback(new fabric.Polygon(points, extend(parsedAttributes, options)));\n };\n /* _FROM_SVG_END_ */\n\n /**\n * Returns fabric.Polygon instance from an object representation\n * @static\n * @memberOf fabric.Polygon\n * @param {Object} object Object to create an instance from\n * @param {Function} [callback] Callback to invoke when an fabric.Path instance is created\n */\n fabric.Polygon.fromObject = function(object, callback) {\n return fabric.Object._fromObject('Polygon', object, callback, 'points');\n };\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n min = fabric.util.array.min,\n max = fabric.util.array.max,\n extend = fabric.util.object.extend,\n _toString = Object.prototype.toString,\n drawArc = fabric.util.drawArc,\n toFixed = fabric.util.toFixed,\n commandLengths = {\n m: 2,\n l: 2,\n h: 1,\n v: 1,\n c: 6,\n s: 4,\n q: 4,\n t: 2,\n a: 7\n },\n repeatedCommands = {\n m: 'l',\n M: 'L'\n };\n\n if (fabric.Path) {\n fabric.warn('fabric.Path is already defined');\n return;\n }\n\n /**\n * Path class\n * @class fabric.Path\n * @extends fabric.Object\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-1#path_and_pathgroup}\n * @see {@link fabric.Path#initialize} for constructor definition\n */\n fabric.Path = fabric.util.createClass(fabric.Object, /** @lends fabric.Path.prototype */ {\n\n /**\n * Type of an object\n * @type String\n * @default\n */\n type: 'path',\n\n /**\n * Array of path points\n * @type Array\n * @default\n */\n path: null,\n\n cacheProperties: fabric.Object.prototype.cacheProperties.concat('path', 'fillRule'),\n\n stateProperties: fabric.Object.prototype.stateProperties.concat('path'),\n\n /**\n * Constructor\n * @param {Array|String} path Path data (sequence of coordinates and corresponding \"command\" tokens)\n * @param {Object} [options] Options object\n * @return {fabric.Path} thisArg\n */\n initialize: function(path, options) {\n options = options || { };\n this.callSuper('initialize', options);\n\n if (!path) {\n path = [];\n }\n\n var fromArray = _toString.call(path) === '[object Array]';\n\n this.path = fromArray\n ? path\n // one of commands (m,M,l,L,q,Q,c,C,etc.) followed by non-command characters (i.e. command values)\n : path.match && path.match(/[mzlhvcsqta][^mzlhvcsqta]*/gi);\n\n if (!this.path) {\n return;\n }\n\n if (!fromArray) {\n this.path = this._parsePath();\n }\n\n this._setPositionDimensions(options);\n },\n\n /**\n * @private\n * @param {Object} options Options object\n */\n _setPositionDimensions: function(options) {\n var calcDim = this._parseDimensions();\n\n this.width = calcDim.width;\n this.height = calcDim.height;\n\n if (typeof options.left === 'undefined') {\n this.left = calcDim.left;\n }\n\n if (typeof options.top === 'undefined') {\n this.top = calcDim.top;\n }\n\n this.pathOffset = this.pathOffset || {\n x: calcDim.left + this.width / 2,\n y: calcDim.top + this.height / 2\n };\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx context to render path on\n */\n _renderPathCommands: function(ctx) {\n var current, // current instruction\n previous = null,\n subpathStartX = 0,\n subpathStartY = 0,\n x = 0, // current x\n y = 0, // current y\n controlX = 0, // current control point x\n controlY = 0, // current control point y\n tempX,\n tempY,\n l = -this.pathOffset.x,\n t = -this.pathOffset.y;\n\n ctx.beginPath();\n\n for (var i = 0, len = this.path.length; i < len; ++i) {\n\n current = this.path[i];\n\n switch (current[0]) { // first letter\n\n case 'l': // lineto, relative\n x += current[1];\n y += current[2];\n ctx.lineTo(x + l, y + t);\n break;\n\n case 'L': // lineto, absolute\n x = current[1];\n y = current[2];\n ctx.lineTo(x + l, y + t);\n break;\n\n case 'h': // horizontal lineto, relative\n x += current[1];\n ctx.lineTo(x + l, y + t);\n break;\n\n case 'H': // horizontal lineto, absolute\n x = current[1];\n ctx.lineTo(x + l, y + t);\n break;\n\n case 'v': // vertical lineto, relative\n y += current[1];\n ctx.lineTo(x + l, y + t);\n break;\n\n case 'V': // verical lineto, absolute\n y = current[1];\n ctx.lineTo(x + l, y + t);\n break;\n\n case 'm': // moveTo, relative\n x += current[1];\n y += current[2];\n subpathStartX = x;\n subpathStartY = y;\n ctx.moveTo(x + l, y + t);\n break;\n\n case 'M': // moveTo, absolute\n x = current[1];\n y = current[2];\n subpathStartX = x;\n subpathStartY = y;\n ctx.moveTo(x + l, y + t);\n break;\n\n case 'c': // bezierCurveTo, relative\n tempX = x + current[5];\n tempY = y + current[6];\n controlX = x + current[3];\n controlY = y + current[4];\n ctx.bezierCurveTo(\n x + current[1] + l, // x1\n y + current[2] + t, // y1\n controlX + l, // x2\n controlY + t, // y2\n tempX + l,\n tempY + t\n );\n x = tempX;\n y = tempY;\n break;\n\n case 'C': // bezierCurveTo, absolute\n x = current[5];\n y = current[6];\n controlX = current[3];\n controlY = current[4];\n ctx.bezierCurveTo(\n current[1] + l,\n current[2] + t,\n controlX + l,\n controlY + t,\n x + l,\n y + t\n );\n break;\n\n case 's': // shorthand cubic bezierCurveTo, relative\n\n // transform to absolute x,y\n tempX = x + current[3];\n tempY = y + current[4];\n\n if (previous[0].match(/[CcSs]/) === null) {\n // If there is no previous command or if the previous command was not a C, c, S, or s,\n // the control point is coincident with the current point\n controlX = x;\n controlY = y;\n }\n else {\n // calculate reflection of previous control points\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n }\n\n ctx.bezierCurveTo(\n controlX + l,\n controlY + t,\n x + current[1] + l,\n y + current[2] + t,\n tempX + l,\n tempY + t\n );\n // set control point to 2nd one of this command\n // \"... the first control point is assumed to be\n // the reflection of the second control point on\n // the previous command relative to the current point.\"\n controlX = x + current[1];\n controlY = y + current[2];\n\n x = tempX;\n y = tempY;\n break;\n\n case 'S': // shorthand cubic bezierCurveTo, absolute\n tempX = current[3];\n tempY = current[4];\n if (previous[0].match(/[CcSs]/) === null) {\n // If there is no previous command or if the previous command was not a C, c, S, or s,\n // the control point is coincident with the current point\n controlX = x;\n controlY = y;\n }\n else {\n // calculate reflection of previous control points\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n }\n ctx.bezierCurveTo(\n controlX + l,\n controlY + t,\n current[1] + l,\n current[2] + t,\n tempX + l,\n tempY + t\n );\n x = tempX;\n y = tempY;\n\n // set control point to 2nd one of this command\n // \"... the first control point is assumed to be\n // the reflection of the second control point on\n // the previous command relative to the current point.\"\n controlX = current[1];\n controlY = current[2];\n\n break;\n\n case 'q': // quadraticCurveTo, relative\n // transform to absolute x,y\n tempX = x + current[3];\n tempY = y + current[4];\n\n controlX = x + current[1];\n controlY = y + current[2];\n\n ctx.quadraticCurveTo(\n controlX + l,\n controlY + t,\n tempX + l,\n tempY + t\n );\n x = tempX;\n y = tempY;\n break;\n\n case 'Q': // quadraticCurveTo, absolute\n tempX = current[3];\n tempY = current[4];\n\n ctx.quadraticCurveTo(\n current[1] + l,\n current[2] + t,\n tempX + l,\n tempY + t\n );\n x = tempX;\n y = tempY;\n controlX = current[1];\n controlY = current[2];\n break;\n\n case 't': // shorthand quadraticCurveTo, relative\n\n // transform to absolute x,y\n tempX = x + current[1];\n tempY = y + current[2];\n\n if (previous[0].match(/[QqTt]/) === null) {\n // If there is no previous command or if the previous command was not a Q, q, T or t,\n // assume the control point is coincident with the current point\n controlX = x;\n controlY = y;\n }\n else {\n // calculate reflection of previous control point\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n }\n\n ctx.quadraticCurveTo(\n controlX + l,\n controlY + t,\n tempX + l,\n tempY + t\n );\n x = tempX;\n y = tempY;\n\n break;\n\n case 'T':\n tempX = current[1];\n tempY = current[2];\n\n if (previous[0].match(/[QqTt]/) === null) {\n // If there is no previous command or if the previous command was not a Q, q, T or t,\n // assume the control point is coincident with the current point\n controlX = x;\n controlY = y;\n }\n else {\n // calculate reflection of previous control point\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n }\n ctx.quadraticCurveTo(\n controlX + l,\n controlY + t,\n tempX + l,\n tempY + t\n );\n x = tempX;\n y = tempY;\n break;\n\n case 'a':\n // TODO: optimize this\n drawArc(ctx, x + l, y + t, [\n current[1],\n current[2],\n current[3],\n current[4],\n current[5],\n current[6] + x + l,\n current[7] + y + t\n ]);\n x += current[6];\n y += current[7];\n break;\n\n case 'A':\n // TODO: optimize this\n drawArc(ctx, x + l, y + t, [\n current[1],\n current[2],\n current[3],\n current[4],\n current[5],\n current[6] + l,\n current[7] + t\n ]);\n x = current[6];\n y = current[7];\n break;\n\n case 'z':\n case 'Z':\n x = subpathStartX;\n y = subpathStartY;\n ctx.closePath();\n break;\n }\n previous = current;\n }\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx context to render path on\n */\n _render: function(ctx) {\n this._renderPathCommands(ctx);\n this._renderPaintInOrder(ctx);\n },\n\n /**\n * Returns string representation of an instance\n * @return {String} string representation of an instance\n */\n toString: function() {\n return '#';\n },\n\n /**\n * Returns object representation of an instance\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} object representation of an instance\n */\n toObject: function(propertiesToInclude) {\n var o = extend(this.callSuper('toObject', propertiesToInclude), {\n path: this.path.map(function(item) { return item.slice(); }),\n top: this.top,\n left: this.left,\n });\n return o;\n },\n\n /**\n * Returns dataless object representation of an instance\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} object representation of an instance\n */\n toDatalessObject: function(propertiesToInclude) {\n var o = this.toObject(['sourcePath'].concat(propertiesToInclude));\n if (o.sourcePath) {\n delete o.path;\n }\n return o;\n },\n\n /* _TO_SVG_START_ */\n /**\n * Returns svg representation of an instance\n * @return {Array} an array of strings with the specific svg representation\n * of the instance\n */\n _toSVG: function() {\n var path = this.path.map(function(path) {\n return path.join(' ');\n }).join(' ');\n return [\n '\\n'\n ];\n },\n\n _getOffsetTransform: function() {\n var digits = fabric.Object.NUM_FRACTION_DIGITS;\n return ' translate(' + toFixed(-this.pathOffset.x, digits) + ', ' +\n toFixed(-this.pathOffset.y, digits) + ')';\n },\n\n /**\n * Returns svg clipPath representation of an instance\n * @param {Function} [reviver] Method for further parsing of svg representation.\n * @return {String} svg representation of an instance\n */\n toClipPathSVG: function(reviver) {\n var additionalTransform = this._getOffsetTransform();\n return '\\t' + this._createBaseClipPathSVGMarkup(\n this._toSVG(), { reviver: reviver, additionalTransform: additionalTransform }\n );\n },\n\n /**\n * Returns svg representation of an instance\n * @param {Function} [reviver] Method for further parsing of svg representation.\n * @return {String} svg representation of an instance\n */\n toSVG: function(reviver) {\n var additionalTransform = this._getOffsetTransform();\n return this._createBaseSVGMarkup(this._toSVG(), { reviver: reviver, additionalTransform: additionalTransform });\n },\n /* _TO_SVG_END_ */\n\n /**\n * Returns number representation of an instance complexity\n * @return {Number} complexity of this instance\n */\n complexity: function() {\n return this.path.length;\n },\n\n /**\n * @private\n */\n _parsePath: function() {\n var result = [],\n coords = [],\n currentPath,\n parsed,\n re = /([-+]?((\\d+\\.\\d+)|((\\d+)|(\\.\\d+)))(?:e[-+]?\\d+)?)/ig,\n match,\n coordsStr;\n\n for (var i = 0, coordsParsed, len = this.path.length; i < len; i++) {\n currentPath = this.path[i];\n\n coordsStr = currentPath.slice(1).trim();\n coords.length = 0;\n\n while ((match = re.exec(coordsStr))) {\n coords.push(match[0]);\n }\n\n coordsParsed = [currentPath.charAt(0)];\n\n for (var j = 0, jlen = coords.length; j < jlen; j++) {\n parsed = parseFloat(coords[j]);\n if (!isNaN(parsed)) {\n coordsParsed.push(parsed);\n }\n }\n\n var command = coordsParsed[0],\n commandLength = commandLengths[command.toLowerCase()],\n repeatedCommand = repeatedCommands[command] || command;\n\n if (coordsParsed.length - 1 > commandLength) {\n for (var k = 1, klen = coordsParsed.length; k < klen; k += commandLength) {\n result.push([command].concat(coordsParsed.slice(k, k + commandLength)));\n command = repeatedCommand;\n }\n }\n else {\n result.push(coordsParsed);\n }\n }\n\n return result;\n },\n\n /**\n * @private\n */\n _parseDimensions: function() {\n\n var aX = [],\n aY = [],\n current, // current instruction\n previous = null,\n subpathStartX = 0,\n subpathStartY = 0,\n x = 0, // current x\n y = 0, // current y\n controlX = 0, // current control point x\n controlY = 0, // current control point y\n tempX,\n tempY,\n bounds;\n\n for (var i = 0, len = this.path.length; i < len; ++i) {\n\n current = this.path[i];\n\n switch (current[0]) { // first letter\n\n case 'l': // lineto, relative\n x += current[1];\n y += current[2];\n bounds = [];\n break;\n\n case 'L': // lineto, absolute\n x = current[1];\n y = current[2];\n bounds = [];\n break;\n\n case 'h': // horizontal lineto, relative\n x += current[1];\n bounds = [];\n break;\n\n case 'H': // horizontal lineto, absolute\n x = current[1];\n bounds = [];\n break;\n\n case 'v': // vertical lineto, relative\n y += current[1];\n bounds = [];\n break;\n\n case 'V': // verical lineto, absolute\n y = current[1];\n bounds = [];\n break;\n\n case 'm': // moveTo, relative\n x += current[1];\n y += current[2];\n subpathStartX = x;\n subpathStartY = y;\n bounds = [];\n break;\n\n case 'M': // moveTo, absolute\n x = current[1];\n y = current[2];\n subpathStartX = x;\n subpathStartY = y;\n bounds = [];\n break;\n\n case 'c': // bezierCurveTo, relative\n tempX = x + current[5];\n tempY = y + current[6];\n controlX = x + current[3];\n controlY = y + current[4];\n bounds = fabric.util.getBoundsOfCurve(x, y,\n x + current[1], // x1\n y + current[2], // y1\n controlX, // x2\n controlY, // y2\n tempX,\n tempY\n );\n x = tempX;\n y = tempY;\n break;\n\n case 'C': // bezierCurveTo, absolute\n controlX = current[3];\n controlY = current[4];\n bounds = fabric.util.getBoundsOfCurve(x, y,\n current[1],\n current[2],\n controlX,\n controlY,\n current[5],\n current[6]\n );\n x = current[5];\n y = current[6];\n break;\n\n case 's': // shorthand cubic bezierCurveTo, relative\n\n // transform to absolute x,y\n tempX = x + current[3];\n tempY = y + current[4];\n\n if (previous[0].match(/[CcSs]/) === null) {\n // If there is no previous command or if the previous command was not a C, c, S, or s,\n // the control point is coincident with the current point\n controlX = x;\n controlY = y;\n }\n else {\n // calculate reflection of previous control points\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n }\n\n bounds = fabric.util.getBoundsOfCurve(x, y,\n controlX,\n controlY,\n x + current[1],\n y + current[2],\n tempX,\n tempY\n );\n // set control point to 2nd one of this command\n // \"... the first control point is assumed to be\n // the reflection of the second control point on\n // the previous command relative to the current point.\"\n controlX = x + current[1];\n controlY = y + current[2];\n x = tempX;\n y = tempY;\n break;\n\n case 'S': // shorthand cubic bezierCurveTo, absolute\n tempX = current[3];\n tempY = current[4];\n if (previous[0].match(/[CcSs]/) === null) {\n // If there is no previous command or if the previous command was not a C, c, S, or s,\n // the control point is coincident with the current point\n controlX = x;\n controlY = y;\n }\n else {\n // calculate reflection of previous control points\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n }\n bounds = fabric.util.getBoundsOfCurve(x, y,\n controlX,\n controlY,\n current[1],\n current[2],\n tempX,\n tempY\n );\n x = tempX;\n y = tempY;\n // set control point to 2nd one of this command\n // \"... the first control point is assumed to be\n // the reflection of the second control point on\n // the previous command relative to the current point.\"\n controlX = current[1];\n controlY = current[2];\n break;\n\n case 'q': // quadraticCurveTo, relative\n // transform to absolute x,y\n tempX = x + current[3];\n tempY = y + current[4];\n controlX = x + current[1];\n controlY = y + current[2];\n bounds = fabric.util.getBoundsOfCurve(x, y,\n controlX,\n controlY,\n controlX,\n controlY,\n tempX,\n tempY\n );\n x = tempX;\n y = tempY;\n break;\n\n case 'Q': // quadraticCurveTo, absolute\n controlX = current[1];\n controlY = current[2];\n bounds = fabric.util.getBoundsOfCurve(x, y,\n controlX,\n controlY,\n controlX,\n controlY,\n current[3],\n current[4]\n );\n x = current[3];\n y = current[4];\n break;\n\n case 't': // shorthand quadraticCurveTo, relative\n // transform to absolute x,y\n tempX = x + current[1];\n tempY = y + current[2];\n if (previous[0].match(/[QqTt]/) === null) {\n // If there is no previous command or if the previous command was not a Q, q, T or t,\n // assume the control point is coincident with the current point\n controlX = x;\n controlY = y;\n }\n else {\n // calculate reflection of previous control point\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n }\n\n bounds = fabric.util.getBoundsOfCurve(x, y,\n controlX,\n controlY,\n controlX,\n controlY,\n tempX,\n tempY\n );\n x = tempX;\n y = tempY;\n\n break;\n\n case 'T':\n tempX = current[1];\n tempY = current[2];\n\n if (previous[0].match(/[QqTt]/) === null) {\n // If there is no previous command or if the previous command was not a Q, q, T or t,\n // assume the control point is coincident with the current point\n controlX = x;\n controlY = y;\n }\n else {\n // calculate reflection of previous control point\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n }\n bounds = fabric.util.getBoundsOfCurve(x, y,\n controlX,\n controlY,\n controlX,\n controlY,\n tempX,\n tempY\n );\n x = tempX;\n y = tempY;\n break;\n\n case 'a':\n // TODO: optimize this\n bounds = fabric.util.getBoundsOfArc(x, y,\n current[1],\n current[2],\n current[3],\n current[4],\n current[5],\n current[6] + x,\n current[7] + y\n );\n x += current[6];\n y += current[7];\n break;\n\n case 'A':\n // TODO: optimize this\n bounds = fabric.util.getBoundsOfArc(x, y,\n current[1],\n current[2],\n current[3],\n current[4],\n current[5],\n current[6],\n current[7]\n );\n x = current[6];\n y = current[7];\n break;\n\n case 'z':\n case 'Z':\n x = subpathStartX;\n y = subpathStartY;\n break;\n }\n previous = current;\n bounds.forEach(function (point) {\n aX.push(point.x);\n aY.push(point.y);\n });\n aX.push(x);\n aY.push(y);\n }\n\n var minX = min(aX) || 0,\n minY = min(aY) || 0,\n maxX = max(aX) || 0,\n maxY = max(aY) || 0,\n deltaX = maxX - minX,\n deltaY = maxY - minY,\n\n o = {\n left: minX,\n top: minY,\n width: deltaX,\n height: deltaY\n };\n\n return o;\n }\n });\n\n /**\n * Creates an instance of fabric.Path from an object\n * @static\n * @memberOf fabric.Path\n * @param {Object} object\n * @param {Function} [callback] Callback to invoke when an fabric.Path instance is created\n */\n fabric.Path.fromObject = function(object, callback) {\n if (typeof object.sourcePath === 'string') {\n var pathUrl = object.sourcePath;\n fabric.loadSVGFromURL(pathUrl, function (elements) {\n var path = elements[0];\n path.setOptions(object);\n callback && callback(path);\n });\n }\n else {\n fabric.Object._fromObject('Path', object, callback, 'path');\n }\n };\n\n /* _FROM_SVG_START_ */\n /**\n * List of attribute names to account for when parsing SVG element (used by `fabric.Path.fromElement`)\n * @static\n * @memberOf fabric.Path\n * @see http://www.w3.org/TR/SVG/paths.html#PathElement\n */\n fabric.Path.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat(['d']);\n\n /**\n * Creates an instance of fabric.Path from an SVG element\n * @static\n * @memberOf fabric.Path\n * @param {SVGElement} element to parse\n * @param {Function} callback Callback to invoke when an fabric.Path instance is created\n * @param {Object} [options] Options object\n * @param {Function} [callback] Options callback invoked after parsing is finished\n */\n fabric.Path.fromElement = function(element, callback, options) {\n var parsedAttributes = fabric.parseAttributes(element, fabric.Path.ATTRIBUTE_NAMES);\n callback(new fabric.Path(parsedAttributes.d, extend(parsedAttributes, options)));\n };\n /* _FROM_SVG_END_ */\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n min = fabric.util.array.min,\n max = fabric.util.array.max;\n\n if (fabric.Group) {\n return;\n }\n\n /**\n * Group class\n * @class fabric.Group\n * @extends fabric.Object\n * @mixes fabric.Collection\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-3#groups}\n * @see {@link fabric.Group#initialize} for constructor definition\n */\n fabric.Group = fabric.util.createClass(fabric.Object, fabric.Collection, /** @lends fabric.Group.prototype */ {\n\n /**\n * Type of an object\n * @type String\n * @default\n */\n type: 'group',\n\n /**\n * Width of stroke\n * @type Number\n * @default\n */\n strokeWidth: 0,\n\n /**\n * Indicates if click events should also check for subtargets\n * @type Boolean\n * @default\n */\n subTargetCheck: false,\n\n /**\n * Groups are container, do not render anything on theyr own, ence no cache properties\n * @type Array\n * @default\n */\n cacheProperties: [],\n\n /**\n * setOnGroup is a method used for TextBox that is no more used since 2.0.0 The behavior is still\n * available setting this boolean to true.\n * @type Boolean\n * @since 2.0.0\n * @default\n */\n useSetOnGroup: false,\n\n /**\n * Constructor\n * @param {Object} objects Group objects\n * @param {Object} [options] Options object\n * @param {Boolean} [isAlreadyGrouped] if true, objects have been grouped already.\n * @return {Object} thisArg\n */\n initialize: function(objects, options, isAlreadyGrouped) {\n options = options || {};\n this._objects = [];\n // if objects enclosed in a group have been grouped already,\n // we cannot change properties of objects.\n // Thus we need to set options to group without objects,\n isAlreadyGrouped && this.callSuper('initialize', options);\n this._objects = objects || [];\n for (var i = this._objects.length; i--; ) {\n this._objects[i].group = this;\n }\n\n if (!isAlreadyGrouped) {\n var center = options && options.centerPoint;\n // we want to set origins before calculating the bounding box.\n // so that the topleft can be set with that in mind.\n // if specific top and left are passed, are overwritten later\n // with the callSuper('initialize', options)\n if (options.originX !== undefined) {\n this.originX = options.originX;\n }\n if (options.originY !== undefined) {\n this.originY = options.originY;\n }\n // if coming from svg i do not want to calc bounds.\n // i assume width and height are passed along options\n center || this._calcBounds();\n this._updateObjectsCoords(center);\n delete options.centerPoint;\n this.callSuper('initialize', options);\n }\n else {\n this._updateObjectsACoords();\n }\n\n this.setCoords();\n },\n\n /**\n * @private\n * @param {Boolean} [skipCoordsChange] if true, coordinates of objects enclosed in a group do not change\n */\n _updateObjectsACoords: function() {\n var ignoreZoom = true, skipAbsolute = true;\n for (var i = this._objects.length; i--; ){\n this._objects[i].setCoords(ignoreZoom, skipAbsolute);\n }\n },\n\n /**\n * @private\n * @param {Boolean} [skipCoordsChange] if true, coordinates of objects enclosed in a group do not change\n */\n _updateObjectsCoords: function(center) {\n var center = center || this.getCenterPoint();\n for (var i = this._objects.length; i--; ){\n this._updateObjectCoords(this._objects[i], center);\n }\n },\n\n /**\n * @private\n * @param {Object} object\n * @param {fabric.Point} center, current center of group.\n */\n _updateObjectCoords: function(object, center) {\n var objectLeft = object.left,\n objectTop = object.top,\n ignoreZoom = true, skipAbsolute = true;\n\n object.set({\n left: objectLeft - center.x,\n top: objectTop - center.y\n });\n object.group = this;\n object.setCoords(ignoreZoom, skipAbsolute);\n },\n\n /**\n * Returns string represenation of a group\n * @return {String}\n */\n toString: function() {\n return '#';\n },\n\n /**\n * Adds an object to a group; Then recalculates group's dimension, position.\n * @param {Object} object\n * @return {fabric.Group} thisArg\n * @chainable\n */\n addWithUpdate: function(object) {\n this._restoreObjectsState();\n fabric.util.resetObjectTransform(this);\n if (object) {\n this._objects.push(object);\n object.group = this;\n object._set('canvas', this.canvas);\n }\n this._calcBounds();\n this._updateObjectsCoords();\n this.setCoords();\n this.dirty = true;\n return this;\n },\n\n /**\n * Removes an object from a group; Then recalculates group's dimension, position.\n * @param {Object} object\n * @return {fabric.Group} thisArg\n * @chainable\n */\n removeWithUpdate: function(object) {\n this._restoreObjectsState();\n fabric.util.resetObjectTransform(this);\n\n this.remove(object);\n this._calcBounds();\n this._updateObjectsCoords();\n this.setCoords();\n this.dirty = true;\n return this;\n },\n\n /**\n * @private\n */\n _onObjectAdded: function(object) {\n this.dirty = true;\n object.group = this;\n object._set('canvas', this.canvas);\n },\n\n /**\n * @private\n */\n _onObjectRemoved: function(object) {\n this.dirty = true;\n delete object.group;\n },\n\n /**\n * @private\n */\n _set: function(key, value) {\n var i = this._objects.length;\n if (this.useSetOnGroup) {\n while (i--) {\n this._objects[i].setOnGroup(key, value);\n }\n }\n if (key === 'canvas') {\n while (i--) {\n this._objects[i]._set(key, value);\n }\n }\n fabric.Object.prototype._set.call(this, key, value);\n },\n\n /**\n * Returns object representation of an instance\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} object representation of an instance\n */\n toObject: function(propertiesToInclude) {\n var _includeDefaultValues = this.includeDefaultValues;\n var objsToObject = this._objects.map(function(obj) {\n var originalDefaults = obj.includeDefaultValues;\n obj.includeDefaultValues = _includeDefaultValues;\n var _obj = obj.toObject(propertiesToInclude);\n obj.includeDefaultValues = originalDefaults;\n return _obj;\n });\n var obj = fabric.Object.prototype.toObject.call(this, propertiesToInclude);\n obj.objects = objsToObject;\n return obj;\n },\n\n /**\n * Returns object representation of an instance, in dataless mode.\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} object representation of an instance\n */\n toDatalessObject: function(propertiesToInclude) {\n var objsToObject, sourcePath = this.sourcePath;\n if (sourcePath) {\n objsToObject = sourcePath;\n }\n else {\n var _includeDefaultValues = this.includeDefaultValues;\n objsToObject = this._objects.map(function(obj) {\n var originalDefaults = obj.includeDefaultValues;\n obj.includeDefaultValues = _includeDefaultValues;\n var _obj = obj.toDatalessObject(propertiesToInclude);\n obj.includeDefaultValues = originalDefaults;\n return _obj;\n });\n }\n var obj = fabric.Object.prototype.toDatalessObject.call(this, propertiesToInclude);\n obj.objects = objsToObject;\n return obj;\n },\n\n /**\n * Renders instance on a given context\n * @param {CanvasRenderingContext2D} ctx context to render instance on\n */\n render: function(ctx) {\n this._transformDone = true;\n this.callSuper('render', ctx);\n this._transformDone = false;\n },\n\n /**\n * Decide if the object should cache or not. Create its own cache level\n * objectCaching is a global flag, wins over everything\n * needsItsOwnCache should be used when the object drawing method requires\n * a cache step. None of the fabric classes requires it.\n * Generally you do not cache objects in groups because the group outside is cached.\n * @return {Boolean}\n */\n shouldCache: function() {\n var ownCache = this.objectCaching && (!this.group || this.needsItsOwnCache() || !this.group.isOnACache());\n this.ownCaching = ownCache;\n if (ownCache) {\n for (var i = 0, len = this._objects.length; i < len; i++) {\n if (this._objects[i].willDrawShadow()) {\n this.ownCaching = false;\n return false;\n }\n }\n }\n return ownCache;\n },\n\n /**\n * Check if this object or a child object will cast a shadow\n * @return {Boolean}\n */\n willDrawShadow: function() {\n if (this.shadow) {\n return fabric.Object.prototype.willDrawShadow.call(this);\n }\n for (var i = 0, len = this._objects.length; i < len; i++) {\n if (this._objects[i].willDrawShadow()) {\n return true;\n }\n }\n return false;\n },\n\n /**\n * Check if this group or its parent group are caching, recursively up\n * @return {Boolean}\n */\n isOnACache: function() {\n return this.ownCaching || (this.group && this.group.isOnACache());\n },\n\n /**\n * Execute the drawing operation for an object on a specified context\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n drawObject: function(ctx) {\n for (var i = 0, len = this._objects.length; i < len; i++) {\n this._objects[i].render(ctx);\n }\n this._drawClipPath(ctx);\n },\n\n /**\n * Check if cache is dirty\n */\n isCacheDirty: function(skipCanvas) {\n if (this.callSuper('isCacheDirty', skipCanvas)) {\n return true;\n }\n if (!this.statefullCache) {\n return false;\n }\n for (var i = 0, len = this._objects.length; i < len; i++) {\n if (this._objects[i].isCacheDirty(true)) {\n if (this._cacheCanvas) {\n // if this group has not a cache canvas there is nothing to clean\n var x = this.cacheWidth / this.zoomX, y = this.cacheHeight / this.zoomY;\n this._cacheContext.clearRect(-x / 2, -y / 2, x, y);\n }\n return true;\n }\n }\n return false;\n },\n\n /**\n * Retores original state of each of group objects (original state is that which was before group was created).\n * @private\n * @return {fabric.Group} thisArg\n * @chainable\n */\n _restoreObjectsState: function() {\n this._objects.forEach(this._restoreObjectState, this);\n return this;\n },\n\n /**\n * Realises the transform from this group onto the supplied object\n * i.e. it tells you what would happen if the supplied object was in\n * the group, and then the group was destroyed. It mutates the supplied\n * object.\n * @param {fabric.Object} object\n * @return {fabric.Object} transformedObject\n */\n realizeTransform: function(object) {\n var matrix = object.calcTransformMatrix(),\n options = fabric.util.qrDecompose(matrix),\n center = new fabric.Point(options.translateX, options.translateY);\n object.flipX = false;\n object.flipY = false;\n object.set('scaleX', options.scaleX);\n object.set('scaleY', options.scaleY);\n object.skewX = options.skewX;\n object.skewY = options.skewY;\n object.angle = options.angle;\n object.setPositionByOrigin(center, 'center', 'center');\n return object;\n },\n\n /**\n * Restores original state of a specified object in group\n * @private\n * @param {fabric.Object} object\n * @return {fabric.Group} thisArg\n */\n _restoreObjectState: function(object) {\n this.realizeTransform(object);\n object.setCoords();\n delete object.group;\n return this;\n },\n\n /**\n * Destroys a group (restoring state of its objects)\n * @return {fabric.Group} thisArg\n * @chainable\n */\n destroy: function() {\n // when group is destroyed objects needs to get a repaint to be eventually\n // displayed on canvas.\n this._objects.forEach(function(object) {\n object.set('dirty', true);\n });\n return this._restoreObjectsState();\n },\n\n /**\n * make a group an active selection, remove the group from canvas\n * the group has to be on canvas for this to work.\n * @return {fabric.ActiveSelection} thisArg\n * @chainable\n */\n toActiveSelection: function() {\n if (!this.canvas) {\n return;\n }\n var objects = this._objects, canvas = this.canvas;\n this._objects = [];\n var options = this.toObject();\n delete options.objects;\n var activeSelection = new fabric.ActiveSelection([]);\n activeSelection.set(options);\n activeSelection.type = 'activeSelection';\n canvas.remove(this);\n objects.forEach(function(object) {\n object.group = activeSelection;\n object.dirty = true;\n canvas.add(object);\n });\n activeSelection.canvas = canvas;\n activeSelection._objects = objects;\n canvas._activeObject = activeSelection;\n activeSelection.setCoords();\n return activeSelection;\n },\n\n /**\n * Destroys a group (restoring state of its objects)\n * @return {fabric.Group} thisArg\n * @chainable\n */\n ungroupOnCanvas: function() {\n return this._restoreObjectsState();\n },\n\n /**\n * Sets coordinates of all objects inside group\n * @return {fabric.Group} thisArg\n * @chainable\n */\n setObjectsCoords: function() {\n var ignoreZoom = true, skipAbsolute = true;\n this.forEachObject(function(object) {\n object.setCoords(ignoreZoom, skipAbsolute);\n });\n return this;\n },\n\n /**\n * @private\n */\n _calcBounds: function(onlyWidthHeight) {\n var aX = [],\n aY = [],\n o, prop,\n props = ['tr', 'br', 'bl', 'tl'],\n i = 0, iLen = this._objects.length,\n j, jLen = props.length,\n ignoreZoom = true;\n\n for ( ; i < iLen; ++i) {\n o = this._objects[i];\n o.setCoords(ignoreZoom);\n for (j = 0; j < jLen; j++) {\n prop = props[j];\n aX.push(o.oCoords[prop].x);\n aY.push(o.oCoords[prop].y);\n }\n }\n\n this._getBounds(aX, aY, onlyWidthHeight);\n },\n\n /**\n * @private\n */\n _getBounds: function(aX, aY, onlyWidthHeight) {\n var minXY = new fabric.Point(min(aX), min(aY)),\n maxXY = new fabric.Point(max(aX), max(aY)),\n top = minXY.y || 0, left = minXY.x || 0,\n width = (maxXY.x - minXY.x) || 0,\n height = (maxXY.y - minXY.y) || 0;\n this.width = width;\n this.height = height;\n if (!onlyWidthHeight) {\n // the bounding box always finds the topleft most corner.\n // whatever is the group origin, we set up here the left/top position.\n this.setPositionByOrigin({ x: left, y: top }, 'left', 'top');\n }\n },\n\n /* _TO_SVG_START_ */\n /**\n * Returns svg representation of an instance\n * @param {Function} [reviver] Method for further parsing of svg representation.\n * @return {String} svg representation of an instance\n */\n toSVG: function(reviver) {\n var svgString = [];\n\n for (var i = 0, len = this._objects.length; i < len; i++) {\n svgString.push('\\t', this._objects[i].toSVG(reviver));\n }\n\n return this._createBaseSVGMarkup(\n svgString,\n { reviver: reviver, noStyle: true, withShadow: true });\n },\n\n /**\n * Returns svg clipPath representation of an instance\n * @param {Function} [reviver] Method for further parsing of svg representation.\n * @return {String} svg representation of an instance\n */\n toClipPathSVG: function(reviver) {\n var svgString = [];\n\n for (var i = 0, len = this._objects.length; i < len; i++) {\n svgString.push('\\t', this._objects[i].toClipPathSVG(reviver));\n }\n\n return this._createBaseClipPathSVGMarkup(svgString, { reviver: reviver });\n },\n /* _TO_SVG_END_ */\n });\n\n /**\n * Returns {@link fabric.Group} instance from an object representation\n * @static\n * @memberOf fabric.Group\n * @param {Object} object Object to create a group from\n * @param {Function} [callback] Callback to invoke when an group instance is created\n */\n fabric.Group.fromObject = function(object, callback) {\n fabric.util.enlivenObjects(object.objects, function(enlivenedObjects) {\n fabric.util.enlivenObjects([object.clipPath], function(enlivedClipPath) {\n var options = fabric.util.object.clone(object, true);\n options.clipPath = enlivedClipPath[0];\n delete options.objects;\n callback && callback(new fabric.Group(enlivenedObjects, options, true));\n });\n });\n };\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { });\n\n if (fabric.ActiveSelection) {\n return;\n }\n\n /**\n * Group class\n * @class fabric.ActiveSelection\n * @extends fabric.Group\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-3#groups}\n * @see {@link fabric.ActiveSelection#initialize} for constructor definition\n */\n fabric.ActiveSelection = fabric.util.createClass(fabric.Group, /** @lends fabric.ActiveSelection.prototype */ {\n\n /**\n * Type of an object\n * @type String\n * @default\n */\n type: 'activeSelection',\n\n /**\n * Constructor\n * @param {Object} objects ActiveSelection objects\n * @param {Object} [options] Options object\n * @return {Object} thisArg\n */\n initialize: function(objects, options) {\n options = options || {};\n this._objects = objects || [];\n for (var i = this._objects.length; i--; ) {\n this._objects[i].group = this;\n }\n\n if (options.originX) {\n this.originX = options.originX;\n }\n if (options.originY) {\n this.originY = options.originY;\n }\n this._calcBounds();\n this._updateObjectsCoords();\n fabric.Object.prototype.initialize.call(this, options);\n this.setCoords();\n },\n\n /**\n * Change te activeSelection to a normal group,\n * High level function that automatically adds it to canvas as\n * active object. no events fired.\n * @since 2.0.0\n * @return {fabric.Group}\n */\n toGroup: function() {\n var objects = this._objects.concat();\n this._objects = [];\n var options = fabric.Object.prototype.toObject.call(this);\n var newGroup = new fabric.Group([]);\n delete options.type;\n newGroup.set(options);\n objects.forEach(function(object) {\n object.canvas.remove(object);\n object.group = newGroup;\n });\n newGroup._objects = objects;\n if (!this.canvas) {\n return newGroup;\n }\n var canvas = this.canvas;\n canvas.add(newGroup);\n canvas._activeObject = newGroup;\n newGroup.setCoords();\n return newGroup;\n },\n\n /**\n * If returns true, deselection is cancelled.\n * @since 2.0.0\n * @return {Boolean} [cancel]\n */\n onDeselect: function() {\n this.destroy();\n return false;\n },\n\n /**\n * Returns string representation of a group\n * @return {String}\n */\n toString: function() {\n return '#';\n },\n\n /**\n * Decide if the object should cache or not. Create its own cache level\n * objectCaching is a global flag, wins over everything\n * needsItsOwnCache should be used when the object drawing method requires\n * a cache step. None of the fabric classes requires it.\n * Generally you do not cache objects in groups because the group outside is cached.\n * @return {Boolean}\n */\n shouldCache: function() {\n return false;\n },\n\n /**\n * Check if this group or its parent group are caching, recursively up\n * @return {Boolean}\n */\n isOnACache: function() {\n return false;\n },\n\n /**\n * Renders controls and borders for the object\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @param {Object} [styleOverride] properties to override the object style\n * @param {Object} [childrenOverride] properties to override the children overrides\n */\n _renderControls: function(ctx, styleOverride, childrenOverride) {\n ctx.save();\n ctx.globalAlpha = this.isMoving ? this.borderOpacityWhenMoving : 1;\n this.callSuper('_renderControls', ctx, styleOverride);\n childrenOverride = childrenOverride || { };\n if (typeof childrenOverride.hasControls === 'undefined') {\n childrenOverride.hasControls = false;\n }\n if (typeof childrenOverride.hasRotatingPoint === 'undefined') {\n childrenOverride.hasRotatingPoint = false;\n }\n childrenOverride.forActiveSelection = true;\n for (var i = 0, len = this._objects.length; i < len; i++) {\n this._objects[i]._renderControls(ctx, childrenOverride);\n }\n ctx.restore();\n },\n });\n\n /**\n * Returns {@link fabric.ActiveSelection} instance from an object representation\n * @static\n * @memberOf fabric.ActiveSelection\n * @param {Object} object Object to create a group from\n * @param {Function} [callback] Callback to invoke when an ActiveSelection instance is created\n */\n fabric.ActiveSelection.fromObject = function(object, callback) {\n fabric.util.enlivenObjects(object.objects, function(enlivenedObjects) {\n delete object.objects;\n callback && callback(new fabric.ActiveSelection(enlivenedObjects, object, true));\n });\n };\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var extend = fabric.util.object.extend;\n\n if (!global.fabric) {\n global.fabric = { };\n }\n\n if (global.fabric.Image) {\n fabric.warn('fabric.Image is already defined.');\n return;\n }\n\n /**\n * Image class\n * @class fabric.Image\n * @extends fabric.Object\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-1#images}\n * @see {@link fabric.Image#initialize} for constructor definition\n */\n fabric.Image = fabric.util.createClass(fabric.Object, /** @lends fabric.Image.prototype */ {\n\n /**\n * Type of an object\n * @type String\n * @default\n */\n type: 'image',\n\n /**\n * crossOrigin value (one of \"\", \"anonymous\", \"use-credentials\")\n * @see https://developer.mozilla.org/en-US/docs/HTML/CORS_settings_attributes\n * @type String\n * @default\n */\n crossOrigin: '',\n\n /**\n * Width of a stroke.\n * For image quality a stroke multiple of 2 gives better results.\n * @type Number\n * @default\n */\n strokeWidth: 0,\n\n /**\n * When calling {@link fabric.Image.getSrc}, return value from element src with `element.getAttribute('src')`.\n * This allows for relative urls as image src.\n * @since 2.7.0\n * @type Boolean\n * @default\n */\n srcFromAttribute: false,\n\n /**\n * private\n * contains last value of scaleX to detect\n * if the Image got resized after the last Render\n * @type Number\n */\n _lastScaleX: 1,\n\n /**\n * private\n * contains last value of scaleY to detect\n * if the Image got resized after the last Render\n * @type Number\n */\n _lastScaleY: 1,\n\n /**\n * private\n * contains last value of scaling applied by the apply filter chain\n * @type Number\n */\n _filterScalingX: 1,\n\n /**\n * private\n * contains last value of scaling applied by the apply filter chain\n * @type Number\n */\n _filterScalingY: 1,\n\n /**\n * minimum scale factor under which any resizeFilter is triggered to resize the image\n * 0 will disable the automatic resize. 1 will trigger automatically always.\n * number bigger than 1 are not implemented yet.\n * @type Number\n */\n minimumScaleTrigger: 0.5,\n\n /**\n * List of properties to consider when checking if\n * state of an object is changed ({@link fabric.Object#hasStateChanged})\n * as well as for history (undo/redo) purposes\n * @type Array\n */\n stateProperties: fabric.Object.prototype.stateProperties.concat('cropX', 'cropY'),\n\n /**\n * key used to retrieve the texture representing this image\n * @since 2.0.0\n * @type String\n * @default\n */\n cacheKey: '',\n\n /**\n * Image crop in pixels from original image size.\n * @since 2.0.0\n * @type Number\n * @default\n */\n cropX: 0,\n\n /**\n * Image crop in pixels from original image size.\n * @since 2.0.0\n * @type Number\n * @default\n */\n cropY: 0,\n\n /**\n * Constructor\n * @param {HTMLImageElement | String} element Image element\n * @param {Object} [options] Options object\n * @param {function} [callback] callback function to call after eventual filters applied.\n * @return {fabric.Image} thisArg\n */\n initialize: function(element, options) {\n options || (options = { });\n this.filters = [];\n this.cacheKey = 'texture' + fabric.Object.__uid++;\n this.callSuper('initialize', options);\n this._initElement(element, options);\n },\n\n /**\n * Returns image element which this instance if based on\n * @return {HTMLImageElement} Image element\n */\n getElement: function() {\n return this._element || {};\n },\n\n /**\n * Sets image element for this instance to a specified one.\n * If filters defined they are applied to new image.\n * You might need to call `canvas.renderAll` and `object.setCoords` after replacing, to render new image and update controls area.\n * @param {HTMLImageElement} element\n * @param {Object} [options] Options object\n * @return {fabric.Image} thisArg\n * @chainable\n */\n setElement: function(element, options) {\n this.removeTexture(this.cacheKey);\n this.removeTexture(this.cacheKey + '_filtered');\n this._element = element;\n this._originalElement = element;\n this._initConfig(options);\n if (this.filters.length !== 0) {\n this.applyFilters();\n }\n // resizeFilters work on the already filtered copy.\n // we need to apply resizeFilters AFTER normal filters.\n // applyResizeFilters is run more often than normal fiters\n // and is triggered by user interactions rather than dev code\n if (this.resizeFilter) {\n this.applyResizeFilters();\n }\n return this;\n },\n\n /**\n * Delete a single texture if in webgl mode\n */\n removeTexture: function(key) {\n var backend = fabric.filterBackend;\n if (backend && backend.evictCachesForKey) {\n backend.evictCachesForKey(key);\n }\n },\n\n /**\n * Delete textures, reference to elements and eventually JSDOM cleanup\n */\n dispose: function() {\n this.removeTexture(this.cacheKey);\n this.removeTexture(this.cacheKey + '_filtered');\n this._cacheContext = undefined;\n ['_originalElement', '_element', '_filteredEl', '_cacheCanvas'].forEach((function(element) {\n fabric.util.cleanUpJsdomNode(this[element]);\n this[element] = undefined;\n }).bind(this));\n },\n\n /**\n * Sets crossOrigin value (on an instance and corresponding image element)\n * @return {fabric.Image} thisArg\n * @chainable\n */\n setCrossOrigin: function(value) {\n this.crossOrigin = value;\n this._element.crossOrigin = value;\n\n return this;\n },\n\n /**\n * Returns original size of an image\n * @return {Object} Object with \"width\" and \"height\" properties\n */\n getOriginalSize: function() {\n var element = this.getElement();\n return {\n width: element.naturalWidth || element.width,\n height: element.naturalHeight || element.height\n };\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _stroke: function(ctx) {\n if (!this.stroke || this.strokeWidth === 0) {\n return;\n }\n var w = this.width / 2, h = this.height / 2;\n ctx.beginPath();\n ctx.moveTo(-w, -h);\n ctx.lineTo(w, -h);\n ctx.lineTo(w, h);\n ctx.lineTo(-w, h);\n ctx.lineTo(-w, -h);\n ctx.closePath();\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderDashedStroke: function(ctx) {\n var x = -this.width / 2,\n y = -this.height / 2,\n w = this.width,\n h = this.height;\n\n ctx.save();\n this._setStrokeStyles(ctx, this);\n\n ctx.beginPath();\n fabric.util.drawDashedLine(ctx, x, y, x + w, y, this.strokeDashArray);\n fabric.util.drawDashedLine(ctx, x + w, y, x + w, y + h, this.strokeDashArray);\n fabric.util.drawDashedLine(ctx, x + w, y + h, x, y + h, this.strokeDashArray);\n fabric.util.drawDashedLine(ctx, x, y + h, x, y, this.strokeDashArray);\n ctx.closePath();\n ctx.restore();\n },\n\n /**\n * Returns object representation of an instance\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} Object representation of an instance\n */\n toObject: function(propertiesToInclude) {\n var filters = [];\n\n this.filters.forEach(function(filterObj) {\n if (filterObj) {\n filters.push(filterObj.toObject());\n }\n });\n var object = extend(\n this.callSuper(\n 'toObject',\n ['crossOrigin', 'cropX', 'cropY'].concat(propertiesToInclude)\n ), {\n src: this.getSrc(),\n filters: filters,\n });\n if (this.resizeFilter) {\n object.resizeFilter = this.resizeFilter.toObject();\n }\n return object;\n },\n\n /**\n * Returns true if an image has crop applied, inspecting values of cropX,cropY,width,hight.\n * @return {Boolean}\n */\n hasCrop: function() {\n return this.cropX || this.cropY || this.width < this._element.width || this.height < this._element.height;\n },\n\n /* _TO_SVG_START_ */\n /**\n * Returns svg representation of an instance\n * @return {Array} an array of strings with the specific svg representation\n * of the instance\n */\n _toSVG: function() {\n var svgString = [], imageMarkup = [], strokeSvg,\n x = -this.width / 2, y = -this.height / 2, clipPath = '';\n if (this.hasCrop()) {\n var clipPathId = fabric.Object.__uid++;\n svgString.push(\n '\\n',\n '\\t\\n',\n '\\n'\n );\n clipPath = ' clip-path=\"url(#imageCrop_' + clipPathId + ')\" ';\n }\n imageMarkup.push('\\t element with actual transformation, then offsetting object to the top/left\n // so that object's center aligns with container's left/top\n '\" width=\"', this._element.width || this._element.naturalWidth,\n '\" height=\"', this._element.height || this._element.height,\n '\"', clipPath,\n '>\\n');\n\n if (this.stroke || this.strokeDashArray) {\n var origFill = this.fill;\n this.fill = null;\n strokeSvg = [\n '\\t\\n'\n ];\n this.fill = origFill;\n }\n if (this.paintFirst !== 'fill') {\n svgString = svgString.concat(strokeSvg, imageMarkup);\n }\n else {\n svgString = svgString.concat(imageMarkup, strokeSvg);\n }\n return svgString;\n },\n /* _TO_SVG_END_ */\n\n /**\n * Returns source of an image\n * @param {Boolean} filtered indicates if the src is needed for svg\n * @return {String} Source of an image\n */\n getSrc: function(filtered) {\n var element = filtered ? this._element : this._originalElement;\n if (element) {\n if (element.toDataURL) {\n return element.toDataURL();\n }\n\n if (this.srcFromAttribute) {\n return element.getAttribute('src');\n }\n else {\n return element.src;\n }\n }\n else {\n return this.src || '';\n }\n },\n\n /**\n * Sets source of an image\n * @param {String} src Source string (URL)\n * @param {Function} [callback] Callback is invoked when image has been loaded (and all filters have been applied)\n * @param {Object} [options] Options object\n * @return {fabric.Image} thisArg\n * @chainable\n */\n setSrc: function(src, callback, options) {\n fabric.util.loadImage(src, function(img) {\n this.setElement(img, options);\n this._setWidthHeight();\n callback && callback(this);\n }, this, options && options.crossOrigin);\n return this;\n },\n\n /**\n * Returns string representation of an instance\n * @return {String} String representation of an instance\n */\n toString: function() {\n return '#';\n },\n\n applyResizeFilters: function() {\n var filter = this.resizeFilter,\n minimumScale = this.minimumScaleTrigger,\n objectScale = this.getTotalObjectScaling(),\n scaleX = objectScale.scaleX,\n scaleY = objectScale.scaleY,\n elementToFilter = this._filteredEl || this._originalElement;\n if (this.group) {\n this.set('dirty', true);\n }\n if (!filter || (scaleX > minimumScale && scaleY > minimumScale)) {\n this._element = elementToFilter;\n this._filterScalingX = 1;\n this._filterScalingY = 1;\n this._lastScaleX = scaleX;\n this._lastScaleY = scaleY;\n return;\n }\n if (!fabric.filterBackend) {\n fabric.filterBackend = fabric.initFilterBackend();\n }\n var canvasEl = fabric.util.createCanvasElement(),\n cacheKey = this._filteredEl ? (this.cacheKey + '_filtered') : this.cacheKey,\n sourceWidth = elementToFilter.width, sourceHeight = elementToFilter.height;\n canvasEl.width = sourceWidth;\n canvasEl.height = sourceHeight;\n this._element = canvasEl;\n this._lastScaleX = filter.scaleX = scaleX;\n this._lastScaleY = filter.scaleY = scaleY;\n fabric.filterBackend.applyFilters(\n [filter], elementToFilter, sourceWidth, sourceHeight, this._element, cacheKey);\n this._filterScalingX = canvasEl.width / this._originalElement.width;\n this._filterScalingY = canvasEl.height / this._originalElement.height;\n },\n\n /**\n * Applies filters assigned to this image (from \"filters\" array) or from filter param\n * @method applyFilters\n * @param {Array} filters to be applied\n * @param {Boolean} forResizing specify if the filter operation is a resize operation\n * @return {thisArg} return the fabric.Image object\n * @chainable\n */\n applyFilters: function(filters) {\n\n filters = filters || this.filters || [];\n filters = filters.filter(function(filter) { return filter && !filter.isNeutralState(); });\n this.set('dirty', true);\n\n // needs to clear out or WEBGL will not resize correctly\n this.removeTexture(this.cacheKey + '_filtered');\n\n if (filters.length === 0) {\n this._element = this._originalElement;\n this._filteredEl = null;\n this._filterScalingX = 1;\n this._filterScalingY = 1;\n return this;\n }\n\n var imgElement = this._originalElement,\n sourceWidth = imgElement.naturalWidth || imgElement.width,\n sourceHeight = imgElement.naturalHeight || imgElement.height;\n\n if (this._element === this._originalElement) {\n // if the element is the same we need to create a new element\n var canvasEl = fabric.util.createCanvasElement();\n canvasEl.width = sourceWidth;\n canvasEl.height = sourceHeight;\n this._element = canvasEl;\n this._filteredEl = canvasEl;\n }\n else {\n // clear the existing element to get new filter data\n // also dereference the eventual resized _element\n this._element = this._filteredEl;\n this._filteredEl.getContext('2d').clearRect(0, 0, sourceWidth, sourceHeight);\n // we also need to resize again at next renderAll, so remove saved _lastScaleX/Y\n this._lastScaleX = 1;\n this._lastScaleY = 1;\n }\n if (!fabric.filterBackend) {\n fabric.filterBackend = fabric.initFilterBackend();\n }\n fabric.filterBackend.applyFilters(\n filters, this._originalElement, sourceWidth, sourceHeight, this._element, this.cacheKey);\n if (this._originalElement.width !== this._element.width ||\n this._originalElement.height !== this._element.height) {\n this._filterScalingX = this._element.width / this._originalElement.width;\n this._filterScalingY = this._element.height / this._originalElement.height;\n }\n return this;\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _render: function(ctx) {\n if (this.isMoving !== true && this.resizeFilter && this._needsResize()) {\n this.applyResizeFilters();\n }\n this._stroke(ctx);\n this._renderPaintInOrder(ctx);\n },\n\n /**\n * Decide if the object should cache or not. Create its own cache level\n * objectCaching is a global flag, wins over everything\n * needsItsOwnCache should be used when the object drawing method requires\n * a cache step. None of the fabric classes requires it.\n * Generally you do not cache objects in groups because the group outside is cached.\n * This is the special image version where we would like to avoid caching where possible.\n * Essentially images do not benefit from caching. They may require caching, and in that\n * case we do it. Also caching an image usually ends in a loss of details.\n * A full performance audit should be done.\n * @return {Boolean}\n */\n shouldCache: function() {\n this.ownCaching = this.objectCaching && this.needsItsOwnCache();\n return this.ownCaching;\n },\n\n _renderFill: function(ctx) {\n var elementToDraw = this._element,\n w = this.width, h = this.height,\n sW = Math.min(elementToDraw.naturalWidth || elementToDraw.width, w * this._filterScalingX),\n sH = Math.min(elementToDraw.naturalHeight || elementToDraw.height, h * this._filterScalingY),\n x = -w / 2, y = -h / 2,\n sX = Math.max(0, this.cropX * this._filterScalingX),\n sY = Math.max(0, this.cropY * this._filterScalingY);\n\n elementToDraw && ctx.drawImage(elementToDraw, sX, sY, sW, sH, x, y, w, h);\n },\n\n /**\n * @private, needed to check if image needs resize\n */\n _needsResize: function() {\n var scale = this.getTotalObjectScaling();\n return (scale.scaleX !== this._lastScaleX || scale.scaleY !== this._lastScaleY);\n },\n\n /**\n * @private\n */\n _resetWidthHeight: function() {\n this.set(this.getOriginalSize());\n },\n\n /**\n * The Image class's initialization method. This method is automatically\n * called by the constructor.\n * @private\n * @param {HTMLImageElement|String} element The element representing the image\n * @param {Object} [options] Options object\n */\n _initElement: function(element, options) {\n this.setElement(fabric.util.getById(element), options);\n fabric.util.addClass(this.getElement(), fabric.Image.CSS_CANVAS);\n },\n\n /**\n * @private\n * @param {Object} [options] Options object\n */\n _initConfig: function(options) {\n options || (options = { });\n this.setOptions(options);\n this._setWidthHeight(options);\n if (this._element && this.crossOrigin) {\n this._element.crossOrigin = this.crossOrigin;\n }\n },\n\n /**\n * @private\n * @param {Array} filters to be initialized\n * @param {Function} callback Callback to invoke when all fabric.Image.filters instances are created\n */\n _initFilters: function(filters, callback) {\n if (filters && filters.length) {\n fabric.util.enlivenObjects(filters, function(enlivenedObjects) {\n callback && callback(enlivenedObjects);\n }, 'fabric.Image.filters');\n }\n else {\n callback && callback();\n }\n },\n\n /**\n * @private\n * Set the width and the height of the image object, using the element or the\n * options.\n * @param {Object} [options] Object with width/height properties\n */\n _setWidthHeight: function(options) {\n options || (options = { });\n var el = this.getElement();\n this.width = options.width || el.naturalWidth || el.width || 0;\n this.height = options.height || el.naturalHeight || el.height || 0;\n },\n\n /**\n * Calculate offset for center and scale factor for the image in order to respect\n * the preserveAspectRatio attribute\n * @private\n * @return {Object}\n */\n parsePreserveAspectRatioAttribute: function() {\n var pAR = fabric.util.parsePreserveAspectRatioAttribute(this.preserveAspectRatio || ''),\n rWidth = this._element.width, rHeight = this._element.height,\n scaleX = 1, scaleY = 1, offsetLeft = 0, offsetTop = 0, cropX = 0, cropY = 0,\n offset, pWidth = this.width, pHeight = this.height, parsedAttributes = { width: pWidth, height: pHeight };\n if (pAR && (pAR.alignX !== 'none' || pAR.alignY !== 'none')) {\n if (pAR.meetOrSlice === 'meet') {\n scaleX = scaleY = fabric.util.findScaleToFit(this._element, parsedAttributes);\n offset = (pWidth - rWidth * scaleX) / 2;\n if (pAR.alignX === 'Min') {\n offsetLeft = -offset;\n }\n if (pAR.alignX === 'Max') {\n offsetLeft = offset;\n }\n offset = (pHeight - rHeight * scaleY) / 2;\n if (pAR.alignY === 'Min') {\n offsetTop = -offset;\n }\n if (pAR.alignY === 'Max') {\n offsetTop = offset;\n }\n }\n if (pAR.meetOrSlice === 'slice') {\n scaleX = scaleY = fabric.util.findScaleToCover(this._element, parsedAttributes);\n offset = rWidth - pWidth / scaleX;\n if (pAR.alignX === 'Mid') {\n cropX = offset / 2;\n }\n if (pAR.alignX === 'Max') {\n cropX = offset;\n }\n offset = rHeight - pHeight / scaleY;\n if (pAR.alignY === 'Mid') {\n cropY = offset / 2;\n }\n if (pAR.alignY === 'Max') {\n cropY = offset;\n }\n rWidth = pWidth / scaleX;\n rHeight = pHeight / scaleY;\n }\n }\n else {\n scaleX = pWidth / rWidth;\n scaleY = pHeight / rHeight;\n }\n return {\n width: rWidth,\n height: rHeight,\n scaleX: scaleX,\n scaleY: scaleY,\n offsetLeft: offsetLeft,\n offsetTop: offsetTop,\n cropX: cropX,\n cropY: cropY\n };\n }\n });\n\n /**\n * Default CSS class name for canvas\n * @static\n * @type String\n * @default\n */\n fabric.Image.CSS_CANVAS = 'canvas-img';\n\n /**\n * Alias for getSrc\n * @static\n */\n fabric.Image.prototype.getSvgSrc = fabric.Image.prototype.getSrc;\n\n /**\n * Creates an instance of fabric.Image from its object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {Function} callback Callback to invoke when an image instance is created\n */\n fabric.Image.fromObject = function(_object, callback) {\n var object = fabric.util.object.clone(_object);\n fabric.util.loadImage(object.src, function(img, error) {\n if (error) {\n callback && callback(null, error);\n return;\n }\n fabric.Image.prototype._initFilters.call(object, object.filters, function(filters) {\n object.filters = filters || [];\n fabric.Image.prototype._initFilters.call(object, [object.resizeFilter], function(resizeFilters) {\n object.resizeFilter = resizeFilters[0];\n fabric.util.enlivenObjects([object.clipPath], function(enlivedProps) {\n object.clipPath = enlivedProps[0];\n var image = new fabric.Image(img, object);\n callback(image);\n });\n });\n });\n }, null, object.crossOrigin);\n };\n\n /**\n * Creates an instance of fabric.Image from an URL string\n * @static\n * @param {String} url URL to create an image from\n * @param {Function} [callback] Callback to invoke when image is created (newly created image is passed as a first argument)\n * @param {Object} [imgOptions] Options object\n */\n fabric.Image.fromURL = function(url, callback, imgOptions) {\n fabric.util.loadImage(url, function(img) {\n callback && callback(new fabric.Image(img, imgOptions));\n }, null, imgOptions && imgOptions.crossOrigin);\n };\n\n /* _FROM_SVG_START_ */\n /**\n * List of attribute names to account for when parsing SVG element (used by {@link fabric.Image.fromElement})\n * @static\n * @see {@link http://www.w3.org/TR/SVG/struct.html#ImageElement}\n */\n fabric.Image.ATTRIBUTE_NAMES =\n fabric.SHARED_ATTRIBUTES.concat('x y width height preserveAspectRatio xlink:href crossOrigin'.split(' '));\n\n /**\n * Returns {@link fabric.Image} instance from an SVG element\n * @static\n * @param {SVGElement} element Element to parse\n * @param {Object} [options] Options object\n * @param {Function} callback Callback to execute when fabric.Image object is created\n * @return {fabric.Image} Instance of fabric.Image\n */\n fabric.Image.fromElement = function(element, callback, options) {\n var parsedAttributes = fabric.parseAttributes(element, fabric.Image.ATTRIBUTE_NAMES);\n fabric.Image.fromURL(parsedAttributes['xlink:href'], callback,\n extend((options ? fabric.util.object.clone(options) : { }), parsedAttributes));\n };\n /* _FROM_SVG_END_ */\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\nfabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prototype */ {\n\n /**\n * @private\n * @return {Number} angle value\n */\n _getAngleValueForStraighten: function() {\n var angle = this.angle % 360;\n if (angle > 0) {\n return Math.round((angle - 1) / 90) * 90;\n }\n return Math.round(angle / 90) * 90;\n },\n\n /**\n * Straightens an object (rotating it from current angle to one of 0, 90, 180, 270, etc. depending on which is closer)\n * @return {fabric.Object} thisArg\n * @chainable\n */\n straighten: function() {\n this.rotate(this._getAngleValueForStraighten());\n return this;\n },\n\n /**\n * Same as {@link fabric.Object.prototype.straighten} but with animation\n * @param {Object} callbacks Object with callback functions\n * @param {Function} [callbacks.onComplete] Invoked on completion\n * @param {Function} [callbacks.onChange] Invoked on every step of animation\n * @return {fabric.Object} thisArg\n * @chainable\n */\n fxStraighten: function(callbacks) {\n callbacks = callbacks || { };\n\n var empty = function() { },\n onComplete = callbacks.onComplete || empty,\n onChange = callbacks.onChange || empty,\n _this = this;\n\n fabric.util.animate({\n startValue: this.get('angle'),\n endValue: this._getAngleValueForStraighten(),\n duration: this.FX_DURATION,\n onChange: function(value) {\n _this.rotate(value);\n onChange();\n },\n onComplete: function() {\n _this.setCoords();\n onComplete();\n },\n });\n\n return this;\n }\n});\n\nfabric.util.object.extend(fabric.StaticCanvas.prototype, /** @lends fabric.StaticCanvas.prototype */ {\n\n /**\n * Straightens object, then rerenders canvas\n * @param {fabric.Object} object Object to straighten\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n straightenObject: function (object) {\n object.straighten();\n this.requestRenderAll();\n return this;\n },\n\n /**\n * Same as {@link fabric.Canvas.prototype.straightenObject}, but animated\n * @param {fabric.Object} object Object to straighten\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n fxStraightenObject: function (object) {\n object.fxStraighten({\n onChange: this.requestRenderAllBound\n });\n return this;\n }\n});\n\n\n(function() {\n\n 'use strict';\n\n /**\n * Tests if webgl supports certain precision\n * @param {WebGL} Canvas WebGL context to test on\n * @param {String} Precision to test can be any of following: 'lowp', 'mediump', 'highp'\n * @returns {Boolean} Whether the user's browser WebGL supports given precision.\n */\n function testPrecision(gl, precision){\n var fragmentSource = 'precision ' + precision + ' float;\\nvoid main(){}';\n var fragmentShader = gl.createShader(gl.FRAGMENT_SHADER);\n gl.shaderSource(fragmentShader, fragmentSource);\n gl.compileShader(fragmentShader);\n if (!gl.getShaderParameter(fragmentShader, gl.COMPILE_STATUS)) {\n return false;\n }\n return true;\n }\n\n /**\n * Indicate whether this filtering backend is supported by the user's browser.\n * @param {Number} tileSize check if the tileSize is supported\n * @returns {Boolean} Whether the user's browser supports WebGL.\n */\n fabric.isWebglSupported = function(tileSize) {\n if (fabric.isLikelyNode) {\n return false;\n }\n tileSize = tileSize || fabric.WebglFilterBackend.prototype.tileSize;\n var canvas = document.createElement('canvas');\n var gl = canvas.getContext('webgl') || canvas.getContext('experimental-webgl');\n var isSupported = false;\n // eslint-disable-next-line\n if (gl) {\n fabric.maxTextureSize = gl.getParameter(gl.MAX_TEXTURE_SIZE);\n isSupported = fabric.maxTextureSize >= tileSize;\n var precisions = ['highp', 'mediump', 'lowp'];\n for (var i = 0; i < 3; i++){\n if (testPrecision(gl, precisions[i])){\n fabric.webGlPrecision = precisions[i];\n break;\n };\n }\n }\n this.isSupported = isSupported;\n return isSupported;\n };\n\n fabric.WebglFilterBackend = WebglFilterBackend;\n\n /**\n * WebGL filter backend.\n */\n function WebglFilterBackend(options) {\n if (options && options.tileSize) {\n this.tileSize = options.tileSize;\n }\n this.setupGLContext(this.tileSize, this.tileSize);\n this.captureGPUInfo();\n };\n\n WebglFilterBackend.prototype = /** @lends fabric.WebglFilterBackend.prototype */ {\n\n tileSize: 2048,\n\n /**\n * Experimental. This object is a sort of repository of help layers used to avoid\n * of recreating them during frequent filtering. If you are previewing a filter with\n * a slider you problably do not want to create help layers every filter step.\n * in this object there will be appended some canvases, created once, resized sometimes\n * cleared never. Clearing is left to the developer.\n **/\n resources: {\n\n },\n\n /**\n * Setup a WebGL context suitable for filtering, and bind any needed event handlers.\n */\n setupGLContext: function(width, height) {\n this.dispose();\n this.createWebGLCanvas(width, height);\n // eslint-disable-next-line\n this.aPosition = new Float32Array([0, 0, 0, 1, 1, 0, 1, 1]);\n this.chooseFastestCopyGLTo2DMethod(width, height);\n },\n\n /**\n * Pick a method to copy data from GL context to 2d canvas. In some browsers using\n * putImageData is faster than drawImage for that specific operation.\n */\n chooseFastestCopyGLTo2DMethod: function(width, height) {\n var canMeasurePerf = typeof window.performance !== 'undefined';\n var canUseImageData;\n try {\n new ImageData(1, 1);\n canUseImageData = true;\n }\n catch (e) {\n canUseImageData = false;\n }\n // eslint-disable-next-line no-undef\n var canUseArrayBuffer = typeof ArrayBuffer !== 'undefined';\n // eslint-disable-next-line no-undef\n var canUseUint8Clamped = typeof Uint8ClampedArray !== 'undefined';\n\n if (!(canMeasurePerf && canUseImageData && canUseArrayBuffer && canUseUint8Clamped)) {\n return;\n }\n\n var targetCanvas = fabric.util.createCanvasElement();\n // eslint-disable-next-line no-undef\n var imageBuffer = new ArrayBuffer(width * height * 4);\n var testContext = {\n imageBuffer: imageBuffer,\n destinationWidth: width,\n destinationHeight: height,\n targetCanvas: targetCanvas\n };\n var startTime, drawImageTime, putImageDataTime;\n targetCanvas.width = width;\n targetCanvas.height = height;\n\n startTime = window.performance.now();\n copyGLTo2DDrawImage.call(testContext, this.gl, testContext);\n drawImageTime = window.performance.now() - startTime;\n\n startTime = window.performance.now();\n copyGLTo2DPutImageData.call(testContext, this.gl, testContext);\n putImageDataTime = window.performance.now() - startTime;\n\n if (drawImageTime > putImageDataTime) {\n this.imageBuffer = imageBuffer;\n this.copyGLTo2D = copyGLTo2DPutImageData;\n }\n else {\n this.copyGLTo2D = copyGLTo2DDrawImage;\n }\n },\n\n /**\n * Create a canvas element and associated WebGL context and attaches them as\n * class properties to the GLFilterBackend class.\n */\n createWebGLCanvas: function(width, height) {\n var canvas = fabric.util.createCanvasElement();\n canvas.width = width;\n canvas.height = height;\n var glOptions = {\n alpha: true,\n premultipliedAlpha: false,\n depth: false,\n stencil: false,\n antialias: false\n },\n gl = canvas.getContext('webgl', glOptions);\n if (!gl) {\n gl = canvas.getContext('experimental-webgl', glOptions);\n }\n if (!gl) {\n return;\n }\n gl.clearColor(0, 0, 0, 0);\n // this canvas can fire webglcontextlost and webglcontextrestored\n this.canvas = canvas;\n this.gl = gl;\n },\n\n /**\n * Attempts to apply the requested filters to the source provided, drawing the filtered output\n * to the provided target canvas.\n *\n * @param {Array} filters The filters to apply.\n * @param {HTMLImageElement|HTMLCanvasElement} source The source to be filtered.\n * @param {Number} width The width of the source input.\n * @param {Number} height The height of the source input.\n * @param {HTMLCanvasElement} targetCanvas The destination for filtered output to be drawn.\n * @param {String|undefined} cacheKey A key used to cache resources related to the source. If\n * omitted, caching will be skipped.\n */\n applyFilters: function(filters, source, width, height, targetCanvas, cacheKey) {\n var gl = this.gl;\n var cachedTexture;\n if (cacheKey) {\n cachedTexture = this.getCachedTexture(cacheKey, source);\n }\n var pipelineState = {\n originalWidth: source.width || source.originalWidth,\n originalHeight: source.height || source.originalHeight,\n sourceWidth: width,\n sourceHeight: height,\n destinationWidth: width,\n destinationHeight: height,\n context: gl,\n sourceTexture: this.createTexture(gl, width, height, !cachedTexture && source),\n targetTexture: this.createTexture(gl, width, height),\n originalTexture: cachedTexture ||\n this.createTexture(gl, width, height, !cachedTexture && source),\n passes: filters.length,\n webgl: true,\n aPosition: this.aPosition,\n programCache: this.programCache,\n pass: 0,\n filterBackend: this,\n targetCanvas: targetCanvas\n };\n var tempFbo = gl.createFramebuffer();\n gl.bindFramebuffer(gl.FRAMEBUFFER, tempFbo);\n filters.forEach(function(filter) { filter && filter.applyTo(pipelineState); });\n resizeCanvasIfNeeded(pipelineState);\n this.copyGLTo2D(gl, pipelineState);\n gl.bindTexture(gl.TEXTURE_2D, null);\n gl.deleteTexture(pipelineState.sourceTexture);\n gl.deleteTexture(pipelineState.targetTexture);\n gl.deleteFramebuffer(tempFbo);\n targetCanvas.getContext('2d').setTransform(1, 0, 0, 1, 0, 0);\n return pipelineState;\n },\n\n /**\n * Detach event listeners, remove references, and clean up caches.\n */\n dispose: function() {\n if (this.canvas) {\n this.canvas = null;\n this.gl = null;\n }\n this.clearWebGLCaches();\n },\n\n /**\n * Wipe out WebGL-related caches.\n */\n clearWebGLCaches: function() {\n this.programCache = {};\n this.textureCache = {};\n },\n\n /**\n * Create a WebGL texture object.\n *\n * Accepts specific dimensions to initialize the textuer to or a source image.\n *\n * @param {WebGLRenderingContext} gl The GL context to use for creating the texture.\n * @param {Number} width The width to initialize the texture at.\n * @param {Number} height The height to initialize the texture.\n * @param {HTMLImageElement|HTMLCanvasElement} textureImageSource A source for the texture data.\n * @returns {WebGLTexture}\n */\n createTexture: function(gl, width, height, textureImageSource) {\n var texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n if (textureImageSource) {\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, textureImageSource);\n }\n else {\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, width, height, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);\n }\n return texture;\n },\n\n /**\n * Can be optionally used to get a texture from the cache array\n *\n * If an existing texture is not found, a new texture is created and cached.\n *\n * @param {String} uniqueId A cache key to use to find an existing texture.\n * @param {HTMLImageElement|HTMLCanvasElement} textureImageSource A source to use to create the\n * texture cache entry if one does not already exist.\n */\n getCachedTexture: function(uniqueId, textureImageSource) {\n if (this.textureCache[uniqueId]) {\n return this.textureCache[uniqueId];\n }\n else {\n var texture = this.createTexture(\n this.gl, textureImageSource.width, textureImageSource.height, textureImageSource);\n this.textureCache[uniqueId] = texture;\n return texture;\n }\n },\n\n /**\n * Clear out cached resources related to a source image that has been\n * filtered previously.\n *\n * @param {String} cacheKey The cache key provided when the source image was filtered.\n */\n evictCachesForKey: function(cacheKey) {\n if (this.textureCache[cacheKey]) {\n this.gl.deleteTexture(this.textureCache[cacheKey]);\n delete this.textureCache[cacheKey];\n }\n },\n\n copyGLTo2D: copyGLTo2DDrawImage,\n\n /**\n * Attempt to extract GPU information strings from a WebGL context.\n *\n * Useful information when debugging or blacklisting specific GPUs.\n *\n * @returns {Object} A GPU info object with renderer and vendor strings.\n */\n captureGPUInfo: function() {\n if (this.gpuInfo) {\n return this.gpuInfo;\n }\n var gl = this.gl, gpuInfo = { renderer: '', vendor: '' };\n if (!gl) {\n return gpuInfo;\n }\n var ext = gl.getExtension('WEBGL_debug_renderer_info');\n if (ext) {\n var renderer = gl.getParameter(ext.UNMASKED_RENDERER_WEBGL);\n var vendor = gl.getParameter(ext.UNMASKED_VENDOR_WEBGL);\n if (renderer) {\n gpuInfo.renderer = renderer.toLowerCase();\n }\n if (vendor) {\n gpuInfo.vendor = vendor.toLowerCase();\n }\n }\n this.gpuInfo = gpuInfo;\n return gpuInfo;\n },\n };\n})();\n\nfunction resizeCanvasIfNeeded(pipelineState) {\n var targetCanvas = pipelineState.targetCanvas,\n width = targetCanvas.width, height = targetCanvas.height,\n dWidth = pipelineState.destinationWidth,\n dHeight = pipelineState.destinationHeight;\n\n if (width !== dWidth || height !== dHeight) {\n targetCanvas.width = dWidth;\n targetCanvas.height = dHeight;\n }\n}\n\n/**\n * Copy an input WebGL canvas on to an output 2D canvas.\n *\n * The WebGL canvas is assumed to be upside down, with the top-left pixel of the\n * desired output image appearing in the bottom-left corner of the WebGL canvas.\n *\n * @param {WebGLRenderingContext} sourceContext The WebGL context to copy from.\n * @param {HTMLCanvasElement} targetCanvas The 2D target canvas to copy on to.\n * @param {Object} pipelineState The 2D target canvas to copy on to.\n */\nfunction copyGLTo2DDrawImage(gl, pipelineState) {\n var glCanvas = gl.canvas, targetCanvas = pipelineState.targetCanvas,\n ctx = targetCanvas.getContext('2d');\n ctx.translate(0, targetCanvas.height); // move it down again\n ctx.scale(1, -1); // vertical flip\n // where is my image on the big glcanvas?\n var sourceY = glCanvas.height - targetCanvas.height;\n ctx.drawImage(glCanvas, 0, sourceY, targetCanvas.width, targetCanvas.height, 0, 0,\n targetCanvas.width, targetCanvas.height);\n}\n\n/**\n * Copy an input WebGL canvas on to an output 2D canvas using 2d canvas' putImageData\n * API. Measurably faster than using ctx.drawImage in Firefox (version 54 on OSX Sierra).\n *\n * @param {WebGLRenderingContext} sourceContext The WebGL context to copy from.\n * @param {HTMLCanvasElement} targetCanvas The 2D target canvas to copy on to.\n * @param {Object} pipelineState The 2D target canvas to copy on to.\n */\nfunction copyGLTo2DPutImageData(gl, pipelineState) {\n var targetCanvas = pipelineState.targetCanvas, ctx = targetCanvas.getContext('2d'),\n dWidth = pipelineState.destinationWidth,\n dHeight = pipelineState.destinationHeight,\n numBytes = dWidth * dHeight * 4;\n\n // eslint-disable-next-line no-undef\n var u8 = new Uint8Array(this.imageBuffer, 0, numBytes);\n // eslint-disable-next-line no-undef\n var u8Clamped = new Uint8ClampedArray(this.imageBuffer, 0, numBytes);\n\n gl.readPixels(0, 0, dWidth, dHeight, gl.RGBA, gl.UNSIGNED_BYTE, u8);\n var imgData = new ImageData(u8Clamped, dWidth, dHeight);\n ctx.putImageData(imgData, 0, 0);\n}\n\n\n(function() {\n\n 'use strict';\n\n var noop = function() {};\n\n fabric.Canvas2dFilterBackend = Canvas2dFilterBackend;\n\n /**\n * Canvas 2D filter backend.\n */\n function Canvas2dFilterBackend() {};\n\n Canvas2dFilterBackend.prototype = /** @lends fabric.Canvas2dFilterBackend.prototype */ {\n evictCachesForKey: noop,\n dispose: noop,\n clearWebGLCaches: noop,\n\n /**\n * Experimental. This object is a sort of repository of help layers used to avoid\n * of recreating them during frequent filtering. If you are previewing a filter with\n * a slider you probably do not want to create help layers every filter step.\n * in this object there will be appended some canvases, created once, resized sometimes\n * cleared never. Clearing is left to the developer.\n **/\n resources: {\n\n },\n\n /**\n * Apply a set of filters against a source image and draw the filtered output\n * to the provided destination canvas.\n *\n * @param {EnhancedFilter} filters The filter to apply.\n * @param {HTMLImageElement|HTMLCanvasElement} sourceElement The source to be filtered.\n * @param {Number} sourceWidth The width of the source input.\n * @param {Number} sourceHeight The height of the source input.\n * @param {HTMLCanvasElement} targetCanvas The destination for filtered output to be drawn.\n */\n applyFilters: function(filters, sourceElement, sourceWidth, sourceHeight, targetCanvas) {\n var ctx = targetCanvas.getContext('2d');\n ctx.drawImage(sourceElement, 0, 0, sourceWidth, sourceHeight);\n var imageData = ctx.getImageData(0, 0, sourceWidth, sourceHeight);\n var originalImageData = ctx.getImageData(0, 0, sourceWidth, sourceHeight);\n var pipelineState = {\n sourceWidth: sourceWidth,\n sourceHeight: sourceHeight,\n imageData: imageData,\n originalEl: sourceElement,\n originalImageData: originalImageData,\n canvasEl: targetCanvas,\n ctx: ctx,\n filterBackend: this,\n };\n filters.forEach(function(filter) { filter.applyTo(pipelineState); });\n if (pipelineState.imageData.width !== sourceWidth || pipelineState.imageData.height !== sourceHeight) {\n targetCanvas.width = pipelineState.imageData.width;\n targetCanvas.height = pipelineState.imageData.height;\n }\n ctx.putImageData(pipelineState.imageData, 0, 0);\n return pipelineState;\n },\n\n };\n})();\n\n\n/**\n * @namespace fabric.Image.filters\n * @memberOf fabric.Image\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-2#image_filters}\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n */\nfabric.Image = fabric.Image || { };\nfabric.Image.filters = fabric.Image.filters || { };\n\n/**\n * Root filter class from which all filter classes inherit from\n * @class fabric.Image.filters.BaseFilter\n * @memberOf fabric.Image.filters\n */\nfabric.Image.filters.BaseFilter = fabric.util.createClass(/** @lends fabric.Image.filters.BaseFilter.prototype */ {\n\n /**\n * Filter type\n * @param {String} type\n * @default\n */\n type: 'BaseFilter',\n\n /**\n * Array of attributes to send with buffers. do not modify\n * @private\n */\n\n vertexSource: 'attribute vec2 aPosition;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vTexCoord = aPosition;\\n' +\n 'gl_Position = vec4(aPosition * 2.0 - 1.0, 0.0, 1.0);\\n' +\n '}',\n\n fragmentSource: 'precision highp float;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'void main() {\\n' +\n 'gl_FragColor = texture2D(uTexture, vTexCoord);\\n' +\n '}',\n\n /**\n * Constructor\n * @param {Object} [options] Options object\n */\n initialize: function(options) {\n if (options) {\n this.setOptions(options);\n }\n },\n\n /**\n * Sets filter's properties from options\n * @param {Object} [options] Options object\n */\n setOptions: function(options) {\n for (var prop in options) {\n this[prop] = options[prop];\n }\n },\n\n /**\n * Compile this filter's shader program.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context to use for shader compilation.\n * @param {String} fragmentSource fragmentShader source for compilation\n * @param {String} vertexSource vertexShader source for compilation\n */\n createProgram: function(gl, fragmentSource, vertexSource) {\n fragmentSource = fragmentSource || this.fragmentSource;\n vertexSource = vertexSource || this.vertexSource;\n if (fabric.webGlPrecision !== 'highp'){\n fragmentSource = fragmentSource.replace(\n /precision highp float/g,\n 'precision ' + fabric.webGlPrecision + ' float'\n );\n }\n var vertexShader = gl.createShader(gl.VERTEX_SHADER);\n gl.shaderSource(vertexShader, vertexSource);\n gl.compileShader(vertexShader);\n if (!gl.getShaderParameter(vertexShader, gl.COMPILE_STATUS)) {\n throw new Error(\n // eslint-disable-next-line prefer-template\n 'Vertex shader compile error for ' + this.type + ': ' +\n gl.getShaderInfoLog(vertexShader)\n );\n }\n\n var fragmentShader = gl.createShader(gl.FRAGMENT_SHADER);\n gl.shaderSource(fragmentShader, fragmentSource);\n gl.compileShader(fragmentShader);\n if (!gl.getShaderParameter(fragmentShader, gl.COMPILE_STATUS)) {\n throw new Error(\n // eslint-disable-next-line prefer-template\n 'Fragment shader compile error for ' + this.type + ': ' +\n gl.getShaderInfoLog(fragmentShader)\n );\n }\n\n var program = gl.createProgram();\n gl.attachShader(program, vertexShader);\n gl.attachShader(program, fragmentShader);\n gl.linkProgram(program);\n if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {\n throw new Error(\n // eslint-disable-next-line prefer-template\n 'Shader link error for \"${this.type}\" ' +\n gl.getProgramInfoLog(program)\n );\n }\n\n var attributeLocations = this.getAttributeLocations(gl, program);\n var uniformLocations = this.getUniformLocations(gl, program) || { };\n uniformLocations.uStepW = gl.getUniformLocation(program, 'uStepW');\n uniformLocations.uStepH = gl.getUniformLocation(program, 'uStepH');\n return {\n program: program,\n attributeLocations: attributeLocations,\n uniformLocations: uniformLocations\n };\n },\n\n /**\n * Return a map of attribute names to WebGLAttributeLocation objects.\n *\n * @param {WebGLRenderingContext} gl The canvas context used to compile the shader program.\n * @param {WebGLShaderProgram} program The shader program from which to take attribute locations.\n * @returns {Object} A map of attribute names to attribute locations.\n */\n getAttributeLocations: function(gl, program) {\n return {\n aPosition: gl.getAttribLocation(program, 'aPosition'),\n };\n },\n\n /**\n * Return a map of uniform names to WebGLUniformLocation objects.\n *\n * Intended to be overridden by subclasses.\n *\n * @param {WebGLRenderingContext} gl The canvas context used to compile the shader program.\n * @param {WebGLShaderProgram} program The shader program from which to take uniform locations.\n * @returns {Object} A map of uniform names to uniform locations.\n */\n getUniformLocations: function (/* gl, program */) {\n // in case i do not need any special uniform i need to return an empty object\n return { };\n },\n\n /**\n * Send attribute data from this filter to its shader program on the GPU.\n *\n * @param {WebGLRenderingContext} gl The canvas context used to compile the shader program.\n * @param {Object} attributeLocations A map of shader attribute names to their locations.\n */\n sendAttributeData: function(gl, attributeLocations, aPositionData) {\n var attributeLocation = attributeLocations.aPosition;\n var buffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, buffer);\n gl.enableVertexAttribArray(attributeLocation);\n gl.vertexAttribPointer(attributeLocation, 2, gl.FLOAT, false, 0, 0);\n gl.bufferData(gl.ARRAY_BUFFER, aPositionData, gl.STATIC_DRAW);\n },\n\n _setupFrameBuffer: function(options) {\n var gl = options.context, width, height;\n if (options.passes > 1) {\n width = options.destinationWidth;\n height = options.destinationHeight;\n if (options.sourceWidth !== width || options.sourceHeight !== height) {\n gl.deleteTexture(options.targetTexture);\n options.targetTexture = options.filterBackend.createTexture(gl, width, height);\n }\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D,\n options.targetTexture, 0);\n }\n else {\n // draw last filter on canvas and not to framebuffer.\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n gl.finish();\n }\n },\n\n _swapTextures: function(options) {\n options.passes--;\n options.pass++;\n var temp = options.targetTexture;\n options.targetTexture = options.sourceTexture;\n options.sourceTexture = temp;\n },\n\n /**\n * Generic isNeutral implementation for one parameter based filters.\n * Used only in image applyFilters to discard filters that will not have an effect\n * on the image\n * Other filters may need their own verison ( ColorMatrix, HueRotation, gamma, ComposedFilter )\n * @param {Object} options\n **/\n isNeutralState: function(/* options */) {\n var main = this.mainParameter,\n _class = fabric.Image.filters[this.type].prototype;\n if (main) {\n if (Array.isArray(_class[main])) {\n for (var i = _class[main].length; i--;) {\n if (this[main][i] !== _class[main][i]) {\n return false;\n }\n }\n return true;\n }\n else {\n return _class[main] === this[main];\n }\n }\n else {\n return false;\n }\n },\n\n /**\n * Apply this filter to the input image data provided.\n *\n * Determines whether to use WebGL or Canvas2D based on the options.webgl flag.\n *\n * @param {Object} options\n * @param {Number} options.passes The number of filters remaining to be executed\n * @param {Boolean} options.webgl Whether to use webgl to render the filter.\n * @param {WebGLTexture} options.sourceTexture The texture setup as the source to be filtered.\n * @param {WebGLTexture} options.targetTexture The texture where filtered output should be drawn.\n * @param {WebGLRenderingContext} options.context The GL context used for rendering.\n * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.\n */\n applyTo: function(options) {\n if (options.webgl) {\n this._setupFrameBuffer(options);\n this.applyToWebGL(options);\n this._swapTextures(options);\n }\n else {\n this.applyTo2d(options);\n }\n },\n\n /**\n * Retrieves the cached shader.\n * @param {Object} options\n * @param {WebGLRenderingContext} options.context The GL context used for rendering.\n * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.\n */\n retrieveShader: function(options) {\n if (!options.programCache.hasOwnProperty(this.type)) {\n options.programCache[this.type] = this.createProgram(options.context);\n }\n return options.programCache[this.type];\n },\n\n /**\n * Apply this filter using webgl.\n *\n * @param {Object} options\n * @param {Number} options.passes The number of filters remaining to be executed\n * @param {Boolean} options.webgl Whether to use webgl to render the filter.\n * @param {WebGLTexture} options.originalTexture The texture of the original input image.\n * @param {WebGLTexture} options.sourceTexture The texture setup as the source to be filtered.\n * @param {WebGLTexture} options.targetTexture The texture where filtered output should be drawn.\n * @param {WebGLRenderingContext} options.context The GL context used for rendering.\n * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.\n */\n applyToWebGL: function(options) {\n var gl = options.context;\n var shader = this.retrieveShader(options);\n if (options.pass === 0 && options.originalTexture) {\n gl.bindTexture(gl.TEXTURE_2D, options.originalTexture);\n }\n else {\n gl.bindTexture(gl.TEXTURE_2D, options.sourceTexture);\n }\n gl.useProgram(shader.program);\n this.sendAttributeData(gl, shader.attributeLocations, options.aPosition);\n\n gl.uniform1f(shader.uniformLocations.uStepW, 1 / options.sourceWidth);\n gl.uniform1f(shader.uniformLocations.uStepH, 1 / options.sourceHeight);\n\n this.sendUniformData(gl, shader.uniformLocations);\n gl.viewport(0, 0, options.destinationWidth, options.destinationHeight);\n gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);\n },\n\n bindAdditionalTexture: function(gl, texture, textureUnit) {\n gl.activeTexture(textureUnit);\n gl.bindTexture(gl.TEXTURE_2D, texture);\n // reset active texture to 0 as usual\n gl.activeTexture(gl.TEXTURE0);\n },\n\n unbindAdditionalTexture: function(gl, textureUnit) {\n gl.activeTexture(textureUnit);\n gl.bindTexture(gl.TEXTURE_2D, null);\n gl.activeTexture(gl.TEXTURE0);\n },\n\n getMainParameter: function() {\n return this[this.mainParameter];\n },\n\n setMainParameter: function(value) {\n this[this.mainParameter] = value;\n },\n\n /**\n * Send uniform data from this filter to its shader program on the GPU.\n *\n * Intended to be overridden by subclasses.\n *\n * @param {WebGLRenderingContext} gl The canvas context used to compile the shader program.\n * @param {Object} uniformLocations A map of shader uniform names to their locations.\n */\n sendUniformData: function(/* gl, uniformLocations */) {\n // Intentionally left blank. Override me in subclasses.\n },\n\n /**\n * If needed by a 2d filter, this functions can create an helper canvas to be used\n * remember that options.targetCanvas is available for use till end of chain.\n */\n createHelpLayer: function(options) {\n if (!options.helpLayer) {\n var helpLayer = document.createElement('canvas');\n helpLayer.width = options.sourceWidth;\n helpLayer.height = options.sourceHeight;\n options.helpLayer = helpLayer;\n }\n },\n\n /**\n * Returns object representation of an instance\n * @return {Object} Object representation of an instance\n */\n toObject: function() {\n var object = { type: this.type }, mainP = this.mainParameter;\n if (mainP) {\n object[mainP] = this[mainP];\n }\n return object;\n },\n\n /**\n * Returns a JSON representation of an instance\n * @return {Object} JSON\n */\n toJSON: function() {\n // delegate, not alias\n return this.toObject();\n }\n});\n\nfabric.Image.filters.BaseFilter.fromObject = function(object, callback) {\n var filter = new fabric.Image.filters[object.type](object);\n callback && callback(filter);\n return filter;\n};\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * Color Matrix filter class\n * @class fabric.Image.filters.ColorMatrix\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @see {@link fabric.Image.filters.ColorMatrix#initialize} for constructor definition\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n * @see {@Link http://www.webwasp.co.uk/tutorials/219/Color_Matrix_Filter.php}\n * @see {@Link http://phoboslab.org/log/2013/11/fast-image-filters-with-webgl}\n * @example Kodachrome filter\n * var filter = new fabric.Image.filters.ColorMatrix({\n * matrix: [\n 1.1285582396593525, -0.3967382283601348, -0.03992559172921793, 0, 63.72958762196502,\n -0.16404339962244616, 1.0835251566291304, -0.05498805115633132, 0, 24.732407896706203,\n -0.16786010706155763, -0.5603416277695248, 1.6014850761964943, 0, 35.62982807460946,\n 0, 0, 0, 1, 0\n ]\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n */\n filters.ColorMatrix = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.ColorMatrix.prototype */ {\n\n /**\n * Filter type\n * @param {String} type\n * @default\n */\n type: 'ColorMatrix',\n\n fragmentSource: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'uniform mat4 uColorMatrix;\\n' +\n 'uniform vec4 uConstants;\\n' +\n 'void main() {\\n' +\n 'vec4 color = texture2D(uTexture, vTexCoord);\\n' +\n 'color *= uColorMatrix;\\n' +\n 'color += uConstants;\\n' +\n 'gl_FragColor = color;\\n' +\n '}',\n\n /**\n * Colormatrix for pixels.\n * array of 20 floats. Numbers in positions 4, 9, 14, 19 loose meaning\n * outside the -1, 1 range.\n * 0.0039215686 is the part of 1 that get translated to 1 in 2d\n * @param {Array} matrix array of 20 numbers.\n * @default\n */\n matrix: [\n 1, 0, 0, 0, 0,\n 0, 1, 0, 0, 0,\n 0, 0, 1, 0, 0,\n 0, 0, 0, 1, 0\n ],\n\n mainParameter: 'matrix',\n\n /**\n * Lock the colormatrix on the color part, skipping alpha, manly for non webgl scenario\n * to save some calculation\n */\n colorsOnly: true,\n\n /**\n * Constructor\n * @param {Object} [options] Options object\n */\n initialize: function(options) {\n this.callSuper('initialize', options);\n // create a new array instead mutating the prototype with push\n this.matrix = this.matrix.slice(0);\n },\n\n /**\n * Apply the ColorMatrix operation to a Uint8Array representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8Array to be filtered.\n */\n applyTo2d: function(options) {\n var imageData = options.imageData,\n data = imageData.data,\n iLen = data.length,\n m = this.matrix,\n r, g, b, a, i, colorsOnly = this.colorsOnly;\n\n for (i = 0; i < iLen; i += 4) {\n r = data[i];\n g = data[i + 1];\n b = data[i + 2];\n if (colorsOnly) {\n data[i] = r * m[0] + g * m[1] + b * m[2] + m[4] * 255;\n data[i + 1] = r * m[5] + g * m[6] + b * m[7] + m[9] * 255;\n data[i + 2] = r * m[10] + g * m[11] + b * m[12] + m[14] * 255;\n }\n else {\n a = data[i + 3];\n data[i] = r * m[0] + g * m[1] + b * m[2] + a * m[3] + m[4] * 255;\n data[i + 1] = r * m[5] + g * m[6] + b * m[7] + a * m[8] + m[9] * 255;\n data[i + 2] = r * m[10] + g * m[11] + b * m[12] + a * m[13] + m[14] * 255;\n data[i + 3] = r * m[15] + g * m[16] + b * m[17] + a * m[18] + m[19] * 255;\n }\n }\n },\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations: function(gl, program) {\n return {\n uColorMatrix: gl.getUniformLocation(program, 'uColorMatrix'),\n uConstants: gl.getUniformLocation(program, 'uConstants'),\n };\n },\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData: function(gl, uniformLocations) {\n var m = this.matrix,\n matrix = [\n m[0], m[1], m[2], m[3],\n m[5], m[6], m[7], m[8],\n m[10], m[11], m[12], m[13],\n m[15], m[16], m[17], m[18]\n ],\n constants = [m[4], m[9], m[14], m[19]];\n gl.uniformMatrix4fv(uniformLocations.uColorMatrix, false, matrix);\n gl.uniform4fv(uniformLocations.uConstants, constants);\n },\n });\n\n /**\n * Returns filter instance from an object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {function} [callback] function to invoke after filter creation\n * @return {fabric.Image.filters.ColorMatrix} Instance of fabric.Image.filters.ColorMatrix\n */\n fabric.Image.filters.ColorMatrix.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * Brightness filter class\n * @class fabric.Image.filters.Brightness\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @see {@link fabric.Image.filters.Brightness#initialize} for constructor definition\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n * @example\n * var filter = new fabric.Image.filters.Brightness({\n * brightness: 0.05\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n */\n filters.Brightness = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Brightness.prototype */ {\n\n /**\n * Filter type\n * @param {String} type\n * @default\n */\n type: 'Brightness',\n\n /**\n * Fragment source for the brightness program\n */\n fragmentSource: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform float uBrightness;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 color = texture2D(uTexture, vTexCoord);\\n' +\n 'color.rgb += uBrightness;\\n' +\n 'gl_FragColor = color;\\n' +\n '}',\n\n /**\n * Brightness value, from -1 to 1.\n * translated to -255 to 255 for 2d\n * 0.0039215686 is the part of 1 that get translated to 1 in 2d\n * @param {Number} brightness\n * @default\n */\n brightness: 0,\n\n /**\n * Describe the property that is the filter parameter\n * @param {String} m\n * @default\n */\n mainParameter: 'brightness',\n\n /**\n * Apply the Brightness operation to a Uint8ClampedArray representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered.\n */\n applyTo2d: function(options) {\n if (this.brightness === 0) {\n return;\n }\n var imageData = options.imageData,\n data = imageData.data, i, len = data.length,\n brightness = Math.round(this.brightness * 255);\n for (i = 0; i < len; i += 4) {\n data[i] = data[i] + brightness;\n data[i + 1] = data[i + 1] + brightness;\n data[i + 2] = data[i + 2] + brightness;\n }\n },\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations: function(gl, program) {\n return {\n uBrightness: gl.getUniformLocation(program, 'uBrightness'),\n };\n },\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData: function(gl, uniformLocations) {\n gl.uniform1f(uniformLocations.uBrightness, this.brightness);\n },\n });\n\n /**\n * Returns filter instance from an object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {function} [callback] to be invoked after filter creation\n * @return {fabric.Image.filters.Brightness} Instance of fabric.Image.filters.Brightness\n */\n fabric.Image.filters.Brightness.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n extend = fabric.util.object.extend,\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * Adapted from html5rocks article\n * @class fabric.Image.filters.Convolute\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @see {@link fabric.Image.filters.Convolute#initialize} for constructor definition\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n * @example Sharpen filter\n * var filter = new fabric.Image.filters.Convolute({\n * matrix: [ 0, -1, 0,\n * -1, 5, -1,\n * 0, -1, 0 ]\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n * canvas.renderAll();\n * @example Blur filter\n * var filter = new fabric.Image.filters.Convolute({\n * matrix: [ 1/9, 1/9, 1/9,\n * 1/9, 1/9, 1/9,\n * 1/9, 1/9, 1/9 ]\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n * canvas.renderAll();\n * @example Emboss filter\n * var filter = new fabric.Image.filters.Convolute({\n * matrix: [ 1, 1, 1,\n * 1, 0.7, -1,\n * -1, -1, -1 ]\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n * canvas.renderAll();\n * @example Emboss filter with opaqueness\n * var filter = new fabric.Image.filters.Convolute({\n * opaque: true,\n * matrix: [ 1, 1, 1,\n * 1, 0.7, -1,\n * -1, -1, -1 ]\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n * canvas.renderAll();\n */\n filters.Convolute = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Convolute.prototype */ {\n\n /**\n * Filter type\n * @param {String} type\n * @default\n */\n type: 'Convolute',\n\n /*\n * Opaque value (true/false)\n */\n opaque: false,\n\n /*\n * matrix for the filter, max 9x9\n */\n matrix: [0, 0, 0, 0, 1, 0, 0, 0, 0],\n\n /**\n * Fragment source for the brightness program\n */\n fragmentSource: {\n Convolute_3_1: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform float uMatrix[9];\\n' +\n 'uniform float uStepW;\\n' +\n 'uniform float uStepH;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 color = vec4(0, 0, 0, 0);\\n' +\n 'for (float h = 0.0; h < 3.0; h+=1.0) {\\n' +\n 'for (float w = 0.0; w < 3.0; w+=1.0) {\\n' +\n 'vec2 matrixPos = vec2(uStepW * (w - 1), uStepH * (h - 1));\\n' +\n 'color += texture2D(uTexture, vTexCoord + matrixPos) * uMatrix[int(h * 3.0 + w)];\\n' +\n '}\\n' +\n '}\\n' +\n 'gl_FragColor = color;\\n' +\n '}',\n Convolute_3_0: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform float uMatrix[9];\\n' +\n 'uniform float uStepW;\\n' +\n 'uniform float uStepH;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 color = vec4(0, 0, 0, 1);\\n' +\n 'for (float h = 0.0; h < 3.0; h+=1.0) {\\n' +\n 'for (float w = 0.0; w < 3.0; w+=1.0) {\\n' +\n 'vec2 matrixPos = vec2(uStepW * (w - 1.0), uStepH * (h - 1.0));\\n' +\n 'color.rgb += texture2D(uTexture, vTexCoord + matrixPos).rgb * uMatrix[int(h * 3.0 + w)];\\n' +\n '}\\n' +\n '}\\n' +\n 'float alpha = texture2D(uTexture, vTexCoord).a;\\n' +\n 'gl_FragColor = color;\\n' +\n 'gl_FragColor.a = alpha;\\n' +\n '}',\n Convolute_5_1: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform float uMatrix[25];\\n' +\n 'uniform float uStepW;\\n' +\n 'uniform float uStepH;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 color = vec4(0, 0, 0, 0);\\n' +\n 'for (float h = 0.0; h < 5.0; h+=1.0) {\\n' +\n 'for (float w = 0.0; w < 5.0; w+=1.0) {\\n' +\n 'vec2 matrixPos = vec2(uStepW * (w - 2.0), uStepH * (h - 2.0));\\n' +\n 'color += texture2D(uTexture, vTexCoord + matrixPos) * uMatrix[int(h * 5.0 + w)];\\n' +\n '}\\n' +\n '}\\n' +\n 'gl_FragColor = color;\\n' +\n '}',\n Convolute_5_0: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform float uMatrix[25];\\n' +\n 'uniform float uStepW;\\n' +\n 'uniform float uStepH;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 color = vec4(0, 0, 0, 1);\\n' +\n 'for (float h = 0.0; h < 5.0; h+=1.0) {\\n' +\n 'for (float w = 0.0; w < 5.0; w+=1.0) {\\n' +\n 'vec2 matrixPos = vec2(uStepW * (w - 2.0), uStepH * (h - 2.0));\\n' +\n 'color.rgb += texture2D(uTexture, vTexCoord + matrixPos).rgb * uMatrix[int(h * 5.0 + w)];\\n' +\n '}\\n' +\n '}\\n' +\n 'float alpha = texture2D(uTexture, vTexCoord).a;\\n' +\n 'gl_FragColor = color;\\n' +\n 'gl_FragColor.a = alpha;\\n' +\n '}',\n Convolute_7_1: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform float uMatrix[49];\\n' +\n 'uniform float uStepW;\\n' +\n 'uniform float uStepH;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 color = vec4(0, 0, 0, 0);\\n' +\n 'for (float h = 0.0; h < 7.0; h+=1.0) {\\n' +\n 'for (float w = 0.0; w < 7.0; w+=1.0) {\\n' +\n 'vec2 matrixPos = vec2(uStepW * (w - 3.0), uStepH * (h - 3.0));\\n' +\n 'color += texture2D(uTexture, vTexCoord + matrixPos) * uMatrix[int(h * 7.0 + w)];\\n' +\n '}\\n' +\n '}\\n' +\n 'gl_FragColor = color;\\n' +\n '}',\n Convolute_7_0: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform float uMatrix[49];\\n' +\n 'uniform float uStepW;\\n' +\n 'uniform float uStepH;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 color = vec4(0, 0, 0, 1);\\n' +\n 'for (float h = 0.0; h < 7.0; h+=1.0) {\\n' +\n 'for (float w = 0.0; w < 7.0; w+=1.0) {\\n' +\n 'vec2 matrixPos = vec2(uStepW * (w - 3.0), uStepH * (h - 3.0));\\n' +\n 'color.rgb += texture2D(uTexture, vTexCoord + matrixPos).rgb * uMatrix[int(h * 7.0 + w)];\\n' +\n '}\\n' +\n '}\\n' +\n 'float alpha = texture2D(uTexture, vTexCoord).a;\\n' +\n 'gl_FragColor = color;\\n' +\n 'gl_FragColor.a = alpha;\\n' +\n '}',\n Convolute_9_1: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform float uMatrix[81];\\n' +\n 'uniform float uStepW;\\n' +\n 'uniform float uStepH;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 color = vec4(0, 0, 0, 0);\\n' +\n 'for (float h = 0.0; h < 9.0; h+=1.0) {\\n' +\n 'for (float w = 0.0; w < 9.0; w+=1.0) {\\n' +\n 'vec2 matrixPos = vec2(uStepW * (w - 4.0), uStepH * (h - 4.0));\\n' +\n 'color += texture2D(uTexture, vTexCoord + matrixPos) * uMatrix[int(h * 9.0 + w)];\\n' +\n '}\\n' +\n '}\\n' +\n 'gl_FragColor = color;\\n' +\n '}',\n Convolute_9_0: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform float uMatrix[81];\\n' +\n 'uniform float uStepW;\\n' +\n 'uniform float uStepH;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 color = vec4(0, 0, 0, 1);\\n' +\n 'for (float h = 0.0; h < 9.0; h+=1.0) {\\n' +\n 'for (float w = 0.0; w < 9.0; w+=1.0) {\\n' +\n 'vec2 matrixPos = vec2(uStepW * (w - 4.0), uStepH * (h - 4.0));\\n' +\n 'color.rgb += texture2D(uTexture, vTexCoord + matrixPos).rgb * uMatrix[int(h * 9.0 + w)];\\n' +\n '}\\n' +\n '}\\n' +\n 'float alpha = texture2D(uTexture, vTexCoord).a;\\n' +\n 'gl_FragColor = color;\\n' +\n 'gl_FragColor.a = alpha;\\n' +\n '}',\n },\n\n /**\n * Constructor\n * @memberOf fabric.Image.filters.Convolute.prototype\n * @param {Object} [options] Options object\n * @param {Boolean} [options.opaque=false] Opaque value (true/false)\n * @param {Array} [options.matrix] Filter matrix\n */\n\n\n /**\n * Retrieves the cached shader.\n * @param {Object} options\n * @param {WebGLRenderingContext} options.context The GL context used for rendering.\n * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.\n */\n retrieveShader: function(options) {\n var size = Math.sqrt(this.matrix.length);\n var cacheKey = this.type + '_' + size + '_' + (this.opaque ? 1 : 0);\n var shaderSource = this.fragmentSource[cacheKey];\n if (!options.programCache.hasOwnProperty(cacheKey)) {\n options.programCache[cacheKey] = this.createProgram(options.context, shaderSource);\n }\n return options.programCache[cacheKey];\n },\n\n /**\n * Apply the Brightness operation to a Uint8ClampedArray representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered.\n */\n applyTo2d: function(options) {\n var imageData = options.imageData,\n data = imageData.data,\n weights = this.matrix,\n side = Math.round(Math.sqrt(weights.length)),\n halfSide = Math.floor(side / 2),\n sw = imageData.width,\n sh = imageData.height,\n output = options.ctx.createImageData(sw, sh),\n dst = output.data,\n // go through the destination image pixels\n alphaFac = this.opaque ? 1 : 0,\n r, g, b, a, dstOff,\n scx, scy, srcOff, wt,\n x, y, cx, cy;\n\n for (y = 0; y < sh; y++) {\n for (x = 0; x < sw; x++) {\n dstOff = (y * sw + x) * 4;\n // calculate the weighed sum of the source image pixels that\n // fall under the convolution matrix\n r = 0; g = 0; b = 0; a = 0;\n\n for (cy = 0; cy < side; cy++) {\n for (cx = 0; cx < side; cx++) {\n scy = y + cy - halfSide;\n scx = x + cx - halfSide;\n\n // eslint-disable-next-line max-depth\n if (scy < 0 || scy > sh || scx < 0 || scx > sw) {\n continue;\n }\n\n srcOff = (scy * sw + scx) * 4;\n wt = weights[cy * side + cx];\n\n r += data[srcOff] * wt;\n g += data[srcOff + 1] * wt;\n b += data[srcOff + 2] * wt;\n // eslint-disable-next-line max-depth\n if (!alphaFac) {\n a += data[srcOff + 3] * wt;\n }\n }\n }\n dst[dstOff] = r;\n dst[dstOff + 1] = g;\n dst[dstOff + 2] = b;\n if (!alphaFac) {\n dst[dstOff + 3] = a;\n }\n else {\n dst[dstOff + 3] = data[dstOff + 3];\n }\n }\n }\n options.imageData = output;\n },\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations: function(gl, program) {\n return {\n uMatrix: gl.getUniformLocation(program, 'uMatrix'),\n uOpaque: gl.getUniformLocation(program, 'uOpaque'),\n uHalfSize: gl.getUniformLocation(program, 'uHalfSize'),\n uSize: gl.getUniformLocation(program, 'uSize'),\n };\n },\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData: function(gl, uniformLocations) {\n gl.uniform1fv(uniformLocations.uMatrix, this.matrix);\n },\n\n /**\n * Returns object representation of an instance\n * @return {Object} Object representation of an instance\n */\n toObject: function() {\n return extend(this.callSuper('toObject'), {\n opaque: this.opaque,\n matrix: this.matrix\n });\n }\n });\n\n /**\n * Returns filter instance from an object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {function} [callback] to be invoked after filter creation\n * @return {fabric.Image.filters.Convolute} Instance of fabric.Image.filters.Convolute\n */\n fabric.Image.filters.Convolute.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * Grayscale image filter class\n * @class fabric.Image.filters.Grayscale\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n * @example\n * var filter = new fabric.Image.filters.Grayscale();\n * object.filters.push(filter);\n * object.applyFilters();\n */\n filters.Grayscale = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Grayscale.prototype */ {\n\n /**\n * Filter type\n * @param {String} type\n * @default\n */\n type: 'Grayscale',\n\n fragmentSource: {\n average: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 color = texture2D(uTexture, vTexCoord);\\n' +\n 'float average = (color.r + color.b + color.g) / 3.0;\\n' +\n 'gl_FragColor = vec4(average, average, average, color.a);\\n' +\n '}',\n lightness: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform int uMode;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 col = texture2D(uTexture, vTexCoord);\\n' +\n 'float average = (max(max(col.r, col.g),col.b) + min(min(col.r, col.g),col.b)) / 2.0;\\n' +\n 'gl_FragColor = vec4(average, average, average, col.a);\\n' +\n '}',\n luminosity: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform int uMode;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 col = texture2D(uTexture, vTexCoord);\\n' +\n 'float average = 0.21 * col.r + 0.72 * col.g + 0.07 * col.b;\\n' +\n 'gl_FragColor = vec4(average, average, average, col.a);\\n' +\n '}',\n },\n\n\n /**\n * Grayscale mode, between 'average', 'lightness', 'luminosity'\n * @param {String} type\n * @default\n */\n mode: 'average',\n\n mainParameter: 'mode',\n\n /**\n * Apply the Grayscale operation to a Uint8Array representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8Array to be filtered.\n */\n applyTo2d: function(options) {\n var imageData = options.imageData,\n data = imageData.data, i,\n len = data.length, value,\n mode = this.mode;\n for (i = 0; i < len; i += 4) {\n if (mode === 'average') {\n value = (data[i] + data[i + 1] + data[i + 2]) / 3;\n }\n else if (mode === 'lightness') {\n value = (Math.min(data[i], data[i + 1], data[i + 2]) +\n Math.max(data[i], data[i + 1], data[i + 2])) / 2;\n }\n else if (mode === 'luminosity') {\n value = 0.21 * data[i] + 0.72 * data[i + 1] + 0.07 * data[i + 2];\n }\n data[i] = value;\n data[i + 1] = value;\n data[i + 2] = value;\n }\n },\n\n /**\n * Retrieves the cached shader.\n * @param {Object} options\n * @param {WebGLRenderingContext} options.context The GL context used for rendering.\n * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.\n */\n retrieveShader: function(options) {\n var cacheKey = this.type + '_' + this.mode;\n if (!options.programCache.hasOwnProperty(cacheKey)) {\n var shaderSource = this.fragmentSource[this.mode];\n options.programCache[cacheKey] = this.createProgram(options.context, shaderSource);\n }\n return options.programCache[cacheKey];\n },\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations: function(gl, program) {\n return {\n uMode: gl.getUniformLocation(program, 'uMode'),\n };\n },\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData: function(gl, uniformLocations) {\n // default average mode.\n var mode = 1;\n gl.uniform1i(uniformLocations.uMode, mode);\n },\n\n /**\n * Grayscale filter isNeutralState implementation\n * The filter is never neutral\n * on the image\n **/\n isNeutralState: function() {\n return false;\n },\n });\n\n /**\n * Returns filter instance from an object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {function} [callback] to be invoked after filter creation\n * @return {fabric.Image.filters.Grayscale} Instance of fabric.Image.filters.Grayscale\n */\n fabric.Image.filters.Grayscale.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * Invert filter class\n * @class fabric.Image.filters.Invert\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n * @example\n * var filter = new fabric.Image.filters.Invert();\n * object.filters.push(filter);\n * object.applyFilters(canvas.renderAll.bind(canvas));\n */\n filters.Invert = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Invert.prototype */ {\n\n /**\n * Filter type\n * @param {String} type\n * @default\n */\n type: 'Invert',\n\n fragmentSource: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform int uInvert;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 color = texture2D(uTexture, vTexCoord);\\n' +\n 'if (uInvert == 1) {\\n' +\n 'gl_FragColor = vec4(1.0 - color.r,1.0 -color.g,1.0 -color.b,color.a);\\n' +\n '} else {\\n' +\n 'gl_FragColor = color;\\n' +\n '}\\n' +\n '}',\n\n /**\n * Filter invert. if false, does nothing\n * @param {Boolean} invert\n * @default\n */\n invert: true,\n\n mainParameter: 'invert',\n\n /**\n * Apply the Invert operation to a Uint8Array representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8Array to be filtered.\n */\n applyTo2d: function(options) {\n var imageData = options.imageData,\n data = imageData.data, i,\n len = data.length;\n for (i = 0; i < len; i += 4) {\n data[i] = 255 - data[i];\n data[i + 1] = 255 - data[i + 1];\n data[i + 2] = 255 - data[i + 2];\n }\n },\n\n /**\n * Invert filter isNeutralState implementation\n * Used only in image applyFilters to discard filters that will not have an effect\n * on the image\n * @param {Object} options\n **/\n isNeutralState: function() {\n return !this.invert;\n },\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations: function(gl, program) {\n return {\n uInvert: gl.getUniformLocation(program, 'uInvert'),\n };\n },\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData: function(gl, uniformLocations) {\n gl.uniform1i(uniformLocations.uInvert, this.invert);\n },\n });\n\n /**\n * Returns filter instance from an object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {function} [callback] to be invoked after filter creation\n * @return {fabric.Image.filters.Invert} Instance of fabric.Image.filters.Invert\n */\n fabric.Image.filters.Invert.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n extend = fabric.util.object.extend,\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * Noise filter class\n * @class fabric.Image.filters.Noise\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @see {@link fabric.Image.filters.Noise#initialize} for constructor definition\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n * @example\n * var filter = new fabric.Image.filters.Noise({\n * noise: 700\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n * canvas.renderAll();\n */\n filters.Noise = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Noise.prototype */ {\n\n /**\n * Filter type\n * @param {String} type\n * @default\n */\n type: 'Noise',\n\n /**\n * Fragment source for the noise program\n */\n fragmentSource: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform float uStepH;\\n' +\n 'uniform float uNoise;\\n' +\n 'uniform float uSeed;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'float rand(vec2 co, float seed, float vScale) {\\n' +\n 'return fract(sin(dot(co.xy * vScale ,vec2(12.9898 , 78.233))) * 43758.5453 * (seed + 0.01) / 2.0);\\n' +\n '}\\n' +\n 'void main() {\\n' +\n 'vec4 color = texture2D(uTexture, vTexCoord);\\n' +\n 'color.rgb += (0.5 - rand(vTexCoord, uSeed, 0.1 / uStepH)) * uNoise;\\n' +\n 'gl_FragColor = color;\\n' +\n '}',\n\n /**\n * Describe the property that is the filter parameter\n * @param {String} m\n * @default\n */\n mainParameter: 'noise',\n\n /**\n * Noise value, from\n * @param {Number} noise\n * @default\n */\n noise: 0,\n\n /**\n * Apply the Brightness operation to a Uint8ClampedArray representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered.\n */\n applyTo2d: function(options) {\n if (this.noise === 0) {\n return;\n }\n var imageData = options.imageData,\n data = imageData.data, i, len = data.length,\n noise = this.noise, rand;\n\n for (i = 0, len = data.length; i < len; i += 4) {\n\n rand = (0.5 - Math.random()) * noise;\n\n data[i] += rand;\n data[i + 1] += rand;\n data[i + 2] += rand;\n }\n },\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations: function(gl, program) {\n return {\n uNoise: gl.getUniformLocation(program, 'uNoise'),\n uSeed: gl.getUniformLocation(program, 'uSeed'),\n };\n },\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData: function(gl, uniformLocations) {\n gl.uniform1f(uniformLocations.uNoise, this.noise / 255);\n gl.uniform1f(uniformLocations.uSeed, Math.random());\n },\n\n /**\n * Returns object representation of an instance\n * @return {Object} Object representation of an instance\n */\n toObject: function() {\n return extend(this.callSuper('toObject'), {\n noise: this.noise\n });\n }\n });\n\n /**\n * Returns filter instance from an object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {Function} [callback] to be invoked after filter creation\n * @return {fabric.Image.filters.Noise} Instance of fabric.Image.filters.Noise\n */\n fabric.Image.filters.Noise.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * Pixelate filter class\n * @class fabric.Image.filters.Pixelate\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @see {@link fabric.Image.filters.Pixelate#initialize} for constructor definition\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n * @example\n * var filter = new fabric.Image.filters.Pixelate({\n * blocksize: 8\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n */\n filters.Pixelate = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Pixelate.prototype */ {\n\n /**\n * Filter type\n * @param {String} type\n * @default\n */\n type: 'Pixelate',\n\n blocksize: 4,\n\n mainParameter: 'blocksize',\n\n /**\n * Fragment source for the Pixelate program\n */\n fragmentSource: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform float uBlocksize;\\n' +\n 'uniform float uStepW;\\n' +\n 'uniform float uStepH;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'float blockW = uBlocksize * uStepW;\\n' +\n 'float blockH = uBlocksize * uStepW;\\n' +\n 'int posX = int(vTexCoord.x / blockW);\\n' +\n 'int posY = int(vTexCoord.y / blockH);\\n' +\n 'float fposX = float(posX);\\n' +\n 'float fposY = float(posY);\\n' +\n 'vec2 squareCoords = vec2(fposX * blockW, fposY * blockH);\\n' +\n 'vec4 color = texture2D(uTexture, squareCoords);\\n' +\n 'gl_FragColor = color;\\n' +\n '}',\n\n /**\n * Apply the Pixelate operation to a Uint8ClampedArray representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered.\n */\n applyTo2d: function(options) {\n var imageData = options.imageData,\n data = imageData.data,\n iLen = imageData.height,\n jLen = imageData.width,\n index, i, j, r, g, b, a,\n _i, _j, _iLen, _jLen;\n\n for (i = 0; i < iLen; i += this.blocksize) {\n for (j = 0; j < jLen; j += this.blocksize) {\n\n index = (i * 4) * jLen + (j * 4);\n\n r = data[index];\n g = data[index + 1];\n b = data[index + 2];\n a = data[index + 3];\n\n _iLen = Math.min(i + this.blocksize, iLen);\n _jLen = Math.min(j + this.blocksize, jLen);\n for (_i = i; _i < _iLen; _i++) {\n for (_j = j; _j < _jLen; _j++) {\n index = (_i * 4) * jLen + (_j * 4);\n data[index] = r;\n data[index + 1] = g;\n data[index + 2] = b;\n data[index + 3] = a;\n }\n }\n }\n }\n },\n\n /**\n * Indicate when the filter is not gonna apply changes to the image\n **/\n isNeutralState: function() {\n return this.blocksize === 1;\n },\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations: function(gl, program) {\n return {\n uBlocksize: gl.getUniformLocation(program, 'uBlocksize'),\n uStepW: gl.getUniformLocation(program, 'uStepW'),\n uStepH: gl.getUniformLocation(program, 'uStepH'),\n };\n },\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData: function(gl, uniformLocations) {\n gl.uniform1f(uniformLocations.uBlocksize, this.blocksize);\n },\n });\n\n /**\n * Returns filter instance from an object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {Function} [callback] to be invoked after filter creation\n * @return {fabric.Image.filters.Pixelate} Instance of fabric.Image.filters.Pixelate\n */\n fabric.Image.filters.Pixelate.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n extend = fabric.util.object.extend,\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * Remove white filter class\n * @class fabric.Image.filters.RemoveColor\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @see {@link fabric.Image.filters.RemoveColor#initialize} for constructor definition\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n * @example\n * var filter = new fabric.Image.filters.RemoveColor({\n * threshold: 0.2,\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n * canvas.renderAll();\n */\n filters.RemoveColor = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.RemoveColor.prototype */ {\n\n /**\n * Filter type\n * @param {String} type\n * @default\n */\n type: 'RemoveColor',\n\n /**\n * Color to remove, in any format understood by fabric.Color.\n * @param {String} type\n * @default\n */\n color: '#FFFFFF',\n\n /**\n * Fragment source for the brightness program\n */\n fragmentSource: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform vec4 uLow;\\n' +\n 'uniform vec4 uHigh;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'gl_FragColor = texture2D(uTexture, vTexCoord);\\n' +\n 'if(all(greaterThan(gl_FragColor.rgb,uLow.rgb)) && all(greaterThan(uHigh.rgb,gl_FragColor.rgb))) {\\n' +\n 'gl_FragColor.a = 0.0;\\n' +\n '}\\n' +\n '}',\n\n /**\n * distance to actual color, as value up or down from each r,g,b\n * between 0 and 1\n **/\n distance: 0.02,\n\n /**\n * For color to remove inside distance, use alpha channel for a smoother deletion\n * NOT IMPLEMENTED YET\n **/\n useAlpha: false,\n\n /**\n * Constructor\n * @memberOf fabric.Image.filters.RemoveWhite.prototype\n * @param {Object} [options] Options object\n * @param {Number} [options.color=#RRGGBB] Threshold value\n * @param {Number} [options.distance=10] Distance value\n */\n\n /**\n * Applies filter to canvas element\n * @param {Object} canvasEl Canvas element to apply filter to\n */\n applyTo2d: function(options) {\n var imageData = options.imageData,\n data = imageData.data, i,\n distance = this.distance * 255,\n r, g, b,\n source = new fabric.Color(this.color).getSource(),\n lowC = [\n source[0] - distance,\n source[1] - distance,\n source[2] - distance,\n ],\n highC = [\n source[0] + distance,\n source[1] + distance,\n source[2] + distance,\n ];\n\n\n for (i = 0; i < data.length; i += 4) {\n r = data[i];\n g = data[i + 1];\n b = data[i + 2];\n\n if (r > lowC[0] &&\n g > lowC[1] &&\n b > lowC[2] &&\n r < highC[0] &&\n g < highC[1] &&\n b < highC[2]) {\n data[i + 3] = 0;\n }\n }\n },\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations: function(gl, program) {\n return {\n uLow: gl.getUniformLocation(program, 'uLow'),\n uHigh: gl.getUniformLocation(program, 'uHigh'),\n };\n },\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData: function(gl, uniformLocations) {\n var source = new fabric.Color(this.color).getSource(),\n distance = parseFloat(this.distance),\n lowC = [\n 0 + source[0] / 255 - distance,\n 0 + source[1] / 255 - distance,\n 0 + source[2] / 255 - distance,\n 1\n ],\n highC = [\n source[0] / 255 + distance,\n source[1] / 255 + distance,\n source[2] / 255 + distance,\n 1\n ];\n gl.uniform4fv(uniformLocations.uLow, lowC);\n gl.uniform4fv(uniformLocations.uHigh, highC);\n },\n\n /**\n * Returns object representation of an instance\n * @return {Object} Object representation of an instance\n */\n toObject: function() {\n return extend(this.callSuper('toObject'), {\n color: this.color,\n distance: this.distance\n });\n }\n });\n\n /**\n * Returns filter instance from an object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {Function} [callback] to be invoked after filter creation\n * @return {fabric.Image.filters.RemoveColor} Instance of fabric.Image.filters.RemoveWhite\n */\n fabric.Image.filters.RemoveColor.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n var matrices = {\n Brownie: [\n 0.59970,0.34553,-0.27082,0,0.186,\n -0.03770,0.86095,0.15059,0,-0.1449,\n 0.24113,-0.07441,0.44972,0,-0.02965,\n 0,0,0,1,0\n ],\n Vintage: [\n 0.62793,0.32021,-0.03965,0,0.03784,\n 0.02578,0.64411,0.03259,0,0.02926,\n 0.04660,-0.08512,0.52416,0,0.02023,\n 0,0,0,1,0\n ],\n Kodachrome: [\n 1.12855,-0.39673,-0.03992,0,0.24991,\n -0.16404,1.08352,-0.05498,0,0.09698,\n -0.16786,-0.56034,1.60148,0,0.13972,\n 0,0,0,1,0\n ],\n Technicolor: [\n 1.91252,-0.85453,-0.09155,0,0.04624,\n -0.30878,1.76589,-0.10601,0,-0.27589,\n -0.23110,-0.75018,1.84759,0,0.12137,\n 0,0,0,1,0\n ],\n Polaroid: [\n 1.438,-0.062,-0.062,0,0,\n -0.122,1.378,-0.122,0,0,\n -0.016,-0.016,1.483,0,0,\n 0,0,0,1,0\n ],\n Sepia: [\n 0.393, 0.769, 0.189, 0, 0,\n 0.349, 0.686, 0.168, 0, 0,\n 0.272, 0.534, 0.131, 0, 0,\n 0, 0, 0, 1, 0\n ],\n BlackWhite: [\n 1.5, 1.5, 1.5, 0, -1,\n 1.5, 1.5, 1.5, 0, -1,\n 1.5, 1.5, 1.5, 0, -1,\n 0, 0, 0, 1, 0,\n ]\n };\n\n for (var key in matrices) {\n filters[key] = createClass(filters.ColorMatrix, /** @lends fabric.Image.filters.Sepia.prototype */ {\n\n /**\n * Filter type\n * @param {String} type\n * @default\n */\n type: key,\n\n /**\n * Colormatrix for the effect\n * array of 20 floats. Numbers in positions 4, 9, 14, 19 loose meaning\n * outside the -1, 1 range.\n * @param {Array} matrix array of 20 numbers.\n * @default\n */\n matrix: matrices[key],\n\n /**\n * Lock the matrix export for this kind of static, parameter less filters.\n */\n mainParameter: false,\n /**\n * Lock the colormatrix on the color part, skipping alpha\n */\n colorsOnly: true,\n\n });\n fabric.Image.filters[key].fromObject = fabric.Image.filters.BaseFilter.fromObject;\n }\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n 'use strict';\n\n var fabric = global.fabric,\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * Color Blend filter class\n * @class fabric.Image.filter.BlendColor\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @example\n * var filter = new fabric.Image.filters.BlendColor({\n * color: '#000',\n * mode: 'multiply'\n * });\n *\n * var filter = new fabric.Image.filters.BlendImage({\n * image: fabricImageObject,\n * mode: 'multiply',\n * alpha: 0.5\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n * canvas.renderAll();\n */\n\n filters.BlendColor = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Blend.prototype */ {\n type: 'BlendColor',\n\n /**\n * Color to make the blend operation with. default to a reddish color since black or white\n * gives always strong result.\n **/\n color: '#F95C63',\n\n /**\n * Blend mode for the filter: one of multiply, add, diff, screen, subtract,\n * darken, lighten, overlay, exclusion, tint.\n **/\n mode: 'multiply',\n\n /**\n * alpha value. represent the strength of the blend color operation.\n **/\n alpha: 1,\n\n /**\n * Fragment source for the Multiply program\n */\n fragmentSource: {\n multiply: 'gl_FragColor.rgb *= uColor.rgb;\\n',\n screen: 'gl_FragColor.rgb = 1.0 - (1.0 - gl_FragColor.rgb) * (1.0 - uColor.rgb);\\n',\n add: 'gl_FragColor.rgb += uColor.rgb;\\n',\n diff: 'gl_FragColor.rgb = abs(gl_FragColor.rgb - uColor.rgb);\\n',\n subtract: 'gl_FragColor.rgb -= uColor.rgb;\\n',\n lighten: 'gl_FragColor.rgb = max(gl_FragColor.rgb, uColor.rgb);\\n',\n darken: 'gl_FragColor.rgb = min(gl_FragColor.rgb, uColor.rgb);\\n',\n exclusion: 'gl_FragColor.rgb += uColor.rgb - 2.0 * (uColor.rgb * gl_FragColor.rgb);\\n',\n overlay: 'if (uColor.r < 0.5) {\\n' +\n 'gl_FragColor.r *= 2.0 * uColor.r;\\n' +\n '} else {\\n' +\n 'gl_FragColor.r = 1.0 - 2.0 * (1.0 - gl_FragColor.r) * (1.0 - uColor.r);\\n' +\n '}\\n' +\n 'if (uColor.g < 0.5) {\\n' +\n 'gl_FragColor.g *= 2.0 * uColor.g;\\n' +\n '} else {\\n' +\n 'gl_FragColor.g = 1.0 - 2.0 * (1.0 - gl_FragColor.g) * (1.0 - uColor.g);\\n' +\n '}\\n' +\n 'if (uColor.b < 0.5) {\\n' +\n 'gl_FragColor.b *= 2.0 * uColor.b;\\n' +\n '} else {\\n' +\n 'gl_FragColor.b = 1.0 - 2.0 * (1.0 - gl_FragColor.b) * (1.0 - uColor.b);\\n' +\n '}\\n',\n tint: 'gl_FragColor.rgb *= (1.0 - uColor.a);\\n' +\n 'gl_FragColor.rgb += uColor.rgb;\\n',\n },\n\n /**\n * build the fragment source for the filters, joining the common part with\n * the specific one.\n * @param {String} mode the mode of the filter, a key of this.fragmentSource\n * @return {String} the source to be compiled\n * @private\n */\n buildSource: function(mode) {\n return 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform vec4 uColor;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 color = texture2D(uTexture, vTexCoord);\\n' +\n 'gl_FragColor = color;\\n' +\n 'if (color.a > 0.0) {\\n' +\n this.fragmentSource[mode] +\n '}\\n' +\n '}';\n },\n\n /**\n * Retrieves the cached shader.\n * @param {Object} options\n * @param {WebGLRenderingContext} options.context The GL context used for rendering.\n * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.\n */\n retrieveShader: function(options) {\n var cacheKey = this.type + '_' + this.mode, shaderSource;\n if (!options.programCache.hasOwnProperty(cacheKey)) {\n shaderSource = this.buildSource(this.mode);\n options.programCache[cacheKey] = this.createProgram(options.context, shaderSource);\n }\n return options.programCache[cacheKey];\n },\n\n /**\n * Apply the Blend operation to a Uint8ClampedArray representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered.\n */\n applyTo2d: function(options) {\n var imageData = options.imageData,\n data = imageData.data, iLen = data.length,\n tr, tg, tb,\n r, g, b,\n source, alpha1 = 1 - this.alpha;\n\n source = new fabric.Color(this.color).getSource();\n tr = source[0] * this.alpha;\n tg = source[1] * this.alpha;\n tb = source[2] * this.alpha;\n\n for (var i = 0; i < iLen; i += 4) {\n\n r = data[i];\n g = data[i + 1];\n b = data[i + 2];\n\n switch (this.mode) {\n case 'multiply':\n data[i] = r * tr / 255;\n data[i + 1] = g * tg / 255;\n data[i + 2] = b * tb / 255;\n break;\n case 'screen':\n data[i] = 255 - (255 - r) * (255 - tr) / 255;\n data[i + 1] = 255 - (255 - g) * (255 - tg) / 255;\n data[i + 2] = 255 - (255 - b) * (255 - tb) / 255;\n break;\n case 'add':\n data[i] = r + tr;\n data[i + 1] = g + tg;\n data[i + 2] = b + tb;\n break;\n case 'diff':\n case 'difference':\n data[i] = Math.abs(r - tr);\n data[i + 1] = Math.abs(g - tg);\n data[i + 2] = Math.abs(b - tb);\n break;\n case 'subtract':\n data[i] = r - tr;\n data[i + 1] = g - tg;\n data[i + 2] = b - tb;\n break;\n case 'darken':\n data[i] = Math.min(r, tr);\n data[i + 1] = Math.min(g, tg);\n data[i + 2] = Math.min(b, tb);\n break;\n case 'lighten':\n data[i] = Math.max(r, tr);\n data[i + 1] = Math.max(g, tg);\n data[i + 2] = Math.max(b, tb);\n break;\n case 'overlay':\n data[i] = tr < 128 ? (2 * r * tr / 255) : (255 - 2 * (255 - r) * (255 - tr) / 255);\n data[i + 1] = tg < 128 ? (2 * g * tg / 255) : (255 - 2 * (255 - g) * (255 - tg) / 255);\n data[i + 2] = tb < 128 ? (2 * b * tb / 255) : (255 - 2 * (255 - b) * (255 - tb) / 255);\n break;\n case 'exclusion':\n data[i] = tr + r - ((2 * tr * r) / 255);\n data[i + 1] = tg + g - ((2 * tg * g) / 255);\n data[i + 2] = tb + b - ((2 * tb * b) / 255);\n break;\n case 'tint':\n data[i] = tr + r * alpha1;\n data[i + 1] = tg + g * alpha1;\n data[i + 2] = tb + b * alpha1;\n }\n }\n },\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations: function(gl, program) {\n return {\n uColor: gl.getUniformLocation(program, 'uColor'),\n };\n },\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData: function(gl, uniformLocations) {\n var source = new fabric.Color(this.color).getSource();\n source[0] = this.alpha * source[0] / 255;\n source[1] = this.alpha * source[1] / 255;\n source[2] = this.alpha * source[2] / 255;\n source[3] = this.alpha;\n gl.uniform4fv(uniformLocations.uColor, source);\n },\n\n /**\n * Returns object representation of an instance\n * @return {Object} Object representation of an instance\n */\n toObject: function() {\n return {\n type: this.type,\n color: this.color,\n mode: this.mode,\n alpha: this.alpha\n };\n }\n });\n\n /**\n * Returns filter instance from an object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {function} [callback] to be invoked after filter creation\n * @return {fabric.Image.filters.BlendColor} Instance of fabric.Image.filters.BlendColor\n */\n fabric.Image.filters.BlendColor.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n 'use strict';\n\n var fabric = global.fabric,\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * Image Blend filter class\n * @class fabric.Image.filter.BlendImage\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @example\n * var filter = new fabric.Image.filters.BlendColor({\n * color: '#000',\n * mode: 'multiply'\n * });\n *\n * var filter = new fabric.Image.filters.BlendImage({\n * image: fabricImageObject,\n * mode: 'multiply',\n * alpha: 0.5\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n * canvas.renderAll();\n */\n\n filters.BlendImage = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.BlendImage.prototype */ {\n type: 'BlendImage',\n\n /**\n * Color to make the blend operation with. default to a reddish color since black or white\n * gives always strong result.\n **/\n image: null,\n\n /**\n * Blend mode for the filter: one of multiply, add, diff, screen, subtract,\n * darken, lighten, overlay, exclusion, tint.\n **/\n mode: 'multiply',\n\n /**\n * alpha value. represent the strength of the blend image operation.\n * not implemented.\n **/\n alpha: 1,\n\n vertexSource: 'attribute vec2 aPosition;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'varying vec2 vTexCoord2;\\n' +\n 'uniform mat3 uTransformMatrix;\\n' +\n 'void main() {\\n' +\n 'vTexCoord = aPosition;\\n' +\n 'vTexCoord2 = (uTransformMatrix * vec3(aPosition, 1.0)).xy;\\n' +\n 'gl_Position = vec4(aPosition * 2.0 - 1.0, 0.0, 1.0);\\n' +\n '}',\n\n /**\n * Fragment source for the Multiply program\n */\n fragmentSource: {\n multiply: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform sampler2D uImage;\\n' +\n 'uniform vec4 uColor;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'varying vec2 vTexCoord2;\\n' +\n 'void main() {\\n' +\n 'vec4 color = texture2D(uTexture, vTexCoord);\\n' +\n 'vec4 color2 = texture2D(uImage, vTexCoord2);\\n' +\n 'color.rgba *= color2.rgba;\\n' +\n 'gl_FragColor = color;\\n' +\n '}',\n mask: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform sampler2D uImage;\\n' +\n 'uniform vec4 uColor;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'varying vec2 vTexCoord2;\\n' +\n 'void main() {\\n' +\n 'vec4 color = texture2D(uTexture, vTexCoord);\\n' +\n 'vec4 color2 = texture2D(uImage, vTexCoord2);\\n' +\n 'color.a = color2.a;\\n' +\n 'gl_FragColor = color;\\n' +\n '}',\n },\n\n /**\n * Retrieves the cached shader.\n * @param {Object} options\n * @param {WebGLRenderingContext} options.context The GL context used for rendering.\n * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.\n */\n retrieveShader: function(options) {\n var cacheKey = this.type + '_' + this.mode;\n var shaderSource = this.fragmentSource[this.mode];\n if (!options.programCache.hasOwnProperty(cacheKey)) {\n options.programCache[cacheKey] = this.createProgram(options.context, shaderSource);\n }\n return options.programCache[cacheKey];\n },\n\n applyToWebGL: function(options) {\n // load texture to blend.\n var gl = options.context,\n texture = this.createTexture(options.filterBackend, this.image);\n this.bindAdditionalTexture(gl, texture, gl.TEXTURE1);\n this.callSuper('applyToWebGL', options);\n this.unbindAdditionalTexture(gl, gl.TEXTURE1);\n },\n\n createTexture: function(backend, image) {\n return backend.getCachedTexture(image.cacheKey, image._element);\n },\n\n /**\n * Calculate a transformMatrix to adapt the image to blend over\n * @param {Object} options\n * @param {WebGLRenderingContext} options.context The GL context used for rendering.\n * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.\n */\n calculateMatrix: function() {\n var image = this.image,\n width = image._element.width,\n height = image._element.height;\n return [\n 1 / image.scaleX, 0, 0,\n 0, 1 / image.scaleY, 0,\n -image.left / width, -image.top / height, 1\n ];\n },\n\n /**\n * Apply the Blend operation to a Uint8ClampedArray representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered.\n */\n applyTo2d: function(options) {\n var imageData = options.imageData,\n resources = options.filterBackend.resources,\n data = imageData.data, iLen = data.length,\n width = imageData.width,\n height = imageData.height,\n tr, tg, tb, ta,\n r, g, b, a,\n canvas1, context, image = this.image, blendData;\n\n if (!resources.blendImage) {\n resources.blendImage = fabric.util.createCanvasElement();\n }\n canvas1 = resources.blendImage;\n context = canvas1.getContext('2d');\n if (canvas1.width !== width || canvas1.height !== height) {\n canvas1.width = width;\n canvas1.height = height;\n }\n else {\n context.clearRect(0, 0, width, height);\n }\n context.setTransform(image.scaleX, 0, 0, image.scaleY, image.left, image.top);\n context.drawImage(image._element, 0, 0, width, height);\n blendData = context.getImageData(0, 0, width, height).data;\n for (var i = 0; i < iLen; i += 4) {\n\n r = data[i];\n g = data[i + 1];\n b = data[i + 2];\n a = data[i + 3];\n\n tr = blendData[i];\n tg = blendData[i + 1];\n tb = blendData[i + 2];\n ta = blendData[i + 3];\n\n switch (this.mode) {\n case 'multiply':\n data[i] = r * tr / 255;\n data[i + 1] = g * tg / 255;\n data[i + 2] = b * tb / 255;\n data[i + 3] = a * ta / 255;\n break;\n case 'mask':\n data[i + 3] = ta;\n break;\n }\n }\n },\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations: function(gl, program) {\n return {\n uTransformMatrix: gl.getUniformLocation(program, 'uTransformMatrix'),\n uImage: gl.getUniformLocation(program, 'uImage'),\n };\n },\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData: function(gl, uniformLocations) {\n var matrix = this.calculateMatrix();\n gl.uniform1i(uniformLocations.uImage, 1); // texture unit 1.\n gl.uniformMatrix3fv(uniformLocations.uTransformMatrix, false, matrix);\n },\n\n /**\n * Returns object representation of an instance\n * @return {Object} Object representation of an instance\n */\n toObject: function() {\n return {\n type: this.type,\n image: this.image && this.image.toObject(),\n mode: this.mode,\n alpha: this.alpha\n };\n }\n });\n\n /**\n * Returns filter instance from an object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {function} callback to be invoked after filter creation\n * @return {fabric.Image.filters.BlendImage} Instance of fabric.Image.filters.BlendImage\n */\n fabric.Image.filters.BlendImage.fromObject = function(object, callback) {\n fabric.Image.fromObject(object.image, function(image) {\n var options = fabric.util.object.clone(object);\n options.image = image;\n callback(new fabric.Image.filters.BlendImage(options));\n });\n };\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }), pow = Math.pow, floor = Math.floor,\n sqrt = Math.sqrt, abs = Math.abs, round = Math.round, sin = Math.sin,\n ceil = Math.ceil,\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * Resize image filter class\n * @class fabric.Image.filters.Resize\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n * @example\n * var filter = new fabric.Image.filters.Resize();\n * object.filters.push(filter);\n * object.applyFilters(canvas.renderAll.bind(canvas));\n */\n filters.Resize = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Resize.prototype */ {\n\n /**\n * Filter type\n * @param {String} type\n * @default\n */\n type: 'Resize',\n\n /**\n * Resize type\n * for webgl resizeType is just lanczos, for canvas2d can be:\n * bilinear, hermite, sliceHack, lanczos.\n * @param {String} resizeType\n * @default\n */\n resizeType: 'hermite',\n\n /**\n * Scale factor for resizing, x axis\n * @param {Number} scaleX\n * @default\n */\n scaleX: 1,\n\n /**\n * Scale factor for resizing, y axis\n * @param {Number} scaleY\n * @default\n */\n scaleY: 1,\n\n /**\n * LanczosLobes parameter for lanczos filter, valid for resizeType lanczos\n * @param {Number} lanczosLobes\n * @default\n */\n lanczosLobes: 3,\n\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations: function(gl, program) {\n return {\n uDelta: gl.getUniformLocation(program, 'uDelta'),\n uTaps: gl.getUniformLocation(program, 'uTaps'),\n };\n },\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData: function(gl, uniformLocations) {\n gl.uniform2fv(uniformLocations.uDelta, this.horizontal ? [1 / this.width, 0] : [0, 1 / this.height]);\n gl.uniform1fv(uniformLocations.uTaps, this.taps);\n },\n\n /**\n * Retrieves the cached shader.\n * @param {Object} options\n * @param {WebGLRenderingContext} options.context The GL context used for rendering.\n * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.\n */\n retrieveShader: function(options) {\n var filterWindow = this.getFilterWindow(), cacheKey = this.type + '_' + filterWindow;\n if (!options.programCache.hasOwnProperty(cacheKey)) {\n var fragmentShader = this.generateShader(filterWindow);\n options.programCache[cacheKey] = this.createProgram(options.context, fragmentShader);\n }\n return options.programCache[cacheKey];\n },\n\n getFilterWindow: function() {\n var scale = this.tempScale;\n return Math.ceil(this.lanczosLobes / scale);\n },\n\n getTaps: function() {\n var lobeFunction = this.lanczosCreate(this.lanczosLobes), scale = this.tempScale,\n filterWindow = this.getFilterWindow(), taps = new Array(filterWindow);\n for (var i = 1; i <= filterWindow; i++) {\n taps[i - 1] = lobeFunction(i * scale);\n }\n return taps;\n },\n\n /**\n * Generate vertex and shader sources from the necessary steps numbers\n * @param {Number} filterWindow\n */\n generateShader: function(filterWindow) {\n var offsets = new Array(filterWindow),\n fragmentShader = this.fragmentSourceTOP, filterWindow;\n\n for (var i = 1; i <= filterWindow; i++) {\n offsets[i - 1] = i + '.0 * uDelta';\n }\n\n fragmentShader += 'uniform float uTaps[' + filterWindow + '];\\n';\n fragmentShader += 'void main() {\\n';\n fragmentShader += ' vec4 color = texture2D(uTexture, vTexCoord);\\n';\n fragmentShader += ' float sum = 1.0;\\n';\n\n offsets.forEach(function(offset, i) {\n fragmentShader += ' color += texture2D(uTexture, vTexCoord + ' + offset + ') * uTaps[' + i + '];\\n';\n fragmentShader += ' color += texture2D(uTexture, vTexCoord - ' + offset + ') * uTaps[' + i + '];\\n';\n fragmentShader += ' sum += 2.0 * uTaps[' + i + '];\\n';\n });\n fragmentShader += ' gl_FragColor = color / sum;\\n';\n fragmentShader += '}';\n return fragmentShader;\n },\n\n fragmentSourceTOP: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform vec2 uDelta;\\n' +\n 'varying vec2 vTexCoord;\\n',\n\n /**\n * Apply the resize filter to the image\n * Determines whether to use WebGL or Canvas2D based on the options.webgl flag.\n *\n * @param {Object} options\n * @param {Number} options.passes The number of filters remaining to be executed\n * @param {Boolean} options.webgl Whether to use webgl to render the filter.\n * @param {WebGLTexture} options.sourceTexture The texture setup as the source to be filtered.\n * @param {WebGLTexture} options.targetTexture The texture where filtered output should be drawn.\n * @param {WebGLRenderingContext} options.context The GL context used for rendering.\n * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.\n */\n applyTo: function(options) {\n if (options.webgl) {\n options.passes++;\n this.width = options.sourceWidth;\n this.horizontal = true;\n this.dW = Math.round(this.width * this.scaleX);\n this.dH = options.sourceHeight;\n this.tempScale = this.dW / this.width;\n this.taps = this.getTaps();\n options.destinationWidth = this.dW;\n this._setupFrameBuffer(options);\n this.applyToWebGL(options);\n this._swapTextures(options);\n options.sourceWidth = options.destinationWidth;\n\n this.height = options.sourceHeight;\n this.horizontal = false;\n this.dH = Math.round(this.height * this.scaleY);\n this.tempScale = this.dH / this.height;\n this.taps = this.getTaps();\n options.destinationHeight = this.dH;\n this._setupFrameBuffer(options);\n this.applyToWebGL(options);\n this._swapTextures(options);\n options.sourceHeight = options.destinationHeight;\n }\n else {\n this.applyTo2d(options);\n }\n },\n\n isNeutralState: function() {\n return this.scaleX === 1 && this.scaleY === 1;\n },\n\n lanczosCreate: function(lobes) {\n return function(x) {\n if (x >= lobes || x <= -lobes) {\n return 0.0;\n }\n if (x < 1.19209290E-07 && x > -1.19209290E-07) {\n return 1.0;\n }\n x *= Math.PI;\n var xx = x / lobes;\n return (sin(x) / x) * sin(xx) / xx;\n };\n },\n\n /**\n * Applies filter to canvas element\n * @memberOf fabric.Image.filters.Resize.prototype\n * @param {Object} canvasEl Canvas element to apply filter to\n * @param {Number} scaleX\n * @param {Number} scaleY\n */\n applyTo2d: function(options) {\n var imageData = options.imageData,\n scaleX = this.scaleX,\n scaleY = this.scaleY;\n\n this.rcpScaleX = 1 / scaleX;\n this.rcpScaleY = 1 / scaleY;\n\n var oW = imageData.width, oH = imageData.height,\n dW = round(oW * scaleX), dH = round(oH * scaleY),\n newData;\n\n if (this.resizeType === 'sliceHack') {\n newData = this.sliceByTwo(options, oW, oH, dW, dH);\n }\n else if (this.resizeType === 'hermite') {\n newData = this.hermiteFastResize(options, oW, oH, dW, dH);\n }\n else if (this.resizeType === 'bilinear') {\n newData = this.bilinearFiltering(options, oW, oH, dW, dH);\n }\n else if (this.resizeType === 'lanczos') {\n newData = this.lanczosResize(options, oW, oH, dW, dH);\n }\n options.imageData = newData;\n },\n\n /**\n * Filter sliceByTwo\n * @param {Object} canvasEl Canvas element to apply filter to\n * @param {Number} oW Original Width\n * @param {Number} oH Original Height\n * @param {Number} dW Destination Width\n * @param {Number} dH Destination Height\n * @returns {ImageData}\n */\n sliceByTwo: function(options, oW, oH, dW, dH) {\n var imageData = options.imageData,\n mult = 0.5, doneW = false, doneH = false, stepW = oW * mult,\n stepH = oH * mult, resources = fabric.filterBackend.resources,\n tmpCanvas, ctx, sX = 0, sY = 0, dX = oW, dY = 0;\n if (!resources.sliceByTwo) {\n resources.sliceByTwo = document.createElement('canvas');\n }\n tmpCanvas = resources.sliceByTwo;\n if (tmpCanvas.width < oW * 1.5 || tmpCanvas.height < oH) {\n tmpCanvas.width = oW * 1.5;\n tmpCanvas.height = oH;\n }\n ctx = tmpCanvas.getContext('2d');\n ctx.clearRect(0, 0, oW * 1.5, oH);\n ctx.putImageData(imageData, 0, 0);\n\n dW = floor(dW);\n dH = floor(dH);\n\n while (!doneW || !doneH) {\n oW = stepW;\n oH = stepH;\n if (dW < floor(stepW * mult)) {\n stepW = floor(stepW * mult);\n }\n else {\n stepW = dW;\n doneW = true;\n }\n if (dH < floor(stepH * mult)) {\n stepH = floor(stepH * mult);\n }\n else {\n stepH = dH;\n doneH = true;\n }\n ctx.drawImage(tmpCanvas, sX, sY, oW, oH, dX, dY, stepW, stepH);\n sX = dX;\n sY = dY;\n dY += stepH;\n }\n return ctx.getImageData(sX, sY, dW, dH);\n },\n\n /**\n * Filter lanczosResize\n * @param {Object} canvasEl Canvas element to apply filter to\n * @param {Number} oW Original Width\n * @param {Number} oH Original Height\n * @param {Number} dW Destination Width\n * @param {Number} dH Destination Height\n * @returns {ImageData}\n */\n lanczosResize: function(options, oW, oH, dW, dH) {\n\n function process(u) {\n var v, i, weight, idx, a, red, green,\n blue, alpha, fX, fY;\n center.x = (u + 0.5) * ratioX;\n icenter.x = floor(center.x);\n for (v = 0; v < dH; v++) {\n center.y = (v + 0.5) * ratioY;\n icenter.y = floor(center.y);\n a = 0; red = 0; green = 0; blue = 0; alpha = 0;\n for (i = icenter.x - range2X; i <= icenter.x + range2X; i++) {\n if (i < 0 || i >= oW) {\n continue;\n }\n fX = floor(1000 * abs(i - center.x));\n if (!cacheLanc[fX]) {\n cacheLanc[fX] = { };\n }\n for (var j = icenter.y - range2Y; j <= icenter.y + range2Y; j++) {\n if (j < 0 || j >= oH) {\n continue;\n }\n fY = floor(1000 * abs(j - center.y));\n if (!cacheLanc[fX][fY]) {\n cacheLanc[fX][fY] = lanczos(sqrt(pow(fX * rcpRatioX, 2) + pow(fY * rcpRatioY, 2)) / 1000);\n }\n weight = cacheLanc[fX][fY];\n if (weight > 0) {\n idx = (j * oW + i) * 4;\n a += weight;\n red += weight * srcData[idx];\n green += weight * srcData[idx + 1];\n blue += weight * srcData[idx + 2];\n alpha += weight * srcData[idx + 3];\n }\n }\n }\n idx = (v * dW + u) * 4;\n destData[idx] = red / a;\n destData[idx + 1] = green / a;\n destData[idx + 2] = blue / a;\n destData[idx + 3] = alpha / a;\n }\n\n if (++u < dW) {\n return process(u);\n }\n else {\n return destImg;\n }\n }\n\n var srcData = options.imageData.data,\n destImg = options.ctx.createImageData(dW, dH),\n destData = destImg.data,\n lanczos = this.lanczosCreate(this.lanczosLobes),\n ratioX = this.rcpScaleX, ratioY = this.rcpScaleY,\n rcpRatioX = 2 / this.rcpScaleX, rcpRatioY = 2 / this.rcpScaleY,\n range2X = ceil(ratioX * this.lanczosLobes / 2),\n range2Y = ceil(ratioY * this.lanczosLobes / 2),\n cacheLanc = { }, center = { }, icenter = { };\n\n return process(0);\n },\n\n /**\n * bilinearFiltering\n * @param {Object} canvasEl Canvas element to apply filter to\n * @param {Number} oW Original Width\n * @param {Number} oH Original Height\n * @param {Number} dW Destination Width\n * @param {Number} dH Destination Height\n * @returns {ImageData}\n */\n bilinearFiltering: function(options, oW, oH, dW, dH) {\n var a, b, c, d, x, y, i, j, xDiff, yDiff, chnl,\n color, offset = 0, origPix, ratioX = this.rcpScaleX,\n ratioY = this.rcpScaleY,\n w4 = 4 * (oW - 1), img = options.imageData,\n pixels = img.data, destImage = options.ctx.createImageData(dW, dH),\n destPixels = destImage.data;\n for (i = 0; i < dH; i++) {\n for (j = 0; j < dW; j++) {\n x = floor(ratioX * j);\n y = floor(ratioY * i);\n xDiff = ratioX * j - x;\n yDiff = ratioY * i - y;\n origPix = 4 * (y * oW + x);\n\n for (chnl = 0; chnl < 4; chnl++) {\n a = pixels[origPix + chnl];\n b = pixels[origPix + 4 + chnl];\n c = pixels[origPix + w4 + chnl];\n d = pixels[origPix + w4 + 4 + chnl];\n color = a * (1 - xDiff) * (1 - yDiff) + b * xDiff * (1 - yDiff) +\n c * yDiff * (1 - xDiff) + d * xDiff * yDiff;\n destPixels[offset++] = color;\n }\n }\n }\n return destImage;\n },\n\n /**\n * hermiteFastResize\n * @param {Object} canvasEl Canvas element to apply filter to\n * @param {Number} oW Original Width\n * @param {Number} oH Original Height\n * @param {Number} dW Destination Width\n * @param {Number} dH Destination Height\n * @returns {ImageData}\n */\n hermiteFastResize: function(options, oW, oH, dW, dH) {\n var ratioW = this.rcpScaleX, ratioH = this.rcpScaleY,\n ratioWHalf = ceil(ratioW / 2),\n ratioHHalf = ceil(ratioH / 2),\n img = options.imageData, data = img.data,\n img2 = options.ctx.createImageData(dW, dH), data2 = img2.data;\n for (var j = 0; j < dH; j++) {\n for (var i = 0; i < dW; i++) {\n var x2 = (i + j * dW) * 4, weight = 0, weights = 0, weightsAlpha = 0,\n gxR = 0, gxG = 0, gxB = 0, gxA = 0, centerY = (j + 0.5) * ratioH;\n for (var yy = floor(j * ratioH); yy < (j + 1) * ratioH; yy++) {\n var dy = abs(centerY - (yy + 0.5)) / ratioHHalf,\n centerX = (i + 0.5) * ratioW, w0 = dy * dy;\n for (var xx = floor(i * ratioW); xx < (i + 1) * ratioW; xx++) {\n var dx = abs(centerX - (xx + 0.5)) / ratioWHalf,\n w = sqrt(w0 + dx * dx);\n /* eslint-disable max-depth */\n if (w > 1 && w < -1) {\n continue;\n }\n //hermite filter\n weight = 2 * w * w * w - 3 * w * w + 1;\n if (weight > 0) {\n dx = 4 * (xx + yy * oW);\n //alpha\n gxA += weight * data[dx + 3];\n weightsAlpha += weight;\n //colors\n if (data[dx + 3] < 255) {\n weight = weight * data[dx + 3] / 250;\n }\n gxR += weight * data[dx];\n gxG += weight * data[dx + 1];\n gxB += weight * data[dx + 2];\n weights += weight;\n }\n /* eslint-enable max-depth */\n }\n }\n data2[x2] = gxR / weights;\n data2[x2 + 1] = gxG / weights;\n data2[x2 + 2] = gxB / weights;\n data2[x2 + 3] = gxA / weightsAlpha;\n }\n }\n return img2;\n },\n\n /**\n * Returns object representation of an instance\n * @return {Object} Object representation of an instance\n */\n toObject: function() {\n return {\n type: this.type,\n scaleX: this.scaleX,\n scaleY: this.scaleY,\n resizeType: this.resizeType,\n lanczosLobes: this.lanczosLobes\n };\n }\n });\n\n /**\n * Returns filter instance from an object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {Function} [callback] to be invoked after filter creation\n * @return {fabric.Image.filters.Resize} Instance of fabric.Image.filters.Resize\n */\n fabric.Image.filters.Resize.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * Contrast filter class\n * @class fabric.Image.filters.Contrast\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @see {@link fabric.Image.filters.Contrast#initialize} for constructor definition\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n * @example\n * var filter = new fabric.Image.filters.Contrast({\n * contrast: 40\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n */\n filters.Contrast = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Contrast.prototype */ {\n\n /**\n * Filter type\n * @param {String} type\n * @default\n */\n type: 'Contrast',\n\n fragmentSource: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform float uContrast;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 color = texture2D(uTexture, vTexCoord);\\n' +\n 'float contrastF = 1.015 * (uContrast + 1.0) / (1.0 * (1.015 - uContrast));\\n' +\n 'color.rgb = contrastF * (color.rgb - 0.5) + 0.5;\\n' +\n 'gl_FragColor = color;\\n' +\n '}',\n\n contrast: 0,\n\n mainParameter: 'contrast',\n\n /**\n * Constructor\n * @memberOf fabric.Image.filters.Contrast.prototype\n * @param {Object} [options] Options object\n * @param {Number} [options.contrast=0] Value to contrast the image up (-1...1)\n */\n\n /**\n * Apply the Contrast operation to a Uint8Array representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8Array to be filtered.\n */\n applyTo2d: function(options) {\n if (this.contrast === 0) {\n return;\n }\n var imageData = options.imageData, i, len,\n data = imageData.data, len = data.length,\n contrast = Math.floor(this.contrast * 255),\n contrastF = 259 * (contrast + 255) / (255 * (259 - contrast));\n\n for (i = 0; i < len; i += 4) {\n data[i] = contrastF * (data[i] - 128) + 128;\n data[i + 1] = contrastF * (data[i + 1] - 128) + 128;\n data[i + 2] = contrastF * (data[i + 2] - 128) + 128;\n }\n },\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations: function(gl, program) {\n return {\n uContrast: gl.getUniformLocation(program, 'uContrast'),\n };\n },\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData: function(gl, uniformLocations) {\n gl.uniform1f(uniformLocations.uContrast, this.contrast);\n },\n });\n\n /**\n * Returns filter instance from an object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {function} [callback] to be invoked after filter creation\n * @return {fabric.Image.filters.Contrast} Instance of fabric.Image.filters.Contrast\n */\n fabric.Image.filters.Contrast.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * Saturate filter class\n * @class fabric.Image.filters.Saturation\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @see {@link fabric.Image.filters.Saturation#initialize} for constructor definition\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n * @example\n * var filter = new fabric.Image.filters.Saturation({\n * saturation: 100\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n */\n filters.Saturation = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Saturation.prototype */ {\n\n /**\n * Filter type\n * @param {String} type\n * @default\n */\n type: 'Saturation',\n\n fragmentSource: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform float uSaturation;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 color = texture2D(uTexture, vTexCoord);\\n' +\n 'float rgMax = max(color.r, color.g);\\n' +\n 'float rgbMax = max(rgMax, color.b);\\n' +\n 'color.r += rgbMax != color.r ? (rgbMax - color.r) * uSaturation : 0.00;\\n' +\n 'color.g += rgbMax != color.g ? (rgbMax - color.g) * uSaturation : 0.00;\\n' +\n 'color.b += rgbMax != color.b ? (rgbMax - color.b) * uSaturation : 0.00;\\n' +\n 'gl_FragColor = color;\\n' +\n '}',\n\n saturation: 0,\n\n mainParameter: 'saturation',\n\n /**\n * Constructor\n * @memberOf fabric.Image.filters.Saturate.prototype\n * @param {Object} [options] Options object\n * @param {Number} [options.saturate=0] Value to saturate the image (-1...1)\n */\n\n /**\n * Apply the Saturation operation to a Uint8ClampedArray representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered.\n */\n applyTo2d: function(options) {\n if (this.saturation === 0) {\n return;\n }\n var imageData = options.imageData,\n data = imageData.data, len = data.length,\n adjust = -this.saturation, i, max;\n\n for (i = 0; i < len; i += 4) {\n max = Math.max(data[i], data[i + 1], data[i + 2]);\n data[i] += max !== data[i] ? (max - data[i]) * adjust : 0;\n data[i + 1] += max !== data[i + 1] ? (max - data[i + 1]) * adjust : 0;\n data[i + 2] += max !== data[i + 2] ? (max - data[i + 2]) * adjust : 0;\n }\n },\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations: function(gl, program) {\n return {\n uSaturation: gl.getUniformLocation(program, 'uSaturation'),\n };\n },\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData: function(gl, uniformLocations) {\n gl.uniform1f(uniformLocations.uSaturation, -this.saturation);\n },\n });\n\n /**\n * Returns filter instance from an object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {Function} [callback] to be invoked after filter creation\n * @return {fabric.Image.filters.Saturation} Instance of fabric.Image.filters.Saturate\n */\n fabric.Image.filters.Saturation.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * Blur filter class\n * @class fabric.Image.filters.Blur\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @see {@link fabric.Image.filters.Blur#initialize} for constructor definition\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n * @example\n * var filter = new fabric.Image.filters.Blur({\n * blur: 0.5\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n * canvas.renderAll();\n */\n filters.Blur = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Blur.prototype */ {\n\n type: 'Blur',\n\n /*\n'gl_FragColor = vec4(0.0);',\n'gl_FragColor += texture2D(texture, vTexCoord + -7 * uDelta)*0.0044299121055113265;',\n'gl_FragColor += texture2D(texture, vTexCoord + -6 * uDelta)*0.00895781211794;',\n'gl_FragColor += texture2D(texture, vTexCoord + -5 * uDelta)*0.0215963866053;',\n'gl_FragColor += texture2D(texture, vTexCoord + -4 * uDelta)*0.0443683338718;',\n'gl_FragColor += texture2D(texture, vTexCoord + -3 * uDelta)*0.0776744219933;',\n'gl_FragColor += texture2D(texture, vTexCoord + -2 * uDelta)*0.115876621105;',\n'gl_FragColor += texture2D(texture, vTexCoord + -1 * uDelta)*0.147308056121;',\n'gl_FragColor += texture2D(texture, vTexCoord )*0.159576912161;',\n'gl_FragColor += texture2D(texture, vTexCoord + 1 * uDelta)*0.147308056121;',\n'gl_FragColor += texture2D(texture, vTexCoord + 2 * uDelta)*0.115876621105;',\n'gl_FragColor += texture2D(texture, vTexCoord + 3 * uDelta)*0.0776744219933;',\n'gl_FragColor += texture2D(texture, vTexCoord + 4 * uDelta)*0.0443683338718;',\n'gl_FragColor += texture2D(texture, vTexCoord + 5 * uDelta)*0.0215963866053;',\n'gl_FragColor += texture2D(texture, vTexCoord + 6 * uDelta)*0.00895781211794;',\n'gl_FragColor += texture2D(texture, vTexCoord + 7 * uDelta)*0.0044299121055113265;',\n*/\n\n /* eslint-disable max-len */\n fragmentSource: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform vec2 uDelta;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'const float nSamples = 15.0;\\n' +\n 'vec3 v3offset = vec3(12.9898, 78.233, 151.7182);\\n' +\n 'float random(vec3 scale) {\\n' +\n /* use the fragment position for a different seed per-pixel */\n 'return fract(sin(dot(gl_FragCoord.xyz, scale)) * 43758.5453);\\n' +\n '}\\n' +\n 'void main() {\\n' +\n 'vec4 color = vec4(0.0);\\n' +\n 'float total = 0.0;\\n' +\n 'float offset = random(v3offset);\\n' +\n 'for (float t = -nSamples; t <= nSamples; t++) {\\n' +\n 'float percent = (t + offset - 0.5) / nSamples;\\n' +\n 'float weight = 1.0 - abs(percent);\\n' +\n 'color += texture2D(uTexture, vTexCoord + uDelta * percent) * weight;\\n' +\n 'total += weight;\\n' +\n '}\\n' +\n 'gl_FragColor = color / total;\\n' +\n '}',\n /* eslint-enable max-len */\n\n /**\n * blur value, in percentage of image dimensions.\n * specific to keep the image blur constant at different resolutions\n * range bewteen 0 and 1.\n */\n blur: 0,\n\n mainParameter: 'blur',\n\n applyTo: function(options) {\n if (options.webgl) {\n // this aspectRatio is used to give the same blur to vertical and horizontal\n this.aspectRatio = options.sourceWidth / options.sourceHeight;\n options.passes++;\n this._setupFrameBuffer(options);\n this.horizontal = true;\n this.applyToWebGL(options);\n this._swapTextures(options);\n this._setupFrameBuffer(options);\n this.horizontal = false;\n this.applyToWebGL(options);\n this._swapTextures(options);\n }\n else {\n this.applyTo2d(options);\n }\n },\n\n applyTo2d: function(options) {\n // paint canvasEl with current image data.\n //options.ctx.putImageData(options.imageData, 0, 0);\n options.imageData = this.simpleBlur(options);\n },\n\n simpleBlur: function(options) {\n var resources = options.filterBackend.resources, canvas1, canvas2,\n width = options.imageData.width,\n height = options.imageData.height;\n\n if (!resources.blurLayer1) {\n resources.blurLayer1 = fabric.util.createCanvasElement();\n resources.blurLayer2 = fabric.util.createCanvasElement();\n }\n canvas1 = resources.blurLayer1;\n canvas2 = resources.blurLayer2;\n if (canvas1.width !== width || canvas1.height !== height) {\n canvas2.width = canvas1.width = width;\n canvas2.height = canvas1.height = height;\n }\n var ctx1 = canvas1.getContext('2d'),\n ctx2 = canvas2.getContext('2d'),\n nSamples = 15,\n random, percent, j, i,\n blur = this.blur * 0.06 * 0.5;\n\n // load first canvas\n ctx1.putImageData(options.imageData, 0, 0);\n ctx2.clearRect(0, 0, width, height);\n\n for (i = -nSamples; i <= nSamples; i++) {\n random = (Math.random() - 0.5) / 4;\n percent = i / nSamples;\n j = blur * percent * width + random;\n ctx2.globalAlpha = 1 - Math.abs(percent);\n ctx2.drawImage(canvas1, j, random);\n ctx1.drawImage(canvas2, 0, 0);\n ctx2.globalAlpha = 1;\n ctx2.clearRect(0, 0, canvas2.width, canvas2.height);\n }\n for (i = -nSamples; i <= nSamples; i++) {\n random = (Math.random() - 0.5) / 4;\n percent = i / nSamples;\n j = blur * percent * height + random;\n ctx2.globalAlpha = 1 - Math.abs(percent);\n ctx2.drawImage(canvas1, random, j);\n ctx1.drawImage(canvas2, 0, 0);\n ctx2.globalAlpha = 1;\n ctx2.clearRect(0, 0, canvas2.width, canvas2.height);\n }\n options.ctx.drawImage(canvas1, 0, 0);\n var newImageData = options.ctx.getImageData(0, 0, canvas1.width, canvas1.height);\n ctx1.globalAlpha = 1;\n ctx1.clearRect(0, 0, canvas1.width, canvas1.height);\n return newImageData;\n },\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations: function(gl, program) {\n return {\n delta: gl.getUniformLocation(program, 'uDelta'),\n };\n },\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData: function(gl, uniformLocations) {\n var delta = this.chooseRightDelta();\n gl.uniform2fv(uniformLocations.delta, delta);\n },\n\n /**\n * choose right value of image percentage to blur with\n * @returns {Array} a numeric array with delta values\n */\n chooseRightDelta: function() {\n var blurScale = 1, delta = [0, 0], blur;\n if (this.horizontal) {\n if (this.aspectRatio > 1) {\n // image is wide, i want to shrink radius horizontal\n blurScale = 1 / this.aspectRatio;\n }\n }\n else {\n if (this.aspectRatio < 1) {\n // image is tall, i want to shrink radius vertical\n blurScale = this.aspectRatio;\n }\n }\n blur = blurScale * this.blur * 0.12;\n if (this.horizontal) {\n delta[0] = blur;\n }\n else {\n delta[1] = blur;\n }\n return delta;\n },\n });\n\n /**\n * Deserialize a JSON definition of a BlurFilter into a concrete instance.\n */\n filters.Blur.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * Gamma filter class\n * @class fabric.Image.filters.Gamma\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @see {@link fabric.Image.filters.Gamma#initialize} for constructor definition\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n * @example\n * var filter = new fabric.Image.filters.Gamma({\n * brightness: 200\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n */\n filters.Gamma = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Gamma.prototype */ {\n\n /**\n * Filter type\n * @param {String} type\n * @default\n */\n type: 'Gamma',\n\n fragmentSource: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform vec3 uGamma;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 color = texture2D(uTexture, vTexCoord);\\n' +\n 'vec3 correction = (1.0 / uGamma);\\n' +\n 'color.r = pow(color.r, correction.r);\\n' +\n 'color.g = pow(color.g, correction.g);\\n' +\n 'color.b = pow(color.b, correction.b);\\n' +\n 'gl_FragColor = color;\\n' +\n 'gl_FragColor.rgb *= color.a;\\n' +\n '}',\n\n /**\n * Gamma array value, from 0.01 to 2.2.\n * @param {Array} gamma\n * @default\n */\n gamma: [1, 1, 1],\n\n /**\n * Describe the property that is the filter parameter\n * @param {String} m\n * @default\n */\n mainParameter: 'gamma',\n\n /**\n * Constructor\n * @param {Object} [options] Options object\n */\n initialize: function(options) {\n this.gamma = [1, 1, 1];\n filters.BaseFilter.prototype.initialize.call(this, options);\n },\n\n /**\n * Apply the Gamma operation to a Uint8Array representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8Array to be filtered.\n */\n applyTo2d: function(options) {\n var imageData = options.imageData, data = imageData.data,\n gamma = this.gamma, len = data.length,\n rInv = 1 / gamma[0], gInv = 1 / gamma[1],\n bInv = 1 / gamma[2], i;\n\n if (!this.rVals) {\n // eslint-disable-next-line\n this.rVals = new Uint8Array(256);\n // eslint-disable-next-line\n this.gVals = new Uint8Array(256);\n // eslint-disable-next-line\n this.bVals = new Uint8Array(256);\n }\n\n // This is an optimization - pre-compute a look-up table for each color channel\n // instead of performing these pow calls for each pixel in the image.\n for (i = 0, len = 256; i < len; i++) {\n this.rVals[i] = Math.pow(i / 255, rInv) * 255;\n this.gVals[i] = Math.pow(i / 255, gInv) * 255;\n this.bVals[i] = Math.pow(i / 255, bInv) * 255;\n }\n for (i = 0, len = data.length; i < len; i += 4) {\n data[i] = this.rVals[data[i]];\n data[i + 1] = this.gVals[data[i + 1]];\n data[i + 2] = this.bVals[data[i + 2]];\n }\n },\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations: function(gl, program) {\n return {\n uGamma: gl.getUniformLocation(program, 'uGamma'),\n };\n },\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData: function(gl, uniformLocations) {\n gl.uniform3fv(uniformLocations.uGamma, this.gamma);\n },\n });\n\n /**\n * Returns filter instance from an object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {function} [callback] to be invoked after filter creation\n * @return {fabric.Image.filters.Gamma} Instance of fabric.Image.filters.Gamma\n */\n fabric.Image.filters.Gamma.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * A container class that knows how to apply a sequence of filters to an input image.\n */\n filters.Composed = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Composed.prototype */ {\n\n type: 'Composed',\n\n /**\n * A non sparse array of filters to apply\n */\n subFilters: [],\n\n /**\n * Constructor\n * @param {Object} [options] Options object\n */\n initialize: function(options) {\n this.callSuper('initialize', options);\n // create a new array instead mutating the prototype with push\n this.subFilters = this.subFilters.slice(0);\n },\n\n /**\n * Apply this container's filters to the input image provided.\n *\n * @param {Object} options\n * @param {Number} options.passes The number of filters remaining to be applied.\n */\n applyTo: function(options) {\n options.passes += this.subFilters.length - 1;\n this.subFilters.forEach(function(filter) {\n filter.applyTo(options);\n });\n },\n\n /**\n * Serialize this filter into JSON.\n *\n * @returns {Object} A JSON representation of this filter.\n */\n toObject: function() {\n return fabric.util.object.extend(this.callSuper('toObject'), {\n subFilters: this.subFilters.map(function(filter) { return filter.toObject(); }),\n });\n },\n\n isNeutralState: function() {\n return !this.subFilters.some(function(filter) { return !filter.isNeutralState(); });\n }\n });\n\n /**\n * Deserialize a JSON definition of a ComposedFilter into a concrete instance.\n */\n fabric.Image.filters.Composed.fromObject = function(object, callback) {\n var filters = object.subFilters || [],\n subFilters = filters.map(function(filter) {\n return new fabric.Image.filters[filter.type](filter);\n }),\n instance = new fabric.Image.filters.Composed({ subFilters: subFilters });\n callback && callback(instance);\n return instance;\n };\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * HueRotation filter class\n * @class fabric.Image.filters.HueRotation\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @see {@link fabric.Image.filters.HueRotation#initialize} for constructor definition\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n * @example\n * var filter = new fabric.Image.filters.HueRotation({\n * rotation: -0.5\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n */\n filters.HueRotation = createClass(filters.ColorMatrix, /** @lends fabric.Image.filters.HueRotation.prototype */ {\n\n /**\n * Filter type\n * @param {String} type\n * @default\n */\n type: 'HueRotation',\n\n /**\n * HueRotation value, from -1 to 1.\n * the unit is radians\n * @param {Number} myParameter\n * @default\n */\n rotation: 0,\n\n /**\n * Describe the property that is the filter parameter\n * @param {String} m\n * @default\n */\n mainParameter: 'rotation',\n\n calculateMatrix: function() {\n var rad = this.rotation * Math.PI, cos = fabric.util.cos(rad), sin = fabric.util.sin(rad),\n aThird = 1 / 3, aThirdSqtSin = Math.sqrt(aThird) * sin, OneMinusCos = 1 - cos;\n this.matrix = [\n 1, 0, 0, 0, 0,\n 0, 1, 0, 0, 0,\n 0, 0, 1, 0, 0,\n 0, 0, 0, 1, 0\n ];\n this.matrix[0] = cos + OneMinusCos / 3;\n this.matrix[1] = aThird * OneMinusCos - aThirdSqtSin;\n this.matrix[2] = aThird * OneMinusCos + aThirdSqtSin;\n this.matrix[5] = aThird * OneMinusCos + aThirdSqtSin;\n this.matrix[6] = cos + aThird * OneMinusCos;\n this.matrix[7] = aThird * OneMinusCos - aThirdSqtSin;\n this.matrix[10] = aThird * OneMinusCos - aThirdSqtSin;\n this.matrix[11] = aThird * OneMinusCos + aThirdSqtSin;\n this.matrix[12] = cos + aThird * OneMinusCos;\n },\n\n /**\n * HueRotation isNeutralState implementation\n * Used only in image applyFilters to discard filters that will not have an effect\n * on the image\n * @param {Object} options\n **/\n isNeutralState: function(options) {\n this.calculateMatrix();\n return filters.BaseFilter.prototype.isNeutralState.call(this, options);\n },\n\n /**\n * Apply this filter to the input image data provided.\n *\n * Determines whether to use WebGL or Canvas2D based on the options.webgl flag.\n *\n * @param {Object} options\n * @param {Number} options.passes The number of filters remaining to be executed\n * @param {Boolean} options.webgl Whether to use webgl to render the filter.\n * @param {WebGLTexture} options.sourceTexture The texture setup as the source to be filtered.\n * @param {WebGLTexture} options.targetTexture The texture where filtered output should be drawn.\n * @param {WebGLRenderingContext} options.context The GL context used for rendering.\n * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.\n */\n applyTo: function(options) {\n this.calculateMatrix();\n filters.BaseFilter.prototype.applyTo.call(this, options);\n },\n\n });\n\n /**\n * Returns filter instance from an object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {function} [callback] to be invoked after filter creation\n * @return {fabric.Image.filters.HueRotation} Instance of fabric.Image.filters.HueRotation\n */\n fabric.Image.filters.HueRotation.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n clone = fabric.util.object.clone;\n\n if (fabric.Text) {\n fabric.warn('fabric.Text is already defined');\n return;\n }\n\n /**\n * Text class\n * @class fabric.Text\n * @extends fabric.Object\n * @return {fabric.Text} thisArg\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-2#text}\n * @see {@link fabric.Text#initialize} for constructor definition\n */\n fabric.Text = fabric.util.createClass(fabric.Object, /** @lends fabric.Text.prototype */ {\n\n /**\n * Properties which when set cause object to change dimensions\n * @type Array\n * @private\n */\n _dimensionAffectingProps: [\n 'fontSize',\n 'fontWeight',\n 'fontFamily',\n 'fontStyle',\n 'lineHeight',\n 'text',\n 'charSpacing',\n 'textAlign',\n 'styles',\n ],\n\n /**\n * @private\n */\n _reNewline: /\\r?\\n/,\n\n /**\n * Use this regular expression to filter for whitespaces that is not a new line.\n * Mostly used when text is 'justify' aligned.\n * @private\n */\n _reSpacesAndTabs: /[ \\t\\r]/g,\n\n /**\n * Use this regular expression to filter for whitespace that is not a new line.\n * Mostly used when text is 'justify' aligned.\n * @private\n */\n _reSpaceAndTab: /[ \\t\\r]/,\n\n /**\n * Use this regular expression to filter consecutive groups of non spaces.\n * Mostly used when text is 'justify' aligned.\n * @private\n */\n _reWords: /\\S+/g,\n\n /**\n * Type of an object\n * @type String\n * @default\n */\n type: 'text',\n\n /**\n * Font size (in pixels)\n * @type Number\n * @default\n */\n fontSize: 40,\n\n /**\n * Font weight (e.g. bold, normal, 400, 600, 800)\n * @type {(Number|String)}\n * @default\n */\n fontWeight: 'normal',\n\n /**\n * Font family\n * @type String\n * @default\n */\n fontFamily: 'Times New Roman',\n\n /**\n * Text decoration underline.\n * @type Boolean\n * @default\n */\n underline: false,\n\n /**\n * Text decoration overline.\n * @type Boolean\n * @default\n */\n overline: false,\n\n /**\n * Text decoration linethrough.\n * @type Boolean\n * @default\n */\n linethrough: false,\n\n /**\n * Text alignment. Possible values: \"left\", \"center\", \"right\", \"justify\",\n * \"justify-left\", \"justify-center\" or \"justify-right\".\n * @type String\n * @default\n */\n textAlign: 'left',\n\n /**\n * Font style . Possible values: \"\", \"normal\", \"italic\" or \"oblique\".\n * @type String\n * @default\n */\n fontStyle: 'normal',\n\n /**\n * Line height\n * @type Number\n * @default\n */\n lineHeight: 1.16,\n\n /**\n * Superscript schema object (minimum overlap)\n * @type {Object}\n * @default\n */\n superscript: {\n size: 0.60, // fontSize factor\n baseline: -0.35 // baseline-shift factor (upwards)\n },\n\n /**\n * Subscript schema object (minimum overlap)\n * @type {Object}\n * @default\n */\n subscript: {\n size: 0.60, // fontSize factor\n baseline: 0.11 // baseline-shift factor (downwards)\n },\n\n /**\n * Background color of text lines\n * @type String\n * @default\n */\n textBackgroundColor: '',\n\n /**\n * List of properties to consider when checking if\n * state of an object is changed ({@link fabric.Object#hasStateChanged})\n * as well as for history (undo/redo) purposes\n * @type Array\n */\n stateProperties: fabric.Object.prototype.stateProperties.concat('fontFamily',\n 'fontWeight',\n 'fontSize',\n 'text',\n 'underline',\n 'overline',\n 'linethrough',\n 'textAlign',\n 'fontStyle',\n 'lineHeight',\n 'textBackgroundColor',\n 'charSpacing',\n 'styles'),\n\n /**\n * List of properties to consider when checking if cache needs refresh\n * @type Array\n */\n cacheProperties: fabric.Object.prototype.cacheProperties.concat('fontFamily',\n 'fontWeight',\n 'fontSize',\n 'text',\n 'underline',\n 'overline',\n 'linethrough',\n 'textAlign',\n 'fontStyle',\n 'lineHeight',\n 'textBackgroundColor',\n 'charSpacing',\n 'styles'),\n\n /**\n * When defined, an object is rendered via stroke and this property specifies its color.\n * Backwards incompatibility note: This property was named \"strokeStyle\" until v1.1.6\n * @type String\n * @default\n */\n stroke: null,\n\n /**\n * Shadow object representing shadow of this shape.\n * Backwards incompatibility note: This property was named \"textShadow\" (String) until v1.2.11\n * @type fabric.Shadow\n * @default\n */\n shadow: null,\n\n /**\n * @private\n */\n _fontSizeFraction: 0.222,\n\n /**\n * @private\n */\n offsets: {\n underline: 0.10,\n linethrough: -0.315,\n overline: -0.88\n },\n\n /**\n * Text Line proportion to font Size (in pixels)\n * @type Number\n * @default\n */\n _fontSizeMult: 1.13,\n\n /**\n * additional space between characters\n * expressed in thousands of em unit\n * @type Number\n * @default\n */\n charSpacing: 0,\n\n /**\n * Object containing character styles - top-level properties -> line numbers,\n * 2nd-level properties - charater numbers\n * @type Object\n * @default\n */\n styles: null,\n\n /**\n * Reference to a context to measure text char or couple of chars\n * the cacheContext of the canvas will be used or a freshly created one if the object is not on canvas\n * once created it will be referenced on fabric._measuringContext to avoide creating a canvas for every\n * text object created.\n * @type {CanvasRenderingContext2D}\n * @default\n */\n _measuringContext: null,\n\n /**\n * Baseline shift, stlyes only, keep at 0 for the main text object\n * @type {Number}\n * @default\n */\n deltaY: 0,\n\n /**\n * Array of properties that define a style unit (of 'styles').\n * @type {Array}\n * @default\n */\n _styleProperties: [\n 'stroke',\n 'strokeWidth',\n 'fill',\n 'fontFamily',\n 'fontSize',\n 'fontWeight',\n 'fontStyle',\n 'underline',\n 'overline',\n 'linethrough',\n 'deltaY',\n 'textBackgroundColor',\n ],\n\n /**\n * contains characters bounding boxes\n */\n __charBounds: [],\n\n /**\n * use this size when measuring text. To avoid IE11 rounding errors\n * @type {Number}\n * @default\n * @readonly\n * @private\n */\n CACHE_FONT_SIZE: 400,\n\n /**\n * contains the min text width to avoid getting 0\n * @type {Number}\n * @default\n */\n MIN_TEXT_WIDTH: 2,\n\n /**\n * Constructor\n * @param {String} text Text string\n * @param {Object} [options] Options object\n * @return {fabric.Text} thisArg\n */\n initialize: function(text, options) {\n this.styles = options ? (options.styles || { }) : { };\n this.text = text;\n this.__skipDimension = true;\n this.callSuper('initialize', options);\n this.__skipDimension = false;\n this.initDimensions();\n this.setCoords();\n this.setupState({ propertySet: '_dimensionAffectingProps' });\n },\n\n /**\n * Return a contex for measurement of text string.\n * if created it gets stored for reuse\n * @param {String} text Text string\n * @param {Object} [options] Options object\n * @return {fabric.Text} thisArg\n */\n getMeasuringContext: function() {\n // if we did not return we have to measure something.\n if (!fabric._measuringContext) {\n fabric._measuringContext = this.canvas && this.canvas.contextCache ||\n fabric.util.createCanvasElement().getContext('2d');\n }\n return fabric._measuringContext;\n },\n\n /**\n * @private\n * Divides text into lines of text and lines of graphemes.\n */\n _splitText: function() {\n var newLines = this._splitTextIntoLines(this.text);\n this.textLines = newLines.lines;\n this._textLines = newLines.graphemeLines;\n this._unwrappedTextLines = newLines._unwrappedLines;\n this._text = newLines.graphemeText;\n return newLines;\n },\n\n /**\n * Initialize or update text dimensions.\n * Updates this.width and this.height with the proper values.\n * Does not return dimensions.\n */\n initDimensions: function() {\n if (this.__skipDimension) {\n return;\n }\n this._splitText();\n this._clearCache();\n this.width = this.calcTextWidth() || this.cursorWidth || this.MIN_TEXT_WIDTH;\n if (this.textAlign.indexOf('justify') !== -1) {\n // once text is measured we need to make space fatter to make justified text.\n this.enlargeSpaces();\n }\n this.height = this.calcTextHeight();\n this.saveState({ propertySet: '_dimensionAffectingProps' });\n },\n\n /**\n * Enlarge space boxes and shift the others\n */\n enlargeSpaces: function() {\n var diffSpace, currentLineWidth, numberOfSpaces, accumulatedSpace, line, charBound, spaces;\n for (var i = 0, len = this._textLines.length; i < len; i++) {\n if (this.textAlign !== 'justify' && (i === len - 1 || this.isEndOfWrapping(i))) {\n continue;\n }\n accumulatedSpace = 0;\n line = this._textLines[i];\n currentLineWidth = this.getLineWidth(i);\n if (currentLineWidth < this.width && (spaces = this.textLines[i].match(this._reSpacesAndTabs))) {\n numberOfSpaces = spaces.length;\n diffSpace = (this.width - currentLineWidth) / numberOfSpaces;\n for (var j = 0, jlen = line.length; j <= jlen; j++) {\n charBound = this.__charBounds[i][j];\n if (this._reSpaceAndTab.test(line[j])) {\n charBound.width += diffSpace;\n charBound.kernedWidth += diffSpace;\n charBound.left += accumulatedSpace;\n accumulatedSpace += diffSpace;\n }\n else {\n charBound.left += accumulatedSpace;\n }\n }\n }\n }\n },\n\n /**\n * Detect if the text line is ended with an hard break\n * text and itext do not have wrapping, return false\n * @return {Boolean}\n */\n isEndOfWrapping: function(lineIndex) {\n return lineIndex === this._textLines.length - 1;\n },\n\n /**\n * Returns string representation of an instance\n * @return {String} String representation of text object\n */\n toString: function() {\n return '#';\n },\n\n /**\n * Return the dimension and the zoom level needed to create a cache canvas\n * big enough to host the object to be cached.\n * @private\n * @param {Object} dim.x width of object to be cached\n * @param {Object} dim.y height of object to be cached\n * @return {Object}.width width of canvas\n * @return {Object}.height height of canvas\n * @return {Object}.zoomX zoomX zoom value to unscale the canvas before drawing cache\n * @return {Object}.zoomY zoomY zoom value to unscale the canvas before drawing cache\n */\n _getCacheCanvasDimensions: function() {\n var dims = this.callSuper('_getCacheCanvasDimensions');\n var fontSize = this.fontSize;\n dims.width += fontSize * dims.zoomX;\n dims.height += fontSize * dims.zoomY;\n return dims;\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _render: function(ctx) {\n this._setTextStyles(ctx);\n this._renderTextLinesBackground(ctx);\n this._renderTextDecoration(ctx, 'underline');\n this._renderText(ctx);\n this._renderTextDecoration(ctx, 'overline');\n this._renderTextDecoration(ctx, 'linethrough');\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderText: function(ctx) {\n if (this.paintFirst === 'stroke') {\n this._renderTextStroke(ctx);\n this._renderTextFill(ctx);\n }\n else {\n this._renderTextFill(ctx);\n this._renderTextStroke(ctx);\n }\n },\n\n /**\n * Set the font parameter of the context with the object properties or with charStyle\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @param {Object} [charStyle] object with font style properties\n * @param {String} [charStyle.fontFamily] Font Family\n * @param {Number} [charStyle.fontSize] Font size in pixels. ( without px suffix )\n * @param {String} [charStyle.fontWeight] Font weight\n * @param {String} [charStyle.fontStyle] Font style (italic|normal)\n */\n _setTextStyles: function(ctx, charStyle, forMeasuring) {\n ctx.textBaseline = 'alphabetic';\n ctx.font = this._getFontDeclaration(charStyle, forMeasuring);\n },\n\n /**\n * calculate and return the text Width measuring each line.\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @return {Number} Maximum width of fabric.Text object\n */\n calcTextWidth: function() {\n var maxWidth = this.getLineWidth(0);\n\n for (var i = 1, len = this._textLines.length; i < len; i++) {\n var currentLineWidth = this.getLineWidth(i);\n if (currentLineWidth > maxWidth) {\n maxWidth = currentLineWidth;\n }\n }\n return maxWidth;\n },\n\n /**\n * @private\n * @param {String} method Method name (\"fillText\" or \"strokeText\")\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @param {String} line Text to render\n * @param {Number} left Left position of text\n * @param {Number} top Top position of text\n * @param {Number} lineIndex Index of a line in a text\n */\n _renderTextLine: function(method, ctx, line, left, top, lineIndex) {\n this._renderChars(method, ctx, line, left, top, lineIndex);\n },\n\n /**\n * Renders the text background for lines, taking care of style\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderTextLinesBackground: function(ctx) {\n if (!this.textBackgroundColor && !this.styleHas('textBackgroundColor')) {\n return;\n }\n var lineTopOffset = 0, heightOfLine,\n lineLeftOffset, originalFill = ctx.fillStyle,\n line, lastColor,\n leftOffset = this._getLeftOffset(),\n topOffset = this._getTopOffset(),\n boxStart = 0, boxWidth = 0, charBox, currentColor;\n\n for (var i = 0, len = this._textLines.length; i < len; i++) {\n heightOfLine = this.getHeightOfLine(i);\n if (!this.textBackgroundColor && !this.styleHas('textBackgroundColor', i)) {\n lineTopOffset += heightOfLine;\n continue;\n }\n line = this._textLines[i];\n lineLeftOffset = this._getLineLeftOffset(i);\n boxWidth = 0;\n boxStart = 0;\n lastColor = this.getValueOfPropertyAt(i, 0, 'textBackgroundColor');\n for (var j = 0, jlen = line.length; j < jlen; j++) {\n charBox = this.__charBounds[i][j];\n currentColor = this.getValueOfPropertyAt(i, j, 'textBackgroundColor');\n if (currentColor !== lastColor) {\n ctx.fillStyle = lastColor;\n lastColor && ctx.fillRect(\n leftOffset + lineLeftOffset + boxStart,\n topOffset + lineTopOffset,\n boxWidth,\n heightOfLine / this.lineHeight\n );\n boxStart = charBox.left;\n boxWidth = charBox.width;\n lastColor = currentColor;\n }\n else {\n boxWidth += charBox.kernedWidth;\n }\n }\n if (currentColor) {\n ctx.fillStyle = currentColor;\n ctx.fillRect(\n leftOffset + lineLeftOffset + boxStart,\n topOffset + lineTopOffset,\n boxWidth,\n heightOfLine / this.lineHeight\n );\n }\n lineTopOffset += heightOfLine;\n }\n ctx.fillStyle = originalFill;\n // if there is text background color no\n // other shadows should be casted\n this._removeShadow(ctx);\n },\n\n /**\n * @private\n * @param {Object} decl style declaration for cache\n * @param {String} decl.fontFamily fontFamily\n * @param {String} decl.fontStyle fontStyle\n * @param {String} decl.fontWeight fontWeight\n * @return {Object} reference to cache\n */\n getFontCache: function(decl) {\n var fontFamily = decl.fontFamily.toLowerCase();\n if (!fabric.charWidthsCache[fontFamily]) {\n fabric.charWidthsCache[fontFamily] = { };\n }\n var cache = fabric.charWidthsCache[fontFamily],\n cacheProp = decl.fontStyle.toLowerCase() + '_' + (decl.fontWeight + '').toLowerCase();\n if (!cache[cacheProp]) {\n cache[cacheProp] = { };\n }\n return cache[cacheProp];\n },\n\n /**\n * apply all the character style to canvas for rendering\n * @private\n * @param {String} _char\n * @param {Number} lineIndex\n * @param {Number} charIndex\n * @param {Object} [decl]\n */\n _applyCharStyles: function(method, ctx, lineIndex, charIndex, styleDeclaration) {\n\n this._setFillStyles(ctx, styleDeclaration);\n this._setStrokeStyles(ctx, styleDeclaration);\n\n ctx.font = this._getFontDeclaration(styleDeclaration);\n },\n\n /**\n * measure and return the width of a single character.\n * possibly overridden to accommodate different measure logic or\n * to hook some external lib for character measurement\n * @private\n * @param {String} char to be measured\n * @param {Object} charStyle style of char to be measured\n * @param {String} [previousChar] previous char\n * @param {Object} [prevCharStyle] style of previous char\n */\n _measureChar: function(_char, charStyle, previousChar, prevCharStyle) {\n // first i try to return from cache\n var fontCache = this.getFontCache(charStyle), fontDeclaration = this._getFontDeclaration(charStyle),\n previousFontDeclaration = this._getFontDeclaration(prevCharStyle), couple = previousChar + _char,\n stylesAreEqual = fontDeclaration === previousFontDeclaration, width, coupleWidth, previousWidth,\n fontMultiplier = charStyle.fontSize / this.CACHE_FONT_SIZE, kernedWidth;\n\n if (previousChar && fontCache[previousChar] !== undefined) {\n previousWidth = fontCache[previousChar];\n }\n if (fontCache[_char] !== undefined) {\n kernedWidth = width = fontCache[_char];\n }\n if (stylesAreEqual && fontCache[couple] !== undefined) {\n coupleWidth = fontCache[couple];\n kernedWidth = coupleWidth - previousWidth;\n }\n if (width === undefined || previousWidth === undefined || coupleWidth === undefined) {\n var ctx = this.getMeasuringContext();\n // send a TRUE to specify measuring font size CACHE_FONT_SIZE\n this._setTextStyles(ctx, charStyle, true);\n }\n if (width === undefined) {\n kernedWidth = width = ctx.measureText(_char).width;\n fontCache[_char] = width;\n }\n if (previousWidth === undefined && stylesAreEqual && previousChar) {\n previousWidth = ctx.measureText(previousChar).width;\n fontCache[previousChar] = previousWidth;\n }\n if (stylesAreEqual && coupleWidth === undefined) {\n // we can measure the kerning couple and subtract the width of the previous character\n coupleWidth = ctx.measureText(couple).width;\n fontCache[couple] = coupleWidth;\n kernedWidth = coupleWidth - previousWidth;\n }\n return { width: width * fontMultiplier, kernedWidth: kernedWidth * fontMultiplier };\n },\n\n /**\n * Computes height of character at given position\n * @param {Number} line the line number\n * @param {Number} char the character number\n * @return {Number} fontSize of the character\n */\n getHeightOfChar: function(line, char) {\n return this.getValueOfPropertyAt(line, char, 'fontSize');\n },\n\n /**\n * measure a text line measuring all characters.\n * @param {Number} lineIndex line number\n * @return {Number} Line width\n */\n measureLine: function(lineIndex) {\n var lineInfo = this._measureLine(lineIndex);\n if (this.charSpacing !== 0) {\n lineInfo.width -= this._getWidthOfCharSpacing();\n }\n if (lineInfo.width < 0) {\n lineInfo.width = 0;\n }\n return lineInfo;\n },\n\n /**\n * measure every grapheme of a line, populating __charBounds\n * @param {Number} lineIndex\n * @return {Object} object.width total width of characters\n * @return {Object} object.widthOfSpaces length of chars that match this._reSpacesAndTabs\n */\n _measureLine: function(lineIndex) {\n var width = 0, i, grapheme, line = this._textLines[lineIndex], prevGrapheme,\n graphemeInfo, numOfSpaces = 0, lineBounds = new Array(line.length);\n\n this.__charBounds[lineIndex] = lineBounds;\n for (i = 0; i < line.length; i++) {\n grapheme = line[i];\n graphemeInfo = this._getGraphemeBox(grapheme, lineIndex, i, prevGrapheme);\n lineBounds[i] = graphemeInfo;\n width += graphemeInfo.kernedWidth;\n prevGrapheme = grapheme;\n }\n // this latest bound box represent the last character of the line\n // to simplify cursor handling in interactive mode.\n lineBounds[i] = {\n left: graphemeInfo ? graphemeInfo.left + graphemeInfo.width : 0,\n width: 0,\n kernedWidth: 0,\n height: this.fontSize\n };\n return { width: width, numOfSpaces: numOfSpaces };\n },\n\n /**\n * Measure and return the info of a single grapheme.\n * needs the the info of previous graphemes already filled\n * @private\n * @param {String} grapheme to be measured\n * @param {Number} lineIndex index of the line where the char is\n * @param {Number} charIndex position in the line\n * @param {String} [prevGrapheme] character preceding the one to be measured\n */\n _getGraphemeBox: function(grapheme, lineIndex, charIndex, prevGrapheme, skipLeft) {\n var style = this.getCompleteStyleDeclaration(lineIndex, charIndex),\n prevStyle = prevGrapheme ? this.getCompleteStyleDeclaration(lineIndex, charIndex - 1) : { },\n info = this._measureChar(grapheme, style, prevGrapheme, prevStyle),\n kernedWidth = info.kernedWidth,\n width = info.width, charSpacing;\n\n if (this.charSpacing !== 0) {\n charSpacing = this._getWidthOfCharSpacing();\n width += charSpacing;\n kernedWidth += charSpacing;\n }\n\n var box = {\n width: width,\n left: 0,\n height: style.fontSize,\n kernedWidth: kernedWidth,\n deltaY: style.deltaY,\n };\n if (charIndex > 0 && !skipLeft) {\n var previousBox = this.__charBounds[lineIndex][charIndex - 1];\n box.left = previousBox.left + previousBox.width + info.kernedWidth - info.width;\n }\n return box;\n },\n\n /**\n * Calculate height of line at 'lineIndex'\n * @param {Number} lineIndex index of line to calculate\n * @return {Number}\n */\n getHeightOfLine: function(lineIndex) {\n if (this.__lineHeights[lineIndex]) {\n return this.__lineHeights[lineIndex];\n }\n\n var line = this._textLines[lineIndex],\n // char 0 is measured before the line cycle because it nneds to char\n // emptylines\n maxHeight = this.getHeightOfChar(lineIndex, 0);\n for (var i = 1, len = line.length; i < len; i++) {\n maxHeight = Math.max(this.getHeightOfChar(lineIndex, i), maxHeight);\n }\n\n return this.__lineHeights[lineIndex] = maxHeight * this.lineHeight * this._fontSizeMult;\n },\n\n /**\n * Calculate text box height\n */\n calcTextHeight: function() {\n var lineHeight, height = 0;\n for (var i = 0, len = this._textLines.length; i < len; i++) {\n lineHeight = this.getHeightOfLine(i);\n height += (i === len - 1 ? lineHeight / this.lineHeight : lineHeight);\n }\n return height;\n },\n\n /**\n * @private\n * @return {Number} Left offset\n */\n _getLeftOffset: function() {\n return -this.width / 2;\n },\n\n /**\n * @private\n * @return {Number} Top offset\n */\n _getTopOffset: function() {\n return -this.height / 2;\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @param {String} method Method name (\"fillText\" or \"strokeText\")\n */\n _renderTextCommon: function(ctx, method) {\n ctx.save();\n var lineHeights = 0, left = this._getLeftOffset(), top = this._getTopOffset(),\n offsets = this._applyPatternGradientTransform(ctx, method === 'fillText' ? this.fill : this.stroke);\n for (var i = 0, len = this._textLines.length; i < len; i++) {\n var heightOfLine = this.getHeightOfLine(i),\n maxHeight = heightOfLine / this.lineHeight,\n leftOffset = this._getLineLeftOffset(i);\n this._renderTextLine(\n method,\n ctx,\n this._textLines[i],\n left + leftOffset - offsets.offsetX,\n top + lineHeights + maxHeight - offsets.offsetY,\n i\n );\n lineHeights += heightOfLine;\n }\n ctx.restore();\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderTextFill: function(ctx) {\n if (!this.fill && !this.styleHas('fill')) {\n return;\n }\n\n this._renderTextCommon(ctx, 'fillText');\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderTextStroke: function(ctx) {\n if ((!this.stroke || this.strokeWidth === 0) && this.isEmptyStyles()) {\n return;\n }\n\n if (this.shadow && !this.shadow.affectStroke) {\n this._removeShadow(ctx);\n }\n\n ctx.save();\n this._setLineDash(ctx, this.strokeDashArray);\n ctx.beginPath();\n this._renderTextCommon(ctx, 'strokeText');\n ctx.closePath();\n ctx.restore();\n },\n\n /**\n * @private\n * @param {String} method\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @param {String} line Content of the line\n * @param {Number} left\n * @param {Number} top\n * @param {Number} lineIndex\n * @param {Number} charOffset\n */\n _renderChars: function(method, ctx, line, left, top, lineIndex) {\n // set proper line offset\n var lineHeight = this.getHeightOfLine(lineIndex),\n isJustify = this.textAlign.indexOf('justify') !== -1,\n actualStyle,\n nextStyle,\n charsToRender = '',\n charBox,\n boxWidth = 0,\n timeToRender,\n shortCut = !isJustify && this.charSpacing === 0 && this.isEmptyStyles(lineIndex);\n\n ctx.save();\n top -= lineHeight * this._fontSizeFraction / this.lineHeight;\n if (shortCut) {\n // render all the line in one pass without checking\n this._renderChar(method, ctx, lineIndex, 0, this.textLines[lineIndex], left, top, lineHeight);\n ctx.restore();\n return;\n }\n for (var i = 0, len = line.length - 1; i <= len; i++) {\n timeToRender = i === len || this.charSpacing;\n charsToRender += line[i];\n charBox = this.__charBounds[lineIndex][i];\n if (boxWidth === 0) {\n left += charBox.kernedWidth - charBox.width;\n boxWidth += charBox.width;\n }\n else {\n boxWidth += charBox.kernedWidth;\n }\n if (isJustify && !timeToRender) {\n if (this._reSpaceAndTab.test(line[i])) {\n timeToRender = true;\n }\n }\n if (!timeToRender) {\n // if we have charSpacing, we render char by char\n actualStyle = actualStyle || this.getCompleteStyleDeclaration(lineIndex, i);\n nextStyle = this.getCompleteStyleDeclaration(lineIndex, i + 1);\n timeToRender = this._hasStyleChanged(actualStyle, nextStyle);\n }\n if (timeToRender) {\n this._renderChar(method, ctx, lineIndex, i, charsToRender, left, top, lineHeight);\n charsToRender = '';\n actualStyle = nextStyle;\n left += boxWidth;\n boxWidth = 0;\n }\n }\n ctx.restore();\n },\n\n /**\n * @private\n * @param {String} method\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @param {Number} lineIndex\n * @param {Number} charIndex\n * @param {String} _char\n * @param {Number} left Left coordinate\n * @param {Number} top Top coordinate\n * @param {Number} lineHeight Height of the line\n */\n _renderChar: function(method, ctx, lineIndex, charIndex, _char, left, top) {\n var decl = this._getStyleDeclaration(lineIndex, charIndex),\n fullDecl = this.getCompleteStyleDeclaration(lineIndex, charIndex),\n shouldFill = method === 'fillText' && fullDecl.fill,\n shouldStroke = method === 'strokeText' && fullDecl.stroke && fullDecl.strokeWidth;\n\n if (!shouldStroke && !shouldFill) {\n return;\n }\n decl && ctx.save();\n\n this._applyCharStyles(method, ctx, lineIndex, charIndex, fullDecl);\n\n if (decl && decl.textBackgroundColor) {\n this._removeShadow(ctx);\n }\n if (decl && decl.deltaY) {\n top += decl.deltaY;\n }\n\n shouldFill && ctx.fillText(_char, left, top);\n shouldStroke && ctx.strokeText(_char, left, top);\n decl && ctx.restore();\n },\n\n /**\n * Turns the character into a 'superior figure' (i.e. 'superscript')\n * @param {Number} start selection start\n * @param {Number} end selection end\n * @returns {fabric.Text} thisArg\n * @chainable\n */\n setSuperscript: function(start, end) {\n return this._setScript(start, end, this.superscript);\n },\n\n /**\n * Turns the character into an 'inferior figure' (i.e. 'subscript')\n * @param {Number} start selection start\n * @param {Number} end selection end\n * @returns {fabric.Text} thisArg\n * @chainable\n */\n setSubscript: function(start, end) {\n return this._setScript(start, end, this.subscript);\n },\n\n /**\n * Applies 'schema' at given position\n * @private\n * @param {Number} start selection start\n * @param {Number} end selection end\n * @param {Number} schema\n * @returns {fabric.Text} thisArg\n * @chainable\n */\n _setScript: function(start, end, schema) {\n var loc = this.get2DCursorLocation(start, true),\n fontSize = this.getValueOfPropertyAt(loc.lineIndex, loc.charIndex, 'fontSize'),\n dy = this.getValueOfPropertyAt(loc.lineIndex, loc.charIndex, 'deltaY'),\n style = { fontSize: fontSize * schema.size, deltaY: dy + fontSize * schema.baseline };\n this.setSelectionStyles(style, start, end);\n return this;\n },\n\n /**\n * @private\n * @param {Object} prevStyle\n * @param {Object} thisStyle\n */\n _hasStyleChanged: function(prevStyle, thisStyle) {\n return prevStyle.fill !== thisStyle.fill ||\n prevStyle.stroke !== thisStyle.stroke ||\n prevStyle.strokeWidth !== thisStyle.strokeWidth ||\n prevStyle.fontSize !== thisStyle.fontSize ||\n prevStyle.fontFamily !== thisStyle.fontFamily ||\n prevStyle.fontWeight !== thisStyle.fontWeight ||\n prevStyle.fontStyle !== thisStyle.fontStyle ||\n prevStyle.deltaY !== thisStyle.deltaY;\n },\n\n /**\n * @private\n * @param {Object} prevStyle\n * @param {Object} thisStyle\n */\n _hasStyleChangedForSvg: function(prevStyle, thisStyle) {\n return this._hasStyleChanged(prevStyle, thisStyle) ||\n prevStyle.overline !== thisStyle.overline ||\n prevStyle.underline !== thisStyle.underline ||\n prevStyle.linethrough !== thisStyle.linethrough;\n },\n\n /**\n * @private\n * @param {Number} lineIndex index text line\n * @return {Number} Line left offset\n */\n _getLineLeftOffset: function(lineIndex) {\n var lineWidth = this.getLineWidth(lineIndex);\n if (this.textAlign === 'center') {\n return (this.width - lineWidth) / 2;\n }\n if (this.textAlign === 'right') {\n return this.width - lineWidth;\n }\n if (this.textAlign === 'justify-center' && this.isEndOfWrapping(lineIndex)) {\n return (this.width - lineWidth) / 2;\n }\n if (this.textAlign === 'justify-right' && this.isEndOfWrapping(lineIndex)) {\n return this.width - lineWidth;\n }\n return 0;\n },\n\n /**\n * @private\n */\n _clearCache: function() {\n this.__lineWidths = [];\n this.__lineHeights = [];\n this.__charBounds = [];\n },\n\n /**\n * @private\n */\n _shouldClearDimensionCache: function() {\n var shouldClear = this._forceClearCache;\n shouldClear || (shouldClear = this.hasStateChanged('_dimensionAffectingProps'));\n if (shouldClear) {\n this.dirty = true;\n this._forceClearCache = false;\n }\n return shouldClear;\n },\n\n /**\n * Measure a single line given its index. Used to calculate the initial\n * text bounding box. The values are calculated and stored in __lineWidths cache.\n * @private\n * @param {Number} lineIndex line number\n * @return {Number} Line width\n */\n getLineWidth: function(lineIndex) {\n if (this.__lineWidths[lineIndex]) {\n return this.__lineWidths[lineIndex];\n }\n\n var width, line = this._textLines[lineIndex], lineInfo;\n\n if (line === '') {\n width = 0;\n }\n else {\n lineInfo = this.measureLine(lineIndex);\n width = lineInfo.width;\n }\n this.__lineWidths[lineIndex] = width;\n return width;\n },\n\n _getWidthOfCharSpacing: function() {\n if (this.charSpacing !== 0) {\n return this.fontSize * this.charSpacing / 1000;\n }\n return 0;\n },\n\n /**\n * Retrieves the value of property at given character position\n * @param {Number} lineIndex the line number\n * @param {Number} charIndex the charater number\n * @param {String} property the property name\n * @returns the value of 'property'\n */\n getValueOfPropertyAt: function(lineIndex, charIndex, property) {\n var charStyle = this._getStyleDeclaration(lineIndex, charIndex);\n if (charStyle && typeof charStyle[property] !== 'undefined') {\n return charStyle[property];\n }\n return this[property];\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderTextDecoration: function(ctx, type) {\n if (!this[type] && !this.styleHas(type)) {\n return;\n }\n var heightOfLine, size, _size,\n lineLeftOffset, dy, _dy,\n line, lastDecoration,\n leftOffset = this._getLeftOffset(),\n topOffset = this._getTopOffset(), top,\n boxStart, boxWidth, charBox, currentDecoration,\n maxHeight, currentFill, lastFill,\n charSpacing = this._getWidthOfCharSpacing();\n\n for (var i = 0, len = this._textLines.length; i < len; i++) {\n heightOfLine = this.getHeightOfLine(i);\n if (!this[type] && !this.styleHas(type, i)) {\n topOffset += heightOfLine;\n continue;\n }\n line = this._textLines[i];\n maxHeight = heightOfLine / this.lineHeight;\n lineLeftOffset = this._getLineLeftOffset(i);\n boxStart = 0;\n boxWidth = 0;\n lastDecoration = this.getValueOfPropertyAt(i, 0, type);\n lastFill = this.getValueOfPropertyAt(i, 0, 'fill');\n top = topOffset + maxHeight * (1 - this._fontSizeFraction);\n size = this.getHeightOfChar(i, 0);\n dy = this.getValueOfPropertyAt(i, 0, 'deltaY');\n for (var j = 0, jlen = line.length; j < jlen; j++) {\n charBox = this.__charBounds[i][j];\n currentDecoration = this.getValueOfPropertyAt(i, j, type);\n currentFill = this.getValueOfPropertyAt(i, j, 'fill');\n _size = this.getHeightOfChar(i, j);\n _dy = this.getValueOfPropertyAt(i, j, 'deltaY');\n if ((currentDecoration !== lastDecoration || currentFill !== lastFill || _size !== size || _dy !== dy) &&\n boxWidth > 0) {\n ctx.fillStyle = lastFill;\n lastDecoration && lastFill && ctx.fillRect(\n leftOffset + lineLeftOffset + boxStart,\n top + this.offsets[type] * size + dy,\n boxWidth,\n this.fontSize / 15\n );\n boxStart = charBox.left;\n boxWidth = charBox.width;\n lastDecoration = currentDecoration;\n lastFill = currentFill;\n size = _size;\n dy = _dy;\n }\n else {\n boxWidth += charBox.kernedWidth;\n }\n }\n ctx.fillStyle = currentFill;\n currentDecoration && currentFill && ctx.fillRect(\n leftOffset + lineLeftOffset + boxStart,\n top + this.offsets[type] * size + dy,\n boxWidth - charSpacing,\n this.fontSize / 15\n );\n topOffset += heightOfLine;\n }\n // if there is text background color no\n // other shadows should be casted\n this._removeShadow(ctx);\n },\n\n /**\n * return font declaration string for canvas context\n * @param {Object} [styleObject] object\n * @returns {String} font declaration formatted for canvas context.\n */\n _getFontDeclaration: function(styleObject, forMeasuring) {\n var style = styleObject || this, family = this.fontFamily,\n fontIsGeneric = fabric.Text.genericFonts.indexOf(family.toLowerCase()) > -1;\n var fontFamily = family === undefined ||\n family.indexOf('\\'') > -1 ||\n family.indexOf('\"') > -1 || fontIsGeneric\n ? style.fontFamily : '\"' + style.fontFamily + '\"';\n return [\n // node-canvas needs \"weight style\", while browsers need \"style weight\"\n (fabric.isLikelyNode ? style.fontWeight : style.fontStyle),\n (fabric.isLikelyNode ? style.fontStyle : style.fontWeight),\n forMeasuring ? this.CACHE_FONT_SIZE + 'px' : style.fontSize + 'px',\n fontFamily\n ].join(' ');\n },\n\n /**\n * Renders text instance on a specified context\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n render: function(ctx) {\n // do not render if object is not visible\n if (!this.visible) {\n return;\n }\n if (this.canvas && this.canvas.skipOffscreen && !this.group && !this.isOnScreen()) {\n return;\n }\n if (this._shouldClearDimensionCache()) {\n this.initDimensions();\n }\n this.callSuper('render', ctx);\n },\n\n /**\n * Returns the text as an array of lines.\n * @param {String} text text to split\n * @returns {Array} Lines in the text\n */\n _splitTextIntoLines: function(text) {\n var lines = text.split(this._reNewline),\n newLines = new Array(lines.length),\n newLine = ['\\n'],\n newText = [];\n for (var i = 0; i < lines.length; i++) {\n newLines[i] = fabric.util.string.graphemeSplit(lines[i]);\n newText = newText.concat(newLines[i], newLine);\n }\n newText.pop();\n return { _unwrappedLines: newLines, lines: lines, graphemeText: newText, graphemeLines: newLines };\n },\n\n /**\n * Returns object representation of an instance\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} Object representation of an instance\n */\n toObject: function(propertiesToInclude) {\n var additionalProperties = [\n 'text',\n 'fontSize',\n 'fontWeight',\n 'fontFamily',\n 'fontStyle',\n 'lineHeight',\n 'underline',\n 'overline',\n 'linethrough',\n 'textAlign',\n 'textBackgroundColor',\n 'charSpacing',\n ].concat(propertiesToInclude);\n var obj = this.callSuper('toObject', additionalProperties);\n obj.styles = clone(this.styles, true);\n return obj;\n },\n\n /**\n * Sets property to a given value. When changing position/dimension -related properties (left, top, scale, angle, etc.) `set` does not update position of object's borders/controls. If you need to update those, call `setCoords()`.\n * @param {String|Object} key Property name or object (if object, iterate over the object properties)\n * @param {Object|Function} value Property value (if function, the value is passed into it and its return value is used as a new one)\n * @return {fabric.Object} thisArg\n * @chainable\n */\n set: function(key, value) {\n this.callSuper('set', key, value);\n var needsDims = false;\n if (typeof key === 'object') {\n for (var _key in key) {\n needsDims = needsDims || this._dimensionAffectingProps.indexOf(_key) !== -1;\n }\n }\n else {\n needsDims = this._dimensionAffectingProps.indexOf(key) !== -1;\n }\n if (needsDims) {\n this.initDimensions();\n this.setCoords();\n }\n return this;\n },\n\n /**\n * Returns complexity of an instance\n * @return {Number} complexity\n */\n complexity: function() {\n return 1;\n }\n });\n\n /* _FROM_SVG_START_ */\n /**\n * List of attribute names to account for when parsing SVG element (used by {@link fabric.Text.fromElement})\n * @static\n * @memberOf fabric.Text\n * @see: http://www.w3.org/TR/SVG/text.html#TextElement\n */\n fabric.Text.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat(\n 'x y dx dy font-family font-style font-weight font-size letter-spacing text-decoration text-anchor'.split(' '));\n\n /**\n * Default SVG font size\n * @static\n * @memberOf fabric.Text\n */\n fabric.Text.DEFAULT_SVG_FONT_SIZE = 16;\n\n /**\n * Returns fabric.Text instance from an SVG element (not yet implemented)\n * @static\n * @memberOf fabric.Text\n * @param {SVGElement} element Element to parse\n * @param {Function} callback callback function invoked after parsing\n * @param {Object} [options] Options object\n */\n fabric.Text.fromElement = function(element, callback, options) {\n if (!element) {\n return callback(null);\n }\n\n var parsedAttributes = fabric.parseAttributes(element, fabric.Text.ATTRIBUTE_NAMES),\n parsedAnchor = parsedAttributes.textAnchor || 'left';\n options = fabric.util.object.extend((options ? clone(options) : { }), parsedAttributes);\n\n options.top = options.top || 0;\n options.left = options.left || 0;\n if (parsedAttributes.textDecoration) {\n var textDecoration = parsedAttributes.textDecoration;\n if (textDecoration.indexOf('underline') !== -1) {\n options.underline = true;\n }\n if (textDecoration.indexOf('overline') !== -1) {\n options.overline = true;\n }\n if (textDecoration.indexOf('line-through') !== -1) {\n options.linethrough = true;\n }\n delete options.textDecoration;\n }\n if ('dx' in parsedAttributes) {\n options.left += parsedAttributes.dx;\n }\n if ('dy' in parsedAttributes) {\n options.top += parsedAttributes.dy;\n }\n if (!('fontSize' in options)) {\n options.fontSize = fabric.Text.DEFAULT_SVG_FONT_SIZE;\n }\n\n var textContent = '';\n\n // The XML is not properly parsed in IE9 so a workaround to get\n // textContent is through firstChild.data. Another workaround would be\n // to convert XML loaded from a file to be converted using DOMParser (same way loadSVGFromString() does)\n if (!('textContent' in element)) {\n if ('firstChild' in element && element.firstChild !== null) {\n if ('data' in element.firstChild && element.firstChild.data !== null) {\n textContent = element.firstChild.data;\n }\n }\n }\n else {\n textContent = element.textContent;\n }\n\n textContent = textContent.replace(/^\\s+|\\s+$|\\n+/g, '').replace(/\\s+/g, ' ');\n var originalStrokeWidth = options.strokeWidth;\n options.strokeWidth = 0;\n\n var text = new fabric.Text(textContent, options),\n textHeightScaleFactor = text.getScaledHeight() / text.height,\n lineHeightDiff = (text.height + text.strokeWidth) * text.lineHeight - text.height,\n scaledDiff = lineHeightDiff * textHeightScaleFactor,\n textHeight = text.getScaledHeight() + scaledDiff,\n offX = 0;\n /*\n Adjust positioning:\n x/y attributes in SVG correspond to the bottom-left corner of text bounding box\n fabric output by default at top, left.\n */\n if (parsedAnchor === 'center') {\n offX = text.getScaledWidth() / 2;\n }\n if (parsedAnchor === 'right') {\n offX = text.getScaledWidth();\n }\n text.set({\n left: text.left - offX,\n top: text.top - (textHeight - text.fontSize * (0.07 + text._fontSizeFraction)) / text.lineHeight,\n strokeWidth: typeof originalStrokeWidth !== 'undefined' ? originalStrokeWidth : 1,\n });\n callback(text);\n };\n /* _FROM_SVG_END_ */\n\n /**\n * Returns fabric.Text instance from an object representation\n * @static\n * @memberOf fabric.Text\n * @param {Object} object Object to create an instance from\n * @param {Function} [callback] Callback to invoke when an fabric.Text instance is created\n */\n fabric.Text.fromObject = function(object, callback) {\n return fabric.Object._fromObject('Text', object, callback, 'text');\n };\n\n fabric.Text.genericFonts = ['sans-serif', 'serif', 'cursive', 'fantasy', 'monospace'];\n\n fabric.util.createAccessors && fabric.util.createAccessors(fabric.Text);\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function() {\n fabric.util.object.extend(fabric.Text.prototype, /** @lends fabric.Text.prototype */ {\n /**\n * Returns true if object has no styling or no styling in a line\n * @param {Number} lineIndex , lineIndex is on wrapped lines.\n * @return {Boolean}\n */\n isEmptyStyles: function(lineIndex) {\n if (!this.styles) {\n return true;\n }\n if (typeof lineIndex !== 'undefined' && !this.styles[lineIndex]) {\n return true;\n }\n var obj = typeof lineIndex === 'undefined' ? this.styles : { line: this.styles[lineIndex] };\n for (var p1 in obj) {\n for (var p2 in obj[p1]) {\n // eslint-disable-next-line no-unused-vars\n for (var p3 in obj[p1][p2]) {\n return false;\n }\n }\n }\n return true;\n },\n\n /**\n * Returns true if object has a style property or has it ina specified line\n * @param {Number} lineIndex\n * @return {Boolean}\n */\n styleHas: function(property, lineIndex) {\n if (!this.styles || !property || property === '') {\n return false;\n }\n if (typeof lineIndex !== 'undefined' && !this.styles[lineIndex]) {\n return false;\n }\n var obj = typeof lineIndex === 'undefined' ? this.styles : { line: this.styles[lineIndex] };\n // eslint-disable-next-line\n for (var p1 in obj) {\n // eslint-disable-next-line\n for (var p2 in obj[p1]) {\n if (typeof obj[p1][p2][property] !== 'undefined') {\n return true;\n }\n }\n }\n return false;\n },\n\n /**\n * Check if characters in a text have a value for a property\n * whose value matches the textbox's value for that property. If so,\n * the character-level property is deleted. If the character\n * has no other properties, then it is also deleted. Finally,\n * if the line containing that character has no other characters\n * then it also is deleted.\n *\n * @param {string} property The property to compare between characters and text.\n */\n cleanStyle: function(property) {\n if (!this.styles || !property || property === '') {\n return false;\n }\n var obj = this.styles, stylesCount = 0, letterCount, stylePropertyValue,\n allStyleObjectPropertiesMatch = true, graphemeCount = 0, styleObject;\n // eslint-disable-next-line\n for (var p1 in obj) {\n letterCount = 0;\n // eslint-disable-next-line\n for (var p2 in obj[p1]) {\n var styleObject = obj[p1][p2],\n stylePropertyHasBeenSet = styleObject.hasOwnProperty(property);\n\n stylesCount++;\n\n if (stylePropertyHasBeenSet) {\n if (!stylePropertyValue) {\n stylePropertyValue = styleObject[property];\n }\n else if (styleObject[property] !== stylePropertyValue) {\n allStyleObjectPropertiesMatch = false;\n }\n\n if (styleObject[property] === this[property]) {\n delete styleObject[property];\n }\n }\n else {\n allStyleObjectPropertiesMatch = false;\n }\n\n if (Object.keys(styleObject).length !== 0) {\n letterCount++;\n }\n else {\n delete obj[p1][p2];\n }\n }\n\n if (letterCount === 0) {\n delete obj[p1];\n }\n }\n // if every grapheme has the same style set then\n // delete those styles and set it on the parent\n for (var i = 0; i < this._textLines.length; i++) {\n graphemeCount += this._textLines[i].length;\n }\n if (allStyleObjectPropertiesMatch && stylesCount === graphemeCount) {\n this[property] = stylePropertyValue;\n this.removeStyle(property);\n }\n },\n\n /**\n * Remove a style property or properties from all individual character styles\n * in a text object. Deletes the character style object if it contains no other style\n * props. Deletes a line style object if it contains no other character styles.\n *\n * @param {String} props The property to remove from character styles.\n */\n removeStyle: function(property) {\n if (!this.styles || !property || property === '') {\n return;\n }\n var obj = this.styles, line, lineNum, charNum;\n for (lineNum in obj) {\n line = obj[lineNum];\n for (charNum in line) {\n delete line[charNum][property];\n if (Object.keys(line[charNum]).length === 0) {\n delete line[charNum];\n }\n }\n if (Object.keys(line).length === 0) {\n delete obj[lineNum];\n }\n }\n },\n\n /**\n * @private\n */\n _extendStyles: function(index, styles) {\n var loc = this.get2DCursorLocation(index);\n\n if (!this._getLineStyle(loc.lineIndex)) {\n this._setLineStyle(loc.lineIndex, {});\n }\n\n if (!this._getStyleDeclaration(loc.lineIndex, loc.charIndex)) {\n this._setStyleDeclaration(loc.lineIndex, loc.charIndex, {});\n }\n\n fabric.util.object.extend(this._getStyleDeclaration(loc.lineIndex, loc.charIndex), styles);\n },\n\n /**\n * Returns 2d representation (lineIndex and charIndex) of cursor (or selection start)\n * @param {Number} [selectionStart] Optional index. When not given, current selectionStart is used.\n * @param {Boolean} [skipWrapping] consider the location for unwrapped lines. usefull to manage styles.\n */\n get2DCursorLocation: function(selectionStart, skipWrapping) {\n if (typeof selectionStart === 'undefined') {\n selectionStart = this.selectionStart;\n }\n var lines = skipWrapping ? this._unwrappedTextLines : this._textLines;\n var len = lines.length;\n for (var i = 0; i < len; i++) {\n if (selectionStart <= lines[i].length) {\n return {\n lineIndex: i,\n charIndex: selectionStart\n };\n }\n selectionStart -= lines[i].length + 1;\n }\n return {\n lineIndex: i - 1,\n charIndex: lines[i - 1].length < selectionStart ? lines[i - 1].length : selectionStart\n };\n },\n\n /**\n * Gets style of a current selection/cursor (at the start position)\n * if startIndex or endIndex are not provided, slectionStart or selectionEnd will be used.\n * @param {Number} [startIndex] Start index to get styles at\n * @param {Number} [endIndex] End index to get styles at, if not specified selectionEnd or startIndex + 1\n * @param {Boolean} [complete] get full style or not\n * @return {Array} styles an array with one, zero or more Style objects\n */\n getSelectionStyles: function(startIndex, endIndex, complete) {\n if (typeof startIndex === 'undefined') {\n startIndex = this.selectionStart || 0;\n }\n if (typeof endIndex === 'undefined') {\n endIndex = this.selectionEnd || startIndex;\n }\n var styles = [];\n for (var i = startIndex; i < endIndex; i++) {\n styles.push(this.getStyleAtPosition(i, complete));\n }\n return styles;\n },\n\n /**\n * Gets style of a current selection/cursor position\n * @param {Number} position to get styles at\n * @param {Boolean} [complete] full style if true\n * @return {Object} style Style object at a specified index\n * @private\n */\n getStyleAtPosition: function(position, complete) {\n var loc = this.get2DCursorLocation(position),\n style = complete ? this.getCompleteStyleDeclaration(loc.lineIndex, loc.charIndex) :\n this._getStyleDeclaration(loc.lineIndex, loc.charIndex);\n return style || {};\n },\n\n /**\n * Sets style of a current selection, if no selection exist, do not set anything.\n * @param {Object} [styles] Styles object\n * @param {Number} [startIndex] Start index to get styles at\n * @param {Number} [endIndex] End index to get styles at, if not specified selectionEnd or startIndex + 1\n * @return {fabric.IText} thisArg\n * @chainable\n */\n setSelectionStyles: function(styles, startIndex, endIndex) {\n if (typeof startIndex === 'undefined') {\n startIndex = this.selectionStart || 0;\n }\n if (typeof endIndex === 'undefined') {\n endIndex = this.selectionEnd || startIndex;\n }\n for (var i = startIndex; i < endIndex; i++) {\n this._extendStyles(i, styles);\n }\n /* not included in _extendStyles to avoid clearing cache more than once */\n this._forceClearCache = true;\n return this;\n },\n\n /**\n * get the reference, not a clone, of the style object for a given character\n * @param {Number} lineIndex\n * @param {Number} charIndex\n * @return {Object} style object\n */\n _getStyleDeclaration: function(lineIndex, charIndex) {\n var lineStyle = this.styles && this.styles[lineIndex];\n if (!lineStyle) {\n return null;\n }\n return lineStyle[charIndex];\n },\n\n /**\n * return a new object that contains all the style property for a character\n * the object returned is newly created\n * @param {Number} lineIndex of the line where the character is\n * @param {Number} charIndex position of the character on the line\n * @return {Object} style object\n */\n getCompleteStyleDeclaration: function(lineIndex, charIndex) {\n var style = this._getStyleDeclaration(lineIndex, charIndex) || { },\n styleObject = { }, prop;\n for (var i = 0; i < this._styleProperties.length; i++) {\n prop = this._styleProperties[i];\n styleObject[prop] = typeof style[prop] === 'undefined' ? this[prop] : style[prop];\n }\n return styleObject;\n },\n\n /**\n * @param {Number} lineIndex\n * @param {Number} charIndex\n * @param {Object} style\n * @private\n */\n _setStyleDeclaration: function(lineIndex, charIndex, style) {\n this.styles[lineIndex][charIndex] = style;\n },\n\n /**\n *\n * @param {Number} lineIndex\n * @param {Number} charIndex\n * @private\n */\n _deleteStyleDeclaration: function(lineIndex, charIndex) {\n delete this.styles[lineIndex][charIndex];\n },\n\n /**\n * @param {Number} lineIndex\n * @private\n */\n _getLineStyle: function(lineIndex) {\n return this.styles[lineIndex];\n },\n\n /**\n * @param {Number} lineIndex\n * @param {Object} style\n * @private\n */\n _setLineStyle: function(lineIndex, style) {\n this.styles[lineIndex] = style;\n },\n\n /**\n * @param {Number} lineIndex\n * @private\n */\n _deleteLineStyle: function(lineIndex) {\n delete this.styles[lineIndex];\n }\n });\n})();\n\n\n(function() {\n\n function parseDecoration(object) {\n if (object.textDecoration) {\n object.textDecoration.indexOf('underline') > -1 && (object.underline = true);\n object.textDecoration.indexOf('line-through') > -1 && (object.linethrough = true);\n object.textDecoration.indexOf('overline') > -1 && (object.overline = true);\n delete object.textDecoration;\n }\n }\n\n /**\n * IText class (introduced in v1.4) Events are also fired with \"text:\"\n * prefix when observing canvas.\n * @class fabric.IText\n * @extends fabric.Text\n * @mixes fabric.Observable\n *\n * @fires changed\n * @fires selection:changed\n * @fires editing:entered\n * @fires editing:exited\n *\n * @return {fabric.IText} thisArg\n * @see {@link fabric.IText#initialize} for constructor definition\n *\n *

Supported key combinations:

\n *
\n   *   Move cursor:                    left, right, up, down\n   *   Select character:               shift + left, shift + right\n   *   Select text vertically:         shift + up, shift + down\n   *   Move cursor by word:            alt + left, alt + right\n   *   Select words:                   shift + alt + left, shift + alt + right\n   *   Move cursor to line start/end:  cmd + left, cmd + right or home, end\n   *   Select till start/end of line:  cmd + shift + left, cmd + shift + right or shift + home, shift + end\n   *   Jump to start/end of text:      cmd + up, cmd + down\n   *   Select till start/end of text:  cmd + shift + up, cmd + shift + down or shift + pgUp, shift + pgDown\n   *   Delete character:               backspace\n   *   Delete word:                    alt + backspace\n   *   Delete line:                    cmd + backspace\n   *   Forward delete:                 delete\n   *   Copy text:                      ctrl/cmd + c\n   *   Paste text:                     ctrl/cmd + v\n   *   Cut text:                       ctrl/cmd + x\n   *   Select entire text:             ctrl/cmd + a\n   *   Quit editing                    tab or esc\n   * 
\n *\n *

Supported mouse/touch combination

\n *
\n   *   Position cursor:                click/touch\n   *   Create selection:               click/touch & drag\n   *   Create selection:               click & shift + click\n   *   Select word:                    double click\n   *   Select line:                    triple click\n   * 
\n */\n fabric.IText = fabric.util.createClass(fabric.Text, fabric.Observable, /** @lends fabric.IText.prototype */ {\n\n /**\n * Type of an object\n * @type String\n * @default\n */\n type: 'i-text',\n\n /**\n * Index where text selection starts (or where cursor is when there is no selection)\n * @type Number\n * @default\n */\n selectionStart: 0,\n\n /**\n * Index where text selection ends\n * @type Number\n * @default\n */\n selectionEnd: 0,\n\n /**\n * Color of text selection\n * @type String\n * @default\n */\n selectionColor: 'rgba(17,119,255,0.3)',\n\n /**\n * Indicates whether text is in editing mode\n * @type Boolean\n * @default\n */\n isEditing: false,\n\n /**\n * Indicates whether a text can be edited\n * @type Boolean\n * @default\n */\n editable: true,\n\n /**\n * Border color of text object while it's in editing mode\n * @type String\n * @default\n */\n editingBorderColor: 'rgba(102,153,255,0.25)',\n\n /**\n * Width of cursor (in px)\n * @type Number\n * @default\n */\n cursorWidth: 2,\n\n /**\n * Color of default cursor (when not overwritten by character style)\n * @type String\n * @default\n */\n cursorColor: '#333',\n\n /**\n * Delay between cursor blink (in ms)\n * @type Number\n * @default\n */\n cursorDelay: 1000,\n\n /**\n * Duration of cursor fadein (in ms)\n * @type Number\n * @default\n */\n cursorDuration: 600,\n\n /**\n * Indicates whether internal text char widths can be cached\n * @type Boolean\n * @default\n */\n caching: true,\n\n /**\n * @private\n */\n _reSpace: /\\s|\\n/,\n\n /**\n * @private\n */\n _currentCursorOpacity: 0,\n\n /**\n * @private\n */\n _selectionDirection: null,\n\n /**\n * @private\n */\n _abortCursorAnimation: false,\n\n /**\n * @private\n */\n __widthOfSpace: [],\n\n /**\n * Helps determining when the text is in composition, so that the cursor\n * rendering is altered.\n */\n inCompositionMode: false,\n\n /**\n * Constructor\n * @param {String} text Text string\n * @param {Object} [options] Options object\n * @return {fabric.IText} thisArg\n */\n initialize: function(text, options) {\n this.callSuper('initialize', text, options);\n this.initBehavior();\n },\n\n /**\n * Sets selection start (left boundary of a selection)\n * @param {Number} index Index to set selection start to\n */\n setSelectionStart: function(index) {\n index = Math.max(index, 0);\n this._updateAndFire('selectionStart', index);\n },\n\n /**\n * Sets selection end (right boundary of a selection)\n * @param {Number} index Index to set selection end to\n */\n setSelectionEnd: function(index) {\n index = Math.min(index, this.text.length);\n this._updateAndFire('selectionEnd', index);\n },\n\n /**\n * @private\n * @param {String} property 'selectionStart' or 'selectionEnd'\n * @param {Number} index new position of property\n */\n _updateAndFire: function(property, index) {\n if (this[property] !== index) {\n this._fireSelectionChanged();\n this[property] = index;\n }\n this._updateTextarea();\n },\n\n /**\n * Fires the even of selection changed\n * @private\n */\n _fireSelectionChanged: function() {\n this.fire('selection:changed');\n this.canvas && this.canvas.fire('text:selection:changed', { target: this });\n },\n\n /**\n * Initialize text dimensions. Render all text on given context\n * or on a offscreen canvas to get the text width with measureText.\n * Updates this.width and this.height with the proper values.\n * Does not return dimensions.\n * @private\n */\n initDimensions: function() {\n this.isEditing && this.initDelayedCursor();\n this.clearContextTop();\n this.callSuper('initDimensions');\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n render: function(ctx) {\n this.clearContextTop();\n this.callSuper('render', ctx);\n // clear the cursorOffsetCache, so we ensure to calculate once per renderCursor\n // the correct position but not at every cursor animation.\n this.cursorOffsetCache = { };\n this.renderCursorOrSelection();\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _render: function(ctx) {\n this.callSuper('_render', ctx);\n },\n\n /**\n * Prepare and clean the contextTop\n */\n clearContextTop: function(skipRestore) {\n if (!this.isEditing) {\n return;\n }\n if (this.canvas && this.canvas.contextTop) {\n var ctx = this.canvas.contextTop, v = this.canvas.viewportTransform;\n ctx.save();\n ctx.transform(v[0], v[1], v[2], v[3], v[4], v[5]);\n this.transform(ctx);\n this.transformMatrix && ctx.transform.apply(ctx, this.transformMatrix);\n this._clearTextArea(ctx);\n skipRestore || ctx.restore();\n }\n },\n\n /**\n * Renders cursor or selection (depending on what exists)\n */\n renderCursorOrSelection: function() {\n if (!this.isEditing || !this.canvas) {\n return;\n }\n var boundaries = this._getCursorBoundaries(), ctx;\n if (this.canvas && this.canvas.contextTop) {\n ctx = this.canvas.contextTop;\n this.clearContextTop(true);\n }\n else {\n ctx = this.canvas.contextContainer;\n ctx.save();\n }\n if (this.selectionStart === this.selectionEnd) {\n this.renderCursor(boundaries, ctx);\n }\n else {\n this.renderSelection(boundaries, ctx);\n }\n ctx.restore();\n },\n\n _clearTextArea: function(ctx) {\n // we add 4 pixel, to be sure to do not leave any pixel out\n var width = this.width + 4, height = this.height + 4;\n ctx.clearRect(-width / 2, -height / 2, width, height);\n },\n\n /**\n * Returns cursor boundaries (left, top, leftOffset, topOffset)\n * @private\n * @param {Array} chars Array of characters\n * @param {String} typeOfBoundaries\n */\n _getCursorBoundaries: function(position) {\n\n // left/top are left/top of entire text box\n // leftOffset/topOffset are offset from that left/top point of a text box\n\n if (typeof position === 'undefined') {\n position = this.selectionStart;\n }\n\n var left = this._getLeftOffset(),\n top = this._getTopOffset(),\n offsets = this._getCursorBoundariesOffsets(position);\n\n return {\n left: left,\n top: top,\n leftOffset: offsets.left,\n topOffset: offsets.top\n };\n },\n\n /**\n * @private\n */\n _getCursorBoundariesOffsets: function(position) {\n if (this.cursorOffsetCache && 'top' in this.cursorOffsetCache) {\n return this.cursorOffsetCache;\n }\n var lineLeftOffset,\n lineIndex,\n charIndex,\n topOffset = 0,\n leftOffset = 0,\n boundaries,\n cursorPosition = this.get2DCursorLocation(position);\n charIndex = cursorPosition.charIndex;\n lineIndex = cursorPosition.lineIndex;\n for (var i = 0; i < lineIndex; i++) {\n topOffset += this.getHeightOfLine(i);\n }\n lineLeftOffset = this._getLineLeftOffset(lineIndex);\n var bound = this.__charBounds[lineIndex][charIndex];\n bound && (leftOffset = bound.left);\n if (this.charSpacing !== 0 && charIndex === this._textLines[lineIndex].length) {\n leftOffset -= this._getWidthOfCharSpacing();\n }\n boundaries = {\n top: topOffset,\n left: lineLeftOffset + (leftOffset > 0 ? leftOffset : 0),\n };\n this.cursorOffsetCache = boundaries;\n return this.cursorOffsetCache;\n },\n\n /**\n * Renders cursor\n * @param {Object} boundaries\n * @param {CanvasRenderingContext2D} ctx transformed context to draw on\n */\n renderCursor: function(boundaries, ctx) {\n var cursorLocation = this.get2DCursorLocation(),\n lineIndex = cursorLocation.lineIndex,\n charIndex = cursorLocation.charIndex > 0 ? cursorLocation.charIndex - 1 : 0,\n charHeight = this.getValueOfPropertyAt(lineIndex, charIndex, 'fontSize'),\n multiplier = this.scaleX * this.canvas.getZoom(),\n cursorWidth = this.cursorWidth / multiplier,\n topOffset = boundaries.topOffset,\n dy = this.getValueOfPropertyAt(lineIndex, charIndex, 'deltaY');\n\n topOffset += (1 - this._fontSizeFraction) * this.getHeightOfLine(lineIndex) / this.lineHeight\n - charHeight * (1 - this._fontSizeFraction);\n\n if (this.inCompositionMode) {\n this.renderSelection(boundaries, ctx);\n }\n\n ctx.fillStyle = this.getValueOfPropertyAt(lineIndex, charIndex, 'fill');\n ctx.globalAlpha = this.__isMousedown ? 1 : this._currentCursorOpacity;\n ctx.fillRect(\n boundaries.left + boundaries.leftOffset - cursorWidth / 2,\n topOffset + boundaries.top + dy,\n cursorWidth,\n charHeight);\n },\n\n /**\n * Renders text selection\n * @param {Object} boundaries Object with left/top/leftOffset/topOffset\n * @param {CanvasRenderingContext2D} ctx transformed context to draw on\n */\n renderSelection: function(boundaries, ctx) {\n\n var selectionStart = this.inCompositionMode ? this.hiddenTextarea.selectionStart : this.selectionStart,\n selectionEnd = this.inCompositionMode ? this.hiddenTextarea.selectionEnd : this.selectionEnd,\n isJustify = this.textAlign.indexOf('justify') !== -1,\n start = this.get2DCursorLocation(selectionStart),\n end = this.get2DCursorLocation(selectionEnd),\n startLine = start.lineIndex,\n endLine = end.lineIndex,\n startChar = start.charIndex < 0 ? 0 : start.charIndex,\n endChar = end.charIndex < 0 ? 0 : end.charIndex;\n\n for (var i = startLine; i <= endLine; i++) {\n var lineOffset = this._getLineLeftOffset(i) || 0,\n lineHeight = this.getHeightOfLine(i),\n realLineHeight = 0, boxStart = 0, boxEnd = 0;\n\n if (i === startLine) {\n boxStart = this.__charBounds[startLine][startChar].left;\n }\n if (i >= startLine && i < endLine) {\n boxEnd = isJustify && !this.isEndOfWrapping(i) ? this.width : this.getLineWidth(i) || 5; // WTF is this 5?\n }\n else if (i === endLine) {\n if (endChar === 0) {\n boxEnd = this.__charBounds[endLine][endChar].left;\n }\n else {\n var charSpacing = this._getWidthOfCharSpacing();\n boxEnd = this.__charBounds[endLine][endChar - 1].left\n + this.__charBounds[endLine][endChar - 1].width - charSpacing;\n }\n }\n realLineHeight = lineHeight;\n if (this.lineHeight < 1 || (i === endLine && this.lineHeight > 1)) {\n lineHeight /= this.lineHeight;\n }\n if (this.inCompositionMode) {\n ctx.fillStyle = this.compositionColor || 'black';\n ctx.fillRect(\n boundaries.left + lineOffset + boxStart,\n boundaries.top + boundaries.topOffset + lineHeight,\n boxEnd - boxStart,\n 1);\n }\n else {\n ctx.fillStyle = this.selectionColor;\n ctx.fillRect(\n boundaries.left + lineOffset + boxStart,\n boundaries.top + boundaries.topOffset,\n boxEnd - boxStart,\n lineHeight);\n }\n\n\n boundaries.topOffset += realLineHeight;\n }\n },\n\n /**\n * High level function to know the height of the cursor.\n * the currentChar is the one that precedes the cursor\n * Returns fontSize of char at the current cursor\n * @return {Number} Character font size\n */\n getCurrentCharFontSize: function() {\n var cp = this._getCurrentCharIndex();\n return this.getValueOfPropertyAt(cp.l, cp.c, 'fontSize');\n },\n\n /**\n * High level function to know the color of the cursor.\n * the currentChar is the one that precedes the cursor\n * Returns color (fill) of char at the current cursor\n * @return {String} Character color (fill)\n */\n getCurrentCharColor: function() {\n var cp = this._getCurrentCharIndex();\n return this.getValueOfPropertyAt(cp.l, cp.c, 'fill');\n },\n\n /**\n * Returns the cursor position for the getCurrent.. functions\n * @private\n */\n _getCurrentCharIndex: function() {\n var cursorPosition = this.get2DCursorLocation(this.selectionStart, true),\n charIndex = cursorPosition.charIndex > 0 ? cursorPosition.charIndex - 1 : 0;\n return { l: cursorPosition.lineIndex, c: charIndex };\n }\n });\n\n /**\n * Returns fabric.IText instance from an object representation\n * @static\n * @memberOf fabric.IText\n * @param {Object} object Object to create an instance from\n * @param {function} [callback] invoked with new instance as argument\n */\n fabric.IText.fromObject = function(object, callback) {\n parseDecoration(object);\n if (object.styles) {\n for (var i in object.styles) {\n for (var j in object.styles[i]) {\n parseDecoration(object.styles[i][j]);\n }\n }\n }\n fabric.Object._fromObject('IText', object, callback, 'text');\n };\n})();\n\n\n(function() {\n\n var clone = fabric.util.object.clone;\n\n fabric.util.object.extend(fabric.IText.prototype, /** @lends fabric.IText.prototype */ {\n\n /**\n * Initializes all the interactive behavior of IText\n */\n initBehavior: function() {\n this.initAddedHandler();\n this.initRemovedHandler();\n this.initCursorSelectionHandlers();\n this.initDoubleClickSimulation();\n this.mouseMoveHandler = this.mouseMoveHandler.bind(this);\n },\n\n onDeselect: function() {\n this.isEditing && this.exitEditing();\n this.selected = false;\n },\n\n /**\n * Initializes \"added\" event handler\n */\n initAddedHandler: function() {\n var _this = this;\n this.on('added', function() {\n var canvas = _this.canvas;\n if (canvas) {\n if (!canvas._hasITextHandlers) {\n canvas._hasITextHandlers = true;\n _this._initCanvasHandlers(canvas);\n }\n canvas._iTextInstances = canvas._iTextInstances || [];\n canvas._iTextInstances.push(_this);\n }\n });\n },\n\n initRemovedHandler: function() {\n var _this = this;\n this.on('removed', function() {\n var canvas = _this.canvas;\n if (canvas) {\n canvas._iTextInstances = canvas._iTextInstances || [];\n fabric.util.removeFromArray(canvas._iTextInstances, _this);\n if (canvas._iTextInstances.length === 0) {\n canvas._hasITextHandlers = false;\n _this._removeCanvasHandlers(canvas);\n }\n }\n });\n },\n\n /**\n * register canvas event to manage exiting on other instances\n * @private\n */\n _initCanvasHandlers: function(canvas) {\n canvas._mouseUpITextHandler = function() {\n if (canvas._iTextInstances) {\n canvas._iTextInstances.forEach(function(obj) {\n obj.__isMousedown = false;\n });\n }\n };\n canvas.on('mouse:up', canvas._mouseUpITextHandler);\n },\n\n /**\n * remove canvas event to manage exiting on other instances\n * @private\n */\n _removeCanvasHandlers: function(canvas) {\n canvas.off('mouse:up', canvas._mouseUpITextHandler);\n },\n\n /**\n * @private\n */\n _tick: function() {\n this._currentTickState = this._animateCursor(this, 1, this.cursorDuration, '_onTickComplete');\n },\n\n /**\n * @private\n */\n _animateCursor: function(obj, targetOpacity, duration, completeMethod) {\n\n var tickState;\n\n tickState = {\n isAborted: false,\n abort: function() {\n this.isAborted = true;\n },\n };\n\n obj.animate('_currentCursorOpacity', targetOpacity, {\n duration: duration,\n onComplete: function() {\n if (!tickState.isAborted) {\n obj[completeMethod]();\n }\n },\n onChange: function() {\n // we do not want to animate a selection, only cursor\n if (obj.canvas && obj.selectionStart === obj.selectionEnd) {\n obj.renderCursorOrSelection();\n }\n },\n abort: function() {\n return tickState.isAborted;\n }\n });\n return tickState;\n },\n\n /**\n * @private\n */\n _onTickComplete: function() {\n\n var _this = this;\n\n if (this._cursorTimeout1) {\n clearTimeout(this._cursorTimeout1);\n }\n this._cursorTimeout1 = setTimeout(function() {\n _this._currentTickCompleteState = _this._animateCursor(_this, 0, this.cursorDuration / 2, '_tick');\n }, 100);\n },\n\n /**\n * Initializes delayed cursor\n */\n initDelayedCursor: function(restart) {\n var _this = this,\n delay = restart ? 0 : this.cursorDelay;\n\n this.abortCursorAnimation();\n this._currentCursorOpacity = 1;\n this._cursorTimeout2 = setTimeout(function() {\n _this._tick();\n }, delay);\n },\n\n /**\n * Aborts cursor animation and clears all timeouts\n */\n abortCursorAnimation: function() {\n var shouldClear = this._currentTickState || this._currentTickCompleteState,\n canvas = this.canvas;\n this._currentTickState && this._currentTickState.abort();\n this._currentTickCompleteState && this._currentTickCompleteState.abort();\n\n clearTimeout(this._cursorTimeout1);\n clearTimeout(this._cursorTimeout2);\n\n this._currentCursorOpacity = 0;\n // to clear just itext area we need to transform the context\n // it may not be worth it\n if (shouldClear && canvas) {\n canvas.clearContext(canvas.contextTop || canvas.contextContainer);\n }\n\n },\n\n /**\n * Selects entire text\n * @return {fabric.IText} thisArg\n * @chainable\n */\n selectAll: function() {\n this.selectionStart = 0;\n this.selectionEnd = this._text.length;\n this._fireSelectionChanged();\n this._updateTextarea();\n return this;\n },\n\n /**\n * Returns selected text\n * @return {String}\n */\n getSelectedText: function() {\n return this._text.slice(this.selectionStart, this.selectionEnd).join('');\n },\n\n /**\n * Find new selection index representing start of current word according to current selection index\n * @param {Number} startFrom Surrent selection index\n * @return {Number} New selection index\n */\n findWordBoundaryLeft: function(startFrom) {\n var offset = 0, index = startFrom - 1;\n\n // remove space before cursor first\n if (this._reSpace.test(this._text[index])) {\n while (this._reSpace.test(this._text[index])) {\n offset++;\n index--;\n }\n }\n while (/\\S/.test(this._text[index]) && index > -1) {\n offset++;\n index--;\n }\n\n return startFrom - offset;\n },\n\n /**\n * Find new selection index representing end of current word according to current selection index\n * @param {Number} startFrom Current selection index\n * @return {Number} New selection index\n */\n findWordBoundaryRight: function(startFrom) {\n var offset = 0, index = startFrom;\n\n // remove space after cursor first\n if (this._reSpace.test(this._text[index])) {\n while (this._reSpace.test(this._text[index])) {\n offset++;\n index++;\n }\n }\n while (/\\S/.test(this._text[index]) && index < this.text.length) {\n offset++;\n index++;\n }\n\n return startFrom + offset;\n },\n\n /**\n * Find new selection index representing start of current line according to current selection index\n * @param {Number} startFrom Current selection index\n * @return {Number} New selection index\n */\n findLineBoundaryLeft: function(startFrom) {\n var offset = 0, index = startFrom - 1;\n\n while (!/\\n/.test(this._text[index]) && index > -1) {\n offset++;\n index--;\n }\n\n return startFrom - offset;\n },\n\n /**\n * Find new selection index representing end of current line according to current selection index\n * @param {Number} startFrom Current selection index\n * @return {Number} New selection index\n */\n findLineBoundaryRight: function(startFrom) {\n var offset = 0, index = startFrom;\n\n while (!/\\n/.test(this._text[index]) && index < this.text.length) {\n offset++;\n index++;\n }\n\n return startFrom + offset;\n },\n\n /**\n * Finds index corresponding to beginning or end of a word\n * @param {Number} selectionStart Index of a character\n * @param {Number} direction 1 or -1\n * @return {Number} Index of the beginning or end of a word\n */\n searchWordBoundary: function(selectionStart, direction) {\n var index = this._reSpace.test(this.text.charAt(selectionStart)) ? selectionStart - 1 : selectionStart,\n _char = this.text.charAt(index),\n reNonWord = /[ \\n\\.,;!\\?\\-]/;\n\n while (!reNonWord.test(_char) && index > 0 && index < this.text.length) {\n index += direction;\n _char = this.text.charAt(index);\n }\n if (reNonWord.test(_char) && _char !== '\\n') {\n index += direction === 1 ? 0 : 1;\n }\n return index;\n },\n\n /**\n * Selects a word based on the index\n * @param {Number} selectionStart Index of a character\n */\n selectWord: function(selectionStart) {\n selectionStart = selectionStart || this.selectionStart;\n var newSelectionStart = this.searchWordBoundary(selectionStart, -1), /* search backwards */\n newSelectionEnd = this.searchWordBoundary(selectionStart, 1); /* search forward */\n\n this.selectionStart = newSelectionStart;\n this.selectionEnd = newSelectionEnd;\n this._fireSelectionChanged();\n this._updateTextarea();\n this.renderCursorOrSelection();\n },\n\n /**\n * Selects a line based on the index\n * @param {Number} selectionStart Index of a character\n * @return {fabric.IText} thisArg\n * @chainable\n */\n selectLine: function(selectionStart) {\n selectionStart = selectionStart || this.selectionStart;\n var newSelectionStart = this.findLineBoundaryLeft(selectionStart),\n newSelectionEnd = this.findLineBoundaryRight(selectionStart);\n\n this.selectionStart = newSelectionStart;\n this.selectionEnd = newSelectionEnd;\n this._fireSelectionChanged();\n this._updateTextarea();\n return this;\n },\n\n /**\n * Enters editing state\n * @return {fabric.IText} thisArg\n * @chainable\n */\n enterEditing: function(e) {\n if (this.isEditing || !this.editable) {\n return;\n }\n\n if (this.canvas) {\n this.canvas.calcOffset();\n this.exitEditingOnOthers(this.canvas);\n }\n\n this.isEditing = true;\n\n this.initHiddenTextarea(e);\n this.hiddenTextarea.focus();\n this.hiddenTextarea.value = this.text;\n this._updateTextarea();\n this._saveEditingProps();\n this._setEditingProps();\n this._textBeforeEdit = this.text;\n\n this._tick();\n this.fire('editing:entered');\n this._fireSelectionChanged();\n if (!this.canvas) {\n return this;\n }\n this.canvas.fire('text:editing:entered', { target: this });\n this.initMouseMoveHandler();\n this.canvas.requestRenderAll();\n return this;\n },\n\n exitEditingOnOthers: function(canvas) {\n if (canvas._iTextInstances) {\n canvas._iTextInstances.forEach(function(obj) {\n obj.selected = false;\n if (obj.isEditing) {\n obj.exitEditing();\n }\n });\n }\n },\n\n /**\n * Initializes \"mousemove\" event handler\n */\n initMouseMoveHandler: function() {\n this.canvas.on('mouse:move', this.mouseMoveHandler);\n },\n\n /**\n * @private\n */\n mouseMoveHandler: function(options) {\n if (!this.__isMousedown || !this.isEditing) {\n return;\n }\n\n var newSelectionStart = this.getSelectionStartFromPointer(options.e),\n currentStart = this.selectionStart,\n currentEnd = this.selectionEnd;\n if (\n (newSelectionStart !== this.__selectionStartOnMouseDown || currentStart === currentEnd)\n &&\n (currentStart === newSelectionStart || currentEnd === newSelectionStart)\n ) {\n return;\n }\n if (newSelectionStart > this.__selectionStartOnMouseDown) {\n this.selectionStart = this.__selectionStartOnMouseDown;\n this.selectionEnd = newSelectionStart;\n }\n else {\n this.selectionStart = newSelectionStart;\n this.selectionEnd = this.__selectionStartOnMouseDown;\n }\n if (this.selectionStart !== currentStart || this.selectionEnd !== currentEnd) {\n this.restartCursorIfNeeded();\n this._fireSelectionChanged();\n this._updateTextarea();\n this.renderCursorOrSelection();\n }\n },\n\n /**\n * @private\n */\n _setEditingProps: function() {\n this.hoverCursor = 'text';\n\n if (this.canvas) {\n this.canvas.defaultCursor = this.canvas.moveCursor = 'text';\n }\n\n this.borderColor = this.editingBorderColor;\n\n this.hasControls = this.selectable = false;\n this.lockMovementX = this.lockMovementY = true;\n },\n\n /**\n * convert from textarea to grapheme indexes\n */\n fromStringToGraphemeSelection: function(start, end, text) {\n var smallerTextStart = text.slice(0, start),\n graphemeStart = fabric.util.string.graphemeSplit(smallerTextStart).length;\n if (start === end) {\n return { selectionStart: graphemeStart, selectionEnd: graphemeStart };\n }\n var smallerTextEnd = text.slice(start, end),\n graphemeEnd = fabric.util.string.graphemeSplit(smallerTextEnd).length;\n return { selectionStart: graphemeStart, selectionEnd: graphemeStart + graphemeEnd };\n },\n\n /**\n * convert from fabric to textarea values\n */\n fromGraphemeToStringSelection: function(start, end, _text) {\n var smallerTextStart = _text.slice(0, start),\n graphemeStart = smallerTextStart.join('').length;\n if (start === end) {\n return { selectionStart: graphemeStart, selectionEnd: graphemeStart };\n }\n var smallerTextEnd = _text.slice(start, end),\n graphemeEnd = smallerTextEnd.join('').length;\n return { selectionStart: graphemeStart, selectionEnd: graphemeStart + graphemeEnd };\n },\n\n /**\n * @private\n */\n _updateTextarea: function() {\n this.cursorOffsetCache = { };\n if (!this.hiddenTextarea) {\n return;\n }\n if (!this.inCompositionMode) {\n var newSelection = this.fromGraphemeToStringSelection(this.selectionStart, this.selectionEnd, this._text);\n this.hiddenTextarea.selectionStart = newSelection.selectionStart;\n this.hiddenTextarea.selectionEnd = newSelection.selectionEnd;\n }\n this.updateTextareaPosition();\n },\n\n /**\n * @private\n */\n updateFromTextArea: function() {\n if (!this.hiddenTextarea) {\n return;\n }\n this.cursorOffsetCache = { };\n this.text = this.hiddenTextarea.value;\n if (this._shouldClearDimensionCache()) {\n this.initDimensions();\n this.setCoords();\n }\n var newSelection = this.fromStringToGraphemeSelection(\n this.hiddenTextarea.selectionStart, this.hiddenTextarea.selectionEnd, this.hiddenTextarea.value);\n this.selectionEnd = this.selectionStart = newSelection.selectionEnd;\n if (!this.inCompositionMode) {\n this.selectionStart = newSelection.selectionStart;\n }\n this.updateTextareaPosition();\n },\n\n /**\n * @private\n */\n updateTextareaPosition: function() {\n if (this.selectionStart === this.selectionEnd) {\n var style = this._calcTextareaPosition();\n this.hiddenTextarea.style.left = style.left;\n this.hiddenTextarea.style.top = style.top;\n }\n },\n\n /**\n * @private\n * @return {Object} style contains style for hiddenTextarea\n */\n _calcTextareaPosition: function() {\n if (!this.canvas) {\n return { x: 1, y: 1 };\n }\n var desiredPostion = this.inCompositionMode ? this.compositionStart : this.selectionStart,\n boundaries = this._getCursorBoundaries(desiredPostion),\n cursorLocation = this.get2DCursorLocation(desiredPostion),\n lineIndex = cursorLocation.lineIndex,\n charIndex = cursorLocation.charIndex,\n charHeight = this.getValueOfPropertyAt(lineIndex, charIndex, 'fontSize') * this.lineHeight,\n leftOffset = boundaries.leftOffset,\n m = this.calcTransformMatrix(),\n p = {\n x: boundaries.left + leftOffset,\n y: boundaries.top + boundaries.topOffset + charHeight\n },\n upperCanvas = this.canvas.upperCanvasEl,\n upperCanvasWidth = upperCanvas.width,\n upperCanvasHeight = upperCanvas.height,\n maxWidth = upperCanvasWidth - charHeight,\n maxHeight = upperCanvasHeight - charHeight,\n scaleX = upperCanvas.clientWidth / upperCanvasWidth,\n scaleY = upperCanvas.clientHeight / upperCanvasHeight;\n\n p = fabric.util.transformPoint(p, m);\n p = fabric.util.transformPoint(p, this.canvas.viewportTransform);\n p.x *= scaleX;\n p.y *= scaleY;\n if (p.x < 0) {\n p.x = 0;\n }\n if (p.x > maxWidth) {\n p.x = maxWidth;\n }\n if (p.y < 0) {\n p.y = 0;\n }\n if (p.y > maxHeight) {\n p.y = maxHeight;\n }\n\n // add canvas offset on document\n p.x += this.canvas._offset.left;\n p.y += this.canvas._offset.top;\n\n return { left: p.x + 'px', top: p.y + 'px', fontSize: charHeight + 'px', charHeight: charHeight };\n },\n\n /**\n * @private\n */\n _saveEditingProps: function() {\n this._savedProps = {\n hasControls: this.hasControls,\n borderColor: this.borderColor,\n lockMovementX: this.lockMovementX,\n lockMovementY: this.lockMovementY,\n hoverCursor: this.hoverCursor,\n defaultCursor: this.canvas && this.canvas.defaultCursor,\n moveCursor: this.canvas && this.canvas.moveCursor\n };\n },\n\n /**\n * @private\n */\n _restoreEditingProps: function() {\n if (!this._savedProps) {\n return;\n }\n\n this.hoverCursor = this._savedProps.hoverCursor;\n this.hasControls = this._savedProps.hasControls;\n this.borderColor = this._savedProps.borderColor;\n this.lockMovementX = this._savedProps.lockMovementX;\n this.lockMovementY = this._savedProps.lockMovementY;\n\n if (this.canvas) {\n this.canvas.defaultCursor = this._savedProps.defaultCursor;\n this.canvas.moveCursor = this._savedProps.moveCursor;\n }\n },\n\n /**\n * Exits from editing state\n * @return {fabric.IText} thisArg\n * @chainable\n */\n exitEditing: function() {\n var isTextChanged = (this._textBeforeEdit !== this.text);\n this.selected = false;\n this.isEditing = false;\n this.selectable = true;\n\n this.selectionEnd = this.selectionStart;\n\n if (this.hiddenTextarea) {\n this.hiddenTextarea.blur && this.hiddenTextarea.blur();\n this.canvas && this.hiddenTextarea.parentNode.removeChild(this.hiddenTextarea);\n this.hiddenTextarea = null;\n }\n\n this.abortCursorAnimation();\n this._restoreEditingProps();\n this._currentCursorOpacity = 0;\n if (this._shouldClearDimensionCache()) {\n this.initDimensions();\n this.setCoords();\n }\n this.fire('editing:exited');\n isTextChanged && this.fire('modified');\n if (this.canvas) {\n this.canvas.off('mouse:move', this.mouseMoveHandler);\n this.canvas.fire('text:editing:exited', { target: this });\n isTextChanged && this.canvas.fire('object:modified', { target: this });\n }\n return this;\n },\n\n /**\n * @private\n */\n _removeExtraneousStyles: function() {\n for (var prop in this.styles) {\n if (!this._textLines[prop]) {\n delete this.styles[prop];\n }\n }\n },\n\n /**\n * remove and reflow a style block from start to end.\n * @param {Number} start linear start position for removal (included in removal)\n * @param {Number} end linear end position for removal ( excluded from removal )\n */\n removeStyleFromTo: function(start, end) {\n var cursorStart = this.get2DCursorLocation(start, true),\n cursorEnd = this.get2DCursorLocation(end, true),\n lineStart = cursorStart.lineIndex,\n charStart = cursorStart.charIndex,\n lineEnd = cursorEnd.lineIndex,\n charEnd = cursorEnd.charIndex,\n i, styleObj;\n if (lineStart !== lineEnd) {\n // step1 remove the trailing of lineStart\n if (this.styles[lineStart]) {\n for (i = charStart; i < this._unwrappedTextLines[lineStart].length; i++) {\n delete this.styles[lineStart][i];\n }\n }\n // step2 move the trailing of lineEnd to lineStart if needed\n if (this.styles[lineEnd]) {\n for (i = charEnd; i < this._unwrappedTextLines[lineEnd].length; i++) {\n styleObj = this.styles[lineEnd][i];\n if (styleObj) {\n this.styles[lineStart] || (this.styles[lineStart] = { });\n this.styles[lineStart][charStart + i - charEnd] = styleObj;\n }\n }\n }\n // step3 detects lines will be completely removed.\n for (i = lineStart + 1; i <= lineEnd; i++) {\n delete this.styles[i];\n }\n // step4 shift remaining lines.\n this.shiftLineStyles(lineEnd, lineStart - lineEnd);\n }\n else {\n // remove and shift left on the same line\n if (this.styles[lineStart]) {\n styleObj = this.styles[lineStart];\n var diff = charEnd - charStart, numericChar, _char;\n for (i = charStart; i < charEnd; i++) {\n delete styleObj[i];\n }\n for (_char in this.styles[lineStart]) {\n numericChar = parseInt(_char, 10);\n if (numericChar >= charEnd) {\n styleObj[numericChar - diff] = styleObj[_char];\n delete styleObj[_char];\n }\n }\n }\n }\n },\n\n /**\n * Shifts line styles up or down\n * @param {Number} lineIndex Index of a line\n * @param {Number} offset Can any number?\n */\n shiftLineStyles: function(lineIndex, offset) {\n // shift all line styles by offset upward or downward\n // do not clone deep. we need new array, not new style objects\n var clonedStyles = clone(this.styles);\n for (var line in this.styles) {\n var numericLine = parseInt(line, 10);\n if (numericLine > lineIndex) {\n this.styles[numericLine + offset] = clonedStyles[numericLine];\n if (!clonedStyles[numericLine - offset]) {\n delete this.styles[numericLine];\n }\n }\n }\n },\n\n restartCursorIfNeeded: function() {\n if (!this._currentTickState || this._currentTickState.isAborted\n || !this._currentTickCompleteState || this._currentTickCompleteState.isAborted\n ) {\n this.initDelayedCursor();\n }\n },\n\n /**\n * Inserts new style object\n * @param {Number} lineIndex Index of a line\n * @param {Number} charIndex Index of a char\n * @param {Number} qty number of lines to add\n * @param {Array} copiedStyle Array of objects styles\n */\n insertNewlineStyleObject: function(lineIndex, charIndex, qty, copiedStyle) {\n var currentCharStyle,\n newLineStyles = {},\n somethingAdded = false;\n\n qty || (qty = 1);\n this.shiftLineStyles(lineIndex, qty);\n if (this.styles[lineIndex]) {\n currentCharStyle = this.styles[lineIndex][charIndex === 0 ? charIndex : charIndex - 1];\n }\n\n // we clone styles of all chars\n // after cursor onto the current line\n for (var index in this.styles[lineIndex]) {\n var numIndex = parseInt(index, 10);\n if (numIndex >= charIndex) {\n somethingAdded = true;\n newLineStyles[numIndex - charIndex] = this.styles[lineIndex][index];\n // remove lines from the previous line since they're on a new line now\n delete this.styles[lineIndex][index];\n }\n }\n if (somethingAdded) {\n this.styles[lineIndex + qty] = newLineStyles;\n }\n else {\n delete this.styles[lineIndex + qty];\n }\n // for the other lines\n // we clone current char style onto the next (otherwise empty) line\n while (qty > 1) {\n qty--;\n if (copiedStyle && copiedStyle[qty]) {\n this.styles[lineIndex + qty] = { 0: clone(copiedStyle[qty]) };\n }\n else if (currentCharStyle) {\n this.styles[lineIndex + qty] = { 0: clone(currentCharStyle) };\n }\n else {\n delete this.styles[lineIndex + qty];\n }\n }\n this._forceClearCache = true;\n },\n\n /**\n * Inserts style object for a given line/char index\n * @param {Number} lineIndex Index of a line\n * @param {Number} charIndex Index of a char\n * @param {Number} quantity number Style object to insert, if given\n * @param {Array} copiedStyle array of style objecs\n */\n insertCharStyleObject: function(lineIndex, charIndex, quantity, copiedStyle) {\n if (!this.styles) {\n this.styles = {};\n }\n var currentLineStyles = this.styles[lineIndex],\n currentLineStylesCloned = currentLineStyles ? clone(currentLineStyles) : {};\n\n quantity || (quantity = 1);\n // shift all char styles by quantity forward\n // 0,1,2,3 -> (charIndex=2) -> 0,1,3,4 -> (insert 2) -> 0,1,2,3,4\n for (var index in currentLineStylesCloned) {\n var numericIndex = parseInt(index, 10);\n if (numericIndex >= charIndex) {\n currentLineStyles[numericIndex + quantity] = currentLineStylesCloned[numericIndex];\n // only delete the style if there was nothing moved there\n if (!currentLineStylesCloned[numericIndex - quantity]) {\n delete currentLineStyles[numericIndex];\n }\n }\n }\n this._forceClearCache = true;\n if (copiedStyle) {\n while (quantity--) {\n if (!Object.keys(copiedStyle[quantity]).length) {\n continue;\n }\n if (!this.styles[lineIndex]) {\n this.styles[lineIndex] = {};\n }\n this.styles[lineIndex][charIndex + quantity] = clone(copiedStyle[quantity]);\n }\n return;\n }\n if (!currentLineStyles) {\n return;\n }\n var newStyle = currentLineStyles[charIndex ? charIndex - 1 : 1];\n while (newStyle && quantity--) {\n this.styles[lineIndex][charIndex + quantity] = clone(newStyle);\n }\n },\n\n /**\n * Inserts style object(s)\n * @param {Array} insertedText Characters at the location where style is inserted\n * @param {Number} start cursor index for inserting style\n * @param {Array} [copiedStyle] array of style objects to insert.\n */\n insertNewStyleBlock: function(insertedText, start, copiedStyle) {\n var cursorLoc = this.get2DCursorLocation(start, true),\n addedLines = [0], linesLenght = 0;\n for (var i = 0; i < insertedText.length; i++) {\n if (insertedText[i] === '\\n') {\n linesLenght++;\n addedLines[linesLenght] = 0;\n }\n else {\n addedLines[linesLenght]++;\n }\n }\n if (addedLines[0] > 0) {\n this.insertCharStyleObject(cursorLoc.lineIndex, cursorLoc.charIndex, addedLines[0], copiedStyle);\n copiedStyle = copiedStyle && copiedStyle.slice(addedLines[0] + 1);\n }\n linesLenght && this.insertNewlineStyleObject(\n cursorLoc.lineIndex, cursorLoc.charIndex + addedLines[0], linesLenght);\n for (var i = 1; i < linesLenght; i++) {\n if (addedLines[i] > 0) {\n this.insertCharStyleObject(cursorLoc.lineIndex + i, 0, addedLines[i], copiedStyle);\n }\n else if (copiedStyle) {\n this.styles[cursorLoc.lineIndex + i][0] = copiedStyle[0];\n }\n copiedStyle = copiedStyle && copiedStyle.slice(addedLines[i] + 1);\n }\n // we use i outside the loop to get it like linesLength\n if (addedLines[i] > 0) {\n this.insertCharStyleObject(cursorLoc.lineIndex + i, 0, addedLines[i], copiedStyle);\n }\n },\n\n /**\n * Set the selectionStart and selectionEnd according to the ne postion of cursor\n * mimic the key - mouse navigation when shift is pressed.\n */\n setSelectionStartEndWithShift: function(start, end, newSelection) {\n if (newSelection <= start) {\n if (end === start) {\n this._selectionDirection = 'left';\n }\n else if (this._selectionDirection === 'right') {\n this._selectionDirection = 'left';\n this.selectionEnd = start;\n }\n this.selectionStart = newSelection;\n }\n else if (newSelection > start && newSelection < end) {\n if (this._selectionDirection === 'right') {\n this.selectionEnd = newSelection;\n }\n else {\n this.selectionStart = newSelection;\n }\n }\n else {\n // newSelection is > selection start and end\n if (end === start) {\n this._selectionDirection = 'right';\n }\n else if (this._selectionDirection === 'left') {\n this._selectionDirection = 'right';\n this.selectionStart = end;\n }\n this.selectionEnd = newSelection;\n }\n },\n\n setSelectionInBoundaries: function() {\n var length = this.text.length;\n if (this.selectionStart > length) {\n this.selectionStart = length;\n }\n else if (this.selectionStart < 0) {\n this.selectionStart = 0;\n }\n if (this.selectionEnd > length) {\n this.selectionEnd = length;\n }\n else if (this.selectionEnd < 0) {\n this.selectionEnd = 0;\n }\n }\n });\n})();\n\n\nfabric.util.object.extend(fabric.IText.prototype, /** @lends fabric.IText.prototype */ {\n /**\n * Initializes \"dbclick\" event handler\n */\n initDoubleClickSimulation: function() {\n\n // for double click\n this.__lastClickTime = +new Date();\n\n // for triple click\n this.__lastLastClickTime = +new Date();\n\n this.__lastPointer = { };\n\n this.on('mousedown', this.onMouseDown);\n },\n\n /**\n * Default event handler to simulate triple click\n * @private\n */\n onMouseDown: function(options) {\n if (!this.canvas) {\n return;\n }\n this.__newClickTime = +new Date();\n var newPointer = options.pointer;\n if (this.isTripleClick(newPointer)) {\n this.fire('tripleclick', options);\n this._stopEvent(options.e);\n }\n this.__lastLastClickTime = this.__lastClickTime;\n this.__lastClickTime = this.__newClickTime;\n this.__lastPointer = newPointer;\n this.__lastIsEditing = this.isEditing;\n this.__lastSelected = this.selected;\n },\n\n isTripleClick: function(newPointer) {\n return this.__newClickTime - this.__lastClickTime < 500 &&\n this.__lastClickTime - this.__lastLastClickTime < 500 &&\n this.__lastPointer.x === newPointer.x &&\n this.__lastPointer.y === newPointer.y;\n },\n\n /**\n * @private\n */\n _stopEvent: function(e) {\n e.preventDefault && e.preventDefault();\n e.stopPropagation && e.stopPropagation();\n },\n\n /**\n * Initializes event handlers related to cursor or selection\n */\n initCursorSelectionHandlers: function() {\n this.initMousedownHandler();\n this.initMouseupHandler();\n this.initClicks();\n },\n\n /**\n * Initializes double and triple click event handlers\n */\n initClicks: function() {\n this.on('mousedblclick', function(options) {\n this.selectWord(this.getSelectionStartFromPointer(options.e));\n });\n this.on('tripleclick', function(options) {\n this.selectLine(this.getSelectionStartFromPointer(options.e));\n });\n },\n\n /**\n * Default event handler for the basic functionalities needed on _mouseDown\n * can be overridden to do something different.\n * Scope of this implementation is: find the click position, set selectionStart\n * find selectionEnd, initialize the drawing of either cursor or selection area\n */\n _mouseDownHandler: function(options) {\n if (!this.canvas || !this.editable || (options.e.button && options.e.button !== 1)) {\n return;\n }\n\n this.__isMousedown = true;\n\n if (this.selected) {\n this.setCursorByClick(options.e);\n }\n\n if (this.isEditing) {\n this.__selectionStartOnMouseDown = this.selectionStart;\n if (this.selectionStart === this.selectionEnd) {\n this.abortCursorAnimation();\n }\n this.renderCursorOrSelection();\n }\n },\n\n /**\n * Default event handler for the basic functionalities needed on mousedown:before\n * can be overridden to do something different.\n * Scope of this implementation is: verify the object is already selected when mousing down\n */\n _mouseDownHandlerBefore: function(options) {\n if (!this.canvas || !this.editable || (options.e.button && options.e.button !== 1)) {\n return;\n }\n if (this === this.canvas._activeObject) {\n this.selected = true;\n }\n },\n\n /**\n * Initializes \"mousedown\" event handler\n */\n initMousedownHandler: function() {\n this.on('mousedown', this._mouseDownHandler);\n this.on('mousedown:before', this._mouseDownHandlerBefore);\n },\n\n /**\n * Initializes \"mouseup\" event handler\n */\n initMouseupHandler: function() {\n this.on('mouseup', this.mouseUpHandler);\n },\n\n /**\n * standard hander for mouse up, overridable\n * @private\n */\n mouseUpHandler: function(options) {\n this.__isMousedown = false;\n if (!this.editable || this.group ||\n (options.transform && options.transform.actionPerformed) ||\n (options.e.button && options.e.button !== 1)) {\n return;\n }\n\n if (this.canvas) {\n var currentActive = this.canvas._activeObject;\n if (currentActive && currentActive !== this) {\n // avoid running this logic when there is an active object\n // this because is possible with shift click and fast clicks,\n // to rapidly deselect and reselect this object and trigger an enterEdit\n return;\n }\n }\n\n if (this.__lastSelected && !this.__corner) {\n this.selected = false;\n this.__lastSelected = false;\n this.enterEditing(options.e);\n if (this.selectionStart === this.selectionEnd) {\n this.initDelayedCursor(true);\n }\n else {\n this.renderCursorOrSelection();\n }\n }\n else {\n this.selected = true;\n }\n },\n\n /**\n * Changes cursor location in a text depending on passed pointer (x/y) object\n * @param {Event} e Event object\n */\n setCursorByClick: function(e) {\n var newSelection = this.getSelectionStartFromPointer(e),\n start = this.selectionStart, end = this.selectionEnd;\n if (e.shiftKey) {\n this.setSelectionStartEndWithShift(start, end, newSelection);\n }\n else {\n this.selectionStart = newSelection;\n this.selectionEnd = newSelection;\n }\n if (this.isEditing) {\n this._fireSelectionChanged();\n this._updateTextarea();\n }\n },\n\n /**\n * Returns index of a character corresponding to where an object was clicked\n * @param {Event} e Event object\n * @return {Number} Index of a character\n */\n getSelectionStartFromPointer: function(e) {\n var mouseOffset = this.getLocalPointer(e),\n prevWidth = 0,\n width = 0,\n height = 0,\n charIndex = 0,\n lineIndex = 0,\n lineLeftOffset,\n line;\n\n for (var i = 0, len = this._textLines.length; i < len; i++) {\n if (height <= mouseOffset.y) {\n height += this.getHeightOfLine(i) * this.scaleY;\n lineIndex = i;\n if (i > 0) {\n charIndex += this._textLines[i - 1].length + 1;\n }\n }\n else {\n break;\n }\n }\n lineLeftOffset = this._getLineLeftOffset(lineIndex);\n width = lineLeftOffset * this.scaleX;\n line = this._textLines[lineIndex];\n for (var j = 0, jlen = line.length; j < jlen; j++) {\n prevWidth = width;\n // i removed something about flipX here, check.\n width += this.__charBounds[lineIndex][j].kernedWidth * this.scaleX;\n if (width <= mouseOffset.x) {\n charIndex++;\n }\n else {\n break;\n }\n }\n return this._getNewSelectionStartFromOffset(mouseOffset, prevWidth, width, charIndex, jlen);\n },\n\n /**\n * @private\n */\n _getNewSelectionStartFromOffset: function(mouseOffset, prevWidth, width, index, jlen) {\n // we need Math.abs because when width is after the last char, the offset is given as 1, while is 0\n var distanceBtwLastCharAndCursor = mouseOffset.x - prevWidth,\n distanceBtwNextCharAndCursor = width - mouseOffset.x,\n offset = distanceBtwNextCharAndCursor > distanceBtwLastCharAndCursor ||\n distanceBtwNextCharAndCursor < 0 ? 0 : 1,\n newSelectionStart = index + offset;\n // if object is horizontally flipped, mirror cursor location from the end\n if (this.flipX) {\n newSelectionStart = jlen - newSelectionStart;\n }\n\n if (newSelectionStart > this._text.length) {\n newSelectionStart = this._text.length;\n }\n\n return newSelectionStart;\n }\n});\n\n\nfabric.util.object.extend(fabric.IText.prototype, /** @lends fabric.IText.prototype */ {\n\n /**\n * Initializes hidden textarea (needed to bring up keyboard in iOS)\n */\n initHiddenTextarea: function() {\n this.hiddenTextarea = fabric.document.createElement('textarea');\n this.hiddenTextarea.setAttribute('autocapitalize', 'off');\n this.hiddenTextarea.setAttribute('autocorrect', 'off');\n this.hiddenTextarea.setAttribute('autocomplete', 'off');\n this.hiddenTextarea.setAttribute('spellcheck', 'false');\n this.hiddenTextarea.setAttribute('data-fabric-hiddentextarea', '');\n this.hiddenTextarea.setAttribute('wrap', 'off');\n var style = this._calcTextareaPosition();\n // line-height: 1px; was removed from the style to fix this:\n // https://bugs.chromium.org/p/chromium/issues/detail?id=870966\n this.hiddenTextarea.style.cssText = 'position: absolute; top: ' + style.top +\n '; left: ' + style.left + '; z-index: -999; opacity: 0; width: 1px; height: 1px; font-size: 1px;' +\n ' paddingーtop: ' + style.fontSize + ';';\n fabric.document.body.appendChild(this.hiddenTextarea);\n\n fabric.util.addListener(this.hiddenTextarea, 'keydown', this.onKeyDown.bind(this));\n fabric.util.addListener(this.hiddenTextarea, 'keyup', this.onKeyUp.bind(this));\n fabric.util.addListener(this.hiddenTextarea, 'input', this.onInput.bind(this));\n fabric.util.addListener(this.hiddenTextarea, 'copy', this.copy.bind(this));\n fabric.util.addListener(this.hiddenTextarea, 'cut', this.copy.bind(this));\n fabric.util.addListener(this.hiddenTextarea, 'paste', this.paste.bind(this));\n fabric.util.addListener(this.hiddenTextarea, 'compositionstart', this.onCompositionStart.bind(this));\n fabric.util.addListener(this.hiddenTextarea, 'compositionupdate', this.onCompositionUpdate.bind(this));\n fabric.util.addListener(this.hiddenTextarea, 'compositionend', this.onCompositionEnd.bind(this));\n\n if (!this._clickHandlerInitialized && this.canvas) {\n fabric.util.addListener(this.canvas.upperCanvasEl, 'click', this.onClick.bind(this));\n this._clickHandlerInitialized = true;\n }\n },\n\n /**\n * For functionalities on keyDown\n * Map a special key to a function of the instance/prototype\n * If you need different behaviour for ESC or TAB or arrows, you have to change\n * this map setting the name of a function that you build on the fabric.Itext or\n * your prototype.\n * the map change will affect all Instances unless you need for only some text Instances\n * in that case you have to clone this object and assign your Instance.\n * this.keysMap = fabric.util.object.clone(this.keysMap);\n * The function must be in fabric.Itext.prototype.myFunction And will receive event as args[0]\n */\n keysMap: {\n 9: 'exitEditing',\n 27: 'exitEditing',\n 33: 'moveCursorUp',\n 34: 'moveCursorDown',\n 35: 'moveCursorRight',\n 36: 'moveCursorLeft',\n 37: 'moveCursorLeft',\n 38: 'moveCursorUp',\n 39: 'moveCursorRight',\n 40: 'moveCursorDown',\n },\n\n /**\n * For functionalities on keyUp + ctrl || cmd\n */\n ctrlKeysMapUp: {\n 67: 'copy',\n 88: 'cut'\n },\n\n /**\n * For functionalities on keyDown + ctrl || cmd\n */\n ctrlKeysMapDown: {\n 65: 'selectAll'\n },\n\n onClick: function() {\n // No need to trigger click event here, focus is enough to have the keyboard appear on Android\n this.hiddenTextarea && this.hiddenTextarea.focus();\n },\n\n /**\n * Handles keyup event\n * @param {Event} e Event object\n */\n onKeyDown: function(e) {\n if (!this.isEditing || this.inCompositionMode) {\n return;\n }\n if (e.keyCode in this.keysMap) {\n this[this.keysMap[e.keyCode]](e);\n }\n else if ((e.keyCode in this.ctrlKeysMapDown) && (e.ctrlKey || e.metaKey)) {\n this[this.ctrlKeysMapDown[e.keyCode]](e);\n }\n else {\n return;\n }\n e.stopImmediatePropagation();\n e.preventDefault();\n if (e.keyCode >= 33 && e.keyCode <= 40) {\n // if i press an arrow key just update selection\n this.clearContextTop();\n this.renderCursorOrSelection();\n }\n else {\n this.canvas && this.canvas.requestRenderAll();\n }\n },\n\n /**\n * Handles keyup event\n * We handle KeyUp because ie11 and edge have difficulties copy/pasting\n * if a copy/cut event fired, keyup is dismissed\n * @param {Event} e Event object\n */\n onKeyUp: function(e) {\n if (!this.isEditing || this._copyDone || this.inCompositionMode) {\n this._copyDone = false;\n return;\n }\n if ((e.keyCode in this.ctrlKeysMapUp) && (e.ctrlKey || e.metaKey)) {\n this[this.ctrlKeysMapUp[e.keyCode]](e);\n }\n else {\n return;\n }\n e.stopImmediatePropagation();\n e.preventDefault();\n this.canvas && this.canvas.requestRenderAll();\n },\n\n /**\n * Handles onInput event\n * @param {Event} e Event object\n */\n onInput: function(e) {\n var fromPaste = this.fromPaste;\n this.fromPaste = false;\n e && e.stopPropagation();\n if (!this.isEditing) {\n return;\n }\n // decisions about style changes.\n var nextText = this._splitTextIntoLines(this.hiddenTextarea.value).graphemeText,\n charCount = this._text.length,\n nextCharCount = nextText.length,\n removedText, insertedText,\n charDiff = nextCharCount - charCount;\n if (this.hiddenTextarea.value === '') {\n this.styles = { };\n this.updateFromTextArea();\n this.fire('changed');\n if (this.canvas) {\n this.canvas.fire('text:changed', { target: this });\n this.canvas.requestRenderAll();\n }\n return;\n }\n\n var textareaSelection = this.fromStringToGraphemeSelection(\n this.hiddenTextarea.selectionStart,\n this.hiddenTextarea.selectionEnd,\n this.hiddenTextarea.value\n );\n var backDelete = this.selectionStart > textareaSelection.selectionStart;\n\n if (this.selectionStart !== this.selectionEnd) {\n removedText = this._text.slice(this.selectionStart, this.selectionEnd);\n charDiff += this.selectionEnd - this.selectionStart;\n }\n else if (nextCharCount < charCount) {\n if (backDelete) {\n removedText = this._text.slice(this.selectionEnd + charDiff, this.selectionEnd);\n }\n else {\n removedText = this._text.slice(this.selectionStart, this.selectionStart - charDiff);\n }\n }\n insertedText = nextText.slice(textareaSelection.selectionEnd - charDiff, textareaSelection.selectionEnd);\n if (removedText && removedText.length) {\n if (this.selectionStart !== this.selectionEnd) {\n this.removeStyleFromTo(this.selectionStart, this.selectionEnd);\n }\n else if (backDelete) {\n // detect differencies between forwardDelete and backDelete\n this.removeStyleFromTo(this.selectionEnd - removedText.length, this.selectionEnd);\n }\n else {\n this.removeStyleFromTo(this.selectionEnd, this.selectionEnd + removedText.length);\n }\n }\n if (insertedText.length) {\n if (fromPaste && insertedText.join('') === fabric.copiedText) {\n this.insertNewStyleBlock(insertedText, this.selectionStart, fabric.copiedTextStyle);\n }\n else {\n this.insertNewStyleBlock(insertedText, this.selectionStart);\n }\n }\n this.updateFromTextArea();\n this.fire('changed');\n if (this.canvas) {\n this.canvas.fire('text:changed', { target: this });\n this.canvas.requestRenderAll();\n }\n },\n /**\n * Composition start\n */\n onCompositionStart: function() {\n this.inCompositionMode = true;\n },\n\n /**\n * Composition end\n */\n onCompositionEnd: function() {\n this.inCompositionMode = false;\n },\n\n // /**\n // * Composition update\n // */\n onCompositionUpdate: function(e) {\n this.compositionStart = e.target.selectionStart;\n this.compositionEnd = e.target.selectionEnd;\n this.updateTextareaPosition();\n },\n\n /**\n * Copies selected text\n * @param {Event} e Event object\n */\n copy: function() {\n if (this.selectionStart === this.selectionEnd) {\n //do not cut-copy if no selection\n return;\n }\n\n fabric.copiedText = this.getSelectedText();\n fabric.copiedTextStyle = this.getSelectionStyles(this.selectionStart, this.selectionEnd, true);\n this._copyDone = true;\n },\n\n /**\n * Pastes text\n * @param {Event} e Event object\n */\n paste: function() {\n this.fromPaste = true;\n },\n\n /**\n * @private\n * @param {Event} e Event object\n * @return {Object} Clipboard data object\n */\n _getClipboardData: function(e) {\n return (e && e.clipboardData) || fabric.window.clipboardData;\n },\n\n /**\n * Finds the width in pixels before the cursor on the same line\n * @private\n * @param {Number} lineIndex\n * @param {Number} charIndex\n * @return {Number} widthBeforeCursor width before cursor\n */\n _getWidthBeforeCursor: function(lineIndex, charIndex) {\n var widthBeforeCursor = this._getLineLeftOffset(lineIndex), bound;\n\n if (charIndex > 0) {\n bound = this.__charBounds[lineIndex][charIndex - 1];\n widthBeforeCursor += bound.left + bound.width;\n }\n return widthBeforeCursor;\n },\n\n /**\n * Gets start offset of a selection\n * @param {Event} e Event object\n * @param {Boolean} isRight\n * @return {Number}\n */\n getDownCursorOffset: function(e, isRight) {\n var selectionProp = this._getSelectionForOffset(e, isRight),\n cursorLocation = this.get2DCursorLocation(selectionProp),\n lineIndex = cursorLocation.lineIndex;\n // if on last line, down cursor goes to end of line\n if (lineIndex === this._textLines.length - 1 || e.metaKey || e.keyCode === 34) {\n // move to the end of a text\n return this._text.length - selectionProp;\n }\n var charIndex = cursorLocation.charIndex,\n widthBeforeCursor = this._getWidthBeforeCursor(lineIndex, charIndex),\n indexOnOtherLine = this._getIndexOnLine(lineIndex + 1, widthBeforeCursor),\n textAfterCursor = this._textLines[lineIndex].slice(charIndex);\n return textAfterCursor.length + indexOnOtherLine + 2;\n },\n\n /**\n * private\n * Helps finding if the offset should be counted from Start or End\n * @param {Event} e Event object\n * @param {Boolean} isRight\n * @return {Number}\n */\n _getSelectionForOffset: function(e, isRight) {\n if (e.shiftKey && this.selectionStart !== this.selectionEnd && isRight) {\n return this.selectionEnd;\n }\n else {\n return this.selectionStart;\n }\n },\n\n /**\n * @param {Event} e Event object\n * @param {Boolean} isRight\n * @return {Number}\n */\n getUpCursorOffset: function(e, isRight) {\n var selectionProp = this._getSelectionForOffset(e, isRight),\n cursorLocation = this.get2DCursorLocation(selectionProp),\n lineIndex = cursorLocation.lineIndex;\n if (lineIndex === 0 || e.metaKey || e.keyCode === 33) {\n // if on first line, up cursor goes to start of line\n return -selectionProp;\n }\n var charIndex = cursorLocation.charIndex,\n widthBeforeCursor = this._getWidthBeforeCursor(lineIndex, charIndex),\n indexOnOtherLine = this._getIndexOnLine(lineIndex - 1, widthBeforeCursor),\n textBeforeCursor = this._textLines[lineIndex].slice(0, charIndex);\n // return a negative offset\n return -this._textLines[lineIndex - 1].length + indexOnOtherLine - textBeforeCursor.length;\n },\n\n /**\n * for a given width it founds the matching character.\n * @private\n */\n _getIndexOnLine: function(lineIndex, width) {\n\n var line = this._textLines[lineIndex],\n lineLeftOffset = this._getLineLeftOffset(lineIndex),\n widthOfCharsOnLine = lineLeftOffset,\n indexOnLine = 0, charWidth, foundMatch;\n\n for (var j = 0, jlen = line.length; j < jlen; j++) {\n charWidth = this.__charBounds[lineIndex][j].width;\n widthOfCharsOnLine += charWidth;\n if (widthOfCharsOnLine > width) {\n foundMatch = true;\n var leftEdge = widthOfCharsOnLine - charWidth,\n rightEdge = widthOfCharsOnLine,\n offsetFromLeftEdge = Math.abs(leftEdge - width),\n offsetFromRightEdge = Math.abs(rightEdge - width);\n\n indexOnLine = offsetFromRightEdge < offsetFromLeftEdge ? j : (j - 1);\n break;\n }\n }\n\n // reached end\n if (!foundMatch) {\n indexOnLine = line.length - 1;\n }\n\n return indexOnLine;\n },\n\n\n /**\n * Moves cursor down\n * @param {Event} e Event object\n */\n moveCursorDown: function(e) {\n if (this.selectionStart >= this._text.length && this.selectionEnd >= this._text.length) {\n return;\n }\n this._moveCursorUpOrDown('Down', e);\n },\n\n /**\n * Moves cursor up\n * @param {Event} e Event object\n */\n moveCursorUp: function(e) {\n if (this.selectionStart === 0 && this.selectionEnd === 0) {\n return;\n }\n this._moveCursorUpOrDown('Up', e);\n },\n\n /**\n * Moves cursor up or down, fires the events\n * @param {String} direction 'Up' or 'Down'\n * @param {Event} e Event object\n */\n _moveCursorUpOrDown: function(direction, e) {\n // getUpCursorOffset\n // getDownCursorOffset\n var action = 'get' + direction + 'CursorOffset',\n offset = this[action](e, this._selectionDirection === 'right');\n if (e.shiftKey) {\n this.moveCursorWithShift(offset);\n }\n else {\n this.moveCursorWithoutShift(offset);\n }\n if (offset !== 0) {\n this.setSelectionInBoundaries();\n this.abortCursorAnimation();\n this._currentCursorOpacity = 1;\n this.initDelayedCursor();\n this._fireSelectionChanged();\n this._updateTextarea();\n }\n },\n\n /**\n * Moves cursor with shift\n * @param {Number} offset\n */\n moveCursorWithShift: function(offset) {\n var newSelection = this._selectionDirection === 'left'\n ? this.selectionStart + offset\n : this.selectionEnd + offset;\n this.setSelectionStartEndWithShift(this.selectionStart, this.selectionEnd, newSelection);\n return offset !== 0;\n },\n\n /**\n * Moves cursor up without shift\n * @param {Number} offset\n */\n moveCursorWithoutShift: function(offset) {\n if (offset < 0) {\n this.selectionStart += offset;\n this.selectionEnd = this.selectionStart;\n }\n else {\n this.selectionEnd += offset;\n this.selectionStart = this.selectionEnd;\n }\n return offset !== 0;\n },\n\n /**\n * Moves cursor left\n * @param {Event} e Event object\n */\n moveCursorLeft: function(e) {\n if (this.selectionStart === 0 && this.selectionEnd === 0) {\n return;\n }\n this._moveCursorLeftOrRight('Left', e);\n },\n\n /**\n * @private\n * @return {Boolean} true if a change happened\n */\n _move: function(e, prop, direction) {\n var newValue;\n if (e.altKey) {\n newValue = this['findWordBoundary' + direction](this[prop]);\n }\n else if (e.metaKey || e.keyCode === 35 || e.keyCode === 36 ) {\n newValue = this['findLineBoundary' + direction](this[prop]);\n }\n else {\n this[prop] += direction === 'Left' ? -1 : 1;\n return true;\n }\n if (typeof newValue !== undefined && this[prop] !== newValue) {\n this[prop] = newValue;\n return true;\n }\n },\n\n /**\n * @private\n */\n _moveLeft: function(e, prop) {\n return this._move(e, prop, 'Left');\n },\n\n /**\n * @private\n */\n _moveRight: function(e, prop) {\n return this._move(e, prop, 'Right');\n },\n\n /**\n * Moves cursor left without keeping selection\n * @param {Event} e\n */\n moveCursorLeftWithoutShift: function(e) {\n var change = true;\n this._selectionDirection = 'left';\n\n // only move cursor when there is no selection,\n // otherwise we discard it, and leave cursor on same place\n if (this.selectionEnd === this.selectionStart && this.selectionStart !== 0) {\n change = this._moveLeft(e, 'selectionStart');\n\n }\n this.selectionEnd = this.selectionStart;\n return change;\n },\n\n /**\n * Moves cursor left while keeping selection\n * @param {Event} e\n */\n moveCursorLeftWithShift: function(e) {\n if (this._selectionDirection === 'right' && this.selectionStart !== this.selectionEnd) {\n return this._moveLeft(e, 'selectionEnd');\n }\n else if (this.selectionStart !== 0){\n this._selectionDirection = 'left';\n return this._moveLeft(e, 'selectionStart');\n }\n },\n\n /**\n * Moves cursor right\n * @param {Event} e Event object\n */\n moveCursorRight: function(e) {\n if (this.selectionStart >= this._text.length && this.selectionEnd >= this._text.length) {\n return;\n }\n this._moveCursorLeftOrRight('Right', e);\n },\n\n /**\n * Moves cursor right or Left, fires event\n * @param {String} direction 'Left', 'Right'\n * @param {Event} e Event object\n */\n _moveCursorLeftOrRight: function(direction, e) {\n var actionName = 'moveCursor' + direction + 'With';\n this._currentCursorOpacity = 1;\n\n if (e.shiftKey) {\n actionName += 'Shift';\n }\n else {\n actionName += 'outShift';\n }\n if (this[actionName](e)) {\n this.abortCursorAnimation();\n this.initDelayedCursor();\n this._fireSelectionChanged();\n this._updateTextarea();\n }\n },\n\n /**\n * Moves cursor right while keeping selection\n * @param {Event} e\n */\n moveCursorRightWithShift: function(e) {\n if (this._selectionDirection === 'left' && this.selectionStart !== this.selectionEnd) {\n return this._moveRight(e, 'selectionStart');\n }\n else if (this.selectionEnd !== this._text.length) {\n this._selectionDirection = 'right';\n return this._moveRight(e, 'selectionEnd');\n }\n },\n\n /**\n * Moves cursor right without keeping selection\n * @param {Event} e Event object\n */\n moveCursorRightWithoutShift: function(e) {\n var changed = true;\n this._selectionDirection = 'right';\n\n if (this.selectionStart === this.selectionEnd) {\n changed = this._moveRight(e, 'selectionStart');\n this.selectionEnd = this.selectionStart;\n }\n else {\n this.selectionStart = this.selectionEnd;\n }\n return changed;\n },\n\n /**\n * Removes characters from start/end\n * start/end ar per grapheme position in _text array.\n *\n * @param {Number} start\n * @param {Number} end default to start + 1\n */\n removeChars: function(start, end) {\n if (typeof end === 'undefined') {\n end = start + 1;\n }\n this.removeStyleFromTo(start, end);\n this._text.splice(start, end - start);\n this.text = this._text.join('');\n this.set('dirty', true);\n if (this._shouldClearDimensionCache()) {\n this.initDimensions();\n this.setCoords();\n }\n this._removeExtraneousStyles();\n },\n\n /**\n * insert characters at start position, before start position.\n * start equal 1 it means the text get inserted between actual grapheme 0 and 1\n * if style array is provided, it must be as the same length of text in graphemes\n * if end is provided and is bigger than start, old text is replaced.\n * start/end ar per grapheme position in _text array.\n *\n * @param {String} text text to insert\n * @param {Array} style array of style objects\n * @param {Number} start\n * @param {Number} end default to start + 1\n */\n insertChars: function(text, style, start, end) {\n if (typeof end === 'undefined') {\n end = start;\n }\n if (end > start) {\n this.removeStyleFromTo(start, end);\n }\n var graphemes = fabric.util.string.graphemeSplit(text);\n this.insertNewStyleBlock(graphemes, start, style);\n this._text = [].concat(this._text.slice(0, start), graphemes, this._text.slice(end));\n this.text = this._text.join('');\n this.set('dirty', true);\n if (this._shouldClearDimensionCache()) {\n this.initDimensions();\n this.setCoords();\n }\n this._removeExtraneousStyles();\n },\n\n});\n\n\n/* _TO_SVG_START_ */\n(function() {\n var toFixed = fabric.util.toFixed,\n multipleSpacesRegex = / +/g;\n\n fabric.util.object.extend(fabric.Text.prototype, /** @lends fabric.Text.prototype */ {\n\n /**\n * Returns SVG representation of an instance\n * @param {Function} [reviver] Method for further parsing of svg representation.\n * @return {String} svg representation of an instance\n */\n toSVG: function(reviver) {\n var offsets = this._getSVGLeftTopOffsets(),\n textAndBg = this._getSVGTextAndBg(offsets.textTop, offsets.textLeft),\n internalMarkup = this._wrapSVGTextAndBg(textAndBg);\n return this._createBaseSVGMarkup(\n internalMarkup, { reviver: reviver, noStyle: true, withShadow: true });\n },\n\n /**\n * @private\n */\n _getSVGLeftTopOffsets: function() {\n return {\n textLeft: -this.width / 2,\n textTop: -this.height / 2,\n lineTop: this.getHeightOfLine(0)\n };\n },\n\n /**\n * @private\n */\n _wrapSVGTextAndBg: function(textAndBg) {\n var noShadow = true,\n textDecoration = this.getSvgTextDecoration(this);\n return [\n textAndBg.textBgRects.join(''),\n '\\t\\t',\n textAndBg.textSpans.join(''),\n '\\n'\n ];\n },\n\n /**\n * @private\n * @param {Number} textTopOffset Text top offset\n * @param {Number} textLeftOffset Text left offset\n * @return {Object}\n */\n _getSVGTextAndBg: function(textTopOffset, textLeftOffset) {\n var textSpans = [],\n textBgRects = [],\n height = textTopOffset, lineOffset;\n // bounding-box background\n this._setSVGBg(textBgRects);\n\n // text and text-background\n for (var i = 0, len = this._textLines.length; i < len; i++) {\n lineOffset = this._getLineLeftOffset(i);\n if (this.textBackgroundColor || this.styleHas('textBackgroundColor', i)) {\n this._setSVGTextLineBg(textBgRects, i, textLeftOffset + lineOffset, height);\n }\n this._setSVGTextLineText(textSpans, i, textLeftOffset + lineOffset, height);\n height += this.getHeightOfLine(i);\n }\n\n return {\n textSpans: textSpans,\n textBgRects: textBgRects\n };\n },\n\n /**\n * @private\n */\n _createTextCharSpan: function(_char, styleDecl, left, top) {\n var shouldUseWhitespace = _char !== _char.trim() || _char.match(multipleSpacesRegex),\n styleProps = this.getSvgSpanStyles(styleDecl, shouldUseWhitespace),\n fillStyles = styleProps ? 'style=\"' + styleProps + '\"' : '',\n dy = styleDecl.deltaY, dySpan = '',\n NUM_FRACTION_DIGITS = fabric.Object.NUM_FRACTION_DIGITS;\n if (dy) {\n dySpan = ' dy=\"' + toFixed(dy, NUM_FRACTION_DIGITS) + '\" ';\n }\n return [\n '',\n fabric.util.string.escapeXml(_char),\n ''\n ].join('');\n },\n\n _setSVGTextLineText: function(textSpans, lineIndex, textLeftOffset, textTopOffset) {\n // set proper line offset\n var lineHeight = this.getHeightOfLine(lineIndex),\n isJustify = this.textAlign.indexOf('justify') !== -1,\n actualStyle,\n nextStyle,\n charsToRender = '',\n charBox, style,\n boxWidth = 0,\n line = this._textLines[lineIndex],\n timeToRender;\n\n textTopOffset += lineHeight * (1 - this._fontSizeFraction) / this.lineHeight;\n for (var i = 0, len = line.length - 1; i <= len; i++) {\n timeToRender = i === len || this.charSpacing;\n charsToRender += line[i];\n charBox = this.__charBounds[lineIndex][i];\n if (boxWidth === 0) {\n textLeftOffset += charBox.kernedWidth - charBox.width;\n boxWidth += charBox.width;\n }\n else {\n boxWidth += charBox.kernedWidth;\n }\n if (isJustify && !timeToRender) {\n if (this._reSpaceAndTab.test(line[i])) {\n timeToRender = true;\n }\n }\n if (!timeToRender) {\n // if we have charSpacing, we render char by char\n actualStyle = actualStyle || this.getCompleteStyleDeclaration(lineIndex, i);\n nextStyle = this.getCompleteStyleDeclaration(lineIndex, i + 1);\n timeToRender = this._hasStyleChangedForSvg(actualStyle, nextStyle);\n }\n if (timeToRender) {\n style = this._getStyleDeclaration(lineIndex, i) || { };\n textSpans.push(this._createTextCharSpan(charsToRender, style, textLeftOffset, textTopOffset));\n charsToRender = '';\n actualStyle = nextStyle;\n textLeftOffset += boxWidth;\n boxWidth = 0;\n }\n }\n },\n\n _pushTextBgRect: function(textBgRects, color, left, top, width, height) {\n var NUM_FRACTION_DIGITS = fabric.Object.NUM_FRACTION_DIGITS;\n textBgRects.push(\n '\\t\\t\\n');\n },\n\n _setSVGTextLineBg: function(textBgRects, i, leftOffset, textTopOffset) {\n var line = this._textLines[i],\n heightOfLine = this.getHeightOfLine(i) / this.lineHeight,\n boxWidth = 0,\n boxStart = 0,\n charBox, currentColor,\n lastColor = this.getValueOfPropertyAt(i, 0, 'textBackgroundColor');\n for (var j = 0, jlen = line.length; j < jlen; j++) {\n charBox = this.__charBounds[i][j];\n currentColor = this.getValueOfPropertyAt(i, j, 'textBackgroundColor');\n if (currentColor !== lastColor) {\n lastColor && this._pushTextBgRect(textBgRects, lastColor, leftOffset + boxStart,\n textTopOffset, boxWidth, heightOfLine);\n boxStart = charBox.left;\n boxWidth = charBox.width;\n lastColor = currentColor;\n }\n else {\n boxWidth += charBox.kernedWidth;\n }\n }\n currentColor && this._pushTextBgRect(textBgRects, currentColor, leftOffset + boxStart,\n textTopOffset, boxWidth, heightOfLine);\n },\n\n /**\n * Adobe Illustrator (at least CS5) is unable to render rgba()-based fill values\n * we work around it by \"moving\" alpha channel into opacity attribute and setting fill's alpha to 1\n *\n * @private\n * @param {*} value\n * @return {String}\n */\n _getFillAttributes: function(value) {\n var fillColor = (value && typeof value === 'string') ? new fabric.Color(value) : '';\n if (!fillColor || !fillColor.getSource() || fillColor.getAlpha() === 1) {\n return 'fill=\"' + value + '\"';\n }\n return 'opacity=\"' + fillColor.getAlpha() + '\" fill=\"' + fillColor.setAlpha(1).toRgb() + '\"';\n },\n\n /**\n * @private\n */\n _getSVGLineTopOffset: function(lineIndex) {\n var lineTopOffset = 0, lastHeight = 0;\n for (var j = 0; j < lineIndex; j++) {\n lineTopOffset += this.getHeightOfLine(j);\n }\n lastHeight = this.getHeightOfLine(j);\n return {\n lineTop: lineTopOffset,\n offset: (this._fontSizeMult - this._fontSizeFraction) * lastHeight / (this.lineHeight * this._fontSizeMult)\n };\n },\n\n /**\n * Returns styles-string for svg-export\n * @param {Boolean} skipShadow a boolean to skip shadow filter output\n * @return {String}\n */\n getSvgStyles: function(skipShadow) {\n var svgStyle = fabric.Object.prototype.getSvgStyles.call(this, skipShadow);\n return svgStyle + ' white-space: pre;';\n },\n });\n})();\n/* _TO_SVG_END_ */\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = {});\n\n /**\n * Textbox class, based on IText, allows the user to resize the text rectangle\n * and wraps lines automatically. Textboxes have their Y scaling locked, the\n * user can only change width. Height is adjusted automatically based on the\n * wrapping of lines.\n * @class fabric.Textbox\n * @extends fabric.IText\n * @mixes fabric.Observable\n * @return {fabric.Textbox} thisArg\n * @see {@link fabric.Textbox#initialize} for constructor definition\n */\n fabric.Textbox = fabric.util.createClass(fabric.IText, fabric.Observable, {\n\n /**\n * Type of an object\n * @type String\n * @default\n */\n type: 'textbox',\n\n /**\n * Minimum width of textbox, in pixels.\n * @type Number\n * @default\n */\n minWidth: 20,\n\n /**\n * Minimum calculated width of a textbox, in pixels.\n * fixed to 2 so that an empty textbox cannot go to 0\n * and is still selectable without text.\n * @type Number\n * @default\n */\n dynamicMinWidth: 2,\n\n /**\n * Cached array of text wrapping.\n * @type Array\n */\n __cachedLines: null,\n\n /**\n * Override standard Object class values\n */\n lockScalingFlip: true,\n\n /**\n * Override standard Object class values\n * Textbox needs this on false\n */\n noScaleCache: false,\n\n /**\n * Properties which when set cause object to change dimensions\n * @type Object\n * @private\n */\n _dimensionAffectingProps: fabric.Text.prototype._dimensionAffectingProps.concat('width'),\n\n /**\n * Use this regular expression to split strings in breakable lines\n * @private\n */\n _wordJoiners: /[ \\t\\r]/,\n\n /**\n * Use this boolean property in order to split strings that have no white space concept.\n * this is a cheap way to help with chinese/japaense\n * @type Boolean\n * @since 2.6.0\n */\n splitByGrapheme: false,\n\n /**\n * Unlike superclass's version of this function, Textbox does not update\n * its width.\n * @private\n * @override\n */\n initDimensions: function() {\n if (this.__skipDimension) {\n return;\n }\n this.isEditing && this.initDelayedCursor();\n this.clearContextTop();\n this._clearCache();\n // clear dynamicMinWidth as it will be different after we re-wrap line\n this.dynamicMinWidth = 0;\n // wrap lines\n this._styleMap = this._generateStyleMap(this._splitText());\n // if after wrapping, the width is smaller than dynamicMinWidth, change the width and re-wrap\n if (this.dynamicMinWidth > this.width) {\n this._set('width', this.dynamicMinWidth);\n }\n if (this.textAlign.indexOf('justify') !== -1) {\n // once text is measured we need to make space fatter to make justified text.\n this.enlargeSpaces();\n }\n // clear cache and re-calculate height\n this.height = this.calcTextHeight();\n this.saveState({ propertySet: '_dimensionAffectingProps' });\n },\n\n /**\n * Generate an object that translates the style object so that it is\n * broken up by visual lines (new lines and automatic wrapping).\n * The original text styles object is broken up by actual lines (new lines only),\n * which is only sufficient for Text / IText\n * @private\n */\n _generateStyleMap: function(textInfo) {\n var realLineCount = 0,\n realLineCharCount = 0,\n charCount = 0,\n map = {};\n\n for (var i = 0; i < textInfo.graphemeLines.length; i++) {\n if (textInfo.graphemeText[charCount] === '\\n' && i > 0) {\n realLineCharCount = 0;\n charCount++;\n realLineCount++;\n }\n else if (!this.graphemeSplit && this._reSpaceAndTab.test(textInfo.graphemeText[charCount]) && i > 0) {\n // this case deals with space's that are removed from end of lines when wrapping\n realLineCharCount++;\n charCount++;\n }\n\n map[i] = { line: realLineCount, offset: realLineCharCount };\n\n charCount += textInfo.graphemeLines[i].length;\n realLineCharCount += textInfo.graphemeLines[i].length;\n }\n\n return map;\n },\n\n /**\n * Returns true if object has a style property or has it ina specified line\n * @param {Number} lineIndex\n * @return {Boolean}\n */\n styleHas: function(property, lineIndex) {\n if (this._styleMap && !this.isWrapping) {\n var map = this._styleMap[lineIndex];\n if (map) {\n lineIndex = map.line;\n }\n }\n return fabric.Text.prototype.styleHas.call(this, property, lineIndex);\n },\n\n /**\n * Returns true if object has no styling or no styling in a line\n * @param {Number} lineIndex , lineIndex is on wrapped lines.\n * @return {Boolean}\n */\n isEmptyStyles: function(lineIndex) {\n var offset = 0, nextLineIndex = lineIndex + 1, nextOffset, obj, shouldLimit = false;\n var map = this._styleMap[lineIndex];\n var mapNextLine = this._styleMap[lineIndex + 1];\n if (map) {\n lineIndex = map.line;\n offset = map.offset;\n }\n if (mapNextLine) {\n nextLineIndex = mapNextLine.line;\n shouldLimit = nextLineIndex === lineIndex;\n nextOffset = mapNextLine.offset;\n }\n obj = typeof lineIndex === 'undefined' ? this.styles : { line: this.styles[lineIndex] };\n for (var p1 in obj) {\n for (var p2 in obj[p1]) {\n if (p2 >= offset && (!shouldLimit || p2 < nextOffset)) {\n // eslint-disable-next-line no-unused-vars\n for (var p3 in obj[p1][p2]) {\n return false;\n }\n }\n }\n }\n return true;\n },\n\n /**\n * @param {Number} lineIndex\n * @param {Number} charIndex\n * @private\n */\n _getStyleDeclaration: function(lineIndex, charIndex) {\n if (this._styleMap && !this.isWrapping) {\n var map = this._styleMap[lineIndex];\n if (!map) {\n return null;\n }\n lineIndex = map.line;\n charIndex = map.offset + charIndex;\n }\n return this.callSuper('_getStyleDeclaration', lineIndex, charIndex);\n },\n\n /**\n * @param {Number} lineIndex\n * @param {Number} charIndex\n * @param {Object} style\n * @private\n */\n _setStyleDeclaration: function(lineIndex, charIndex, style) {\n var map = this._styleMap[lineIndex];\n lineIndex = map.line;\n charIndex = map.offset + charIndex;\n\n this.styles[lineIndex][charIndex] = style;\n },\n\n /**\n * @param {Number} lineIndex\n * @param {Number} charIndex\n * @private\n */\n _deleteStyleDeclaration: function(lineIndex, charIndex) {\n var map = this._styleMap[lineIndex];\n lineIndex = map.line;\n charIndex = map.offset + charIndex;\n\n delete this.styles[lineIndex][charIndex];\n },\n\n /**\n * probably broken need a fix\n * @param {Number} lineIndex\n * @private\n */\n _getLineStyle: function(lineIndex) {\n var map = this._styleMap[lineIndex];\n return this.styles[map.line];\n },\n\n /**\n * probably broken need a fix\n * @param {Number} lineIndex\n * @param {Object} style\n * @private\n */\n _setLineStyle: function(lineIndex, style) {\n var map = this._styleMap[lineIndex];\n this.styles[map.line] = style;\n },\n\n /**\n * probably broken need a fix\n * @param {Number} lineIndex\n * @private\n */\n _deleteLineStyle: function(lineIndex) {\n var map = this._styleMap[lineIndex];\n delete this.styles[map.line];\n },\n\n /**\n * Wraps text using the 'width' property of Textbox. First this function\n * splits text on newlines, so we preserve newlines entered by the user.\n * Then it wraps each line using the width of the Textbox by calling\n * _wrapLine().\n * @param {Array} lines The string array of text that is split into lines\n * @param {Number} desiredWidth width you want to wrap to\n * @returns {Array} Array of lines\n */\n _wrapText: function(lines, desiredWidth) {\n var wrapped = [], i;\n this.isWrapping = true;\n for (i = 0; i < lines.length; i++) {\n wrapped = wrapped.concat(this._wrapLine(lines[i], i, desiredWidth));\n }\n this.isWrapping = false;\n return wrapped;\n },\n\n /**\n * Helper function to measure a string of text, given its lineIndex and charIndex offset\n * it gets called when charBounds are not available yet.\n * @param {CanvasRenderingContext2D} ctx\n * @param {String} text\n * @param {number} lineIndex\n * @param {number} charOffset\n * @returns {number}\n * @private\n */\n _measureWord: function(word, lineIndex, charOffset) {\n var width = 0, prevGrapheme, skipLeft = true;\n charOffset = charOffset || 0;\n for (var i = 0, len = word.length; i < len; i++) {\n var box = this._getGraphemeBox(word[i], lineIndex, i + charOffset, prevGrapheme, skipLeft);\n width += box.kernedWidth;\n prevGrapheme = word[i];\n }\n return width;\n },\n\n /**\n * Wraps a line of text using the width of the Textbox and a context.\n * @param {Array} line The grapheme array that represent the line\n * @param {Number} lineIndex\n * @param {Number} desiredWidth width you want to wrap the line to\n * @param {Number} reservedSpace space to remove from wrapping for custom functionalities\n * @returns {Array} Array of line(s) into which the given text is wrapped\n * to.\n */\n _wrapLine: function(_line, lineIndex, desiredWidth, reservedSpace) {\n var lineWidth = 0,\n splitByGrapheme = this.splitByGrapheme,\n graphemeLines = [],\n line = [],\n // spaces in different languges?\n words = splitByGrapheme ? fabric.util.string.graphemeSplit(_line) : _line.split(this._wordJoiners),\n word = '',\n offset = 0,\n infix = splitByGrapheme ? '' : ' ',\n wordWidth = 0,\n infixWidth = 0,\n largestWordWidth = 0,\n lineJustStarted = true,\n additionalSpace = splitByGrapheme ? 0 : this._getWidthOfCharSpacing(),\n reservedSpace = reservedSpace || 0;\n\n desiredWidth -= reservedSpace;\n for (var i = 0; i < words.length; i++) {\n // i would avoid resplitting the graphemes\n word = fabric.util.string.graphemeSplit(words[i]);\n wordWidth = this._measureWord(word, lineIndex, offset);\n offset += word.length;\n\n lineWidth += infixWidth + wordWidth - additionalSpace;\n\n if (lineWidth >= desiredWidth && !lineJustStarted) {\n graphemeLines.push(line);\n line = [];\n lineWidth = wordWidth;\n lineJustStarted = true;\n }\n else {\n lineWidth += additionalSpace;\n }\n\n if (!lineJustStarted && !splitByGrapheme) {\n line.push(infix);\n }\n line = line.concat(word);\n\n infixWidth = this._measureWord([infix], lineIndex, offset);\n offset++;\n lineJustStarted = false;\n // keep track of largest word\n if (wordWidth > largestWordWidth) {\n largestWordWidth = wordWidth;\n }\n }\n\n i && graphemeLines.push(line);\n\n if (largestWordWidth + reservedSpace > this.dynamicMinWidth) {\n this.dynamicMinWidth = largestWordWidth - additionalSpace + reservedSpace;\n }\n\n return graphemeLines;\n },\n\n /**\n * Detect if the text line is ended with an hard break\n * text and itext do not have wrapping, return false\n * @param {Number} lineIndex text to split\n * @return {Boolean}\n */\n isEndOfWrapping: function(lineIndex) {\n if (!this._styleMap[lineIndex + 1]) {\n // is last line, return true;\n return true;\n }\n if (this._styleMap[lineIndex + 1].line !== this._styleMap[lineIndex].line) {\n // this is last line before a line break, return true;\n return true;\n }\n return false;\n },\n\n /**\n * Gets lines of text to render in the Textbox. This function calculates\n * text wrapping on the fly every time it is called.\n * @param {String} text text to split\n * @returns {Array} Array of lines in the Textbox.\n * @override\n */\n _splitTextIntoLines: function(text) {\n var newText = fabric.Text.prototype._splitTextIntoLines.call(this, text),\n graphemeLines = this._wrapText(newText.lines, this.width),\n lines = new Array(graphemeLines.length);\n\n for (var i = 0; i < graphemeLines.length; i++) {\n lines[i] = graphemeLines[i].join('');\n }\n newText.lines = lines;\n newText.graphemeLines = graphemeLines;\n return newText;\n },\n\n getMinWidth: function() {\n return Math.max(this.minWidth, this.dynamicMinWidth);\n },\n\n /**\n * Returns object representation of an instance\n * @method toObject\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} object representation of an instance\n */\n toObject: function(propertiesToInclude) {\n return this.callSuper('toObject', ['minWidth', 'splitByGrapheme'].concat(propertiesToInclude));\n }\n });\n\n /**\n * Returns fabric.Textbox instance from an object representation\n * @static\n * @memberOf fabric.Textbox\n * @param {Object} object Object to create an instance from\n * @param {Function} [callback] Callback to invoke when an fabric.Textbox instance is created\n */\n fabric.Textbox.fromObject = function(object, callback) {\n return fabric.Object._fromObject('Textbox', object, callback, 'text');\n };\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function() {\n\n /**\n * Override _setObjectScale and add Textbox specific resizing behavior. Resizing\n * a Textbox doesn't scale text, it only changes width and makes text wrap automatically.\n */\n var setObjectScaleOverridden = fabric.Canvas.prototype._setObjectScale;\n\n fabric.Canvas.prototype._setObjectScale = function(localMouse, transform,\n lockScalingX, lockScalingY, by, lockScalingFlip, _dim) {\n\n var t = transform.target, scaled,\n scaleX = localMouse.x * t.scaleX / _dim.x,\n scaleY = localMouse.y * t.scaleY / _dim.y;\n if (by === 'x' && t instanceof fabric.Textbox) {\n var tw = t._getTransformedDimensions().x;\n var w = t.width * (localMouse.x / tw);\n transform.newScaleX = scaleX;\n transform.newScaleY = scaleY;\n if (w >= t.getMinWidth()) {\n scaled = w !== t.width;\n t.set('width', w);\n return scaled;\n }\n }\n else {\n return setObjectScaleOverridden.call(fabric.Canvas.prototype, localMouse, transform,\n lockScalingX, lockScalingY, by, lockScalingFlip, _dim);\n }\n };\n\n fabric.util.object.extend(fabric.Textbox.prototype, /** @lends fabric.IText.prototype */ {\n /**\n * @private\n */\n _removeExtraneousStyles: function() {\n for (var prop in this._styleMap) {\n if (!this._textLines[prop]) {\n delete this.styles[this._styleMap[prop].line];\n }\n }\n },\n\n });\n})();\n\n","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilterList.vue?vue&type=style&index=0&id=1fdc97a2&lang=scss&scoped=true&\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModalQuestionsAutoTest.vue?vue&type=style&index=0&id=99cd82e6&lang=scss&scoped=true&\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModalQuestionSample.vue?vue&type=style&index=0&lang=scss&\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CanvasSlide.vue?vue&type=style&index=0&id=b587ed50&lang=scss&scoped=true&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ExamAdd.vue?vue&type=style&index=0&id=454591a4&lang=scss&scoped=true&\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QuestionDetail.vue?vue&type=style&index=0&id=031ce42c&lang=scss&scoped=true&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditorCK.vue?vue&type=style&index=0&id=244bd19d&lang=scss&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c(_vm.template,{tag:\"component\"})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export const STORE_KEY = '$_prepare_doc';\r\nexport const SET_LIST_DOCS = 'SET_LIST_DOCS';\r\nexport const SET_PARAMS_SEARCH = 'SET_PARAMS_SEARCH';\r\nexport const SET_QUESTION_WORK = 'SET_QUESTION_WORK';\r\nexport const SET_PRAM_EXAM = 'SET_PRAM_EXAM';\r\nexport const GET_BOOK = 'GET_BOOK';\r\nexport const SET_BOOKID = 'SET_BOOKID';\r\nexport const SET_QUESTION = 'SET_QUESTION';\r\nexport const SET_SLIDES_MAIN = 'SET_SLIDES_MAIN';\r\nexport const SET_SLIDES_IMG_MAIN = 'SET_SLIDES_IMG_MAIN';\r\nexport const SET_OBJ_ACTIVITY_SLIDE = 'SET_OBJ_ACTIVITY_SLIDE';\r\nexport const SET_SLIDE_CURR = 'SET_SLIDE_CURR';\r\nexport const SET_INDEX_SLIDE_VISIBLE = 'SET_INDEX_SLIDE_VISIBLE';\r\nexport const SET_CLASSES = 'SET_CLASSES';\r\nexport const SET_LINK_VIDEO_AUDIO = 'SET_LINK_VIDEO_AUDIO';\r\nexport const SET_DATA_MEDIA_VIEWER = 'SET_DATA_MEDIA_VIEWER';\r\nexport const SET_SLIDESHOW_VISIBLE = 'SET_SLIDESHOW_VISIBLE';\r\nexport const SET_PREVIEW_MEDIA_VISIBLE_INDEX = 'SET_PREVIEW_MEDIA_VISIBLE_INDEX';\r\nexport const SET_PARAM_FILTER_MEDIA_LIST = 'SET_PARAM_FILTER_MEDIA_LIST';\r\nexport const SET_SCALE_SLIDE = 'SET_SCALE_SLIDE';\r\nexport const SET_TYPE_QUESTION = 'SET_TYPE_QUESTION';\r\nexport const SET_VISIBLE_MODAL_FILE_UPLOADED = 'SET_VISIBLE_MODAL_FILE_UPLOADED';\r\nexport const SET_KEY_SIDEBAR_VISIBLE = 'SET_KEY_SIDEBAR_VISIBLE';\r\n\r\nexport const KEY_TXT = 'text'\r\nexport const KEY_SHAPE = 'shape'\r\nexport const KEY_PICTURE = 'image'\r\nexport const KEY_VIDEO = 'video'\r\nexport const KEY_AUDIO = 'audio'\r\nexport const KEY_SLIDE = 'slide'\r\nexport const MEDIA_TYPE_IMG = 9\r\nexport const MEDIA_TYPE_VIDEO = 3\r\nexport const MEDIA_TYPE_AUDIO = 10\r\nexport const MEDIA_TYPE_PP = 2\r\nexport const FILE_TYPE_UPLOADED_IMG = 1\r\nexport const FILE_TYPE_UPLOADED_VIDEO = 2\r\nexport const FILE_TYPE_UPLOADED_AUDIO = 3\r\nexport const BASE_64_DEFINE = 'data:image/png;base64,'\r\n// Exam:\r\nexport const SET_EXAM_INFO = 'SET_EXAM_INFO'\r\nexport const SET_QUESTION_LIST = 'SET_QUESTION_LIST'\r\nexport const SET_QUESTION_DETAIL = 'SET_QUESTION_DETAIL'\r\nexport const SET_INDEX_QUESTION_WORKING = 'SET_INDEX_QUESTION_WORKING'\r\nexport const SET_CLASSES_EXAM = 'SET_CLASSES_EXAM'\r\nexport const SET_SUBJECTS_EXAM = 'SET_SUBJECTS_EXAM'\r\nexport const SET_PARAMS_GET_DATA_QUESTION_SAMPLE = 'SET_PARAMS_GET_DATA_QUESTION_SAMPLE'\r\nexport const SET_BOOKID_FILTER_QUESTION_SAMPLE = 'SET_BOOKID_FILTER_QUESTION_SAMPLE'\r\nexport const SET_BOOKINDEXID_FILTER_QUESTION_SAMPLE = 'SET_BOOKINDEXID_FILTER_QUESTION_SAMPLE'\r\nexport const SET_QUESTIONS_SAMPLE = 'SET_QUESTIONS_SAMPLE'\r\nexport const SET_QUESTION_CHOOSED = 'SET_QUESTION_CHOOSED'\r\nexport const SET_QUESTION_ID_CHOOSED = 'SET_QUESTION_ID_CHOOSED'\r\nexport const SET_CHAPTER_ID_QUESTIONS = 'SET_CHAPTER_ID_QUESTIONS'\r\nexport const SET_PARAMS_SEARCH_QUESTION_CHAPTER = 'SET_PARAMS_SEARCH_QUESTION_CHAPTER'\r\nexport const CONTENT_EDITOR_DEFAULT = '


'\r\nexport const SET_PARAMS_SEARCH_QUESTION_EXAM = 'SET_PARAMS_SEARCH_QUESTION_EXAM'\r\n","import HttpService from \"@/utils/httpData\"\r\n// import { APP_CONFIG } from '@/utils/constants'\r\n\r\nexport const apiGetBaseInfo = (params = {}) => {\r\n let apiEndpoint = `Home/GetBaseInfo`;\r\n return HttpService.get(apiEndpoint, params).then(res => {\r\n return res.data ? res.data : null;\r\n }).catch(e => { return false });\r\n}\r\nexport const apiCreateExam = (params = {}) => {\r\n let apiEndpoint = `Exam/Create`;\r\n return HttpService.post(apiEndpoint, params).then(res => {\r\n return res.data ? res.data : null;\r\n }).catch(e => { return false });\r\n}\r\nexport const apiGetListClassOfTeacher = (params = {}) => {\r\n let apiEndpoint = `Exam/GetListClassOfTeacher`;\r\n return HttpService.get(apiEndpoint, params).then(res => {\r\n return res.data ? res.data : null;\r\n }).catch(e => { return false });\r\n}\r\nexport const apiGetListSubjectOfTeacher = (params = {}) => {\r\n let apiEndpoint = `Exam/GetListSubjectOfTeacher`;\r\n return HttpService.get(apiEndpoint, params).then(res => {\r\n return res.data ? res.data : null;\r\n }).catch(e => { return false });\r\n}\r\nexport const apiCreateQuestion = (params = {}) => {\r\n let apiEndpoint = `Question/Create`;\r\n return HttpService.post(apiEndpoint, params).then(res => {\r\n return res && res.data && !res.data.errors && res.data.data ? res.data.data : null;\r\n }).catch(e => { return false });\r\n}\r\nexport const apiUpdateExam = (params = {}) => {\r\n let apiEndpoint = `Exam/Update`;\r\n return HttpService.post(apiEndpoint, params).then(res => {\r\n return res && res.data && !res.data.errors && res.data.data ? res.data.data : null;\r\n }).catch(e => { return false });\r\n}\r\nexport const apiGetDetailQuestion = (id) => {\r\n let apiEndpoint = `Question/detail`;\r\n return HttpService.get(apiEndpoint, { id }).then(res => {\r\n return res && res.data && !res.data.errors && res.data.data ? res.data.data : null;\r\n }).catch(e => { return false });\r\n}\r\nexport const apiDetailExam = (examId) => {\r\n let apiEndpoint = `Exam/Detail`;\r\n return HttpService.get(apiEndpoint, { examId }).then(res => {\r\n return res && res.data && !res.data.errors && res.data.data ? res.data.data : null;\r\n }).catch(e => { return false });\r\n}\r\nexport const apiUpdateQuestion = (params = {}) => {\r\n let apiEndpoint = `Question/Update`;\r\n return HttpService.post(apiEndpoint, params).then(res => {\r\n return res.data ? res.data : null;\r\n }).catch(e => { return false });\r\n}\r\nexport const apiGetListChooseQuestion = (params = {}) => {\r\n let apiEndpoint = `Exam/GetListChooseQuestion`;\r\n return HttpService.get(apiEndpoint, params).then(res => {\r\n return res && res.data && !res.data.errors && res.data.data ? res.data.data : null;\r\n }).catch(e => { return false });\r\n}\r\nexport const getBook = (params = {}) => {\r\n let apiEndpoint = `practice/GetBook`;\r\n return HttpService.get(apiEndpoint, params).then(res => {\r\n return res.data ? res.data : null;\r\n }).catch(e => { return false });\r\n}\r\nexport const getCategoriesByBook= (params = {}) => {\r\n let apiEndpoint = `practice/get-book-index`;\r\n return HttpService.get(apiEndpoint,params).then(res => {\r\n return res.data ? res.data : null;\r\n }).catch(e => { return false });\r\n}\r\nexport const apiGetListQuestionByBookIndexId= (id, keyword = '') => {\r\n let apiEndpoint = `Question/GetListQuestionByBookIndexId?bookIndexId=${id}&keyword=${keyword}`;\r\n return HttpService.get(apiEndpoint).then(res => {\r\n return res.data ? res.data : null;\r\n }).catch(e => { return false });\r\n}\r\nexport const apiQuestionDelete= id => {\r\n let apiEndpoint = `Question/Delete`;\r\n return HttpService.post(apiEndpoint, {id}).then(res => {\r\n return res && res.data && !res.data.errors && res.data.data ? res.data.data : null;\r\n }).catch(e => { return false });\r\n}\r\nexport const apiExamDelete= (params = {}) => {\r\n let apiEndpoint = `Exam/Delete`;\r\n return HttpService.post(apiEndpoint,params).then(res => {\r\n return res.data ? res.data : null;\r\n }).catch(e => { return false });\r\n}\r\nexport const getListChapterOtherPractice= (params = {}) => {\r\n let apiEndpoint = `Exam/GetListChapterOtherPractice`;\r\n return HttpService.post(apiEndpoint,params).then(res => {\r\n return res.data ? res.data : null;\r\n }).catch(e => { return false });\r\n}\r\nexport const apiGetListQuestionByChapterId= (params = {}) => {\r\n let apiEndpoint = `Question/GetListQuestionOtherPracticeById`;\r\n return HttpService.get(apiEndpoint,params).then(res => {\r\n return res.data ? res.data : null;\r\n }).catch(e => { return false });\r\n}\r\nexport const apiGetQuestionSampleByChapter = (params) => {\r\n // params: {chapterId, examId, keyword}\r\n let apiEndpoint = `Question/GetListQuestionByChapterExamId`;\r\n return HttpService.get(apiEndpoint,params).then(res => {\r\n return res && res.data && !res.data.errors && res.data.data ? res.data.data : null;\r\n }).catch(e => { return false });\r\n}\r\n// export const apiGetQuestionSampleByExam = (params) => {\r\n// console.log('params params',params);\r\n// // params: {chapterId, examId, keyword}\r\n// let apiEndpoint = `Question/GetListQuestionOtherPracticeById`;\r\n// return HttpService.get(apiEndpoint,params).then(res => {\r\n// return res && res.data && !res.data.errors && res.data.data ? res.data.data : null;\r\n// }).catch(e => { return false });\r\n// }\r\n\r\nexport const apiDownloadExamPdf = (payload) => {\r\n // params: {chapterId, examId, keyword}\r\n let apiEndpoint = `exam/DownloadExamHTML`;\r\n return HttpService.post(apiEndpoint, payload).then(res => {\r\n return res && res.data && !res.data.errors && res.data.data ? res.data.data : null;\r\n }).catch(e => { return false });\r\n}\r\n","import * as types from './constants';\r\n// import api from './../_api/exam'\r\nimport {getBook} from './../_api/exam'\r\nconst getListDocumentPand = ({ commit }, params) => {\r\n \r\n};\r\n\r\n// const actionGetBook = ({ commit }, params = {}) => {\r\n// getBook(params).then((response) => {\r\n// commit(types.GET_BOOK, response.data);\r\n// })\r\n// };\r\nconst acSetParamSearch = ({ commit }, data) => {\r\n commit(types.SET_PARAMS_SEARCH, data);\r\n};\r\nconst setBookId = ({ commit }, data) => {\r\n commit(types.SET_BOOKID, data);\r\n};\r\nconst setTypeQuestionCompose = ({ commit }, data) => {\r\n commit(types.SET_TYPE_QUESTION, data);\r\n};\r\n\r\nconst workQuestion = ({ commit }, data) => {\r\n return commit(types.SET_QUESTION_WORK, data);\r\n}\r\nconst setParamExam = ({ commit }, data) => {\r\n return commit(types.SET_PRAM_EXAM, data);\r\n}\r\nconst setQuestion = ({ commit }, data) => {\r\n return commit(types.SET_QUESTION, data);\r\n}\r\n\r\nconst acSetSlidesMain = ({ commit }, data) => {\r\n commit(types.SET_SLIDES_MAIN, data);\r\n};\r\n\r\nconst acSetSlidesImgMain = ({ commit }, data) => {\r\n commit(types.SET_SLIDES_IMG_MAIN, data);\r\n};\r\n\r\nconst acSetObjActiSlide = ({ commit }, data) => {\r\n commit(types.SET_SLIDES_IMG_MAIN, data);\r\n};\r\n\r\nconst acSetSlideCurr = ({ commit }, data) => {\r\n commit(types.SET_SLIDE_CURR, data);\r\n};\r\n\r\nconst acSetSlideVisibleIndex = ({ commit }, data) => {\r\n commit(types.SET_INDEX_SLIDE_VISIBLE, data || 0);\r\n};\r\n\r\nconst acSetClasses = ({ commit }, data) => {\r\n commit(types.SET_CLASSES, data);\r\n};\r\n\r\nconst acSetLinkAudioVieoViewer = ({ commit }, data) => {\r\n commit(types.SET_LINK_VIDEO_AUDIO, data);\r\n};\r\n\r\nconst acSetMediaPreview = ({ commit }, data) => {\r\n commit(types.SET_DATA_MEDIA_VIEWER, data);\r\n};\r\n\r\nconst acSetPreviewModalVisibleIndex = ({ commit }, data) => {\r\n commit(types.SET_PREVIEW_MEDIA_VISIBLE_INDEX, data);\r\n};\r\n\r\nconst acSetVisibleSlideshow = ({ commit }, data) => {\r\n commit(types.SET_SLIDESHOW_VISIBLE, data);\r\n};\r\n\r\nconst acSetParamSearchMediaDetail = ({ commit }, data) => {\r\n commit(types.SET_PARAM_FILTER_MEDIA_LIST, data);\r\n};\r\n\r\nconst acSetScaleSlide = ({ commit }, data) => {\r\n commit(types.SET_SCALE_SLIDE, data);\r\n};\r\nconst acSetVisibleModalFileLoaded = ({ commit }, data) => {\r\n commit(types.SET_VISIBLE_MODAL_FILE_UPLOADED, data);\r\n};\r\nconst acSetkeySidebarVisible = ({ commit }, data) => {\r\n commit(types.SET_KEY_SIDEBAR_VISIBLE, data);\r\n};\r\nconst acSetExamPrepareInfo = ({ commit }, data) => {\r\n commit(types.SET_EXAM_INFO, data);\r\n};\r\nconst acSetListQuestions = ({ commit }, data) => {\r\n commit(types.SET_QUESTION_LIST, data);\r\n};\r\nconst acSetQuestionDetail = ({ commit }, data) => {\r\n commit(types.SET_QUESTION_DETAIL, data);\r\n};\r\nconst acSetQuestionIndexWorking = ({ commit }, data) => {\r\n commit(types.SET_INDEX_QUESTION_WORKING, data);\r\n};\r\nconst acSetClassesExam = ({ commit }, data) => {\r\n commit(types.SET_CLASSES_EXAM, data);\r\n};\r\nconst acSetSubjectsExam = ({ commit }, data) => {\r\n commit(types.SET_SUBJECTS_EXAM, data);\r\n};\r\nconst acSetParamsGetQuestionsData = ({ commit }, data) => {\r\n commit(types.SET_PARAMS_GET_DATA_QUESTION_SAMPLE, data);\r\n};\r\nconst acSetBookIdFilterQuestions = ({ commit }, data) => {\r\n commit(types.SET_BOOKID_FILTER_QUESTION_SAMPLE, data);\r\n};\r\nconst acSetBookIndexIdFilterQuestions = ({ commit }, data) => {\r\n commit(types.SET_BOOKINDEXID_FILTER_QUESTION_SAMPLE, data);\r\n};\r\nconst acSetQuestionSample = ({ commit }, data) => {\r\n commit(types.SET_QUESTIONS_SAMPLE, data);\r\n};\r\nconst acSetQuestionsChoosed = ({ commit }, data) => {\r\n commit(types.SET_QUESTION_CHOOSED, data);\r\n};\r\nconst acSetQuestionsIdChoosed = ({ commit }, data) => {\r\n commit(types.SET_QUESTION_ID_CHOOSED, data);\r\n};\r\nconst acSetChapterIdQuestions = ({ commit }, data) => {\r\n commit(types.SET_CHAPTER_ID_QUESTIONS, data);\r\n};\r\nconst acSetParamsFilterQuestionChapter = ({ commit }, data) => {\r\n commit(types.SET_PARAMS_SEARCH_QUESTION_CHAPTER, data);\r\n};\r\nconst acSetParamsFilterQuestionExam = ({ commit }, data) => {\r\n commit(types.SET_PARAMS_SEARCH_QUESTION_EXAM, data);\r\n};\r\n\r\nexport default {\r\n getListDocumentPand,\r\n acSetParamSearch,\r\n workQuestion,\r\n setParamExam,\r\n setBookId,\r\n setQuestion,\r\n acSetSlidesMain,\r\n acSetSlidesImgMain,\r\n acSetObjActiSlide,\r\n acSetSlideCurr,\r\n acSetSlideVisibleIndex,\r\n acSetClasses,\r\n acSetMediaPreview,\r\n acSetLinkAudioVieoViewer,\r\n acSetVisibleSlideshow,\r\n acSetPreviewModalVisibleIndex,\r\n acSetParamSearchMediaDetail,\r\n acSetScaleSlide,\r\n setTypeQuestionCompose,\r\n acSetVisibleModalFileLoaded,\r\n acSetkeySidebarVisible,\r\n acSetExamPrepareInfo,\r\n acSetListQuestions,\r\n acSetQuestionDetail,\r\n acSetQuestionIndexWorking,\r\n acSetClassesExam,\r\n acSetParamsGetQuestionsData,\r\n acSetBookIdFilterQuestions,\r\n acSetBookIndexIdFilterQuestions,\r\n acSetQuestionSample,\r\n acSetQuestionsChoosed,\r\n acSetQuestionsIdChoosed,\r\n acSetChapterIdQuestions,\r\n acSetSubjectsExam,\r\n acSetParamsFilterQuestionChapter,\r\n acSetParamsFilterQuestionExam\r\n};","const paramSearch = state => state.paramSearch;\r\nconst classes = state => state.classes;\r\nconst subjects = state => state.subjects;\r\nconst question_format = state => state.question_format;\r\nconst question = state => state.question;\r\nconst paramExam = state => state.paramExam;\r\nconst bookId = state => state.bookId;\r\nconst questionIdSelect = state => state.questionIdSelect;\r\nconst typeQuestion = state => state.typeQuestion;\r\nconst paramFilterQuestionsByExam = state => state.paramFilterQuestionsByExam;\r\n\r\nexport default {\r\n paramSearch,\r\n classes,\r\n subjects,\r\n question_format,\r\n question,\r\n paramExam,\r\n bookId,\r\n questionIdSelect,\r\n typeQuestion,\r\n paramFilterQuestionsByExam\r\n};","import * as types from './constants';\r\n\r\nexport default {\r\n\r\n [types.SET_PARAMS_SEARCH](state, data) {\r\n state.paramSearch = data;\r\n },\r\n [types.SET_QUESTION_WORK](state, data) {\r\n state.question = data;\r\n },\r\n [types.SET_PRAM_EXAM](state, data) {\r\n state.paramExam = data;\r\n },\r\n [types.SET_BOOKID](state, data) {\r\n state.bookId = data;\r\n },\r\n [types.SET_QUESTION](state, data) {\r\n state.questionIdSelect = data;\r\n },\r\n [types.SET_SLIDES_MAIN](state, data) {\r\n state.slidesMain = data;\r\n },\r\n\r\n [types.SET_SLIDES_IMG_MAIN](state, data) {\r\n state.slidesMainImg = data;\r\n },\r\n\r\n [types.SET_SLIDES_IMG_MAIN](state, data) {\r\n state.objActivitySlide = data;\r\n },\r\n\r\n [types.SET_SLIDE_CURR](state, data) {\r\n state.slideCurr = data;\r\n },\r\n\r\n [types.SET_INDEX_SLIDE_VISIBLE](state, data) {\r\n state.slideIndexVisible = data;\r\n },\r\n\r\n [types.SET_CLASSES](state, data) {\r\n state.classes = data;\r\n },\r\n\r\n [types.SET_DATA_MEDIA_VIEWER](state, data) {\r\n state.mediaPreviewData = data;\r\n },\r\n\r\n [types.SET_PREVIEW_MEDIA_VISIBLE_INDEX](state, data) {\r\n state.indexPreviewMedia = data;\r\n },\r\n\r\n [types.SET_LINK_VIDEO_AUDIO](state, data) {\r\n state.linkVideoAudio = data;\r\n },\r\n\r\n [types.SET_SLIDESHOW_VISIBLE](state, data) {\r\n state.isOpenSlideshow = data;\r\n },\r\n\r\n [types.SET_PARAM_FILTER_MEDIA_LIST](state, data) {\r\n state.paramsSearchMediaDetail = data;\r\n },\r\n\r\n [types.SET_SCALE_SLIDE](state, data) {\r\n state.scaleSlide = data;\r\n },\r\n [types.SET_TYPE_QUESTION](state, data) {\r\n state.typeQuestion = data;\r\n },\r\n [types.SET_VISIBLE_MODAL_FILE_UPLOADED](state, data) {\r\n state.isOpenModalFileUploaded = data;\r\n },\r\n [types.SET_KEY_SIDEBAR_VISIBLE](state, data) {\r\n state.keySidebarActive = data;\r\n },\r\n\r\n [types.SET_EXAM_INFO](state, data) {\r\n state.examInfo = data;\r\n },\r\n \r\n [types.SET_QUESTION_LIST](state, data) {\r\n state.questionList = data;\r\n },\r\n [types.SET_QUESTION_DETAIL](state, data) {\r\n state.questionDetail = data;\r\n },\r\n\r\n [types.SET_INDEX_QUESTION_WORKING](state, data) {\r\n state.indexQuestionWorking = data;\r\n },\r\n [types.SET_CLASSES_EXAM](state, data) {\r\n state.classesExam = data;\r\n },\r\n [types.SET_SUBJECTS_EXAM](state, data) {\r\n state.subjectsExam = data;\r\n },\r\n\r\n [types.SET_PARAMS_GET_DATA_QUESTION_SAMPLE](state, data) {\r\n state.paramsGetQuestionsSample = data;\r\n },\r\n\r\n [types.SET_BOOKID_FILTER_QUESTION_SAMPLE](state, data) {\r\n state.bookIdQuestions = data;\r\n },\r\n\r\n [types.SET_BOOKINDEXID_FILTER_QUESTION_SAMPLE](state, data) {\r\n state.bookIndexIdQuestions = data;\r\n },\r\n\r\n [types.SET_QUESTIONS_SAMPLE](state, data) {\r\n state.questionsSample = data;\r\n },\r\n\r\n [types.SET_QUESTION_CHOOSED](state, data) {\r\n state.questionsChoose = data;\r\n },\r\n\r\n [types.SET_QUESTION_ID_CHOOSED](state, data) {\r\n state.questionsIdChoose = data;\r\n },\r\n\r\n [types.SET_CHAPTER_ID_QUESTIONS](state, data) {\r\n state.chapterIdQuestion = data;\r\n },\r\n\r\n [types.SET_PARAMS_SEARCH_QUESTION_CHAPTER](state, data) {\r\n state.paramFilterQuestionsByChapter = data;\r\n },\r\n [types.SET_PARAMS_SEARCH_QUESTION_EXAM](state, data) {\r\n state.paramFilterQuestionsByExam = data;\r\n }\r\n};\r\n","import actions from './actions';\r\nimport getters from './getters';\r\nimport mutations from './mutations';\r\nimport { TYPE_RADIO, TYPE_DOWN_ANSWER, TYPE_CHECKBOX } from '@/modules/question/preview-question/_store/constants'\r\nconst state = {\r\n questionIdSelect:0,\r\n bookId:0,\r\n typeQuestion:{},\r\n paramExam:{examTypeId:1},\r\n question: { type: TYPE_RADIO, answers:[], guideContent:\"\", suggestion:\"\", answerDetail:\"\", level:null, isDeleted:false , layoutId:1},\r\n question_format: [\r\n {\r\n value: TYPE_RADIO,\r\n name: 'Trắc nghiệm'\r\n },\r\n {\r\n value: TYPE_CHECKBOX,\r\n name: 'Trắc nghiệm có nhiều câu trả lời đúng'\r\n },\r\n {\r\n value: TYPE_DOWN_ANSWER,\r\n name: 'Tự luận'\r\n },\r\n ],\r\n paramSearch: { classId: 0, subjectId: 0, keyword: '', pageIndex: 1, pageSize: 12 },\r\n classes: [],\r\n slidesMain: [],\r\n slidesMainImg: [],\r\n objActivitySlide: {},\r\n slideCurr: null,\r\n slideIndexVisible: -1,\r\n linkVideoAudio: '',\r\n mediaPreviewData: [],\r\n isOpenSlideshow: false,\r\n indexPreviewMedia: -1,\r\n paramsSearchMediaDetail: {classId: 0, subjectId: 0, documentTypeId: 1, keyword: '', pageIndex: 1, pageSize: 12},\r\n scaleSlide: 1,\r\n scaleMax: 2,\r\n scaleMin: 0.5,\r\n idModalFileUploaded: 'modal_uploaded',\r\n isOpenModalFileUploaded: false,\r\n keySidebarActive: '',\r\n // Prepare exam\r\n examTimesToDo: [\r\n { value: 15, name: '15 phút' },\r\n { value: 30, name: '30 phút' },\r\n { value: 45, name: '45 phút' },\r\n { value: 60, name: '60 phút' },\r\n { value: 90, name: '90 phút' },\r\n { value: 120, name: '120 phút' }\r\n ],\r\n examInfo: {},\r\n questionList: [],\r\n questionDetail: {},\r\n indexQuestionWorking: -1,\r\n idModalQuestionSample: 'modal_question_sample',\r\n classesExam: [],\r\n subjectsExam: [],\r\n paramsGetQuestionsSample: {classId: 0, subjectId: 0, type: 1},\r\n bookIdQuestions: 0,\r\n bookIndexIdQuestions: 0,\r\n questionsSample: [],\r\n questionsChoose: [],\r\n questionsIdChoose: [],\r\n chapterIdQuestion: 0,\r\n paramFilterQuestionsByChapter: {chapterId: 0, examId: 0, keyword: ''},\r\n paramFilterQuestionsByExam:{examId:0}\r\n};\r\n\r\nexport default {\r\n namespaced: true,\r\n state,\r\n actions,\r\n getters,\r\n mutations\r\n};","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('main',{attrs:{\"role\":\"main\",\"id\":\"main_lesson\"}},[_c('div',{staticClass:\"ss-breadcrumb\"},[_c('div',{staticClass:\"container-hts\"},[_c('ul',{staticClass:\"margin-0 p-0\"},[_c('li',[_c('router-link',{attrs:{\"to\":\"/thu-vien\"}},[_vm._v(\"Danh sách bài giảng\")])],1)])])]),_c('div',{staticClass:\"pre-lesson__main\"},[_c('div',{staticClass:\"container-hts\"},[_c('FilterList'),_c('div',{staticClass:\"pre-lesson__list\"},[_c('div',{staticClass:\"row\"},_vm._l((_vm.lessons),function(item){return _c('div',{key:item.lessonPlanId,staticClass:\"item col-lg-3 col-md-4 col-sm-6\"},[_c('div',{staticClass:\"item__wrap\"},[_c('div',{staticClass:\"item__head aspect-ratio aspect-ratio--16-9 text-center border-rd-4 bg-transparent\"},[_c('router-link',{staticClass:\"display-block\",attrs:{\"to\":{ name: 'prepareLessonEdit', params: { classId: item.classId, subjectId: item.subjectId, id: item.lessonPlanId }}}},[_c('div',{staticClass:\"item__img\",attrs:{\"id\":item.lessonPlanId}},[_c('img',{attrs:{\"src\":(_vm.baseUrl + \"/\" + (item.imageUrl)),\"alt\":item.title}})])])],1),_c('div',{staticClass:\"item__body\"},[_c('h3',{staticClass:\"primary-color-txt margin-0 font-size-16 primary-color-txt font-sanpro-semibold\"},[_c('router-link',{staticClass:\"primary-color-txt\",attrs:{\"to\":{ name: 'prepareLessonEdit', params: { classId: item.classId, subjectId: item.subjectId, id: item.lessonPlanId }}}},[_vm._v(\"\\n \"+_vm._s(item.title)+\"\\n \")])],1)])])])}),0)])],1)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"pre-lesson-list__filter\"},[_c('b-tabs',{staticClass:\"pre-lesson-list__filter__tabs\"},[_c('b-tab',{attrs:{\"title\":\"Bài giảng\",\"active\":_vm.$route.name !== _vm.nameRouteExam},on:{\"click\":function($event){return _vm.gotoLessonPage()}}}),_c('b-tab',{attrs:{\"title\":\"Soạn đề kiểm tra đánh giá\",\"active\":_vm.$route.name === _vm.nameRouteExam},on:{\"click\":function($event){return _vm.gotoExamPage()}}})],1),_c('div',{staticClass:\"pre-lesson-list__filter__action display-flex-center\"},[_c('a',{staticClass:\"item btn btn-main border-rd-20 font-size-16 display-flex-center item__add\",attrs:{\"href\":\"javascript:;\"},on:{\"click\":_vm.handleAddNew}},[_c('i',{staticClass:\"icon-plus color-light\"}),_vm._v(\"\\n Thêm mới\\n \")]),_c('div',{staticClass:\"item item__class input-custom-icon select-custom\"},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.paramSearch.classId),expression:\"paramSearch.classId\"}],staticClass:\"primary-color-txt border-rd-20 font-size-15 form-h30 color_bg_gray_light border-0 full-width\",on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.paramSearch, \"classId\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])}}},[_c('option',{attrs:{\"value\":\"0\"}},[_vm._v(\"Lớp - Tất cả\")]),_vm._l((_vm.classes),function(item){return _c('option',{key:item.classId,domProps:{\"value\":item.classId}},[_vm._v(_vm._s(item.className))])})],2),_c('i',{staticClass:\"icon-arrow-down font-size-13 primary-color\"})]),_c('div',{staticClass:\"item item__subject input-custom-icon select-custom\"},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.paramSearch.subjectId),expression:\"paramSearch.subjectId\"}],staticClass:\"primary-color-txt border-rd-20 font-size-15 form-h30 color_bg_gray_light border-0 full-width\",on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.paramSearch, \"subjectId\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])}}},[_c('option',{attrs:{\"value\":\"0\"}},[_vm._v(\"Môn - tất cả\")]),_vm._l((_vm.subjects),function(item){return _c('option',{key:item.subjectId,domProps:{\"value\":item.subjectId}},[_vm._v(_vm._s(item.subjectName))])})],2),_c('i',{staticClass:\"icon-arrow-down font-size-13 primary-color\"})]),_c('div',{staticClass:\"item item__key input-custom-icon\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model.lazy\",value:(_vm.keyword),expression:\"keyword\",modifiers:{\"lazy\":true}},{name:\"debounce\",rawName:\"v-debounce\",value:(300),expression:\"300\"}],staticClass:\"primary-color-txt color_bg_gray_light border-rd-20 font-size-15 form-h30 border-0 full-width\",attrs:{\"type\":\"text\",\"placeholder\":\"Tìm kiếm\"},domProps:{\"value\":(_vm.keyword)},on:{\"change\":function($event){_vm.keyword=$event.target.value}}}),_c('i',{staticClass:\"icon-search font-size-16 primary-color\"})])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import HttpService from \"@/utils/httpData\"\r\nexport default {\r\n get() { \r\n let apiEndpoint = `lesson/get-filter`;\r\n let params = {}\r\n return HttpService.get(apiEndpoint, params)\r\n .then(res => {\r\n return res && res.data && !res.errors && res.data.data ? res.data.data : null;\r\n })\r\n .catch(e => {return false}\r\n );\r\n }\r\n}","\r\n\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilterList.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilterList.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./FilterList.vue?vue&type=template&id=1fdc97a2&scoped=true&\"\nimport script from \"./FilterList.vue?vue&type=script&lang=js&\"\nexport * from \"./FilterList.vue?vue&type=script&lang=js&\"\nimport style0 from \"./FilterList.vue?vue&type=style&index=0&id=1fdc97a2&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1fdc97a2\",\n null\n \n)\n\nexport default component.exports","const API_CONTROLLER = 'lesson/';\r\nimport HttpService from \"@/utils/httpData\";\r\n\r\nexport default {\r\n filter(pageIndex, pageSize, classId, subjectId, keyword, lessonType) {\r\n let params = {pageIndex, pageSize, classId, subjectId, keyword, lessonType }\r\n let apiEndpoint = `lesson/get-list`;\r\n return HttpService.get(apiEndpoint, params)\r\n .then(res => {\r\n return res ? res : null;\r\n })\r\n .catch(e => {return false}\r\n );\r\n },\r\n\r\n getById(id) {\r\n let params = {\r\n id: id\r\n }\r\n let apiEndpoint = `lesson/detail`;\r\n return HttpService.get(apiEndpoint, params)\r\n .then(res => {\r\n return res && res.data && !res.data.errors && res.data.data ? res.data.data : null;\r\n })\r\n .catch(e => {return false}\r\n );\r\n },\r\n\r\n create(data) { \r\n let params = JSON.stringify(data);\r\n let apiEndpoint = `lesson/create`;\r\n return HttpService.post(apiEndpoint, params)\r\n .then(res => {\r\n return res ? res : null;\r\n })\r\n .catch(e => {return false}\r\n );\r\n },\r\n\r\n update(data) {\r\n let params = JSON.stringify(data);\r\n let apiEndpoint = `lesson/update`;\r\n return HttpService.post(apiEndpoint, params)\r\n .then(res => {\r\n return res ? res : null;\r\n })\r\n .catch(e => {return false}\r\n );\r\n },\r\n\r\n delete(data) {\r\n \r\n let params = JSON.stringify(data);\r\n let apiEndpoint = `lesson/delete`;\r\n return HttpService.post(apiEndpoint, params)\r\n .then(res => {\r\n return res ? res : null;\r\n })\r\n .catch(e => {return false}\r\n );\r\n },\r\n\r\n upload(data) {\r\n let url = API_CONTROLLER + 'create-from-upload';\r\n return HttpService.post(url, JSON.stringify(data));\r\n },\r\n\r\n export(id) {\r\n let url = API_CONTROLLER + 'export';\r\n return HttpService.export(url, {\r\n id: id\r\n });\r\n },\r\n\r\n getLessonsSample (params) {\r\n let apiEndpoint = `library/list-book-lesson-plan`;\r\n return HttpService.post(apiEndpoint, params).then(res => {\r\n return res && res.data && !res.data.errors && res.data.data ? res.data.data : null;\r\n }).catch(e => { return false });\r\n },\r\n\r\n getLessonsSampleDetail (id) {\r\n let apiEndpoint = `library/detail?id=${id}`;\r\n return HttpService.get(apiEndpoint).then(res => {\r\n return res && res.data && !res.data.errors && res.data.data ? res.data.data : null;\r\n }).catch(e => { return false });\r\n }\r\n}","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PrepareDocList.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PrepareDocList.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./PrepareDocList.vue?vue&type=template&id=2f393ce1&scoped=true&\"\nimport script from \"./PrepareDocList.vue?vue&type=script&lang=js&\"\nexport * from \"./PrepareDocList.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PrepareDocList.vue?vue&type=style&index=0&id=2f393ce1&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2f393ce1\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_vm._v(\"\\n Detail\\n\")])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PrepareDocDetail.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PrepareDocDetail.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./PrepareDocDetail.vue?vue&type=template&id=3ca25ab6&\"\nimport script from \"./PrepareDocDetail.vue?vue&type=script&lang=js&\"\nexport * from \"./PrepareDocDetail.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('main',{attrs:{\"role\":\"main\",\"id\":\"main_lesson\"}},[_c('div',{staticClass:\"pre-pare__add__head display-flex-center justify-content-between\"},[_c('router-link',{staticClass:\"secondary-color-txt font-size-16 pre-pare__add__close\",attrs:{\"to\":\"/danh-sach-giao-an\"}},[_c('i',{staticClass:\"icon-close font-size-12 secondary-color-txt\"}),_c('span',{staticClass:\"only-pc\"},[_vm._v(\"Thoát\")])]),_c('h1',{staticClass:\"pre-pare__add__title margin-0 p-0 book-viewer__title font-size-16 secondary-color-txt font-sanpro-semibold\"},[_vm._v(\"Tạo bài giảng mới\")]),_c('span',{on:{\"click\":function($event){return _vm.toggleSidebarMenu()}}},[_c('i',{staticClass:\"icon-category font-size-20 d-md-block d-lg-none\"})])],1),_c('div',{staticClass:\"pre-pare__add__body display-flex justify-content-between position-rel\"},[_c('div',{staticClass:\"pre-pare__add__sidebar\",class:{'active': _vm.activeSidebarMobile}},[_c('div',{staticClass:\"book-viewer__cats__wrap\"},[_c('h2',{staticClass:\"book-viewer__cats__title primary-color-txt font-size-24 font-sanpro-semibold\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\tBộ lọc\\n\\t\\t\\t\\t\\t\")]),_c('div',{staticClass:\"pre-pare__add__sidebar__action display-flex-center justify-content-between\"},[_c('a',{staticClass:\"btn btn-main border-rd-20 font-size-16 display-flex-center justify-content-center\",attrs:{\"href\":\"javascript:;\"},on:{\"click\":function($event){return _vm.$bvModal.show('popup-up-new')}}},[_c('i',{staticClass:\"icon-plus color-light\"}),_vm._v(\" Mới\\n\\t\\t\\t\\t\\t\\t\")])])]),_c('vue-custom-scrollbar',{staticClass:\"scroll-area pre-pare__add__cats\",attrs:{\"id\":\"book_viewer__cats\",\"settings\":_vm.settingsViewBookSidebar}},[_c('div',{staticClass:\"book-viewer__cats__wrap\"},_vm._l((_vm.classes),function(item,index){return _c('b-card',{key:index,staticClass:\"card-item border-0 secondary-color-txt bg-transparent\",class:{'active':true},attrs:{\"no-body\":\"\"}},[_c('div',{staticClass:\"card-wrap display-block\"},[_c('b-card-header',{staticClass:\"border-0 border-rd-8 display-flex-center primary-color-txt font-size-16 p-0 border-rd-0 bg-transparent cursor-pointer\",class:{'active font-sanpro-semibold': _vm.classId === item.classId},attrs:{\"header-tag\":\"header\",\"role\":\"tab\"},on:{\"click\":function($event){return _vm.filterByClass(item.classId, item)}}},[_c('div',{staticClass:\"cat-head display-flex justify-content-md-between full-width\"},[_c('span',{staticClass:\"margin-0 font-size-16\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(item.className)+\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\")])])]),_c('b-collapse',{attrs:{\"id\":(\"\" + (item.classId)),\"visible\":item.classId === _vm.classId,\"accordion\":\"my-accordion\",\"role\":\"tabpanel\"}},[_c('b-card-body',{staticClass:\"p-0\"},[_c('ul',{staticClass:\"cat-child margin-0\"},_vm._l((item.subjects),function(child,pos){return _c('li',{key:pos,staticClass:\"d-block\",class:{'active': _vm.subjectId === child.subjectId}},[_c('a',{staticClass:\"font-sanpro primary-color-txt font-size-16 display-flex justify-content-between full-width\",attrs:{\"href\":\"javascript:;\"},on:{\"click\":function($event){return _vm.filterBySubject(child, pos)}}},[_c('span',[_vm._v(_vm._s(child.subjectName))])])])}),0)])],1)],1)])}),1)])],1),_c('div',{staticClass:\"pre-pare__add__main\"},[_c('h2',{staticClass:\"book-viewer__cats__title pre-pare__add__main__title primary-color-txt font-size-24 font-sanpro-semibold\"},[_vm._v(\"\\n\\t\\t\\t\\t\\tBài giảng mẫu\\n\\t\\t\\t\\t\")]),_c('vue-custom-scrollbar',{staticClass:\"scroll-area pre-pare__add__cats pre-pare__add__list\",attrs:{\"settings\":_vm.settingsViewBookSidebar}},[_c('div',{staticClass:\"row\"},_vm._l((_vm.lessons),function(item,index){return _c('div',{key:index,staticClass:\"item col-lg-4 col-sm-6\"},[_c('div',{staticClass:\"item__wrap\"},[_c('router-link',{staticClass:\"display-block item__head aspect-ratio aspect-ratio--16-9 text-center border-rd-4 bg-transparent\",attrs:{\"to\":{ name: 'prepareLessonEdit', params: {classId: item.classId, subjectId: item.subjectId, id: 0}, query: { sample: item.bookLessonPlanId }}}},[_c('div',{staticClass:\"item__img\"},[_c('img',{attrs:{\"src\":(_vm.urlPlatformCmsImg + \"/\" + (item.imageUrl)),\"alt\":item.title}})])]),_c('div',{staticClass:\"item__body\"},[_c('h3',{staticClass:\"primary-color-txt margin-0 font-size-16 primary-color-txt font-sanpro-semibold\"},[_c('router-link',{staticClass:\"primary-color-txt\",attrs:{\"to\":{ name: 'prepareLessonEdit', params: {classId: item.classId, subjectId: item.subjectId, id: 0}, query: { sample: item.bookLessonPlanId }}}},[_vm._v(\"\\n \\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(item.title)+\"\\n \\t\\t\\t\\t\\t\\t\\t\\t\\t\")])],1)])],1)])}),0),_c('div',{attrs:{\"id\":\"lesson__end\"}})])],1),(_vm.activeSidebarMobile)?_c('div',{staticClass:\"pre-pare__add__sidebar__overlay full-width\",on:{\"click\":function($event){return _vm.toggleSidebarMenu()}}}):_vm._e()]),_c('b-modal',{staticClass:\"modal-info\",attrs:{\"id\":\"popup-up-new\",\"hide-footer\":\"\",\"size\":\"lg\",\"scrollable\":\"\",\"centered\":\"\"},scopedSlots:_vm._u([{key:\"modal-header\",fn:function(){return [_c('div',{staticClass:\"modal-info__head modal-info__head--psmall display-flex-center justify-content-between full-width\"},[_c('h4',{staticClass:\"modal-info__title font-sanpro-bold primary-color-txt\"},[_vm._v(\"Thông tin\")]),_c('span',{staticClass:\"modal-info__close\",on:{\"click\":function($event){return _vm.$bvModal.hide('popup-up-new')}}},[_c('i',{staticClass:\"icon-close\"})])])]},proxy:true}])},[_c('div',{staticClass:\"modal-info__body primary-color-txt font-sanpro-light bg-color-light\"},[_c('div',{staticClass:\"pre-pare__add__modal\"},[_c('form',{staticClass:\"needs-validation creat-dt\",attrs:{\"novalidate\":\"\"}},[_c('div',{staticClass:\"form-group\",class:{ 'is-invalid': _vm.submitted && _vm.$v.addObj.title.$error }},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.addObj.title),expression:\"addObj.title\"}],staticClass:\"form-bg-gray-light form-30h border-rd-20 full-width\",attrs:{\"type\":\"text\",\"id\":\"tieude\",\"placeholder\":\"Tên bài giảng *\"},domProps:{\"value\":(_vm.addObj.title)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.addObj, \"title\", $event.target.value)}}}),(_vm.submitted && _vm.$v.addObj.title.$error)?_c('p',{staticClass:\"form-err-noti four-color font-size-15\"},[_vm._v(\"Bạn hãy nhập tên bài bài giảng\")]):_vm._e()]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md-6\"},[_c('div',{staticClass:\"form-item\",class:{ 'is-invalid': _vm.submitted && !_vm.$v.addObj.classId.isSelected }},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.addObj.classId),expression:\"addObj.classId\"}],staticClass:\"form-bg-gray-light form-30h border-rd-20 full-width\",attrs:{\"id\":\"inputState_1\"},on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.addObj, \"classId\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])}}},[_c('option',{attrs:{\"value\":\"0\"}},[_vm._v(\"Lớp - Tất cả\")]),_vm._l((_vm.classes),function(item){return _c('option',{key:item.classId + '-class',domProps:{\"value\":item.classId}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(item.className)+\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\")])})],2),(_vm.submitted && !_vm.$v.addObj.classId.isSelected)?_c('p',{staticClass:\"form-err-noti four-color font-size-15\"},[_vm._v(\"Bạn hãy chọn lớp\")]):_vm._e()])]),_c('div',{staticClass:\"col-md-6\"},[_c('div',{staticClass:\"form-item\",class:{ 'is-invalid': _vm.submitted && !_vm.$v.addObj.subjectId.isSelected }},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.addObj.subjectId),expression:\"addObj.subjectId\"}],staticClass:\"form-bg-gray-light form-30h border-rd-20 full-width\",attrs:{\"id\":\"inputState_2\"},on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.addObj, \"subjectId\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])}}},[_c('option',{attrs:{\"value\":\"0\"}},[_vm._v(\"Môn - Tất cả\")]),_vm._l((_vm.subjects),function(item){return _c('option',{key:item.subjectId + '-subject',domProps:{\"value\":item.subjectId}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(item.subjectName)+\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\")])})],2),(_vm.submitted && !_vm.$v.addObj.subjectId.isSelected)?_c('p',{staticClass:\"form-err-noti four-color font-size-15\"},[_vm._v(\"Bạn hãy chọn môn\")]):_vm._e()])])]),_c('div',{staticClass:\"form-action display-flex-center justify-content-end\"},[_c('a',{staticClass:\"font-size-16 primary-color font-weight-semi-bold\",attrs:{\"href\":\"javascript:;\"},on:{\"click\":function($event){return _vm.$bvModal.hide('popup-up-new')}}},[_vm._v(\"\\n Hủy\\n \")]),_c('button',{staticClass:\"btn btn-main font-size-16 border-rd-20 display-flex-center justify-content-center\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.redriectAddPage()}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\\tHoàn thành\\n\\t\\t\\t\\t\\t\\t\\t\")])])])])])]),_c('b-modal',{staticClass:\"modal-info\",attrs:{\"id\":\"popup-up\",\"hide-footer\":\"\",\"size\":\"lg\",\"scrollable\":\"\",\"centered\":\"\"},scopedSlots:_vm._u([{key:\"modal-header\",fn:function(){return [_c('div',{staticClass:\"modal-info__head modal-info__head--psmall display-flex-center justify-content-between full-width\"},[_c('h4',{staticClass:\"modal-info__title font-sanpro-bold primary-color-txt\"},[_vm._v(\"Tải lên\")]),_c('span',{staticClass:\"modal-info__close\",on:{\"click\":function($event){return _vm.$bvModal.hide('popup-up')}}},[_c('i',{staticClass:\"icon-close\"})])])]},proxy:true}])},[_c('div',{staticClass:\"modal-info__body modal-info__body__upload primary-color-txt font-sanpro-light bg-color-light\"},[_c('b-tabs',[_c('b-tab',{attrs:{\"title\":\"Tải lên\"}},[_c('div',{staticClass:\"pre-pare__add__modal__upload\"},[_c('div',{staticClass:\"pre-pare__add__modal__upload__wrap position-rel border-rd-4 form-file-hide\"},[_c('i',{staticClass:\"icon-upload font-size-46\"}),_c('p',{staticClass:\"pre-pare__add__modal__upload__desc display-block secodnary-color-txt margin-0 text-center\"},[_vm._v(\"\\n Bấm vào đây để tải lên\\n bài giảng PowerPoint (pptx.)\\n \")]),_c('input',{ref:\"file_pptx\",attrs:{\"type\":\"file\",\"id\":\"file_pptx\",\"accept\":\".pptx\"},on:{\"change\":function($event){return _vm.upload()}}})])])]),_c('b-tab',{attrs:{\"title\":\"Bài giảng của tôi\"}},[_c('div',{staticClass:\"pre-pare__add__modal__mylesson__filter display-flex-center\"},[_c('div',{staticClass:\"form-item form-item--class\"},[_c('select',{staticClass:\"form-bg-gray-light form-30h border-rd-20 full-width font-size-15\",on:{\"change\":_vm.filterMyLessonByClass}},[_c('option',{attrs:{\"value\":\"0\"}},[_vm._v(\"Lớp - Tất cả\")]),_vm._l((_vm.classes),function(item){return _c('option',{key:item.classId + '-class',domProps:{\"value\":item.classId}},[_vm._v(\"\\n \"+_vm._s(item.className)+\"\\n \")])})],2)]),_c('div',{staticClass:\"form-item form-item--subject\"},[_c('select',{staticClass:\"form-bg-gray-light form-30h border-rd-20 full-width font-size-15\",on:{\"change\":_vm.filterMyLessonBySubject}},[_c('option',{attrs:{\"value\":\"0\"}},[_vm._v(\"Môn - Tất cả\")]),_vm._l((_vm.subjectsMylessons),function(item){return _c('option',{key:item.subjectId + '-subject',domProps:{\"value\":item.subjectId}},[_vm._v(\"\\n \"+_vm._s(item.subjectName)+\"\\n \")])})],2)])]),_c('div',{staticClass:\"pre-pare__add__modal__mylesson__list display-block full-width\"},[_c('div',{staticClass:\"row\"},_vm._l((_vm.lessonsUploaded),function(item,index){return _c('div',{key:index,staticClass:\"item col-md-4 col-sm-6\"},[_c('div',{staticClass:\"item__wrap\"},[_c('div',{staticClass:\"item__head aspect-ratio aspect-ratio--16-9 text-center border-rd-4\"},[_c('a',{staticClass:\"display-block\",attrs:{\"href\":\"javascript:;\"},on:{\"click\":function($event){return _vm.redriectDetail(item)}}},[_c('img',{attrs:{\"src\":item.imageUrl,\"alt\":item.title}})])]),_c('div',{staticClass:\"item__body\"},[_c('h3',{staticClass:\"primary-color-txt margin-0 font-size-16 primary-color-txt font-sanpro-semibold\"},[_c('a',{staticClass:\"primary-color-txt display-block\",attrs:{\"href\":\"javascript:;\"},on:{\"click\":function($event){return _vm.redriectDetail(item)}}},[_vm._v(\"\\n \"+_vm._s(item.title)+\"\\n \")])])])])])}),0)])])],1)],1)])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import HttpService from \"@/utils/httpData\";\r\nconst API_CONTROLLER = 'file/';\r\n\r\nexport default {\r\n upload(formData) {\r\n let url = API_CONTROLLER + 'upload-file';\r\n return HttpService.post(url, formData, {\r\n headers: { 'Content-Type': 'multipart/form-data' }\r\n });\r\n },\r\n\r\n uploadNews(formData) {\r\n let url = API_CONTROLLER + 'upload';\r\n return HttpService.post(url, formData, {\r\n headers: { 'Content-Type': 'multipart/form-data' }\r\n });\r\n },\r\n\r\n save(data) {\r\n let url = 'lesson/SaveFile';\r\n return HttpService.post(url, data);\r\n },\r\n \r\n filter(params = {}) {\r\n let url = 'lesson/GetListFileByUserId';\r\n return HttpService.get(url, params).then(res => {\r\n return res && res.data && !res.data.errors && res.data.data ? res.data.data : null;\r\n })\r\n .catch(e => {return false})\r\n },\r\n\r\n filterDataMedias (params = {}) {\r\n let apiEndpoint = `library/list-document-type_searchless`;\r\n return HttpService.post(apiEndpoint, params)\r\n .then(res => {\r\n return res && res.data && !res.data.errors && res.data.data ? res.data.data : null;\r\n })\r\n .catch(e => {return false}\r\n );\r\n },\r\n}","\r\n\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PrepareDocAdd.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PrepareDocAdd.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PrepareDocAdd.vue?vue&type=template&id=4bb87a78&scoped=true&\"\nimport script from \"./PrepareDocAdd.vue?vue&type=script&lang=ts&\"\nexport * from \"./PrepareDocAdd.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./PrepareDocAdd.vue?vue&type=style&index=0&id=4bb87a78&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4bb87a78\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"pre-pare-detail\"},[_c('div',{staticClass:\"pre-pare-detail__head display-flex-center justify-content-between\"},[_c('div',{staticClass:\"pre-pare-detail__head__options\"},[_c('a',{staticClass:\"pre-pare-detail__head__options__icon display-flex-center justify-content-center\",class:{'bg-main-light': _vm.openOptionsDetail},attrs:{\"href\":\"javascript:;\"},on:{\"click\":_vm.toggleOpenOptionMenu}},[_c('i',{staticClass:\"icon-category primary-color font-size-20\"})]),_c('ul',{staticClass:\"margin-0 border-rd-4\",class:{'active': _vm.openOptionsDetail}},[_c('li',[_c('a',{attrs:{\"href\":\"javascript:;\"},on:{\"click\":function($event){return _vm.submit()}}},[_vm._v(\"Lưu và thoát\")])]),_c('li',[_c('a',{attrs:{\"href\":\"javascript:;\"},on:{\"click\":function($event){return _vm.handleOpenModalInfo()}}},[_vm._v(\"Thông tin\")])]),(_vm.lessonId !== 0)?_c('li',[_c('a',{attrs:{\"href\":\"javascript:;\"},on:{\"click\":function($event){return _vm.export2Pdf()}}},[_vm._v(\"Tải xuống\")])]):_vm._e(),_c('li',[_c('a',{attrs:{\"href\":\"javascript:;\"},on:{\"click\":function($event){return _vm.exit()}}},[_vm._v(\"Thoát\")])]),_c('li',[(_vm.lessonId !== 0)?_c('a',{staticClass:\"color-err\",attrs:{\"href\":\"javascript:;\"},on:{\"click\":function($event){return _vm.delLesson()}}},[_vm._v(\"Xóa bài giảng\")]):_vm._e()])])]),_c('h1',{staticClass:\"pre-pare-detail__title margin-0 p-0 book-viewer__title font-size-18 secondary-color-txt font-sanpro-semibold\"},[_vm._v(\"\\n \"+_vm._s(_vm.lessonInfo.title)+\"\\n \")]),_c('a',{staticClass:\"btn btn-main border-rd-20 font-size-16 display-flex-center justify-content-center\",attrs:{\"href\":\"javascript:;\"},on:{\"click\":function($event){return _vm.handleSlideshow()}}},[_c('i',{staticClass:\"icon-next color-light\"}),_c('span',{staticClass:\"only-pc\"},[_vm._v(\"Trình chiếu\")])])]),_c('div',{staticClass:\"pre-pare-detail__body position-rel\",class:{'pre-pare-detail__body--scale': _vm.scaleSlide !== 1}},[_c('div',{staticClass:\"pre-pare-detail__list color_bg_gray_light\",class:{'active': _vm.openListItemSlide}},[_vm._m(0),_c('vue-custom-scrollbar',{staticClass:\"scroll-area pre-pare-detail__items book-viewer__cats__wrap\",attrs:{\"settings\":{maxScrollbarLength: 300}}},[_vm._l((_vm.slidesMain),function(item,index){return _c('div',{key:index,staticClass:\"item position-rel\",class:{'active': _vm.slideIndexVisible === index}},[_c('div',{staticClass:\"item__wrap\"},[_c('div',{staticClass:\"item__head aspect-ratio aspect-ratio--16-9 bg-color-light\",on:{\"click\":function($event){return _vm.showSlider(item, index)}}},[_c('div',{staticClass:\"item__img\"},[(item.imageBase64)?_c('img',{attrs:{\"src\":(\"\" + _vm.base64Define + (item.imageBase64)),\"alt\":\"\"}}):(item.imageUrl && _vm.isFullLink(item.imageUrl))?_c('img',{attrs:{\"src\":item.imageUrl,\"alt\":\"\"}}):(item.imageUrl && !_vm.isFullLink(item.imageUrl))?_c('img',{attrs:{\"src\":(_vm.baseUrl + \"/\" + (item.imageUrl)),\"alt\":\"\"}}):_vm._e()])]),_c('div',{staticClass:\"item__body\"},[_c('h5',{staticClass:\"item__position margin-0 font-size-14 primary-bg-color color-light\"},[_vm._v(_vm._s(index + 1))]),(_vm.slidesMain.length > 1)?_c('a',{staticClass:\"item__del\",attrs:{\"href\":\"javascript:;\"},on:{\"click\":function($event){return _vm.delSlider(index)}}},[_c('i',{staticClass:\"icon-close font-size-10 secondary-color-txt\"})]):_vm._e()])])])}),_c('div',{staticClass:\"item position-rel\",on:{\"click\":function($event){return _vm.addSlider()}}},[_c('div',{staticClass:\"item__wrap\"},[_c('div',{staticClass:\"item__head aspect-ratio aspect-ratio--16-9 bg-color-light\"})]),_c('div',{staticClass:\"item__body\"},[_c('a',{staticClass:\"item__add\",attrs:{\"href\":\"javascript:;\"}},[_c('i',{staticClass:\"icon-plus font-size-22\"})])])])],2)],1),(_vm.slidesMain && _vm.slidesMain.length > 0)?_c('CanvasSlide',{class:{'active': _vm.openSidebarActions || _vm.openListItemSlide, 'active-right': _vm.openSidebarActions, 'active-left': _vm.openListItemSlide},attrs:{\"openListItemSlide\":_vm.openListItemSlide,\"openSidebarActions\":_vm.openSidebarActions}}):_vm._e(),(_vm.slidesMain && _vm.slidesMain.length > 0)?_c('SidebarActions',{attrs:{\"closeActionSidebar\":_vm.openListItemSlide},on:{\"toggleActions\":_vm.handleToggleSidebarActions}}):_vm._e()],1),_c('div',{staticClass:\"pre-pare-detail__footer display-flex-center justify-content-between color_bg_gray_light\"},[_c('a',{staticClass:\"primary-color font-size-16 font-sanpro-semibold book-viewer__footer__cats border-rd-20 position-rel display-flex-center justify-content-center\",class:{'btn-2': _vm.openListItemSlide},attrs:{\"href\":\"javascript:;\"},on:{\"click\":_vm.handleToggleSidebarListItem}},[_c('i',{staticClass:\"icon-list font-size-18\"}),_c('span',{staticClass:\"only-pc\"},[_vm._v(\"Danh sách\")])]),_c('div',{staticClass:\"pre-pare-detail__footer__center\"},[_c('div',{staticClass:\"pre-pare-detail__paging display-flex-center\"},[_c('button',{staticClass:\"btn btn-main border-rd-20 display-flex-center justify-content-center\",on:{\"click\":function($event){return _vm.prevSlide()}}},[_c('i',{staticClass:\"icon-prev color-light font-size-18\"})]),_c('span',{staticClass:\"pre-pare-detail__paging__num display-flex-center justify-content-center bg-color-light border-rd-20 secondary-color-txt\"},[_vm._v(\"\\n \"+_vm._s(_vm.slideIndexVisible + 1)+\"/\"+_vm._s(_vm.slidesMain.length)+\"\\n \")]),_c('button',{staticClass:\"btn btn-main border-rd-20 display-flex-center justify-content-center\",on:{\"click\":function($event){return _vm.nextSlide()}}},[_c('i',{staticClass:\"icon-next color-light font-size-18\"})])])]),_c('div',{staticClass:\"pre-pare-detail__footer__end\"},[_c('div',{staticClass:\"pre-pare-detail__zoom btn btn-white border-rd-20 display-flex-center justify-content-between\"},[_c('button',{staticClass:\"zoom-out border-0 p-0 bg-transparent\",on:{\"click\":function($event){return _vm.zoomOut()}}},[_c('i',{staticClass:\"icon-minus font-size-18 secondary-color-txt\"})]),_c('span',{staticClass:\"font-size-17 secondary-color-txt\"},[_vm._v(_vm._s(Math.ceil(_vm.scaleSlide*100))+\" %\")]),_c('button',{staticClass:\"zoom-in border-0 p-0 bg-transparent\",on:{\"click\":function($event){return _vm.zoomIn()}}},[_c('i',{staticClass:\"icon-plus font-size-18 secondary-color-txt\"})])])])]),(_vm.linkVideoAudio)?_c('ModalViewVideoAudio'):_vm._e(),(_vm.isOpenSlideshow)?_c('Slideshow'):_vm._e(),(_vm.indexPreviewMedia > -1)?_c('ModalPreviewMedia'):_vm._e(),_c('b-modal',{staticClass:\"modal-info\",attrs:{\"id\":\"modal_info_lesson\",\"hide-footer\":\"\",\"size\":\"lg\",\"scrollable\":\"\",\"centered\":\"\"},scopedSlots:_vm._u([{key:\"modal-header\",fn:function(){return [_c('div',{staticClass:\"modal-info__head modal-info__head--psmall display-flex-center justify-content-between full-width\"},[_c('h4',{staticClass:\"modal-info__title font-sanpro-bold primary-color-txt\"},[_vm._v(\"Thông tin\")]),_c('span',{staticClass:\"modal-info__close\",on:{\"click\":function($event){return _vm.$bvModal.hide('modal_info_lesson')}}},[_c('i',{staticClass:\"icon-close\"})])])]},proxy:true}])},[_c('div',{staticClass:\"modal-info__body primary-color-txt font-sanpro-light bg-color-light\"},[_c('div',{staticClass:\"pre-pare__add__modal\"},[_c('form',{staticClass:\"needs-validation creat-dt\",attrs:{\"novalidate\":\"\"}},[_c('div',{staticClass:\"form-group\",class:{ 'is-invalid': _vm.submitted && _vm.$v.lessonInfo.title.$error }},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.lessonInfo.title),expression:\"lessonInfo.title\"}],staticClass:\"form-bg-gray-light form-30h border-rd-20 full-width\",attrs:{\"type\":\"text\",\"id\":\"tieude\",\"placeholder\":\"Tên bài giảng\"},domProps:{\"value\":(_vm.lessonInfo.title)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.lessonInfo, \"title\", $event.target.value)}}}),(!_vm.lessonInfo.title)?_c('p',{staticClass:\"form-err-noti four-color font-size-15\"},[_vm._v(\"Bạn hãy nhập tên bài bài giảng\")]):_vm._e()]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md-6\"},[_c('div',{staticClass:\"form-item\"},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.lessonInfo.classId),expression:\"lessonInfo.classId\"}],staticClass:\"form-bg-gray-light form-30h border-rd-20 full-width disabled\",on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.lessonInfo, \"classId\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])}}},_vm._l((_vm.classes),function(item){return _c('option',{key:item.classId + '-class',domProps:{\"value\":item.classId}},[_vm._v(\"\\n \"+_vm._s(item.className)+\"\\n \")])}),0)])]),_c('div',{staticClass:\"col-md-6\"},[_c('div',{staticClass:\"form-item\"},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.lessonInfo.subjectId),expression:\"lessonInfo.subjectId\"}],staticClass:\"form-bg-gray-light form-30h border-rd-20 full-width disabled\",on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.lessonInfo, \"subjectId\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])}}},_vm._l((_vm.subjects),function(item){return _c('option',{key:item.subjectId + '-subject',domProps:{\"value\":item.subjectId}},[_vm._v(\"\\n \"+_vm._s(item.subjectName)+\"\\n \")])}),0)])])]),_c('div',{staticClass:\"form-action display-flex-center justify-content-end\"},[_c('a',{staticClass:\"font-size-16 primary-color font-weight-semi-bold\",attrs:{\"href\":\"javascript:;\"},on:{\"click\":function($event){return _vm.$bvModal.hide('modal_info_lesson')}}},[_vm._v(\"Hủy\")]),_c('button',{staticClass:\"btn btn-main font-size-16 border-rd-20 display-flex-center justify-content-center\",class:{'disabled': !_vm.lessonInfo.title},attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.$bvModal.hide('modal_info_lesson')}}},[_vm._v(\"\\n Hoàn thành\\n \")])])])])])])],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"book-viewer__cats__wrap\"},[_c('h2',{staticClass:\"pre-pare-detail__list__head primary-color-txt font-size-24 font-sanpro-semibold\"},[_vm._v(\"\\n Danh sách\\n \")])])}]\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"pre-pare-detail__actions display-flex\",class:{'active': _vm.keyActive}},[_c('div',{staticClass:\"pre-pare-detail__actions__icons\"},[_c('a',{staticClass:\"item\",class:{'active': _vm.keyActive === _vm.keyText},attrs:{\"href\":\"javascript:;\"},on:{\"click\":function($event){return _vm.toggleSidebarActions(_vm.keyText)}}},[_c('i',{staticClass:\"icon-lesson-text\"})]),_c('a',{staticClass:\"item\",class:{'active': _vm.keyActive === _vm.keyShape},attrs:{\"href\":\"javascript:;\"},on:{\"click\":function($event){return _vm.toggleSidebarActions(_vm.keyShape)}}},[_c('i',{staticClass:\"icon-lesson-shapes\"})]),_c('a',{staticClass:\"item\",class:{'active': _vm.keyActive === _vm.keyPicture},attrs:{\"href\":\"javascript:;\"},on:{\"click\":function($event){return _vm.toggleSidebarActions(_vm.keyPicture)}}},[_c('i',{staticClass:\"icon-lesson--picture\"})]),_c('a',{staticClass:\"item\",class:{'active': _vm.keyActive === _vm.keyVideo},attrs:{\"href\":\"javascript:;\"},on:{\"click\":function($event){return _vm.toggleSidebarActions(_vm.keyVideo)}}},[_vm._m(0)]),_c('a',{staticClass:\"item\",class:{'active': _vm.keyActive === _vm.keyAudio},attrs:{\"href\":\"javascript:;\"},on:{\"click\":function($event){return _vm.toggleSidebarActions(_vm.keyAudio)}}},[_c('i',{staticClass:\"icon-lesson-audio\"})]),_c('a',{staticClass:\"item\",class:{'active': _vm.keyActive === _vm.keySlide},attrs:{\"href\":\"javascript:;\"},on:{\"click\":function($event){return _vm.toggleSidebarActions(_vm.keySlide)}}},[_vm._m(1)])]),_c('div',{staticClass:\"pre-pare-detail__actions__detail color_bg_gray_light\"},[_c('SidebarActionText',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.keyActive === _vm.keyText),expression:\"keyActive === keyText\"}],attrs:{\"keyActive\":_vm.keyActive}}),_c('SidebarActionShape',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.keyActive === _vm.keyShape),expression:\"keyActive === keyShape\"}],attrs:{\"keyActive\":_vm.keyActive}}),_c('SidebarActionImg',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.keyActive === _vm.keyPicture),expression:\"keyActive === keyPicture\"}],attrs:{\"keyActive\":_vm.keyActive}}),_c('SidebarActionVideo',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.keyActive === _vm.keyVideo),expression:\"keyActive === keyVideo\"}],attrs:{\"keyActive\":_vm.keyActive}}),_c('SidebarActionAudio',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.keyActive === _vm.keyAudio),expression:\"keyActive === keyAudio\"}],attrs:{\"keyActive\":_vm.keyActive}}),_c('SidebarActionPowerpoint',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.keyActive === _vm.keySlide),expression:\"keyActive === keySlide\"}],attrs:{\"keyActive\":_vm.keyActive}})],1)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"icon-lesson-video\"},[_c('span',{staticClass:\"path1\"}),_c('span',{staticClass:\"path2\"})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"icon-lesson-slide\"},[_c('span',{staticClass:\"path1\"}),_c('span',{staticClass:\"path2\"})])}]\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"action action-txt\"},[_c('div',{staticClass:\"action_wrap book-viewer__cats__wrap\"},[_c('h2',{staticClass:\"book-viewer__cats__title primary-color-txt font-size-24 font-sanpro-semibold\"},[_vm._v(\"\\n Văn bản\\n \")]),_c('div',{staticClass:\"action__detail\"},[_c('div',{staticClass:\"action__upload\"},[_c('a',{staticClass:\"btn btn-main font-size-16 border-rd-20\",attrs:{\"href\":\"javascript:;\"},on:{\"click\":function($event){return _vm.addNewTxt()}}},[_c('i',{staticClass:\"icon-plus color-light\"}),_vm._v(\"\\n Thêm văn bản\\n \")])]),_c('div',{staticClass:\"action__section\"},[_c('div',{staticClass:\"action__section__list action__section__list--form\"},[_c('div',{staticClass:\"item select-custom\"},[_c('select',{staticClass:\"primary-color-txt border-rd-20 font-size-15 form-h30 bg-color-light border-0 full-width\",on:{\"change\":function($event){return _vm.handleChangeStyle($event, 'fontFamily')}}},_vm._l((_vm.fonts),function(item,index){return _c('option',{key:index,domProps:{\"value\":item.value}},[_vm._v(\"Font - \"+_vm._s(item.name))])}),0),_c('i',{staticClass:\"icon-arrow-down font-size-13 primary-color\"})]),_c('div',{staticClass:\"action__section__row display-flex-center justify-content-between\"},[_c('div',{staticClass:\"item select-custom\"},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.fontSizeDefault),expression:\"fontSizeDefault\"}],staticClass:\"primary-color-txt border-rd-20 font-size-15 form-h30 bg-color-light border-0 full-width\",on:{\"change\":[function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.fontSizeDefault=$event.target.multiple ? $$selectedVal : $$selectedVal[0]},function($event){return _vm.handleChangeStyle($event, 'fontSize')}]}},_vm._l((_vm.fontSizes),function(item,index){return _c('option',{key:index,domProps:{\"value\":item}},[_vm._v(_vm._s(item)+\"pt\")])}),0),_c('i',{staticClass:\"icon-arrow-down font-size-13 primary-color\"})]),_c('div',{staticClass:\"item select-custom\"},[_c('select',{staticClass:\"primary-color-txt border-rd-20 font-size-15 form-h30 bg-color-light border-0 full-width\",on:{\"change\":_vm.handleChangeFontStyle}},_vm._l((_vm.fontStyle),function(item,index){return _c('option',{key:index,domProps:{\"value\":item.value}},[_vm._v(_vm._s(item.name))])}),0),_c('i',{staticClass:\"icon-arrow-down font-size-13 primary-color\"})])])])]),_c('div',{staticClass:\"action__section\"},[_c('label',{staticClass:\"action__label secondary-color-txt font-size-16 font-sanpro-semi-bold\"},[_vm._v(\"Căn lề\")]),_c('div',{staticClass:\"action__section__list display-flex-wrap\"},_vm._l((_vm.aligns),function(item,index){return _c('div',{key:index,staticClass:\"item bg-color-light primary-color display-flex-center justify-content-center\",on:{\"click\":function($event){return _vm.handleChangeStyle(item.value, 'textAlign')}}},[_c('i',{staticClass:\"font-size-17\",class:item.icon})])}),0)]),_c('div',{staticClass:\"action__section\"},[_c('SidebarActionColor',{on:{\"changeColor\":_vm.changeColor}})],1)])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"action action--colors\"},[_c('label',{staticClass:\"action__label secondary-color-txt font-size-16 font-sanpro-semi-bold\"},[_vm._v(\"Màu sắc\")]),_c('div',{staticClass:\"action__section__list display-flex-wrap\"},[_vm._l((_vm.colors),function(item,index){return _c('div',{staticClass:\"item display-inline-block cursor-pointer\",class:{'active': item === _vm.colorActive},style:({background: item}),on:{\"click\":function($event){return _vm.changeColorElm(item)}}})}),_c('div',{staticClass:\"item display-flex-center justify-content-center cursor-pointer item--plus position-rel\",style:({background: _vm.otherColor ? _vm.otherColor : '#fff'})},[_c('i',{staticClass:\"icon-plus font-size-18\"}),_c('input',{staticClass:\"cursor-pointer\",attrs:{\"type\":\"color\",\"value\":\"\"},on:{\"change\":_vm.changeOtherColor}})])],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarActionColor.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarActionColor.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SidebarActionColor.vue?vue&type=template&id=623537b4&scoped=true&\"\nimport script from \"./SidebarActionColor.vue?vue&type=script&lang=js&\"\nexport * from \"./SidebarActionColor.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"623537b4\",\n null\n \n)\n\nexport default component.exports","import { mapState, mapActions } from 'vuex'\r\nimport { fabric } from 'fabric'\r\nimport { STORE_KEY, KEY_SHAPE, KEY_TXT, KEY_PICTURE, BASE_64_DEFINE, MEDIA_TYPE_IMG, MEDIA_TYPE_VIDEO, MEDIA_TYPE_AUDIO, KEY_VIDEO, KEY_AUDIO } from './constants'\r\nimport { APP_CONFIG } from '@/utils/constants'\r\nimport fileService from './../_api/fileService'\r\n\r\nconst posterVideo = `${APP_CONFIG.cdnLive}/img/playresize.svg` //require('@/assets/images/linktypes/playresize.svg')\r\nconst posterAudio = `${APP_CONFIG.cdnLive}/img/audioresize40.svg` // require('@/assets/images/linktypes/audioresize40.svg')\r\n\r\nexport default {\r\n data () {\r\n return {\r\n slideObj: null,\r\n copiedObject: {},\r\n copiedObjects: [],\r\n baseUrl: APP_CONFIG.appUrl,\r\n bookCdnUrl: APP_CONFIG.bookCdnUrl\r\n }\r\n },\r\n computed: {\r\n ...mapState(STORE_KEY, ['slideCurr', 'slidesMain', 'slideIndexVisible']),\r\n lessonId () {\r\n return parseInt(this.$route.params.id)\r\n }\r\n },\r\n methods: {\r\n ...mapActions(STORE_KEY, ['acSetSlidesMain', 'acSetSlideCurr', 'acSetLinkAudioVieoViewer']),\r\n\r\n // async setDataSaved2 (sizeCurr) {\r\n // if (this.slideIndexVisible > -1) {\r\n // // console.log('AAAAAAAAAAA: ', this.slidesMain[this.slideIndexVisible])\r\n // await this.slideCurr.loadFromJSON(this.slidesMain[this.slideIndexVisible].jsonValue)\r\n // // console.log('VOVO', this.slidesMain)\r\n // this.setResizeElms(sizeCurr)\r\n // }\r\n // },\r\n\r\n // setResizeElms (sizeCurr) {\r\n // console.log('Resize: ', this.slideCurr._objects)\r\n // let self = this\r\n // if (self.slideCurr._objects && self.slideCurr._objects.length > 0) {\r\n // let lengthObjs = self.slideCurr._objects.length\r\n // self.slideCurr._objects.map(async (item, index) => {\r\n // await self.calSizeElsCanvas(item, sizeCurr)\r\n\r\n // self.slidesMain[self.slideIndexVisible]['items'][index] = item\r\n // if (index === lengthObjs - 1) {\r\n // self.slideCurr.renderAll().trigger('selection:cleared')\r\n // }\r\n // })\r\n // }\r\n // },\r\n\r\n setDataSaved (sizeCurr = null) {\r\n let self = this\r\n // let sizeCurr = this.getClientSizeAddEl()\r\n self.slideCurr && self.slideCurr.clear()\r\n // console.log('Set data saved: ', this.slideIndexVisible, this.slidesMain[this.slideIndexVisible].items, this.slideCurr.objects)\r\n if (this.slidesMain[this.slideIndexVisible] && this.slidesMain[this.slideIndexVisible].items && this.slidesMain[this.slideIndexVisible].items.length > 0) {\r\n this.slidesMain[this.slideIndexVisible].items.map(async (item, index) => {\r\n // console.log('Index setdatasave: ', index)\r\n await self.calSizeElsCanvas(item, sizeCurr)\r\n // console.log('Check object set: ', index, item)\r\n // Key 'item.aCoords' is check fabric object\r\n if (this.lessonId > 0 && !item.aCoords) {\r\n switch(item.type) {\r\n case 'IText':\r\n // item = !item.aCoords ? new fabric.IText(item.text, {...item}) : item\r\n item = new fabric.IText(item.text, {...item})\r\n break;\r\n case 'Group':\r\n let objGroup = []\r\n item.objects.map(obj => {\r\n if (obj.type === 'Line') {\r\n let points = [obj.x1, obj.y1, obj.x2, obj.y2]\r\n objGroup.push( new fabric.Line(points, {...obj}) )\r\n } else {\r\n objGroup.push(new fabric[obj.type]({...obj}))\r\n }\r\n })\r\n item = new fabric.Group(objGroup, {...item})\r\n break;\r\n case 'Polygon':\r\n item = new fabric.Polygon(item.points, {...item})\r\n break;\r\n case 'Line':\r\n let points = [item.x1, item.y1, item.x2, item.y2]\r\n item = new fabric.Line(points, {...item})\r\n break;\r\n case KEY_PICTURE:\r\n self.addImageUrl(item.src, {...item})\r\n break;\r\n case KEY_VIDEO:\r\n self.addVideo({...item}, true)\r\n break;\r\n case KEY_AUDIO:\r\n self.addAudio({...item}, true)\r\n break;\r\n default:\r\n item = new fabric[item.type]({...item})\r\n break;\r\n }\r\n }\r\n\r\n if (self.slidesMain[self.slideIndexVisible].backgroundImage) {\r\n self.setBgSlide(self.slidesMain[self.slideIndexVisible].backgroundImage)\r\n }\r\n\r\n if ( ![KEY_PICTURE, KEY_VIDEO, KEY_AUDIO].includes(item.type) || this.lessonId === 0 || item.aCoords){\r\n self.slideCurr.add(item)\r\n // self.slideCurr.trigger('object:modified')\r\n }\r\n })\r\n } else if (self.slidesMain[self.slideIndexVisible] && self.slidesMain[self.slideIndexVisible].backgroundImage) {\r\n // console.log('Set background for slide: ', self.slidesMain[self.slideIndexVisible].background_slide)\r\n self.setBgSlide(self.slidesMain[self.slideIndexVisible].backgroundImage)\r\n }\r\n },\r\n\r\n setBgSlide (url) {\r\n let self = this\r\n const optionReq = {\r\n crossOrigin: 'anonymous',\r\n type: KEY_PICTURE,\r\n type_detail: KEY_PICTURE,\r\n position: self.slidesMain[self.slideIndexVisible].items.length,\r\n ...self.handleConvertDimensions2PercentObj({top: 0, left: 0})\r\n }\r\n fabric.Image.fromURL(url, function(img) {\r\n // img.set({ 'left': 0 });\r\n // img.set({ 'top': 0 });\r\n // img.scaleToWidth(self.slideCurr.width / img.width);\r\n // img.scaleToHeight(self.slideCurr.height / img.height);\r\n // add background image\r\n self.slideCurr.setBackgroundImage(img, self.slideCurr.renderAll.bind(self.slideCurr), {\r\n scaleX: self.slideCurr.width / img.width,\r\n scaleY: self.slideCurr.height / img.height\r\n });\r\n // self.handleAddNewAndTrigger(img)\r\n }, optionReq);\r\n self.slidesMain[self.slideIndexVisible]['backgroundImage'] = url\r\n // self.acSetSlidesMain([...self.slideIndexVisible])\r\n },\r\n\r\n getClientSizeAddEl () {\r\n let canvasEl = document.getElementById('slide_main')\r\n if (canvasEl) {\r\n return {\r\n width: canvasEl.clientWidth,\r\n height: canvasEl.clientHeight\r\n }\r\n }\r\n },\r\n\r\n handleConvertDimensions2PercentObj (dimension = null) {\r\n let layout = this.getClientSizeAddEl()\r\n var objectWorking = dimension || this.slideCurr.getActiveObject()\r\n // console.log('OBJECT WORKING: ', objectWorking);\r\n let result = {\r\n layout\r\n // dimensions_percent: {\r\n // top: this.convertDataXToPercent(objectWorking.top, layout.height),\r\n // left: this.convertDataXToPercent(objectWorking.left, layout.width)\r\n // }\r\n }\r\n // if (objectWorking.width) {\r\n // result.dimensions_percent.width = this.convertDataXToPercent(objectWorking.width, layout.width)\r\n // }\r\n // if (objectWorking.height) {\r\n // result.dimensions_percent.height = this.convertDataXToPercent(objectWorking.height, layout.height)\r\n // }\r\n // if (objectWorking.rx) {\r\n // result.dimensions_percent.rx = this.convertDataXToPercent(objectWorking.rx, layout.width)\r\n // }\r\n // if (objectWorking.ry) {\r\n // result.dimensions_percent.ry = this.convertDataXToPercent(objectWorking.ry, layout.height)\r\n // }\r\n return result\r\n },\r\n\r\n convertDataXToPercent(val, widthLayout) {\r\n return (val/widthLayout)*100;\r\n },\r\n\r\n convertDataYToPercent(val, heightLayout) {\r\n return (val/heightLayout)*100;\r\n },\r\n\r\n convertDataXToPX(val, widthLayout) {\r\n return (val/100)*widthLayout;\r\n },\r\n\r\n convertDataYToPX(val, heightLayout) {\r\n return (val/100)*heightLayout;\r\n },\r\n\r\n calSizeElsCanvas (item, sizeCurr) {\r\n // let sizeCurr = await this.getClientSizeAddEl()\r\n // console.log('Cal size:', sizeCurr)\r\n if (item.layout && sizeCurr && item.layout.width !== sizeCurr.width) {\r\n let perWidth = (sizeCurr.width/item.layout.width)\r\n let perHeight = (sizeCurr.height/item.layout.height)\r\n // console.log('Perwidth: ', perWidth, perHeight, sizeCurr, item.layout, item.width, item.height, item.left, item.top, item.scaleX, item.scaleY)\r\n item.layout.height = sizeCurr.height\r\n item.layout.width = sizeCurr.width\r\n\r\n item.scaleX *= perWidth\r\n item.scaleY *= perHeight\r\n\r\n item.left *= perWidth\r\n item.top *= perHeight\r\n // item.left = this.convertDataXToPX(item.left, sizeCurr.width)\r\n // item.top = this.convertDataYToPX(item.top, sizeCurr.height)\r\n // if (item.type !== 'IText') {\r\n // // return;\r\n // // item.width *=perWidth\r\n // // item.height *= perHeight\r\n // // item.width = this.convertDataXToPX(item.width, sizeCurr.width)\r\n // // item.height = this.convertDataYToPX(item.height, sizeCurr.height)\r\n // }\r\n\r\n // console.log('Perwidth Done: ', perWidth, perHeight, sizeCurr, item.layout, item.width, item.height, item.left, item.top, item.scaleX, item.scaleY)\r\n // this.slideCurr.renderAll().trigger('selection:cleared')\r\n // this.slideCurr.setZoom(this.slideCurr.getZoom()*perWidth)\r\n // canvas.setZoom(canvas.getZoom()*SCALE_FACTOR);\r\n // item.width *=perWidth\r\n // item.height *= perHeight\r\n // item.setCoords()\r\n // console.log('Call item: ', item);\r\n }\r\n },\r\n\r\n changeStyleForArea (name, value) {\r\n var object = this.slideCurr.getActiveObject();\r\n if (!object) return;\r\n // console.log('change style of obj: ', object, object.width)\r\n object.set(name, value).setCoords();\r\n this.slideCurr.renderAll();\r\n this.handleSaveCanvas()\r\n },\r\n \r\n handleSaveCanvas () {\r\n this.saveToImage()\r\n this.saveToSVG()\r\n let jsonValue = this.saveToJson()\r\n this.slidesMain[this.slideIndexVisible]['jsonValue'] = jsonValue\r\n this.acSetSlidesMain([...this.slidesMain])\r\n },\r\n\r\n changeColor (val) {\r\n this.changeStyleForArea('fill', val)\r\n },\r\n\r\n saveToSVG () {\r\n let canvasImg = this.slideCurr.toSVG();\r\n this.slidesMain[this.slideIndexVisible].imageSvg = canvasImg\r\n return canvasImg;\r\n },\r\n\r\n saveToJson () {\r\n return JSON.stringify(this.slideCurr.toJSON());\r\n },\r\n\r\n saveToImage () {\r\n let imgBase64 = this.slideCurr.toDataURL({ format: 'png' });\r\n this.slidesMain[this.slideIndexVisible].imageBase64 = imgBase64.replace(BASE_64_DEFINE, '')\r\n return imgBase64;\r\n },\r\n\r\n copy () {\r\n this.copiedObjects = [];\r\n if(this.slideCurr.getActiveObject()){\r\n this.copiedObject = fabric.util.object.clone(this.slideCurr.getActiveObject());\r\n this.copiedObjects = [];\r\n } else if(this.slideCurr.getActiveGroup()){\r\n //console.log(this.slideCurr.getActiveGroup().getObjects());\r\n this.slideCurr.getActiveGroup().getObjects().forEach(function(o){\r\n var object = fabric.util.object.clone(o);\r\n this.copiedObjects.push(object);\r\n }); \r\n }\r\n },\r\n\r\n paste () {\r\n if(this.copiedObjects.length > 0){\r\n for(var i in this.copiedObjects){\r\n this.copiedObjects[i]= fabric.util.object.clone(this.copiedObjects[i]);\r\n \r\n this.copiedObjects[i].set(\"top\", this.copiedObjects[i].top+100);\r\n this.copiedObjects[i].set(\"left\", this.copiedObjects[i].left+100);\r\n \r\n this.slideCurr.add(this.copiedObjects[i]);\r\n this.slideCurr.item(this.slideCurr.size() - 1).hasControls = true;\r\n }\r\n } else if(this.copiedObject){\r\n this.copiedObject = fabric.util.object.clone(this.copiedObject);\r\n this.copiedObject.set(\"top\", 150);\r\n this.copiedObject.set(\"left\", 150);\r\n this.slideCurr.add(this.copiedObject);\r\n this.slideCurr.item(this.slideCurr.size() - 1).hasControls = true;\r\n this.slidesMain[this.slideIndexVisible].items.push(this.copiedObject)\r\n }\r\n this.slideCurr.renderAll(); \r\n },\r\n\r\n addNewTxt (valSaved = null) {\r\n let textDefault = valSaved ? valSaved.text : 'Double click to edit.'\r\n let dataTxtNew = valSaved ? valSaved : {\r\n type: 'IText',\r\n type_detail: KEY_TXT,\r\n left: 100,\r\n top: 100,\r\n originX: \"left\",\r\n originY: \"top\",\r\n fontFamily: this.fontActive,\r\n fontSize: 16,\r\n ...this.handleConvertDimensions2PercentObj({top: 100, left: 100})\r\n }\r\n\r\n let dataTxt = new fabric.IText(textDefault, dataTxtNew)\r\n this.handleAddNewAndTrigger(dataTxt, valSaved)\r\n },\r\n\r\n addShape (val, valSaved = null) {\r\n let self = this\r\n self.shapeChoosed = val\r\n switch (val) {\r\n case 'rect':\r\n this.addRect(val, valSaved)\r\n break;\r\n case 'rectangle-1':\r\n this.addRectangle1(val, valSaved)\r\n break;\r\n case 'rec-corner':\r\n this.addRectCornor(val, valSaved)\r\n break;\r\n case 'parallelogram':\r\n this.addRectParallelogram(val, valSaved)\r\n break;\r\n case 'triangle':\r\n this.addTriangle(val, valSaved)\r\n break;\r\n case 'triangle-2':\r\n this.addTriangle2(val, valSaved)\r\n break;\r\n case 'rhombus':\r\n this.addRectRhombus(val, valSaved)\r\n break;\r\n case 'circle':\r\n this.addCircle(val, valSaved)\r\n break;\r\n case 'ellipse':\r\n this.addEllipse(val, valSaved)\r\n break;\r\n case 'pentagon':\r\n this.addPolygon5(val, valSaved)\r\n break;\r\n case 'trapezoid':\r\n this.addTrapezoid(val, valSaved)\r\n break;\r\n case 'hexagon':\r\n this.addHexagon(val, valSaved)\r\n break;\r\n }\r\n },\r\n\r\n addShapeLine (val, valSaved = null) {\r\n this.lineShapeChoosed = val\r\n switch (val) {\r\n case 'line-1':\r\n this.addLine(val, valSaved)\r\n break;\r\n case 'line-2':\r\n this.addLine(val, true, valSaved)\r\n break;\r\n case 'line-3':\r\n this.addArrowLine(val, valSaved)\r\n break;\r\n case 'line-4':\r\n this.addArrowLine(val, true, valSaved)\r\n break;\r\n case 'line-5':\r\n this.addArrowLine(val, false, true, valSaved)\r\n break;\r\n case 'line-6':\r\n this.addArrowLine(val, true, true, valSaved)\r\n break;\r\n case 'line-7':\r\n this.addLineCircle(val, valSaved)\r\n break;\r\n case 'line-8':\r\n this.addLineCircle(val, true, valSaved)\r\n break;\r\n }\r\n },\r\n\r\n addShapeArrow (val, valSaved = null) {\r\n this.arrowShapeChoosed = val\r\n switch (val) {\r\n case 'arrow-l':\r\n this.addArrowShape(val, 180, valSaved)\r\n break;\r\n case 'arrow-r':\r\n this.addArrowShape(val, valSaved)\r\n break;\r\n case 'arrow-d':\r\n this.addArrowShape(val, 90, valSaved)\r\n break;\r\n case 'arrow-u':\r\n this.addArrowShape(val, -90, valSaved)\r\n break;\r\n case 'arrow-2':\r\n this.addArrowShape(val, 0, true, valSaved)\r\n break;\r\n }\r\n },\r\n\r\n addRect (val, valSaved) {\r\n let dataRect = valSaved ? valSaved : {\r\n type: 'Rect',\r\n // type_detail: val,\r\n type_detail: val,\r\n top: 50,\r\n left: 20,\r\n width: 100,\r\n height: 100,\r\n position: this.slidesMain[this.slideIndexVisible].items.length,\r\n isNew: true,\r\n fill: this.colorFillCurr,\r\n originX: \"left\",\r\n originY: \"top\",\r\n centeredRotation: !0,\r\n stroke: this.colorFillCurr,\r\n strokeWidth: 1,\r\n ...this.handleConvertDimensions2PercentObj({top: 50, left: 50, width: 100, height: 100})\r\n }\r\n let rect = new fabric.Rect(dataRect)\r\n this.handleAddNewAndTrigger(rect)\r\n },\r\n\r\n addRectangle1 (val, valSaved) {\r\n let dataRect = valSaved ? valSaved : {\r\n type: 'Rect',\r\n type_detail: val,\r\n top: 50,\r\n left: 100,\r\n width: 100,\r\n height: 100,\r\n position: this.slidesMain[this.slideIndexVisible].items.length,\r\n isNew: true,\r\n fill: this.colorFillCurr,\r\n originX: \"left\",\r\n originY: \"top\",\r\n centeredRotation: !0,\r\n stroke: this.colorFillCurr,\r\n strokeWidth: 1,\r\n rx: 10,\r\n ry: 10,\r\n skewX: -10,\r\n ...this.handleConvertDimensions2PercentObj({top: 50, left: 100, width: 100, height: 100})\r\n // angle: 45,\r\n // scaleX: 3,\r\n // scaleY: 3\r\n }\r\n let rect = new fabric.Rect(dataRect)\r\n this.handleAddNewAndTrigger(rect)\r\n },\r\n\r\n addRectParallelogram (val, valSaved) {\r\n let dataRect = valSaved ? valSaved : {\r\n type: 'Rect',\r\n type_detail: val,\r\n top: 50,\r\n left: 100,\r\n width: 100,\r\n height: 100,\r\n position: this.slidesMain[this.slideIndexVisible].items.length,\r\n isNew: true,\r\n fill: this.colorFillCurr,\r\n originX: \"left\",\r\n originY: \"top\",\r\n centeredRotation: !0,\r\n stroke: this.colorFillCurr,\r\n strokeWidth: 1,\r\n skewX: -10,\r\n ...this.handleConvertDimensions2PercentObj({top: 50, left: 100, width: 100, height: 100})\r\n }\r\n let rect = new fabric.Rect(dataRect)\r\n this.handleAddNewAndTrigger(rect)\r\n },\r\n\r\n addRectCornor (val, valSaved) {\r\n let dataRect = valSaved ? valSaved : {\r\n type: 'Rect',\r\n type_detail: val,\r\n top: 50,\r\n left: 100,\r\n width: 100,\r\n height: 100,\r\n position: this.slidesMain[this.slideIndexVisible].items.length,\r\n isNew: true,\r\n fill: this.colorFillCurr,\r\n originX: \"left\",\r\n originY: \"top\",\r\n centeredRotation: !0,\r\n stroke: this.colorFillCurr,\r\n strokeWidth: 1,\r\n rx: 10,\r\n ry: 10,\r\n ...this.handleConvertDimensions2PercentObj({top: 50, left: 100, width: 100, height: 100})\r\n }\r\n let rect = new fabric.Rect(dataRect)\r\n this.handleAddNewAndTrigger(rect)\r\n },\r\n\r\n addRectRhombus (val, valSaved) {\r\n let dataRect = valSaved ? valSaved : {\r\n type: 'Rect',\r\n type_detail: val,\r\n top: 50,\r\n left: 100,\r\n width: 100,\r\n height: 100,\r\n position: this.slidesMain[this.slideIndexVisible].items.length,\r\n isNew: true,\r\n fill: this.colorFillCurr,\r\n originX: \"left\",\r\n originY: \"top\",\r\n centeredRotation: !0,\r\n stroke: this.colorFillCurr,\r\n strokeWidth: 1,\r\n angle: 45,\r\n ...this.handleConvertDimensions2PercentObj({top: 50, left: 100, width: 100, height: 100})\r\n }\r\n let rect = new fabric.Rect(dataRect)\r\n this.handleAddNewAndTrigger(rect)\r\n },\r\n\r\n addTriangle (val, valSaved) {\r\n let dataTriangle = valSaved ? valSaved : {\r\n type: 'Triangle',\r\n type_detail: val,\r\n top: 50,\r\n left: 100,\r\n width: 160,\r\n height: 120,\r\n position: this.slidesMain[this.slideIndexVisible].items.length,\r\n isNew: true,\r\n fill: this.colorFillCurr,\r\n stroke: this.colorFillCurr,\r\n strokeWidth: 1,\r\n ...this.handleConvertDimensions2PercentObj({top: 50, left: 100, width: 160, height: 120})\r\n }\r\n let rect = new fabric.Triangle(dataTriangle)\r\n this.handleAddNewAndTrigger(rect)\r\n },\r\n\r\n addTriangle2 (val, valSaved) {\r\n let dataTriangle = valSaved ? valSaved : {\r\n type: 'Triangle',\r\n type_detail: val,\r\n top: 50,\r\n left: 100,\r\n width: 160,\r\n height: 120,\r\n position: this.slidesMain[this.slideIndexVisible].items.length,\r\n isNew: true,\r\n fill: this.colorFillCurr,\r\n stroke: this.colorFillCurr,\r\n strokeWidth: 1,\r\n skewX: 35,\r\n ...this.handleConvertDimensions2PercentObj({top: 50, left: 100, width: 160, height: 120})\r\n }\r\n let rect = new fabric.Triangle(dataTriangle)\r\n this.handleAddNewAndTrigger(rect)\r\n },\r\n\r\n addCircle (val, valSaved) {\r\n let dataCircle = valSaved ? valSaved : {\r\n type: 'Circle',\r\n type_detail: val,\r\n top: 50,\r\n left: 100,\r\n width: 100,\r\n height: 100,\r\n radius: 50,\r\n position: this.slidesMain[this.slideIndexVisible].items.length,\r\n isNew: true,\r\n fill: this.colorFillCurr,\r\n stroke: this.colorFillCurr,\r\n strokeWidth: 1,\r\n ...this.handleConvertDimensions2PercentObj({top: 50, left: 100, width: 100, height: 100})\r\n }\r\n let circle = new fabric.Circle(dataCircle)\r\n this.handleAddNewAndTrigger(circle)\r\n },\r\n\r\n addEllipse (val, valSaved) {\r\n let dataEllipse = valSaved ? valSaved : {\r\n type: 'Ellipse',\r\n type_detail: val,\r\n top: 50,\r\n left: 100,\r\n width: 160,\r\n height: 120,\r\n radius: 30,\r\n rx: 40, \r\n ry: 80,\r\n position: this.slidesMain[this.slideIndexVisible].items.length,\r\n isNew: true,\r\n fill: this.colorFillCurr,\r\n stroke: this.colorFillCurr,\r\n strokeWidth: 1,\r\n ...this.handleConvertDimensions2PercentObj({top: 50, left: 100, width: 160, height: 120, rx: 40, ry: 80})\r\n }\r\n let ellipse = new fabric.Ellipse(dataEllipse)\r\n this.handleAddNewAndTrigger(ellipse)\r\n },\r\n\r\n addPolygon5 (val, valSaved) {\r\n let points = [\r\n { x: 200, y: 10 }, \r\n { x: 250, y: 50 }, \r\n { x: 240, y: 105}, \r\n { x: 160, y: 105}, \r\n { x: 150, y: 50 }\r\n ]\r\n let dataPolygon = valSaved ? valSaved : {\r\n type: 'Polygon',\r\n type_detail: val,\r\n top: 50,\r\n left: 50,\r\n position: this.slidesMain[this.slideIndexVisible].items.length,\r\n isNew: true,\r\n fill: this.colorFillCurr,\r\n stroke: this.colorFillCurr,\r\n strokeWidth: 1,\r\n objectCaching: false,\r\n transparentCorners: false,\r\n layout: this.getClientSizeAddEl()\r\n }\r\n let ellipse = new fabric.Polygon(points, dataPolygon)\r\n this.handleAddNewAndTrigger(ellipse)\r\n },\r\n\r\n addTrapezoid (val, valSaved) {\r\n let points = [\r\n { x: 200, y: 50 },\r\n { x: 220, y: 105},\r\n { x: 120, y: 105},\r\n { x: 140, y: 50 }\r\n ]\r\n let dataPolygon = valSaved ? valSaved : {\r\n type: 'Polygon',\r\n type_detail: val,\r\n top: 50,\r\n left: 50,\r\n position: this.slidesMain[this.slideIndexVisible].items.length,\r\n isNew: true,\r\n fill: this.colorFillCurr,\r\n stroke: this.colorFillCurr,\r\n strokeWidth: 1,\r\n objectCaching: false,\r\n transparentCorners: false,\r\n ...this.handleConvertDimensions2PercentObj({top: 50, left: 50})\r\n }\r\n let ellipse = new fabric.Polygon(points, dataPolygon)\r\n this.handleAddNewAndTrigger(ellipse)\r\n },\r\n\r\n addHexagon (val, valSaved) {\r\n let points = [\r\n { x: 150, y: 50 },\r\n { x: 200, y: 50 },\r\n { x: 225, y: 90},\r\n { x: 200, y: 130 },\r\n { x: 150, y: 130 },\r\n { x: 125, y: 90}\r\n ]\r\n let dataPolygon = valSaved ? valSaved : {\r\n type: 'Polygon',\r\n type_detail: val,\r\n top: 50,\r\n left: 50,\r\n position: this.slidesMain[this.slideIndexVisible].items.length,\r\n isNew: true,\r\n fill: this.colorFillCurr,\r\n stroke: this.colorFillCurr,\r\n strokeWidth: 1,\r\n objectCaching: false,\r\n transparentCorners: false,\r\n rx: 40, \r\n ry: 80,\r\n ...this.handleConvertDimensions2PercentObj({top: 50, left: 50})\r\n }\r\n let ellipse = new fabric.Polygon(points, dataPolygon)\r\n this.handleAddNewAndTrigger(ellipse)\r\n },\r\n\r\n addLine (val, dashed = false, valSaved) {\r\n let dataLine = valSaved ? valSaved : {\r\n type: 'Line',\r\n type_detail: val,\r\n left: 150,\r\n top: 100,\r\n fill: this.colorFillCurr, \r\n stroke: this.colorFillCurr, \r\n strokeWidth: 2,\r\n position: this.slidesMain[this.slideIndexVisible].items.length,\r\n isNew: true,\r\n ...this.handleConvertDimensions2PercentObj({top: 100, left: 150})\r\n }\r\n if (dashed) {\r\n dataLine['strokeDashArray'] = [5, 5]\r\n }\r\n let line = new fabric.Line([0, 20, 150, 20], dataLine)\r\n this.handleAddNewAndTrigger(line)\r\n },\r\n\r\n addArrowLine (val, dashed = false, arrow2 = false, valSaved){\r\n let triangle = new fabric.Triangle({\r\n type: 'Triangle',\r\n width: 10, \r\n height: 15, \r\n left: 200, \r\n top: 65,\r\n angle: 90,\r\n fill: this.colorFillCurr, \r\n stroke: this.colorFillCurr, \r\n strokeWidth: 2,\r\n position: this.slidesMain[this.slideIndexVisible].items.length,\r\n isNew: true\r\n });\r\n\r\n let triangleFirst = new fabric.Triangle({\r\n type: 'Triangle',\r\n width: 10, \r\n height: 15, \r\n left: 60, \r\n top: 77,\r\n angle: -90,\r\n fill: this.colorFillCurr, \r\n stroke: this.colorFillCurr, \r\n strokeWidth: 2,\r\n position: this.slidesMain[this.slideIndexVisible].items.length,\r\n isNew: true\r\n });\r\n\r\n let line = new fabric.Line([50, 100, 165, 100], {\r\n type: 'Line',\r\n type_detail: val,\r\n left: 75,\r\n top: 70,\r\n fill: this.colorFillCurr, \r\n stroke: this.colorFillCurr, \r\n strokeWidth: 2,\r\n position: this.slidesMain[this.slideIndexVisible].items.length,\r\n isNew: true\r\n });\r\n\r\n if (dashed) {\r\n line['strokeDashArray'] = [5, 5]\r\n }\r\n\r\n let objs = [line, triangle];\r\n if (arrow2) {\r\n objs.unshift(triangleFirst)\r\n }\r\n let dataGroup = valSaved ? valSaved : {\r\n type: 'Group',\r\n type_detail: 'line-arrow',\r\n left: 75,\r\n top: 70,\r\n position: this.slidesMain[this.slideIndexVisible].items.length,\r\n isNew: true,\r\n ...this.handleConvertDimensions2PercentObj({top: 70, left: 75})\r\n }\r\n\r\n let alltogetherObj = new fabric.Group(objs, dataGroup);\r\n this.handleAddNewAndTrigger(alltogetherObj)\r\n },\r\n\r\n addLineCircle (val, dashed = false, valSaved) {\r\n let circleAfter = new fabric.Circle({\r\n type: 'Circle',\r\n width: 5, \r\n height: 5, \r\n left: 200, \r\n top: 65,\r\n angle: 90,\r\n radius: 5,\r\n fill: this.colorFillCurr, \r\n stroke: this.colorFillCurr, \r\n strokeWidth: 2,\r\n position: this.slidesMain[this.slideIndexVisible].items.length,\r\n isNew: true\r\n });\r\n\r\n let circleBefore = new fabric.Circle({\r\n type: 'Circle',\r\n width: 5, \r\n height: 5, \r\n left: 50, \r\n top: 77,\r\n angle: -90,\r\n radius: 5,\r\n fill: this.colorFillCurr, \r\n stroke: this.colorFillCurr, \r\n strokeWidth: 2,\r\n position: this.slidesMain[this.slideIndexVisible].items.length,\r\n isNew: true\r\n });\r\n\r\n let line = new fabric.Line([62, 100, 200, 100], {\r\n type: 'Line',\r\n type_detail: val,\r\n left: 55,\r\n top: 70,\r\n fill: this.colorFillCurr, \r\n stroke: this.colorFillCurr, \r\n strokeWidth: 2,\r\n position: this.slidesMain[this.slideIndexVisible].items.length,\r\n isNew: true\r\n });\r\n\r\n if (dashed) {\r\n line['strokeDashArray'] = [5, 5]\r\n }\r\n\r\n let objs = [circleBefore, line, circleAfter];\r\n \r\n let dataGroup = valSaved ? valSaved : {\r\n type: 'Group',\r\n type_detail: 'line-circle',\r\n left: 75,\r\n top: 70,\r\n position: this.slidesMain[this.slideIndexVisible].items.length,\r\n isNew: true,\r\n ...this.handleConvertDimensions2PercentObj({top: 70, left: 75})\r\n }\r\n\r\n let alltogetherObj = new fabric.Group(objs, dataGroup);\r\n this.handleAddNewAndTrigger(alltogetherObj)\r\n },\r\n\r\n addArrowShape (val, deg = 0, arrow2 = false, valSaved) {\r\n let points = [\r\n { x: 140, y: 45 },\r\n { x: 200, y: 45 },\r\n { x: 200, y: 30},\r\n { x: 230, y: 58 },\r\n { x: 200, y: 85 },\r\n { x: 200, y: 70},\r\n { x: 140, y: 70}\r\n ]\r\n if (arrow2) {\r\n points = [...points, { x: 140, y: 85}, { x: 110, y: 58}, { x: 140, y: 30}, { x: 140, y: 45}]\r\n }\r\n let dataPolygon = valSaved ? valSaved : {\r\n type: 'Polygon',\r\n type_detail: val,\r\n position: this.slidesMain[this.slideIndexVisible].items.length,\r\n isNew: true,\r\n fill: this.colorFillCurr,\r\n stroke: this.colorFillCurr,\r\n strokeWidth: 1,\r\n objectCaching: false,\r\n transparentCorners: false,\r\n angle: deg\r\n }\r\n if (!valSaved) {\r\n switch(deg) {\r\n case 180:\r\n dataPolygon['top'] = 60\r\n dataPolygon['left'] = 100\r\n break;\r\n case -90:\r\n dataPolygon['top'] = 100\r\n dataPolygon['left'] = 50\r\n break;\r\n case 90:\r\n dataPolygon['top'] = 40\r\n dataPolygon['left'] = 65\r\n break;\r\n default:\r\n dataPolygon['top'] = 50\r\n dataPolygon['left'] = 50\r\n break;\r\n }\r\n }\r\n dataPolygon = {\r\n ...dataPolygon,\r\n ...this.handleConvertDimensions2PercentObj({top: dataPolygon.top, left: dataPolygon.left})\r\n }\r\n \r\n let ellipse = new fabric.Polygon(points, dataPolygon)\r\n this.handleAddNewAndTrigger(ellipse)\r\n },\r\n\r\n addImageUrl (imageUrl, options = null) {\r\n let self = this\r\n const optionReq = {\r\n crossOrigin: 'anonymous',\r\n type: KEY_PICTURE,\r\n type_detail: KEY_PICTURE,\r\n position: self.slidesMain[self.slideIndexVisible].items.length,\r\n ...this.handleConvertDimensions2PercentObj({top: 50, left: 50})\r\n }\r\n\r\n if (!options) {\r\n fabric.Image.fromURL(imageUrl, function(image) {\r\n const maxWidth = self.slideCurr.width / 2;\r\n const maxHeight = self.slideCurr.height / 2;\r\n let width = image.width;\r\n let height = image.height;\r\n if (image.width > maxWidth){\r\n width = maxWidth;\r\n }\r\n if (image.height > maxHeight){\r\n height = maxHeight;\r\n }\r\n image.set({ 'left': 50 });\r\n image.set({ 'top': 50 });\r\n image.scaleToWidth(width);\r\n image.scaleToHeight(height);\r\n \r\n self.handleAddNewAndTrigger(image)\r\n }, optionReq)\r\n } else {\r\n fabric.Image.fromURL(imageUrl, function(image) {\r\n image.set({...options})\r\n self.handleAddNewAndTrigger(image, options)\r\n }, { crossOrigin: 'anonymous' })\r\n }\r\n },\r\n\r\n addVideo: function (obj, saved = false) {\r\n let self = this\r\n\r\n let videoUrl = obj.video_src ? `${this.bookCdnUrl}${obj.video_src}` : obj.fileRef ? this.baseUrl + '/' + obj.fileRef : this.bookCdnUrl + obj.linkUrl;\r\n\r\n if (obj.file_uploaded) {\r\n videoUrl = `${self.baseUrl}/${obj.video_src}`\r\n }\r\n\r\n fabric.Image.fromURL(posterVideo, function(imageVideo) {\r\n if (!saved) {\r\n const maxWidth = 50;\r\n const maxHeight = 50;\r\n let width = imageVideo.width;\r\n let height = imageVideo.height;\r\n if (imageVideo.width > maxWidth){\r\n width = maxWidth;\r\n }\r\n if (imageVideo.height > maxHeight){\r\n height = maxHeight;\r\n }\r\n imageVideo.set({\r\n left: 10,\r\n top: 10,\r\n video_src: obj.fileRef ? obj.fileRef : obj.linkUrl,\r\n file_name: obj.name ? obj.name : obj.title,\r\n type: KEY_VIDEO,\r\n type_detail: KEY_VIDEO,\r\n file_uploaded: obj.fileRef ? true : false,\r\n position: self.slidesMain[self.slideIndexVisible].items.length,\r\n ...self.handleConvertDimensions2PercentObj({top: 10, left: 10})\r\n })\r\n imageVideo.scaleToWidth(width);\r\n imageVideo.scaleToHeight(height);\r\n } else {\r\n const { top, left, scaleX, scaleY } = obj\r\n imageVideo.set({...obj})\r\n }\r\n imageVideo.on('mousedblclick', function(e) {\r\n (obj.fileRef || obj.linkUrl || obj.video_src) && self.acSetLinkAudioVieoViewer(videoUrl)\r\n });\r\n self.handleAddNewAndTrigger(imageVideo, saved)\r\n }, { crossOrigin: 'anonymous' });\r\n },\r\n\r\n addAudio: function(obj, saved = false){\r\n let self = this\r\n let audioUrl = obj.audio_src ? `${this.bookCdnUrl}${obj.audio_src}` : obj.fileRef ? `${this.baseUrl}/${obj.fileRef}` : `${this.bookCdnUrl}${obj.linkUrl}`;\r\n if (obj.file_uploaded) {\r\n audioUrl = `${self.baseUrl}/${obj.audio_src}`\r\n }\r\n fabric.Image.fromURL(posterAudio, function(image) {\r\n if (!saved) {\r\n const maxWidth = 40;\r\n const maxHeight = 40;\r\n let width = image.width;\r\n let height = image.height;\r\n if (image.width > maxWidth){\r\n width = maxWidth;\r\n }\r\n if (image.height > maxHeight){\r\n height = maxHeight;\r\n }\r\n image.set({\r\n left: 10,\r\n top: 10,\r\n audio_src: obj.fileRef ? obj.fileRef : obj.linkUrl,\r\n file_name: obj.name ? obj.name : obj.title,\r\n type: KEY_AUDIO,\r\n type_detail: KEY_AUDIO,\r\n file_uploaded: obj.fileRef ? true : false,\r\n position: self.slidesMain[self.slideIndexVisible].items.length,\r\n ...self.handleConvertDimensions2PercentObj({top: 10, left: 10})\r\n })\r\n image.scaleToWidth(width);\r\n image.scaleToHeight(height);\r\n } else {\r\n const { top, left, scaleX, scaleY } = obj\r\n image.set({\r\n top, left, scaleX, scaleY\r\n })\r\n }\r\n image.on('mousedblclick', function(e) {\r\n (obj.fileRef || obj.linkUrl || obj.audio_src) && self.acSetLinkAudioVieoViewer(audioUrl)\r\n });\r\n self.handleAddNewAndTrigger(image, saved)\r\n }, { crossOrigin: 'anonymous' });\r\n },\r\n\r\n saveMediaFile(data, hasCallback = true) {\r\n let self = this;\r\n fileService.save(data).then((response) => {\r\n if (response.data.status == 'success') {\r\n if (data.fileType === MEDIA_TYPE_IMG) {\r\n hasCallback && this.getImages();\r\n this.addImageUrl(this.baseUrl + \"/\" + response.data.data.fileRef)\r\n } else if (data.fileType === MEDIA_TYPE_VIDEO) {\r\n this.addVideo(response.data.data)\r\n hasCallback && this.getVideos()\r\n } else if (data.fileType === MEDIA_TYPE_AUDIO) {\r\n this.addAudio(response.data.data)\r\n hasCallback && this.getAudios()\r\n }\r\n }\r\n }).finally(() => self.setLoading(false));\r\n },\r\n\r\n handleAddNewAndTrigger (val, dataSaved = null) {\r\n !dataSaved && this.slidesMain[this.slideIndexVisible].items.push(val)\r\n this.slideCurr.add(val)\r\n \r\n this.slideCurr.renderAll().trigger('object:modified').trigger('selection:cleared')\r\n // this.slideCurr.renderAll()\r\n this.slidesMain[this.slideIndexVisible]['json'] = this.slideCurr.toJSON()\r\n // console.log('handle add elm: ', this.slidesMain, this.slidesMain[this.slideIndexVisible], this.slidesMain[this.slideIndexVisible + 1], this.slideIndexVisible)\r\n !dataSaved && this.acSetSlidesMain([...this.slidesMain])\r\n this.handleSaveCanvas()\r\n },\r\n }\r\n}","\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarActionText.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarActionText.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SidebarActionText.vue?vue&type=template&id=34d649d2&scoped=true&\"\nimport script from \"./SidebarActionText.vue?vue&type=script&lang=js&\"\nexport * from \"./SidebarActionText.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"34d649d2\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.keyActive === _vm.keyShape)?_c('div',{staticClass:\"action action-txt\"},[_c('div',{staticClass:\"action_wrap book-viewer__cats__wrap\"},[_c('h2',{staticClass:\"book-viewer__cats__title primary-color-txt font-size-24 font-sanpro-semibold\"},[_vm._v(\"\\n Hình vẽ\\n \")]),_c('div',{staticClass:\"action__detail\"},[(!_vm.shapeChoosed && !_vm.lineShapeChoosed && !_vm.arrowShapeChoosed)?[_c('div',{staticClass:\"action__section\"},[_c('label',{staticClass:\"action__label secondary-color-txt font-size-16 font-sanpro-semi-bold\"},[_vm._v(\"Hình khối\")]),_c('div',{staticClass:\"action__section__list display-flex-wrap\"},_vm._l((_vm.shapes),function(item,index){return _c('div',{key:index,staticClass:\"item display-flex-center justify-content-center bg-color-light\",on:{\"click\":function($event){return _vm.addShape(item.value)}}},[_c('i',{staticClass:\"font-size-17\",class:item.icon})])}),0)]),_c('div',{staticClass:\"action__section\"},[_c('label',{staticClass:\"action__label secondary-color-txt font-size-16 font-sanpro-semi-bold\"},[_vm._v(\"Đường\")]),_c('div',{staticClass:\"action__section__list display-flex-wrap\"},_vm._l((_vm.lines),function(item,index){return _c('div',{key:index,staticClass:\"item display-flex-center justify-content-center bg-color-light\",class:{'active': _vm.lineShapeChoosed === item.value},on:{\"click\":function($event){return _vm.addShapeLine(item.value)}}},[_c('i',{staticClass:\"font-size-17\",class:item.icon})])}),0)]),_c('div',{staticClass:\"action__section\"},[_c('label',{staticClass:\"action__label secondary-color-txt font-size-16 font-sanpro-semi-bold\"},[_vm._v(\"Biểu tượng\")]),_c('div',{staticClass:\"action__section__list display-flex-wrap\"},_vm._l((_vm.icons),function(item,index){return _c('div',{key:index,staticClass:\"item display-flex-center justify-content-center bg-color-light\",class:{'active': _vm.arrowShapeChoosed === item.value},on:{\"click\":function($event){return _vm.addShapeArrow(item.value)}}},[_c('i',{staticClass:\"font-size-17\",class:item.icon})])}),0)])]:[_c('div',{staticClass:\"action__section\"},[_c('label',{staticClass:\"action__label secondary-color-txt font-size-16 font-sanpro-semi-bold\"},[_vm._v(\"Thao tác\")]),_c('div',{staticClass:\"action__section__list display-flex-wrap\"},[_c('div',{staticClass:\"item display-flex-center justify-content-center bg-color-light\",on:{\"click\":function($event){return _vm.removeObjectCurr()}}},[_c('i',{staticClass:\"icon-lesson-trash font-size-17\"})]),_c('div',{staticClass:\"item display-flex-center justify-content-center bg-color-light\",on:{\"click\":function($event){return _vm.handleCopyPaste()}}},[_c('i',{staticClass:\"icon-lesson-copy font-size-17\"})])])]),((_vm.shapeChoosed || _vm.arrowShapeChoosed) && !_vm.lineShapeChoosed)?_c('div',{staticClass:\"action__section\"},[_c('label',{staticClass:\"action__label secondary-color-txt font-size-16 font-sanpro-semi-bold\"},[_vm._v(\"Kiểu\")]),_c('div',{staticClass:\"action__section__list display-flex-wrap\"},_vm._l((_vm.shapeTypes),function(item,index){return _c('div',{key:index,staticClass:\"item display-flex-center justify-content-center bg-color-light\",class:{'active': _vm.shapeFillType === item.value},on:{\"click\":function($event){return _vm.setShapeType(item.value)}}},[_c('i',{staticClass:\"font-size-17\",class:item.icon})])}),0)]):_vm._e(),_c('div',{staticClass:\"action__section\"},[_c('SidebarActionColor',{attrs:{\"colorActive\":_vm.colorFillCurr},on:{\"changeColor\":_vm.changeColor}})],1)]],2)])]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarActionShape.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarActionShape.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SidebarActionShape.vue?vue&type=template&id=12e2cd86&scoped=true&\"\nimport script from \"./SidebarActionShape.vue?vue&type=script&lang=js&\"\nexport * from \"./SidebarActionShape.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"12e2cd86\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.keyActive === _vm.keyPicture)?_c('div',{staticClass:\"action action-txt\"},[_c('div',{staticClass:\"action_wrap\"},[_c('h2',{staticClass:\"book-viewer__cats__title primary-color-txt font-size-24 font-sanpro-semibold book-viewer__cats__wrap\"},[_vm._v(\"\\n Hình ảnh\\n \")]),_c('div',{staticClass:\"action__detail\"},[_c('div',{staticClass:\"action__upload book-viewer__cats__wrap\"},[_c('a',{staticClass:\"btn btn-main font-size-16 border-rd-20 form-file-hide\",attrs:{\"href\":\"javascript:;\"},on:{\"click\":_vm.openModalFileUploaded}},[_c('i',{staticClass:\"icon-upload color-light\"}),_vm._v(\"\\n Tải lên\\n \")])]),_c('div',{staticClass:\"action__section\"},[_c('label',{staticClass:\"action__label secondary-color-txt font-size-16 font-sanpro-semi-bold book-viewer__cats__wrap\"},[_vm._v(\"Hình ảnh có sẵn\")]),_c('SidebarFilter',{staticClass:\"book-viewer__cats__wrap\",attrs:{\"fileType\":1},on:{\"search\":_vm.handleChangeKeyFilter}}),_c('vue-custom-scrollbar',{staticClass:\"action__section__list action__section__list--data action__section__list--data--scroll position-rel display-flex justify-content-between flex-direction-col\",attrs:{\"settings\":{maxScrollbarLength: 300}}},[(_vm.images && _vm.images.length > 0)?_c('div',{staticClass:\"book-viewer__cats__wrap display-flex-wrap\"},_vm._l((_vm.images),function(item,index){return _c('ItemDataAction',{key:index,attrs:{\"dataSource\":item,\"position\":index}})}),1):_c('p',{staticClass:\"secondary-color-txt font-size-16 book-viewer__cats__wrap text-center\"},[_vm._v(\"Không tìm thấy dữ liệu phù hợp\")]),_c('div',{staticClass:\"display-block\",attrs:{\"id\":\"imgs__end\"}})])],1)])]),(_vm.isOpenModalFileUploaded)?_c('ModalFileUploaded',{attrs:{\"fileType\":_vm.fileType}}):_vm._e()],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"item position-rel\"},[_c('div',{staticClass:\"item__head aspect-ratio aspect-ratio--16-9\"},[_c('div',{staticClass:\"item__head__img\"},[(_vm.dataSource.linkUrl && _vm.checkImage(_vm.dataSource.linkUrl))?_c('img',{attrs:{\"src\":(\"\" + _vm.bookCdnUrl + (_vm.dataSource.linkUrl)),\"alt\":_vm.dataSource.title}}):_vm._e(),(_vm.dataSource.posterLink && (_vm.checkVideo(_vm.dataSource.linkUrl) || _vm.checkAudio(_vm.dataSource.linkUrl)))?_c('img',{attrs:{\"src\":(_vm.urlCMS + \"/\" + (_vm.dataSource.posterLink)),\"alt\":_vm.dataSource.title}}):_vm._e()]),_c('a',{staticClass:\"item__viewer\",attrs:{\"href\":\"javascript:;\"},on:{\"click\":function($event){return _vm.handleViewMedia(_vm.dataSource, _vm.position)}}},[_c('i',{staticClass:\"icon-eye color-light\"})])]),_c('div',{staticClass:\"item__body\",on:{\"click\":function($event){return _vm.handleAddMedia(_vm.dataSource)}}},[_c('h4',{staticClass:\"item__name\"},[_vm._v(\"\\n \"+_vm._s(_vm.dataSource.title)+\"\\n \")])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ItemDataAction.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ItemDataAction.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ItemDataAction.vue?vue&type=template&id=39d3087c&scoped=true&\"\nimport script from \"./ItemDataAction.vue?vue&type=script&lang=js&\"\nexport * from \"./ItemDataAction.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"39d3087c\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"action__section__filter action__section__list action__section__list--form\"},[_c('div',{staticClass:\"item item__key input-custom-icon\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model.lazy\",value:(_vm.keyword),expression:\"keyword\",modifiers:{\"lazy\":true}},{name:\"debounce\",rawName:\"v-debounce\",value:(300),expression:\"300\"}],staticClass:\"primary-color-txt bg-color-light border-rd-20 font-size-15 form-h30 border-0 full-width\",attrs:{\"type\":\"text\",\"placeholder\":\"Tìm kiếm\"},domProps:{\"value\":(_vm.keyword)},on:{\"change\":function($event){_vm.keyword=$event.target.value}}}),_c('i',{staticClass:\"icon-search font-size-16 primary-color\"})]),_c('div',{staticClass:\"item-row action__section__row display-flex-center\"},[_c('div',{staticClass:\"item item__class select-custom\"},[_c('select',{staticClass:\"primary-color-txt border-rd-20 font-size-15 form-h30 bg-color-light border-0 full-width\",on:{\"change\":_vm.getSubjects}},[_c('option',{attrs:{\"value\":\"0\"}},[_vm._v(\"Lớp - Tất cả\")]),_vm._l((_vm.classes),function(item){return _c('option',{key:item.classId,domProps:{\"value\":item.classId}},[_vm._v(_vm._s(item.className))])})],2),_c('i',{staticClass:\"icon-arrow-down font-size-13 primary-color\"})]),_c('div',{staticClass:\"item item__subject select-custom\"},[_c('select',{staticClass:\"primary-color-txt border-rd-20 font-size-15 form-h30 bg-color-light border-0 full-width\",on:{\"change\":_vm.filterBySubject}},[_c('option',{attrs:{\"value\":\"0\"}},[_vm._v(\"Môn - tất cả\")]),_vm._l((_vm.subjects),function(item){return _c('option',{key:item.subjectId,domProps:{\"value\":item.subjectId}},[_vm._v(_vm._s(item.subjectName))])})],2),_c('i',{staticClass:\"icon-arrow-down font-size-13 primary-color\"})])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarFilter.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarFilter.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SidebarFilter.vue?vue&type=template&id=f097e9dc&scoped=true&\"\nimport script from \"./SidebarFilter.vue?vue&type=script&lang=js&\"\nexport * from \"./SidebarFilter.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"f097e9dc\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-modal',{staticClass:\"modal-info modal-prepare__detail\",attrs:{\"id\":_vm.idModalFileUploaded,\"size\":\"xl\",\"scrollable\":\"\",\"centered\":\"\"},on:{\"hidden\":_vm.handleCloseModal},scopedSlots:_vm._u([{key:\"modal-header\",fn:function(){return [_c('div',{staticClass:\"modal-info__head modal-info__head--psmall display-flex-center justify-content-between full-width\"},[_c('div',{staticClass:\"modal-info__title full-width\"},[_c('h4',{staticClass:\"font-sanpro-bold primary-color-txt\"},[_vm._v(\"Học liệu của tôi\")]),_c('div',{staticClass:\"modal-add-slide__head__action display-flex-center justify-content-between\"},[_c('div',{staticClass:\"modal-add-slide__head__action__form display-flex-center\"},[_c('a',{staticClass:\"btn btn-main font-size-16 border-rd-20 form-file-hide display-flex-center justify-content-center modal-add-slide__upload\",attrs:{\"href\":\"javascript:;\"}},[_c('i',{staticClass:\"icon-upload color-light\"}),_vm._v(\"\\n Tải lên\\n \"),(_vm.fileType === _vm.typeImg)?_c('input',{ref:\"file_image\",attrs:{\"type\":\"file\",\"id\":\"file_image\"},on:{\"change\":function($event){return _vm.uploadImage()}}}):(_vm.fileType === _vm.typeAudio)?_c('input',{ref:\"file_audio\",attrs:{\"type\":\"file\",\"id\":\"file_audio\"},on:{\"change\":function($event){return _vm.uploadAudio()}}}):(_vm.fileType === _vm.typeVideo)?_c('input',{ref:\"file_video\",attrs:{\"type\":\"file\",\"id\":\"file_video\"},on:{\"change\":function($event){return _vm.uploadVideo()}}}):_vm._e()]),_c('div',{staticClass:\"input-custom-icon modal-add-slide__keyword\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model.lazy\",value:(_vm.keyword),expression:\"keyword\",modifiers:{\"lazy\":true}},{name:\"debounce\",rawName:\"v-debounce\",value:(300),expression:\"300\"}],staticClass:\"primary-color-txt color_bg_gray_light border-rd-20 font-size-15 form-h30 border-0 full-width\",attrs:{\"type\":\"text\",\"placeholder\":\"Tìm kiếm\"},domProps:{\"value\":(_vm.keyword)},on:{\"change\":function($event){_vm.keyword=$event.target.value}}}),_c('i',{staticClass:\"icon-search font-size-16 primary-color\"})])]),_c('p',{staticClass:\"modal-add-slide__desc-choose margin-0 primary-color-txt font-sanpro-semibold font-size-18\"},[_vm._v(\"\\n Đã chọn \"+_vm._s(_vm.dataChoosed.length)+\" học liệu\\n \")])])]),_c('span',{staticClass:\"modal-info__close\",on:{\"click\":function($event){return _vm.$bvModal.hide(_vm.idModalFileUploaded)}}},[_c('i',{staticClass:\"icon-close\"})])])]},proxy:true},{key:\"modal-footer\",fn:function(){return [_c('div',{staticClass:\"modal-add-slide__footer display-flex-center justify-content-end\"},[_c('a',{staticClass:\"font-size-16 primary-color font-weight-semi-bold\",attrs:{\"href\":\"javascript:;\"},on:{\"click\":function($event){return _vm.$bvModal.hide(_vm.idModalFileUploaded)}}},[_vm._v(\"Hủy\")]),_c('button',{staticClass:\"btn btn-main font-size-16 border-rd-20 display-flex-center justify-content-center\",attrs:{\"type\":\"button\"},on:{\"click\":_vm.handleInsertItems2Slide}},[_vm._v(\"\\n Hoàn thành\\n \")])])]},proxy:true}])},[_c('div',{staticClass:\"modal-info__body primary-color-txt font-sanpro-light bg-color-light\"},[_c('div',{staticClass:\"modal-add-slide__list display-flex-wrap\"},_vm._l((_vm.datas),function(item,index){return _c('div',{key:index,staticClass:\"item item--uploaded position-rel\",on:{\"click\":function($event){return _vm.handleChoosedData(item)}}},[_c('div',{staticClass:\"item__head aspect-ratio aspect-ratio--16-9\"},[_c('div',{staticClass:\"item__img\"},[(_vm.checkImage(item.fileRef))?_c('img',{attrs:{\"src\":(_vm.appUrl + \"/\" + (item.fileRef)),\"alt\":item.name}}):_vm._e()]),(_vm.dataChoosed.includes(item.lessonPlanFileId))?_c('div',{staticClass:\"item__checked\"},[_c('img',{attrs:{\"src\":_vm.doneIcon,\"alt\":\"Chọn học liệu\"}})]):_vm._e(),_c('div',{staticClass:\"item__icon\"},[(item.fileRef && _vm.checkImage(item.fileRef))?_c('img',{attrs:{\"src\":_vm.imgIcon,\"alt\":\"Học liệu\"}}):(item.fileRef && _vm.checkVideo(item.fileRef))?_c('img',{attrs:{\"src\":_vm.videoIcon,\"alt\":\"Học liệu\"}}):(item.fileRef && _vm.checkAudio(item.fileRef))?_c('img',{attrs:{\"src\":_vm.audioIcon,\"alt\":\"Học liệu\"}}):_vm._e()])]),_c('h4',{staticClass:\"item__title font-size-16 primary-color-txt font-sanpro-light\"},[_vm._v(\"\\n \"+_vm._s(item.name)+\"\\n \")])])}),0)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModalFileUploaded.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModalFileUploaded.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ModalFileUploaded.vue?vue&type=template&id=2ed5e505&scoped=true&\"\nimport script from \"./ModalFileUploaded.vue?vue&type=script&lang=js&\"\nexport * from \"./ModalFileUploaded.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2ed5e505\",\n null\n \n)\n\nexport default component.exports","\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarActionImg.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarActionImg.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SidebarActionImg.vue?vue&type=template&id=e703a52c&scoped=true&\"\nimport script from \"./SidebarActionImg.vue?vue&type=script&lang=js&\"\nexport * from \"./SidebarActionImg.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e703a52c\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.keyActive === _vm.keyVideo)?_c('div',{staticClass:\"action action-txt\"},[_c('div',{staticClass:\"action_wrap\"},[_c('h2',{staticClass:\"book-viewer__cats__title primary-color-txt font-size-24 font-sanpro-semibold book-viewer__cats__wrap\"},[_vm._v(\"\\n Video\\n \")]),_c('div',{staticClass:\"action__detail\"},[_c('div',{staticClass:\"action__upload book-viewer__cats__wrap\"},[_c('a',{staticClass:\"btn btn-main font-size-16 border-rd-20 form-file-hide\",attrs:{\"href\":\"javascript:;\"},on:{\"click\":_vm.openModalFileUploaded}},[_c('i',{staticClass:\"icon-upload color-light\"}),_vm._v(\"\\n Tải lên\\n \")])]),_c('div',{staticClass:\"action__section\"},[_c('label',{staticClass:\"action__label secondary-color-txt font-size-16 font-sanpro-semi-bold book-viewer__cats__wrap\"},[_vm._v(\"Video có sẵn\")]),_c('SidebarFilter',{staticClass:\"book-viewer__cats__wrap\"}),_c('vue-custom-scrollbar',{staticClass:\"action__section__list action__section__list--data action__section__list--data--scroll\"},[(_vm.videos && _vm.videos.length > 0)?_c('div',{staticClass:\"book-viewer__cats__wrap display-flex-wrap\"},_vm._l((_vm.videos),function(item,index){return _c('ItemDataAction',{key:index,attrs:{\"dataSource\":item,\"position\":index}})}),1):_c('p',{staticClass:\"secondary-color-txt font-size-16 book-viewer__cats__wrap text-center\"},[_vm._v(\"Không tìm thấy dữ liệu phù hợp\")]),(_vm.videos && _vm.videos.length > 0)?_c('div',{attrs:{\"id\":\"videos__end\"}}):_vm._e()])],1)])]),(_vm.isOpenModalFileUploaded)?_c('ModalFileUploaded',{attrs:{\"fileType\":_vm.fileType}}):_vm._e()],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarActionVideo.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarActionVideo.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SidebarActionVideo.vue?vue&type=template&id=7836d7a4&scoped=true&\"\nimport script from \"./SidebarActionVideo.vue?vue&type=script&lang=js&\"\nexport * from \"./SidebarActionVideo.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7836d7a4\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.keyActive === _vm.keyAudio)?_c('div',{staticClass:\"action action-txt\"},[_c('div',{staticClass:\"action_wrap\"},[_c('h2',{staticClass:\"book-viewer__cats__title primary-color-txt font-size-24 font-sanpro-semibold book-viewer__cats__wrap\"},[_vm._v(\"\\n Âm thanh\\n \")]),_c('div',{staticClass:\"action__detail\"},[_c('div',{staticClass:\"action__upload book-viewer__cats__wrap\"},[_c('a',{staticClass:\"btn btn-main font-size-16 border-rd-20 form-file-hide\",attrs:{\"href\":\"javascript:;\"},on:{\"click\":_vm.openModalFileUploaded}},[_c('i',{staticClass:\"icon-upload color-light\"}),_vm._v(\"\\n Tải lên\\n \")])]),_c('div',{staticClass:\"action__section\"},[_c('label',{staticClass:\"action__label secondary-color-txt font-size-16 font-sanpro-semi-bold book-viewer__cats__wrap\"},[_vm._v(\"Âm thanh có sẵn\")]),_c('SidebarFilter',{staticClass:\"book-viewer__cats__wrap\"}),_c('vue-custom-scrollbar',{staticClass:\"action__section__list action__section__list--data action__section__list--data--scroll\"},[(_vm.audios && _vm.audios.length > 0)?_c('div',{staticClass:\"book-viewer__cats__wrap display-flex-wrap\"},_vm._l((_vm.audios),function(item,index){return _c('ItemDataAction',{key:index,attrs:{\"dataSource\":item,\"position\":index}})}),1):_c('p',{staticClass:\"secondary-color-txt font-size-16 book-viewer__cats__wrap text-center\"},[_vm._v(\"Không tìm thấy dữ liệu phù hợp\")]),(_vm.audios && _vm.audios.length > 0)?_c('div',{attrs:{\"id\":\"audios__end\"}}):_vm._e()])],1)])]),(_vm.isOpenModalFileUploaded)?_c('ModalFileUploaded',{attrs:{\"fileType\":_vm.fileType}}):_vm._e()],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarActionAudio.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarActionAudio.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SidebarActionAudio.vue?vue&type=template&id=6fc85226&scoped=true&\"\nimport script from \"./SidebarActionAudio.vue?vue&type=script&lang=js&\"\nexport * from \"./SidebarActionAudio.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6fc85226\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.keyActive === _vm.keyPP)?_c('div',{staticClass:\"action action-txt\"},[_c('div',{staticClass:\"action_wrap\"},[_c('h2',{staticClass:\"book-viewer__cats__title primary-color-txt font-size-24 font-sanpro-semibold book-viewer__cats__wrap\",on:{\"click\":function($event){return _vm.$bvModal.show(_vm.idModalChooseSlide)}}},[_vm._v(\"\\n Power Point\\n \")]),_c('div',{staticClass:\"action__detail\"},[_c('div',{staticClass:\"action__section\"},[_c('label',{staticClass:\"action__label secondary-color-txt font-size-16 font-sanpro-semi-bold book-viewer__cats__wrap\"},[_vm._v(\"Power Point có sẵn\")]),_c('SidebarFilter',{staticClass:\"book-viewer__cats__wrap\"}),_c('vue-custom-scrollbar',{staticClass:\"action__section__list action__section__list--data action__section__list--data--scroll\"},[(_vm.datas && _vm.datas.length > 0)?_c('div',{staticClass:\"book-viewer__cats__wrap display-flex-wrap\"},_vm._l((_vm.datas),function(item,index){return _c('div',{key:index,staticClass:\"item position-rel\"},[_c('div',{staticClass:\"item__head aspect-ratio aspect-ratio--16-9\"},[_c('div',{staticClass:\"item__head__img\"},[_c('img',{attrs:{\"src\":(_vm.urlCmsImg + \"/\" + (item.imageUrl)),\"alt\":item.title}})]),_c('a',{staticClass:\"item__viewer\",attrs:{\"href\":\"javascript:;\"}},[_c('i',{staticClass:\"icon-eye color-light\"})])]),_c('div',{staticClass:\"item__body\",on:{\"click\":function($event){return _vm.handleViewPowerpoint(item)}}},[_c('h4',{staticClass:\"item__name\"},[_vm._v(\"\\n \"+_vm._s(item.title)+\"\\n \")])])])}),0):_c('p',{staticClass:\"secondary-color-txt font-size-16 book-viewer__cats__wrap text-center\"},[_vm._v(\"Không tìm thấy dữ liệu phù hợp\")]),_c('div',{staticClass:\"display-block\",attrs:{\"id\":\"datas__end\"}})])],1)])]),_c('b-modal',{staticClass:\"modal-info modal-prepare__detail\",attrs:{\"id\":_vm.idModalChooseSlide,\"size\":\"lg\",\"scrollable\":\"\",\"centered\":\"\"},scopedSlots:_vm._u([{key:\"modal-header\",fn:function(){return [_c('div',{staticClass:\"modal-info__head modal-info__head--psmall display-flex-center justify-content-between full-width\"},[_c('div',{staticClass:\"modal-info__title\"},[_c('h4',{staticClass:\"font-sanpro-bold primary-color-txt\"},[_vm._v(\"Thêm slide\")]),_c('p',{staticClass:\"modal-add-slide__desc font-size-18 secondary-color-txt font-sanpro-light margin-0\"},[_vm._v(\"Chọn các slide để sử dụng\")])]),_c('span',{staticClass:\"modal-info__close\",on:{\"click\":function($event){return _vm.$bvModal.hide(_vm.idModalChooseSlide)}}},[_c('i',{staticClass:\"icon-close\"})])])]},proxy:true},{key:\"modal-footer\",fn:function(){return [_c('div',{staticClass:\"modal-add-slide__footer display-flex-center justify-content-end\"},[_c('a',{staticClass:\"font-size-16 primary-color font-weight-semi-bold\",attrs:{\"href\":\"javascript:;\"},on:{\"click\":function($event){return _vm.$bvModal.hide(_vm.idModalChooseSlide)}}},[_vm._v(\"Hủy\")]),_c('button',{staticClass:\"btn btn-main font-size-16 border-rd-20 display-flex-center justify-content-center\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.choosedBackgroundForSlide()}}},[_vm._v(\"\\n Hoàn thành\\n \")])])]},proxy:true}],null,false,1407402367)},[_c('div',{staticClass:\"modal-info__body primary-color-txt font-sanpro-light bg-color-light\"},[_c('div',{staticClass:\"modal-add-slide__list display-flex-wrap\"},_vm._l((_vm.listSlideChoose),function(item,index){return _c('div',{key:index,staticClass:\"item position-rel\",class:{'active': item === _vm.urlBgSlideChoosed},on:{\"click\":function($event){return _vm.handleSetBgForSlide(item)}}},[_c('div',{staticClass:\"item__head aspect-ratio aspect-ratio--16-9\"},[_c('div',{staticClass:\"item__img\"},[_c('img',{attrs:{\"src\":item,\"alt\":\"Slide image\"}})])]),_c('span',{staticClass:\"item__position font-size-14 color-light primary-bg-color\"},[_vm._v(_vm._s(index + 1))])])}),0)])])],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarActionPowerpoint.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarActionPowerpoint.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SidebarActionPowerpoint.vue?vue&type=template&id=7bf6d1d7&scoped=true&\"\nimport script from \"./SidebarActionPowerpoint.vue?vue&type=script&lang=js&\"\nexport * from \"./SidebarActionPowerpoint.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7bf6d1d7\",\n null\n \n)\n\nexport default component.exports","\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarActions.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarActions.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SidebarActions.vue?vue&type=template&id=4b5e7e5a&scoped=true&\"\nimport script from \"./SidebarActions.vue?vue&type=script&lang=js&\"\nexport * from \"./SidebarActions.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4b5e7e5a\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('vue-custom-scrollbar',{staticClass:\"slide-main effect-transition-fast\",attrs:{\"id\":\"slide_wrap\",\"settings\":{maxScrollbarLength: 300}}},[_c('canvas',{attrs:{\"id\":\"slide_main\"}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CanvasSlide.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CanvasSlide.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CanvasSlide.vue?vue&type=template&id=b587ed50&scoped=true&\"\nimport script from \"./CanvasSlide.vue?vue&type=script&lang=js&\"\nexport * from \"./CanvasSlide.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CanvasSlide.vue?vue&type=style&index=0&id=b587ed50&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b587ed50\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"modal-viewer hidden-header\",class:{'active': _vm.linkVideoAudio}},[_c('div',{staticClass:\"modal-viewer__body position-rel display-flex-center justify-content-center\"},[_c('div',{staticClass:\"overlay\",on:{\"click\":function($event){return _vm.turnOffModal()}}}),_c('div',{staticClass:\"modal-viewer__main\"},[(_vm.linkVideoAudio && _vm.checkVideo(_vm.linkVideoAudio))?_c('PreviewVideo',{attrs:{\"pathView\":_vm.linkVideoAudio}}):(_vm.linkVideoAudio && _vm.checkAudio(_vm.linkVideoAudio))?_c('PreviewAudioPoster',{attrs:{\"pathView\":_vm.linkVideoAudio,\"autoPlay\":true,\"poster\":_vm.imgThumbAudio}}):_vm._e()],1)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModalViewVideoAudio.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModalViewVideoAudio.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ModalViewVideoAudio.vue?vue&type=template&id=5e2d5d9c&scoped=true&\"\nimport script from \"./ModalViewVideoAudio.vue?vue&type=script&lang=js&\"\nexport * from \"./ModalViewVideoAudio.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5e2d5d9c\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"slideshow\"},[_c('div',{staticClass:\"slideshow__body\"},[_c('div',{staticClass:\"slideshow__main\"},[(_vm.slidesMain && _vm.slidesMain.length > 0)?_c('swiper',{ref:\"swiper_slideshow\",attrs:{\"options\":_vm.optionsSliderMain}},_vm._l((_vm.slidesMain),function(item,index){return _c('swiperSlide',{key:(\"book__\" + index),staticClass:\"item position-rel\"},[_c('div',{staticClass:\"item__wrap position-rel bg-color-light\"},[_c('div',{staticClass:\"item__img\"},[(item.imageBase64)?_c('img',{staticClass:\"full-width\",attrs:{\"src\":(\"\" + _vm.base64Define + (item.imageBase64)),\"alt\":\"\"}}):(item.imageUrl && _vm.isFullLink(item.imageUrl))?_c('img',{staticClass:\"full-width\",attrs:{\"src\":item.imageUrl,\"alt\":\"\"}}):(item.imageUrl && !_vm.isFullLink(item.imageUrl))?_c('img',{staticClass:\"full-width\",attrs:{\"src\":(_vm.baseUrl + \"/\" + (item.imageUrl)),\"alt\":\"\"}}):_vm._e()]),_c('div',{staticClass:\"item__media\"},_vm._l((item.items),function(link,pos){return _c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(link.type === 'audio' || link.type === 'video'),expression:\"link.type === 'audio' || link.type === 'video'\"}],key:pos,staticClass:\"item__link\",staticStyle:{\"position\":\"absolute\",\"z-index\":\"1\"},style:(_vm.renderStyleLink(link)),on:{\"click\":function($event){return _vm.handleViewMedia(link)}}})}),0)])])}),1):_vm._e()],1)]),_c('div',{staticClass:\"slideshow__footer modal-p-lr-35 display-flex-center justify-content-between color_bg_gray_light\"},[_c('a',{staticClass:\"primary-color font-size-16 font-sanpro-semibold book-viewer__footer__cats border-rd-20 position-rel display-flex-center justify-content-center\",attrs:{\"href\":\"javascript:;\"},on:{\"click\":_vm.closeSlideshow}},[_c('i',{staticClass:\"icon-close font-size-14\"}),_c('span',{staticClass:\"only-pc\"},[_vm._v(\"Đóng\")])]),_c('div',{staticClass:\"pre-pare-detail__footer__center\"},[_c('div',{staticClass:\"pre-pare-detail__paging display-flex-center\"},[_c('button',{staticClass:\"btn btn-main border-rd-20 display-flex-center justify-content-center slideshow__prev\",on:{\"click\":function($event){return _vm.prevSlide()}}},[_c('i',{staticClass:\"icon-prev color-light font-size-18\"})]),_c('span',{staticClass:\"pre-pare-detail__paging__num display-flex-center justify-content-center bg-color-light border-rd-20 secondary-color-txt\"},[_vm._v(\"\\n \"+_vm._s(_vm.slideIndexVisible + 1)+\"/\"+_vm._s(_vm.slidesMain.length)+\"\\n \")]),_c('button',{staticClass:\"btn btn-main border-rd-20 display-flex-center justify-content-center slideshow__next\",on:{\"click\":function($event){return _vm.nextSlide()}}},[_c('i',{staticClass:\"icon-next color-light font-size-18\"})])])]),_c('div',{staticClass:\"pre-pare-detail__footer__end\"})])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Slideshow.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Slideshow.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Slideshow.vue?vue&type=template&id=0a462cac&scoped=true&\"\nimport script from \"./Slideshow.vue?vue&type=script&lang=js&\"\nexport * from \"./Slideshow.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0a462cac\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"modal-viewer\"},[_c('div',{staticClass:\"modal-viewer__head modal-p-lr-35 display-flex-center justify-content-between\"},[_c('div',{staticClass:\"inner-back js-back\",on:{\"click\":_vm.turnOffModal}},[_vm._m(0)]),_c('h2',{staticClass:\"modal-viewer__title font-size-16 font-sanpro-light color-light display-flex-center\"},[(_vm.mediaPreviewData && _vm.mediaPreviewData[_vm.indexPreviewMedia] && _vm.mediaPreviewData[_vm.indexPreviewMedia].linkUrl && _vm.checkVideo(_vm.mediaPreviewData[_vm.indexPreviewMedia].linkUrl))?_c('span',{staticClass:\"icon-lesson-video\"},[_c('span',{staticClass:\"path1\"}),_c('span',{staticClass:\"path2\"})]):(_vm.mediaPreviewData && _vm.mediaPreviewData[_vm.indexPreviewMedia] && _vm.mediaPreviewData[_vm.indexPreviewMedia].linkUrl && _vm.checkImage(_vm.mediaPreviewData[_vm.indexPreviewMedia].linkUrl))?_c('i',{staticClass:\"icon-lesson--picture\"}):(_vm.mediaPreviewData && _vm.mediaPreviewData[_vm.indexPreviewMedia] && _vm.mediaPreviewData[_vm.indexPreviewMedia].linkUrl && _vm.checkAudio(_vm.mediaPreviewData[_vm.indexPreviewMedia].linkUrl))?_c('i',{staticClass:\"icon-lesson-audio\"}):_vm._e(),_vm._v(\"\\n \"+_vm._s(_vm.mediaPreviewData && _vm.mediaPreviewData[_vm.indexPreviewMedia] && _vm.mediaPreviewData[_vm.indexPreviewMedia].title ? _vm.mediaPreviewData[_vm.indexPreviewMedia].title : '')+\"\\n \")]),_c('a',{staticClass:\"btn btn-main font-size-16 border-rd-20 display-flex-center justify-content-center modal-viewer__use-btn\",attrs:{\"href\":\"javascript:;\"},on:{\"click\":function($event){return _vm.handleUseMedia()}}},[_vm._v(\"\\n Sử dụng\\n \")])]),_c('div',{staticClass:\"modal-viewer__body position-rel display-flex-center\"},[_c('div',{staticClass:\"modal-viewer__main modal-viewer__main--slide modal-p-lr-35 position-rel display-flex-center justify-content-between\"},[_vm._m(1),_c('swiper',{ref:\"swiper_slide_preview\",staticClass:\"modal-viewer__swiper\",attrs:{\"options\":_vm.optionsSliderMain}},_vm._l((_vm.mediaPreviewData),function(item,index){return _c('swiperSlide',{key:index,staticClass:\"item position-rel text-center margin-0 p-0\"},[(item.linkUrl && _vm.checkVideo(item.linkUrl))?_c('PreviewVideo',{attrs:{\"pathView\":(\"\" + _vm.appUrl + (item.linkUrl))}}):(item.linkUrl && _vm.checkAudio(item.linkUrl))?_c('PreviewAudioPoster',{attrs:{\"pathView\":(\"\" + _vm.appUrl + (item.linkUrl)),\"autoPlay\":false,\"poster\":_vm.imgThumbAudio}}):(item.linkUrl && (_vm.checkImage(item.linkUrl) || _vm.checkGifImage(item.linkUrl)))?_c('img',{attrs:{\"src\":(\"\" + _vm.appUrl + (item.linkUrl))}}):_vm._e()],1)}),1),_vm._m(2)],1)])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"icon-arrow-left font-size-16 color-light position-rel\"},[_c('span',{staticClass:\"path1\"}),_c('span',{staticClass:\"path2\"})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"modal-viewer__prev cursor-pointer\"},[_c('i',{staticClass:\"icon-back font-size-36 color-light\"})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"modal-viewer__next cursor-pointer\"},[_c('i',{staticClass:\"icon-next1 font-size-36 color-light\"})])}]\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModalPreviewMedia.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModalPreviewMedia.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ModalPreviewMedia.vue?vue&type=template&id=2ee1b4d1&scoped=true&\"\nimport script from \"./ModalPreviewMedia.vue?vue&type=script&lang=js&\"\nexport * from \"./ModalPreviewMedia.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2ee1b4d1\",\n null\n \n)\n\nexport default component.exports","\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PrepareDocEdit.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PrepareDocEdit.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./PrepareDocEdit.vue?vue&type=template&id=48739cfb&scoped=true&\"\nimport script from \"./PrepareDocEdit.vue?vue&type=script&lang=js&\"\nexport * from \"./PrepareDocEdit.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PrepareDocEdit.vue?vue&type=style&index=0&id=48739cfb&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"48739cfb\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"prepare-exam\"},[_c('div',{staticClass:\"ss-breadcrumb\"},[_c('div',{staticClass:\"container-hts\"},[_c('ul',{staticClass:\"margin-0 p-0\"},[_c('li',[_c('router-link',{attrs:{\"to\":\"/danh-sach-de-thi\"}},[_vm._v(\"Danh sách đề thi\")])],1),_c('li',[_vm._v(\"Soạn đề thi\")])])])]),_c('div',{staticClass:\"prepare-exam__main\"},[_c('div',{staticClass:\"container-hts\"},[_c('form',{attrs:{\"novalidate\":\"\"}},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-lg-3\"},[_c('Sidebar',{on:{\"onSubmit\":_vm.handleSaveExam}})],1),_c('div',{staticClass:\"col-lg-9\"},[(_vm.indexQuestionWorking === -1)?_c('ExamInfo',{attrs:{\"isSubmit\":_vm.isSubmit}}):(_vm.indexQuestionWorking > -1)?_c('QuestionDetail'):_vm._e(),(_vm.indexQuestionWorking === -1)?_c('p',{staticClass:\"secondary-color-txt font-sanpro-semibold display-block font-size-18\"},[_vm._v(\"Xem trước\")]):_vm._e(),_c('div',{attrs:{\"id\":\"prepare_question_view\"}},[_c('QuestionView',{class:{'out-layout': _vm.indexQuestionWorking > -1}})],1)],1)])])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"prepare-exam__sidebar\"},[_c('div',{staticClass:\"prepare-exam__sidebar__info\"},[_c('div',{staticClass:\"prepare-exam__sidebar__actions display-flex-center justify-content-between\"},[_c('button',{staticClass:\"prepare-exam__sidebar__save btn btn-gray border-rd-20 font-sanpro-semibold font-size-17 primary-color display-flex-center justify-content-center\",attrs:{\"type\":\"submit\"},on:{\"click\":function($event){$event.preventDefault();return _vm.handleSaveExam.apply(null, arguments)}}},[_vm._v(\"\\n Lưu đề thi\\n \")]),_c('div',{staticClass:\"prepare-exam__sidebar__actions_other display-flex-center\"},[_c('a',{directives:[{name:\"b-tooltip\",rawName:\"v-b-tooltip.hover\",modifiers:{\"hover\":true}}],staticClass:\"prepare-exam__sidebar__view btn btn-gray border-rd-50 display-flex-center justify-content-center\",attrs:{\"href\":\"javascript:;\",\"title\":\"Xem đề thi\"},on:{\"click\":_vm.viewExam}},[_c('i',{staticClass:\"icon-eye font-size-20\"})]),_c('b-dropdown',{staticClass:\"prepare-exam__sidebar__more\",attrs:{\"id\":\"side-bar__more\"},scopedSlots:_vm._u([{key:\"button-content\",fn:function(){return [_c('a',{staticClass:\"btn btn-gray border-rd-50 display-flex-center justify-content-center\",attrs:{\"href\":\"javascript:;\"}},[_c('i',{staticClass:\"icon-more font-size-18\"})])]},proxy:true}])},[_c('b-dropdown-item',{attrs:{\"href\":\"javascript:;\"},on:{\"click\":function($event){return _vm.deleteExam()}}},[_vm._v(\"Xóa đề thi\")])],1)],1)]),_c('a',{staticClass:\"font-size-17 prepare-exam__sidebar__sub secondary-color-txt\",class:{'active': _vm.indexQuestionWorking === -1},attrs:{\"href\":\"javascript:;\"},on:{\"click\":function($event){$event.preventDefault();return _vm.handleViewExamInfo.apply(null, arguments)}}},[_vm._v(\"\\n Thông tin đề thi\\n \")]),_c('a',{staticClass:\"prepare-exam__sidebar__add-question font-size-17 secondary-color-txt display-flex-center\",attrs:{\"href\":\"javascript:;\"},on:{\"click\":function($event){return _vm.addNewQuestion()}}},[_c('i',{staticClass:\"icon-plus secondary-color-txt\"}),_vm._v(\" \\n Thêm câu hỏi\\n \")])]),_c('div',{staticClass:\"prepare-exam__sidebar__questions__scroll position-rel custom-scroll\",attrs:{\"id\":\"sidebar__questions\",\"settings\":{maxScrollbarLength: 300}}},[_c('ul',{staticClass:\"prepare-exam__sidebar__questions margin-0 p-0\"},_vm._l((_vm.questionList),function(item,index){return _c('li',{key:index,staticClass:\"cursor-pointer\",class:{'active': _vm.indexQuestionWorking === index},attrs:{\"id\":(\"question_sidebar_\" + index)},on:{\"click\":function($event){return _vm.handleWorkingQuestionDetail(item, index)}}},[_vm._v(\"\\n \"+_vm._s(item.title)+\"\\n \")])}),0)]),_c('a',{staticClass:\"font-size-17 primary-color prepare-exam__sidebar__guide\",attrs:{\"href\":\"javascript:;\"},on:{\"click\":_vm.openModalGuidePrepare}},[_vm._v(\"Hướng dẫn soạn đề\")]),(_vm.visiblePreviewModal)?_c('div',{staticClass:\"show-document\"},[_c('div',{staticClass:\"inner-content js-model active\"},[_c('ModalPreviewDocMedia'),_c('div',{staticClass:\"js-background-model active\",on:{\"click\":_vm.handleOffModal}})],1)]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { mapState, mapActions } from 'vuex'\r\nimport { STORE_KEY } from './constants'\r\nimport { scrollTo } from '@/helpers/functions'\r\nimport { TYPE_RADIO, TYPE_CHECKBOX } from '@/modules/question/preview-question/_store/constants'\r\n\r\nexport default {\r\n computed: {\r\n ...mapState(STORE_KEY, ['questionList']),\r\n \r\n },\r\n methods: {\r\n ...mapActions(STORE_KEY, ['acSetListQuestions', 'acSetQuestionIndexWorking', 'acSetQuestionDetail']),\r\n\r\n addNewQuestion () {\r\n let questions = this.questionList\r\n const questionLength = questions.length\r\n const orderNo = questions.length ? questions[questionLength - 1].orderNo + 1 : 0\r\n const questionNew = {questionId: 0, isNew: true, title: `Câu ${questionLength + 1}`, content: '', answers: [], guideContent: '',suggestion: '', answerDetail: '', layoutId: 1, type: TYPE_RADIO, orderNo}\r\n questions.push(questionNew)\r\n this.acSetListQuestions(questions)\r\n this.handleWorkingQuestionDetail(questionNew, questionLength)\r\n },\r\n\r\n handleWorkingQuestionDetail (data, index) {\r\n this.resetQuestionWorking()\r\n if (data.type === TYPE_CHECKBOX) {\r\n data['multiCorrectCheckbox'] = []\r\n }\r\n data.answers && data.answers.map((ans, index) => {\r\n if(ans.correct ) {\r\n ans['answerContent'] = ans.orderNo\r\n data.type === TYPE_CHECKBOX && data.multiCorrectCheckbox.push(ans.orderNo)\r\n }\r\n })\r\n this.acSetQuestionDetail(data)\r\n setTimeout(() => {\r\n this.acSetQuestionIndexWorking(index)\r\n this.setScrollToCat(index)\r\n }, 100)\r\n },\r\n\r\n resetQuestionWorking () {\r\n this.acSetQuestionDetail({})\r\n this.acSetQuestionIndexWorking(-1)\r\n },\r\n\r\n setScrollToCat(index) {\r\n let elem = document.getElementById(`question_sidebar_${index}`);\r\n if(elem) {\r\n let topPos = elem.offsetTop;\r\n scrollTo(document.getElementById('sidebar__questions'), topPos, 600);\r\n }\r\n },\r\n }\r\n}","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Sidebar.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Sidebar.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Sidebar.vue?vue&type=template&id=029746f7&scoped=true&\"\nimport script from \"./Sidebar.vue?vue&type=script&lang=js&\"\nexport * from \"./Sidebar.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Sidebar.vue?vue&type=style&index=0&id=029746f7&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"029746f7\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"prepare-exam__info\"},[_c('div',{staticClass:\"form-group\"},[_vm._m(0),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.examInfo.name),expression:\"examInfo.name\"}],staticClass:\"form-h35 border-rd-20 color_bg_gray_light full-width border-0\",class:{'form-item-err': _vm.isSubmit && !_vm.examInfo.name},attrs:{\"type\":\"text\"},domProps:{\"value\":(_vm.examInfo.name)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.examInfo, \"name\", $event.target.value)}}}),(_vm.isSubmit && !_vm.examInfo.name)?_c('div',{staticClass:\"invalid mt-2 color-err font-size-15\"},[_vm._v(\"Vui lòng nhập tiêu đề\")]):_vm._e()]),_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-xl-6\"},[_c('div',{staticClass:\"form-group__item\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-sm-6\"},[_c('div',{staticClass:\"form-item\"},[_vm._m(1),_c('div',{staticClass:\"item item__class input-custom-icon select-custom\"},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.examInfo.classId),expression:\"examInfo.classId\"}],staticClass:\"primary-color-txt border-rd-20 font-size-15 form-h35 color_bg_gray_light border-0 full-width\",class:{'form-item-err': _vm.isSubmit && !_vm.examInfo.classId},on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.examInfo, \"classId\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])}}},_vm._l((_vm.classesExam),function(item,index){return _c('option',{key:index,domProps:{\"value\":item.classId}},[_vm._v(_vm._s(item.name))])}),0),_c('i',{staticClass:\"icon-arrow-down font-size-13 primary-color\"})]),(_vm.isSubmit && !_vm.examInfo.classId)?_c('div',{staticClass:\"invalid mt-2 color-err font-size-15\"},[_vm._v(\"Vui lòng chọn lớp\")]):_vm._e()])]),_c('div',{staticClass:\"col-sm-6\"},[_c('div',{staticClass:\"form-item\"},[_c('label',{staticClass:\"display-block secondary-color-txt font-sanpro-semibold\"},[_vm._v(\"Môn\")]),_c('div',{staticClass:\"item item__class input-custom-icon select-custom\"},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.examInfo.subjectId),expression:\"examInfo.subjectId\"}],staticClass:\"primary-color-txt border-rd-20 font-size-15 form-h35 color_bg_gray_light border-0 full-width\",on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.examInfo, \"subjectId\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])}}},_vm._l((_vm.subjectsExam),function(item,index){return _c('option',{key:index,domProps:{\"value\":item.subjectId}},[_vm._v(_vm._s(item.name))])}),0),_c('i',{staticClass:\"icon-arrow-down font-size-13 primary-color\"})])])])])])]),_c('div',{staticClass:\"col-xl-6\"},[_c('div',{staticClass:\"form-group__item\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-sm-6\"},[_c('div',{staticClass:\"form-item\"},[_vm._m(2),_c('div',{staticClass:\"item item__class input-custom-icon select-custom\"},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.examInfo.timeToDo),expression:\"examInfo.timeToDo\"}],staticClass:\"primary-color-txt border-rd-20 font-size-15 form-h35 color_bg_gray_light border-0 full-width\",class:{'form-item-err': _vm.isSubmit && !_vm.examInfo.timeToDo},on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.examInfo, \"timeToDo\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])}}},_vm._l((_vm.examTimesToDo),function(item,index){return _c('option',{key:index,domProps:{\"value\":item.value}},[_vm._v(_vm._s(item.name))])}),0),_c('i',{staticClass:\"icon-arrow-down font-size-13 primary-color\"})]),(_vm.isSubmit && !_vm.examInfo.timeToDo)?_c('div',{staticClass:\"invalid mt-2 color-err font-size-15\"},[_vm._v(\"Vui lòng chọn Đề thi/ Bài kiểm tra\")]):_vm._e()])]),_c('div',{staticClass:\"col-sm-6\"},[_c('div',{staticClass:\"form-item\"},[_c('label',{staticClass:\"display-block secondary-color-txt font-sanpro-semibold\"},[_vm._v(\"Mã đề\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.examInfo.code),expression:\"examInfo.code\"}],staticClass:\"form-h35 border-rd-20 color_bg_gray_light full-width border-0\",attrs:{\"type\":\"text\"},domProps:{\"value\":(_vm.examInfo.code)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.examInfo, \"code\", $event.target.value)}}})])])])])])])]),_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md-6\"},[_c('div',{staticClass:\"form-item\"},[_c('label',{staticClass:\"display-block secondary-color-txt font-sanpro-semibold\"},[_vm._v(\"Trường\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.examInfo.schoolName),expression:\"examInfo.schoolName\"}],staticClass:\"form-h35 border-rd-20 color_bg_gray_light full-width border-0\",attrs:{\"type\":\"text\"},domProps:{\"value\":(_vm.examInfo.schoolName)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.examInfo, \"schoolName\", $event.target.value)}}})])]),_c('div',{staticClass:\"col-md-6\"},[_c('div',{staticClass:\"form-item\"},[_c('label',{staticClass:\"display-block secondary-color-txt font-sanpro-semibold\"},[_vm._v(\"Tên giáo viên\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.examInfo.teacherName),expression:\"examInfo.teacherName\"}],staticClass:\"form-h35 border-rd-20 color_bg_gray_light full-width border-0\",attrs:{\"type\":\"text\"},domProps:{\"value\":(_vm.examInfo.teacherName)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.examInfo, \"teacherName\", $event.target.value)}}})])])])]),_c('div',{staticClass:\"form-group\"},[_c('label',{staticClass:\"display-block secondary-color-txt font-sanpro-semibold\"},[_vm._v(\"Chú thích\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.examInfo.note),expression:\"examInfo.note\"}],staticClass:\"form-h35 border-rd-20 color_bg_gray_light full-width border-0\",attrs:{\"type\":\"text\"},domProps:{\"value\":(_vm.examInfo.note)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.examInfo, \"note\", $event.target.value)}}})])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('label',{staticClass:\"display-block secondary-color-txt font-sanpro-semibold\"},[_vm._v(\"Tiêu đề \"),_c('span',{staticClass:\"color-err\"},[_vm._v(\"*\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('label',{staticClass:\"display-block secondary-color-txt font-sanpro-semibold\"},[_vm._v(\"Lớp \"),_c('span',{staticClass:\"color-err\"},[_vm._v(\"*\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('label',{staticClass:\"display-block secondary-color-txt font-sanpro-semibold\"},[_vm._v(\"Đề thi/ Bài kiểm tra \"),_c('span',{staticClass:\"color-err\"},[_vm._v(\"*\")])])}]\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ExamInfo.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ExamInfo.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ExamInfo.vue?vue&type=template&id=38883808&\"\nimport script from \"./ExamInfo.vue?vue&type=script&lang=js&\"\nexport * from \"./ExamInfo.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"prepare-question\"},[_c('QuestionHead',{attrs:{\"isSubmit\":_vm.isSubmit}}),(_vm.questionDetail.type === _vm.typeRadio)?_c('QuestionChoice',{attrs:{\"isSubmit\":_vm.isSubmit,\"notCorrect\":_vm.notCorrect}}):(_vm.questionDetail.type === _vm.typeCheckbox)?_c('QuestionMultiChoice',{attrs:{\"isSubmit\":_vm.isSubmit,\"notCorrect\":_vm.notCorrect}}):(_vm.questionDetail.type === _vm.typeDownAnswer)?_c('QuestionDownAnswer',{attrs:{\"isSubmit\":_vm.isSubmit}}):_vm._e(),_c('a',{staticClass:\"btn btn-gray btn-add-question font-size-16 display-flex-center justify-content-center border-rd-4 full-width primary-color font-sanpro-semibold\",attrs:{\"href\":\"javascript:;\"},on:{\"click\":function($event){return _vm.addNewQuestion()}}},[_c('i',{staticClass:\"icon-plus\"}),_vm._v(\" Thêm câu hỏi\\n \")]),_c('div',{staticClass:\"prepare-question__footer justify-content-end display-flex mt-4\"},[_c('div',{staticClass:\"display-flex-center\"},[_c('a',{staticClass:\"color-err font-size-16 font-sanpro-semibold\",attrs:{\"href\":\"javascript:;\"},on:{\"click\":function($event){$event.preventDefault();return _vm.removeQuestion()}}},[_vm._v(\"Xóa câu hỏi\")])]),_c('span',{staticClass:\"secondary-color-txt font-sanpro-light font-size-15\"},[_vm._v(\"Giáo viên lưu ý thường xuyên bấm \\\"Lưu đề thi\\\" để cập nhật nội dung đề thi\")])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"prepare-question__head\"},[_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-lg-8 col-xl-9\"},[_c('div',{staticClass:\"display-flex form-group__cat-title\"},[_c('div',{staticClass:\"form-item full-width\"},[_c('label',{staticClass:\"display-block secondary-color-txt font-sanpro-semibold\"},[_vm._v(\"Thể loại\")]),_c('div',{staticClass:\"item item__class input-custom-icon select-custom\"},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.questionDetail.type),expression:\"questionDetail.type\"}],staticClass:\"primary-color-txt border-rd-20 font-size-15 form-h35 color_bg_gray_light border-0 full-width\",on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.questionDetail, \"type\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])}}},_vm._l((_vm.question_format),function(item,index){return _c('option',{key:index,domProps:{\"value\":item.value}},[_vm._v(_vm._s(item.name))])}),0),_c('i',{staticClass:\"icon-arrow-down font-size-13 primary-color\"})])]),_c('div',{staticClass:\"form-item full-width\"},[_vm._m(0),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.questionDetail.title),expression:\"questionDetail.title\"}],staticClass:\"form-h35 color_bg_gray_light border-0 full-width border-rd-20\",class:{'form-item-err': _vm.isSubmit && !_vm.questionDetail.title},attrs:{\"type\":\"text\",\"name\":\"title\",\"autocomplete\":\"off\"},domProps:{\"value\":(_vm.questionDetail.title)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.questionDetail, \"title\", $event.target.value)}}}),(_vm.isSubmit && !_vm.questionDetail.title)?_c('div',{staticClass:\"form-item__noti color-err font-size-15 mt-2\"},[_vm._v(\"Bạn hãy nhập vào tiêu đề\")]):_vm._e()])])]),_c('div',{staticClass:\"col-lg-4 col-xl-3\"},[_c('div',{staticClass:\"form-item text-right\"},[_c('a',{staticClass:\"font-size-17 primary-color\",attrs:{\"href\":\"javascript:;\"},on:{\"click\":_vm.viewQuestionSaved}},[_vm._v(\"Câu hỏi có sẵn\")])])])])]),_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"form-file-hide position-rel img-layout\"},[(_vm.questionDetail.imageUrl)?[_c('button',{directives:[{name:\"b-tooltip\",rawName:\"v-b-tooltip.hover\",modifiers:{\"hover\":true}}],staticClass:\"btn btn-danger del-img del-img-question position-rel float-right ml-4\",attrs:{\"title\":\"Xóa ảnh\",\"variant\":\"outline-danger\"},on:{\"click\":_vm.delImgOfQuestion}},[_c('i',{staticClass:\"icon-lesson-trash color-light font-size-18\"})]),_c('img',{staticClass:\"img-question\",attrs:{\"src\":_vm.questionDetail.isSample ? (_vm.cdnUrl + \"/\" + (_vm.questionDetail.imageUrl)):(_vm.appUrl + \"/\" + (_vm.questionDetail.imageUrl)),\"alt\":\"Ảnh câu hỏi\"}})]:_c('a',{staticClass:\"full-box display-flex-center justify-content-center flex-direction-col font-size-16 border-rd-20\",attrs:{\"href\":\"javascript:;\"}},[_c('i',{staticClass:\"icon-upload d-block\"}),_c('span',{staticClass:\"d-block secondary-color-txt\"},[_vm._v(\"Tải ảnh câu hỏi\")])]),_c('input',{staticClass:\"ipt-upload cursor-pointer\",attrs:{\"type\":\"file\",\"accept\":\"image/*\"},on:{\"change\":function($event){return _vm.changeImgQuestion($event)}}})],2)]),_c('div',{staticClass:\"form-group\"},[_vm._m(1),_c('div',{staticClass:\"form-item__editor\",class:{ 'form-item-err': _vm.isSubmit && (!_vm.questionDetail.content || (_vm.questionDetail.content && _vm.questionDetail.content === _vm.contentDefault)) }},[(_vm.indexQuestionWorking > -1)?_c('EditorCK',{attrs:{\"contentEditor\":_vm.questionDetail.content,\"position\":_vm.indexQuestionWorking}}):_vm._e()],1),(_vm.isSubmit && (!_vm.questionDetail.content || (_vm.questionDetail.content && _vm.questionDetail.content === _vm.contentDefault)))?_c('div',{staticClass:\"form-item__noti color-err font-size-15 mt-2\"},[_vm._v(\"\\n Bạn hãy nhập vào nội dung câu hỏi\\n \")]):_vm._e()]),_c('ModalQuestionSample')],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('label',{staticClass:\"display-block secondary-color-txt font-sanpro-semibold\"},[_vm._v(\"Tiêu đề \"),_c('span',{staticClass:\"color-err\"},[_vm._v(\"*\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('label',{staticClass:\"display-block secondary-color-txt font-sanpro-semibold\"},[_vm._v(\"Câu hỏi \"),_c('span',{staticClass:\"color-err\"})])}]\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app-cke\"},on:{\"mouseleave\":_vm.mouseLeave}},[_c('vue-ckeditor',{attrs:{\"id\":(\"myQuillEditor_\" + _vm.position),\"config\":_vm.config},on:{\"blur\":function($event){return _vm.onBlur($event)},\"focus\":function($event){return _vm.onFocus($event)}},model:{value:(_vm.content),callback:function ($$v) {_vm.content=$$v},expression:\"content\"}}),_c('input',{ref:\"upImg\",staticClass:\"display-none\",attrs:{\"type\":\"file\",\"name\":\"\",\"id\":\"upImg\",\"accept\":\"image/*\"},on:{\"change\":_vm.uploadImage}}),_c('input',{ref:\"upMedia\",staticClass:\"display-none\",attrs:{\"type\":\"file\",\"accept\":_vm.typeUpload === 'video' ? 'video/mp4,video/x-m4v,video/*' : 'audio/*'},on:{\"change\":_vm.uploadMedia}}),_c('b-modal',{attrs:{\"id\":(\"modal_upload_q_\" + _vm.position),\"hide-footer\":\"\"},scopedSlots:_vm._u([{key:\"modal-title\",fn:function(){return [_vm._v(\"\\n\\t \\t\\tTải lên media\\n\\t \\t\")]},proxy:true}])},[_c('div',{staticClass:\"d-block text-center\"},[_c('div',{staticClass:\"form-group\"},[_c('label',{staticClass:\"display-block font-weight-bold\"},[_vm._v(\"Tải \"+_vm._s(_vm.typeUpload === 'image' ? 'ảnh' : 'media')+\" thông qua link\")]),_c('input',{ref:\"link_media\",staticClass:\"form-control full-width\",attrs:{\"type\":\"text\"}})]),_c('p',{staticClass:\"display-block text-center full-width hr-center position-rel\"},[_c('span',{staticClass:\"position-rel\"},[_vm._v(\"Hoặc\")])]),_c('div',{staticClass:\"form-group form-editor-media position-rel text-center display-flex-center justify-content-center\"},[_c('span',{staticClass:\"margin-0\"},[_vm._v(\"Tải lên \"+_vm._s(_vm.typeUpload === 'image' ? 'ảnh' : 'media'))]),(_vm.typeUpload === 'image')?_c('input',{ref:\"upImg\",attrs:{\"type\":\"file\",\"name\":\"\",\"id\":\"upImg\",\"accept\":\"image/*\"},on:{\"change\":_vm.uploadImage}}):_c('input',{ref:\"upMedia\",attrs:{\"type\":\"file\",\"accept\":_vm.typeUpload === 'video' ? 'video/mp4,video/x-m4v,video/*' : 'audio/*'},on:{\"change\":_vm.uploadMedia}})])])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditorCK.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditorCK.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./EditorCK.vue?vue&type=template&id=244bd19d&scoped=true&\"\nimport script from \"./EditorCK.vue?vue&type=script&lang=js&\"\nexport * from \"./EditorCK.vue?vue&type=script&lang=js&\"\nimport style0 from \"./EditorCK.vue?vue&type=style&index=0&id=244bd19d&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"244bd19d\",\n null\n \n)\n\nexport default component.exports","import { mapState, mapActions } from 'vuex'\r\nimport { STORE_KEY } from './constants'\r\nimport { uploadImg } from '@/store/common/api';\r\nimport { CHANGE_TXT_QUESTION, CHANGE_TXT_ANSWER } from '@/store/common/constants';\r\nimport * as typeQuestion from '@/modules/question/preview-question/_store/constants'\r\n\r\nexport default {\r\n data () {\r\n return {\r\n multiCorrectCheckbox: []\r\n }\r\n },\r\n props: {\r\n positionQuestionGroup: Number,\r\n isQuestionGroup: Boolean,\r\n questionType: String\r\n },\r\n computed: {\r\n ...mapState(STORE_KEY, ['indexQuestionWorking', 'questionDetail', 'questionList'])\r\n },\r\n mounted () {\r\n this.$bus.on(`${CHANGE_TXT_QUESTION}_${this.indexQuestionWorking}`, this.handleChangeTxtQuestion)\r\n this.$bus.on(`${CHANGE_TXT_ANSWER}_${this.indexQuestionWorking}`, this.handleChangeTxtAnswer)\r\n },\r\n beforeDestroy() {\r\n this.$bus.off(`${CHANGE_TXT_QUESTION}_${this.indexQuestionWorking}`, this.handleChangeTxtQuestion)\r\n this.$bus.off(`${CHANGE_TXT_ANSWER}_${this.indexQuestionWorking}`, this.handleChangeTxtAnswer)\r\n },\r\n methods: {\r\n // ...mapActions(STORE_KEY, ['workQuestion']),\r\n ...mapActions('common', ['setLoading']),\r\n ...mapActions(STORE_KEY, ['acSetQuestionDetail']),\r\n\r\n setStyleQuestion(val) {\r\n this.acSetQuestionDetail({...this.questionDetail, layoutId: val});\r\n },\r\n\r\n changeImgAnswerItem(evt, index) {\r\n if (evt.target.files.length > 0) {\r\n let self = this;\r\n self.setLoading(true);\r\n uploadImg(evt).then(res => {\r\n if(!self.isQuestionGroup) {\r\n self.questionDetail.answers[index]['imageUrl'] = res\r\n } \r\n }).catch().finally(() => self.setLoading(false));\r\n }\r\n },\r\n\r\n delImgOfAnswer(evt, index) {\r\n this.questionDetail.answers[index].imageUrl = ''\r\n this.acSetQuestionDetail({...this.questionDetail})\r\n },\r\n\r\n handleChangeTxtQuestion (val) {\r\n // console.log('Question content: ', val)\r\n this.questionDetail.content = val.html\r\n },\r\n\r\n handleChangeTxtAnswer (val) {\r\n // console.log('Handle change content answer: ', val)\r\n this.questionDetail.answers[val.answer].content = val.html\r\n },\r\n\r\n addNewAnswer () {\r\n let lengthAnswers = this.questionDetail.answers.length\r\n let answerNew = {answerId: 0, isNew: true, content: '', orderNo: lengthAnswers, correct: '', imageUrl: ''}\r\n this.questionDetail.answers.push(answerNew)\r\n this.acSetQuestionDetail({...this.questionDetail})\r\n },\r\n\r\n removeAnswer (index) {\r\n this.questionDetail.answers.splice(index, 1)\r\n this.acSetQuestionDetail({...this.questionDetail})\r\n },\r\n\r\n changeAnswerCorrect (e, data, index) {\r\n let self = this;\r\n let typeQuestionCurr = self.questionDetail.type;\r\n if(typeQuestionCurr === typeQuestion.TYPE_RADIO) {\r\n self.multiCorrectCheckbox = e;\r\n } else {\r\n if(!self.questionDetail.multiCorrectCheckbox || !Array.isArray(self.questionDetail.multiCorrectCheckbox)) {\r\n self.questionDetail.multiCorrectCheckbox = []\r\n }\r\n if((e || e === 0) && e > -1) {\r\n self.questionDetail.multiCorrectCheckbox.push(e)\r\n } else {\r\n let indexAnswer = self.questionDetail.multiCorrectCheckbox.indexOf(data.orderNo)\r\n indexAnswer > -1 && self.questionDetail.multiCorrectCheckbox.splice(indexAnswer, 1)\r\n }\r\n }\r\n self.questionDetail.answers.map(ans => {\r\n ans.correct && delete ans.correct;\r\n ans.answerContent && delete ans.answerContent;\r\n if(typeQuestionCurr === typeQuestion.TYPE_RADIO && ans.orderNo === parseInt(e)) {\r\n ans.correct = ans.content;\r\n ans.answerContent = ans.orderNo;\r\n } else if(Array.isArray(self.questionDetail.multiCorrectCheckbox) && (ans.orderNo || ans.orderNo === 0) && self.questionDetail.multiCorrectCheckbox.includes(ans.orderNo)) {\r\n ans.correct = ans.content;\r\n ans.answerContent = ans.orderNo;\r\n }\r\n })\r\n self.acSetQuestionDetail({...self.questionDetail})\r\n },\r\n }\r\n}","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-modal',{staticClass:\"modal-info modal-prepare__detail question-available\",attrs:{\"id\":_vm.idModalQuestionSample,\"hide-footer\":\"\",\"hide-header\":\"\",\"size\":\"xl\",\"scrollable\":\"\",\"centered\":\"\",\"no-close-on-esc\":\"\",\"no-close-on-backdrop\":\"\"},on:{\"show\":_vm.getDatas,\"hidden\":_vm.handleCloseModal}},[_c('div',{staticClass:\"modal-info__body primary-color-txt font-sanpro-light bg-color-light display-flex full-box\"},[_c('div',{staticClass:\"modal-question__left\"},[_c('h2',{staticClass:\"primary-color-txt font-size-20 font-sanpro-semibold\"},[_vm._v(\"Câu hỏi có sẵn\")]),_c('div',{staticClass:\"modal-question__classes\"},[(_vm.bookIdQuestions && _vm.bookIdQuestions > 0)?_c('SidebarCatsOfBook',{attrs:{\"keyword\":_vm.keyword}}):(_vm.paramFilterQuestionsByChapter.chapterId > 0 )?_c('SidebarCatsOfAutoTest',{attrs:{\"keyword\":_vm.keyword}}):(_vm.paramFilterQuestionsByChapter.examId > 0 )?_c('SidebarCatsOfExam',{attrs:{\"keyword\":_vm.keyword}}):_c('SidebarClassesModal')],1)]),_c('div',{staticClass:\"modal-question__right position-rel\"},[((_vm.bookIdQuestions && _vm.bookIdQuestions > 0) || _vm.paramFilterQuestionsByChapter.chapterId > 0)?_c('div',{staticClass:\"modal-question__right__head display-flex-center justify-content-between\"},[_c('span',{staticClass:\"font-size-18 font-sanpro-semibold primary-color-txt\"},[_vm._v(\"Đã chọn \"+_vm._s(_vm.questionsChoose.length)+\" câu\")]),_c('div',{staticClass:\"item item__key input-custom-icon\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model.lazy\",value:(_vm.keyword),expression:\"keyword\",modifiers:{\"lazy\":true}},{name:\"debounce\",rawName:\"v-debounce\",value:(300),expression:\"300\"}],staticClass:\"primary-color-txt color_bg_gray_light border-rd-20 font-size-16 form-h30 border-0 full-width input-search\",attrs:{\"type\":\"text\",\"placeholder\":\"Tìm kiếm\"},domProps:{\"value\":(_vm.keyword)},on:{\"change\":function($event){_vm.keyword=$event.target.value}}}),_c('i',{staticClass:\"icon-search font-size-16 primary-color\"})])]):_vm._e(),_c('div',{staticClass:\"modal-question__right__body\"},[((_vm.bookIdQuestions && _vm.bookIdQuestions > 0) || _vm.paramFilterQuestionsByChapter.chapterId > 0 || _vm.paramFilterQuestionsByChapter.examId >0)?_c('ModalQuestionSampleList'):_c('div',{staticClass:\"modal-question__right__body__sub\"},[_c('ModalQuestionsInBook',{attrs:{\"dataSource\":_vm.listPracticeBook}}),_c('ModalQuestionsAutoTest',{attrs:{\"dataSource\":_vm.listPracticeTKTDG}}),(_vm.listPracticeThematic && _vm.listPracticeThematic.length >0)?_c('ModalThematic',{attrs:{\"dataSource\":_vm.listPracticeThematic}}):_vm._e(),(_vm.listPracticeExam && _vm.listPracticeExam.length >0)?_c('ModalExam',{attrs:{\"dataSource\":_vm.listPracticeExam}}):_vm._e()],1)],1),_c('div',{staticClass:\"modal-question__right__bottom display-flex-center justify-content-end\"},[_c('a',{staticClass:\"primary-color font-size-16 font-sanpro-semibold btn-close\",attrs:{\"href\":\"javascript:;\"},on:{\"click\":function($event){return _vm.$bvModal.hide(_vm.idModalQuestionSample)}}},[_vm._v(\"\\n Hủy\\n \")]),_c('a',{staticClass:\"btn btn-main font-size-16 font-sanpro-semibold display-flex-center justify-content-center border-rd-20\",attrs:{\"href\":\"javascript:;\"},on:{\"click\":_vm.doneSetQuestionSample}},[_vm._v(\"\\n Hoàn thành\\n \")])])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"modal-sidebar__classes\"},_vm._l((_vm.classesExam),function(item,index){return _c('b-card',{key:index,staticClass:\"card-item border-0 secondary-color-txt bg-transparent\",class:{'active':true},attrs:{\"card\":\"\",\"no-body\":\"\"}},[_c('div',{staticClass:\"card-wrap display-block\"},[_c('b-card-header',{staticClass:\"border-0 border-rd-8 display-flex-center secondary-color-txt font-size-16 bg-transparent cursor-pointer\",class:{'active primary-color font-sanpro-semibold': _vm.collapseOpen === item.classId || _vm.paramsGetQuestionsSample.classId === item.classId},attrs:{\"header-tag\":\"header\",\"role\":\"tab\"},on:{\"click\":function($event){return _vm.openCollapse((\"cat_\" + (item.classId)), item, index)}}},[_vm._v(\"\\n \"+_vm._s(item.name)+\"\\n \")]),_c('b-collapse',{attrs:{\"id\":(\"cat_\" + (item.classId)),\"visible\":item.classId === _vm.paramsGetQuestionsSample.classId,\"accordion\":\"my-accordion\",\"role\":\"tabpanel\"}},[_c('b-card-body',{staticClass:\"p-0\"},[_c('ul',{staticClass:\"cat-child margin-0\"},_vm._l((item.subjects),function(child,pos){return _c('li',{key:pos,staticClass:\"d-block\"},[_c('a',{staticClass:\"font-sanpro primary-color-txt font-size-16 display-flex justify-content-between full-width\",class:{'active': _vm.tabActive === child.subjectId},attrs:{\"href\":\"javascript:;\"},on:{\"click\":function($event){return _vm.changeSubjects(child,item.classId)}}},[_vm._v(\"\\n \"+_vm._s(child.name)+\"\\n \")])])}),0)])],1)],1)])}),1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarClassesModal.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarClassesModal.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SidebarClassesModal.vue?vue&type=template&id=14da2d92&scoped=true&\"\nimport script from \"./SidebarClassesModal.vue?vue&type=script&lang=js&\"\nexport * from \"./SidebarClassesModal.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SidebarClassesModal.vue?vue&type=style&index=0&id=14da2d92&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"14da2d92\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"exam-question__slide\"},[_vm._m(0),_c('div',{staticClass:\"exam-question__slide__list\"},[(_vm.dataSource && _vm.dataSource.length > 0)?_c('swiper',{staticClass:\"swiper\",attrs:{\"options\":_vm.swiperOption}},[_vm._l((_vm.dataSource),function(item,index){return _c('swiper-slide',{key:index},[_c('div',{staticClass:\"item__wrap position-rel text-center\"},[_c('div',{staticClass:\"item__head aspect-ratio aspect-ratio--4-3 bg-transparent\"},[_c('a',{attrs:{\"href\":\"javascript:;\"},on:{\"click\":function($event){return _vm.viewQuestionByBook(item)}}},[_c('img',{directives:[{name:\"lazy\",rawName:\"v-lazy\",value:(item.imageUrl && item.imageUrl !== null ? _vm.replaceLink(item.imageUrl): _vm.imgHs7),expression:\"item.imageUrl && item.imageUrl !== null ? replaceLink(item.imageUrl): imgHs7\"}],staticClass:\"inner-img border-rd-8\"})])]),_c('div',{staticClass:\"item__body\"},[_c('h3',{staticClass:\"item__name font-size-18 font-sanpro-semibold primary-color-txt\",on:{\"click\":function($event){return _vm.viewQuestionByBook(item)}}},[_c('a',{staticClass:\"primary-color-txt\",attrs:{\"href\":\"javascript:;\"}},[_vm._v(\"\\n \"+_vm._s(item.name)+\"\\n \")])]),_c('p',{staticClass:\"margin-0 secondary-color-txt font-size-14\"},[_vm._v(\"Năm xuất bản: \"+_vm._s(item.manufactureYear))])])])])}),_c('div',{staticClass:\"swiper-button-prev question_slide_prev\",attrs:{\"slot\":\"button-prev\"},slot:\"button-prev\"}),_c('div',{staticClass:\"swiper-button-next question_slide_next\",attrs:{\"slot\":\"button-next\"},slot:\"button-next\"})],2):_c('p',{staticClass:\"secondary-color-txt font-size-18 text-center\"},[_vm._v(\"Không có dữ liệu phù hợp\")])],1)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"exam-question__slide__head\"},[_c('h3',{staticClass:\"font-size-20 primary-color-txt font-sanpro-semibold\"},[_vm._v(\"Sách\")])])}]\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModalQuestionsInBook.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModalQuestionsInBook.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ModalQuestionsInBook.vue?vue&type=template&id=0dd46eac&scoped=true&\"\nimport script from \"./ModalQuestionsInBook.vue?vue&type=script&lang=js&\"\nexport * from \"./ModalQuestionsInBook.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ModalQuestionsInBook.vue?vue&type=style&index=0&id=0dd46eac&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0dd46eac\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"exam-question__slide\"},[_vm._m(0),_c('div',{staticClass:\"exam-question__slide__list position-rel\"},[(_vm.dataSource && _vm.dataSource.length > 0)?_c('swiper',{staticClass:\"swiper\",attrs:{\"options\":_vm.swiperOption}},[_vm._l((_vm.dataSource),function(item,index){return _c('swiper-slide',{directives:[{name:\"show\",rawName:\"v-show\",value:(item.countQuestion),expression:\"item.countQuestion\"}],key:index},[_c('div',{staticClass:\"item__wrap position-rel text-center\"},[_c('div',{staticClass:\"item__head aspect-ratio aspect-ratio--16-9\"},[_c('a',{attrs:{\"href\":\"javascript:;\"},on:{\"click\":function($event){return _vm.handleViewQuestionByChapter(item)}}},[_c('img',{directives:[{name:\"lazy\",rawName:\"v-lazy\",value:(item.contentURL && item.contentURL !== null ?_vm.cdnUrl+item.contentURL: _vm.img404),expression:\"item.contentURL && item.contentURL !== null ?cdnUrl+item.contentURL: img404\"}],staticClass:\"inner-img\"})])]),_c('div',{staticClass:\"item__body\"},[_c('h3',{staticClass:\"item__name font-size-18 font-sanpro-semibold primary-color-txt\",on:{\"click\":function($event){return _vm.handleViewQuestionByChapter(item)}}},[_c('a',{staticClass:\"primary-color-txt\",attrs:{\"href\":\"javascript:;\"}},[_vm._v(\"\\n \"+_vm._s(item.title)+\"\\n \")])])])])])}),_c('div',{staticClass:\"swiper-button-prev question_slide_prev\",attrs:{\"slot\":\"button-prev\"},slot:\"button-prev\"}),_c('div',{staticClass:\"swiper-button-next question_slide_next\",attrs:{\"slot\":\"button-next\"},slot:\"button-next\"})],2):_c('p',{staticClass:\"secondary-color-txt font-size-18 text-center\"},[_vm._v(\"Không có dữ liệu phù hợp\")])],1)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"exam-question__slide__head\"},[_c('h3',{staticClass:\"font-size-20 primary-color-txt font-sanpro-semibold\"},[_vm._v(\"Chuyên đề\")])])}]\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModalThematic.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModalThematic.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ModalThematic.vue?vue&type=template&id=2233a521&scoped=true&\"\nimport script from \"./ModalThematic.vue?vue&type=script&lang=js&\"\nexport * from \"./ModalThematic.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ModalThematic.vue?vue&type=style&index=0&id=2233a521&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2233a521\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"exam-question__slide\"},[_vm._m(0),_c('div',{staticClass:\"exam-question__slide__list position-rel\"},[(_vm.dataSource && _vm.dataSource.length > 0)?_c('swiper',{staticClass:\"swiper\",attrs:{\"options\":_vm.swiperOption}},[_vm._l((_vm.dataSource),function(item,index){return _c('swiper-slide',{directives:[{name:\"show\",rawName:\"v-show\",value:(item.numberQuestion),expression:\"item.numberQuestion\"}],key:index},[_c('div',{staticClass:\"item__wrap position-rel text-center\"},[_c('div',{staticClass:\"item__head aspect-ratio aspect-ratio--16-9\"},[_c('a',{attrs:{\"href\":\"javascript:;\"},on:{\"click\":function($event){return _vm.handleViewQuestionByChapter(item)}}},[_c('img',{directives:[{name:\"lazy\",rawName:\"v-lazy\",value:(item.contentURL && item.contentURL !== null ?_vm.cdnUrl+item.contentURL: _vm.img404),expression:\"item.contentURL && item.contentURL !== null ?cdnUrl+item.contentURL: img404\"}],staticClass:\"inner-img\"})])]),_c('div',{staticClass:\"item__body\"},[_c('h3',{staticClass:\"item__name font-size-18 font-sanpro-semibold primary-color-txt\",on:{\"click\":function($event){return _vm.handleViewQuestionByChapter(item)}}},[_c('a',{staticClass:\"primary-color-txt\",attrs:{\"href\":\"javascript:;\"}},[_vm._v(\"\\n \"+_vm._s(item.name)+\"\\n \")])])])])])}),_c('div',{staticClass:\"swiper-button-prev question_slide_prev\",attrs:{\"slot\":\"button-prev\"},slot:\"button-prev\"}),_c('div',{staticClass:\"swiper-button-next question_slide_next\",attrs:{\"slot\":\"button-next\"},slot:\"button-next\"})],2):_c('p',{staticClass:\"secondary-color-txt font-size-18 text-center\"},[_vm._v(\"Không có dữ liệu phù hợp\")])],1)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"exam-question__slide__head\"},[_c('h3',{staticClass:\"font-size-20 primary-color-txt font-sanpro-semibold\"},[_vm._v(\"Đề thi\")])])}]\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModalExam.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModalExam.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ModalExam.vue?vue&type=template&id=0e83e467&scoped=true&\"\nimport script from \"./ModalExam.vue?vue&type=script&lang=js&\"\nexport * from \"./ModalExam.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ModalExam.vue?vue&type=style&index=0&id=0e83e467&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0e83e467\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"exam-question__slide\"},[_vm._m(0),_c('div',{staticClass:\"exam-question__slide__list position-rel\"},[(_vm.dataSource && _vm.dataSource.length > 0)?_c('swiper',{staticClass:\"swiper\",attrs:{\"options\":_vm.swiperOption}},[_vm._l((_vm.dataSource),function(item,index){return _c('swiper-slide',{directives:[{name:\"show\",rawName:\"v-show\",value:(item.countQuestion),expression:\"item.countQuestion\"}],key:index},[_c('div',{staticClass:\"item__wrap position-rel text-center\"},[_c('div',{staticClass:\"item__head aspect-ratio aspect-ratio--16-9\"},[_c('a',{attrs:{\"href\":\"javascript:;\"},on:{\"click\":function($event){return _vm.handleViewQuestionByChapter(item)}}},[_c('img',{directives:[{name:\"lazy\",rawName:\"v-lazy\",value:(item.contentURL && item.contentURL !== null ?_vm.cdnUrl+item.contentURL: _vm.img404),expression:\"item.contentURL && item.contentURL !== null ?cdnUrl+item.contentURL: img404\"}],staticClass:\"inner-img\"})])]),_c('div',{staticClass:\"item__body\"},[_c('h3',{staticClass:\"item__name font-size-18 font-sanpro-semibold primary-color-txt\",on:{\"click\":function($event){return _vm.handleViewQuestionByChapter(item)}}},[_c('a',{staticClass:\"primary-color-txt\",attrs:{\"href\":\"javascript:;\"}},[_vm._v(\"\\n \"+_vm._s(item.title)+\"\\n \")])]),_c('p',{staticClass:\"margin-0 secondary-color-txt font-size-14\"},[_vm._v(\" \"+_vm._s(item.countQuestion)+\" câu hỏi\")])])])])}),_c('div',{staticClass:\"swiper-button-prev question_slide_prev\",attrs:{\"slot\":\"button-prev\"},slot:\"button-prev\"}),_c('div',{staticClass:\"swiper-button-next question_slide_next\",attrs:{\"slot\":\"button-next\"},slot:\"button-next\"})],2):_c('p',{staticClass:\"secondary-color-txt font-size-18 text-center\"},[_vm._v(\"Không có dữ liệu phù hợp\")])],1)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"exam-question__slide__head\"},[_c('h3',{staticClass:\"font-size-20 primary-color-txt font-sanpro-semibold\"},[_vm._v(\"Tự kiểm tra - Đánh giá\")])])}]\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModalQuestionsAutoTest.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModalQuestionsAutoTest.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ModalQuestionsAutoTest.vue?vue&type=template&id=99cd82e6&scoped=true&\"\nimport script from \"./ModalQuestionsAutoTest.vue?vue&type=script&lang=js&\"\nexport * from \"./ModalQuestionsAutoTest.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ModalQuestionsAutoTest.vue?vue&type=style&index=0&id=99cd82e6&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"99cd82e6\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"modal-sidebar__cats\"},[_c('a',{staticClass:\"font-size-16 font-sanpro primary-color modal-sidebar__cats__back display-block\",attrs:{\"href\":\"javascript:;\"},on:{\"click\":_vm.handleBackBookList}},[_vm._m(0),_vm._v(\" \\n Trở lại\\n \")]),_c('div',{staticClass:\"modal-sidebar__cats__list\"},_vm._l((_vm.bookCats),function(item,index){return _c('b-card',{directives:[{name:\"show\",rawName:\"v-show\",value:(item.countQuestionTeacher),expression:\"item.countQuestionTeacher\"}],key:index,staticClass:\"card-item border-0 bg-transparent\",class:{'active ': _vm.collapseOpen === (\"cat_\" + (item.bookIndexId))},attrs:{\"no-body\":\"\"}},[_c('div',{staticClass:\"card-wrap display-block\"},[_c('b-card-header',{staticClass:\"p-0 bg-transparent border-0\",attrs:{\"header-tag\":\"header\",\"role\":\"tab\"}},[_c('div',{staticClass:\"cat-head display-flex justify-content-md-between full-width\",class:{'active font-sanpro-semibold primary-color': _vm.collapseOpen === (\"cat_\" + (item.bookIndexId)) || _vm.catCurrent && ((_vm.catCurrent.bookIndexId === item.bookIndexId) || (!_vm.catCurrent.catParentFirst && _vm.catCurrent.catParent === item.bookIndexId))},attrs:{\"id\":(\"cat_row_\" + (item.bookIndexId))}},[_c('span',{staticClass:\"margin-0 font-family-Semibold font-size-16 title-sidebar cursor-pointer\",on:{\"click\":function($event){return _vm.openCollapse((\"cat_\" + (item.bookIndexId)), item)}}},[_vm._v(\"\\n \"+_vm._s(item.title)+\"\\n \"),(item.title)?_c('span',{staticClass:\"cat-space-title\"},[_vm._v(\":\")]):_vm._e(),_vm._v(\"\\n \"+_vm._s(item.name)+\" \\n \")])])]),(item.bookIndexChilds.length > 0)?_c('b-collapse',{attrs:{\"id\":(\"cat_\" + (item.bookIndexId)),\"accordion\":\"my-accordion\",\"role\":\"tabpanel\"}},[_c('b-card-body',{staticClass:\"modal-sidebar__cats__card__body\"},[_c('ul',{staticClass:\"cat-child margin-0 p-0\"},_vm._l((item.bookIndexChilds),function(child,pos){return _c('li',{directives:[{name:\"show\",rawName:\"v-show\",value:(child.countQuestionTeacher),expression:\"child.countQuestionTeacher\"}],key:pos,staticClass:\"d-block\",attrs:{\"id\":(\"cat_row_\" + (child.bookIndexId))}},[_c('a',{staticClass:\"font-size-16 display-flex justify-content-between full-width\",class:(\"\" + (_vm.catCurrent && ((_vm.catCurrent.bookIndexId === child.bookIndexId) || (_vm.catCurrent.catParentFirst && _vm.catCurrent.catParent === child.bookIndexId)) ? 'active font-sanpro-semibold primary-color' : 'font-sanpro secondary-color-txt ')),attrs:{\"href\":\"javascript:;\"}},[_c('span',{on:{\"click\":function($event){return _vm.openCollapse((\"cat_child_\" + (child.bookIndexId)), child)}}},[_vm._v(\"\\n \"+_vm._s(child.title)+\"\\n \"),(child.title)?_c('span',{staticClass:\"cat-space-title\"},[_vm._v(\":\")]):_vm._e(),_vm._v(\"\\n \"+_vm._s(child.name)+\"\\n \")])]),(child.bookIndexChilds.length > 0)?_c('b-collapse',{attrs:{\"id\":(\"cat_child_\" + (child.bookIndexId)),\"accordion\":\"my-accordion-child\",\"role\":\"tabpanelchild\"}},[_c('b-card-body',{staticClass:\"modal-sidebar__cats__card__body\"},[_c('ul',{staticClass:\"cat-child margin-0 p-0 list-style-none\"},_vm._l((child.bookIndexChilds),function(child2,loc){return _c('li',{directives:[{name:\"show\",rawName:\"v-show\",value:(child2.countQuestionTeacher),expression:\"child2.countQuestionTeacher\"}],key:loc,attrs:{\"id\":(\"cat_row_\" + (child2.bookIndexId))}},[_c('a',{staticClass:\"font-size-16 display-flex justify-content-between full-width\",class:(\"\" + (child2.bookIndexId === _vm.checkActive ? 'active font-sanpro-semibold primary-color' : 'font-sanpro secondary-color-txt ')),attrs:{\"href\":\"javascript:;\"},on:{\"click\":function($event){return _vm.handleCheckActive(child2.bookIndexId)}}},[_c('span',{on:{\"click\":function($event){return _vm.handleFilterQuestions(child2.bookIndexId, child2)}}},[_vm._v(\"\\n \"+_vm._s(child2.title)+\"\\n \"),(child2.title)?_c('span',{staticClass:\"cat-space-title\"},[_vm._v(\":\")]):_vm._e(),_vm._v(\" \\n \"+_vm._s(child2.name)+\"\\n \")])])])}),0)])],1):_vm._e()],1)}),0)])],1):_vm._e()],1)])}),1)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"icon-arrow-left primary-color font-size-12\"},[_c('span',{staticClass:\"path1 priamry-color\"}),_c('span',{staticClass:\"path2 priamry-color\"})])}]\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarCatsOfBook.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarCatsOfBook.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SidebarCatsOfBook.vue?vue&type=template&id=8c7686e6&scoped=true&\"\nimport script from \"./SidebarCatsOfBook.vue?vue&type=script&lang=js&\"\nexport * from \"./SidebarCatsOfBook.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SidebarCatsOfBook.vue?vue&type=style&index=0&id=8c7686e6&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"8c7686e6\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"modal-sidebar__cats\"},[_c('a',{staticClass:\"font-size-16 font-sanpro primary-color\",attrs:{\"href\":\"javascript:;\"},on:{\"click\":_vm.handleBackBookList}},[_vm._m(0),_vm._v(\" \\n Trở lại\\n \")])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"icon-arrow-left primary-color font-size-12\"},[_c('span',{staticClass:\"path1 priamry-color\"}),_c('span',{staticClass:\"path2 priamry-color\"})])}]\n\nexport { render, staticRenderFns }","\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarCatsOfExam.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarCatsOfExam.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SidebarCatsOfExam.vue?vue&type=template&id=61201999&\"\nimport script from \"./SidebarCatsOfExam.vue?vue&type=script&lang=js&\"\nexport * from \"./SidebarCatsOfExam.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"modal-questions__list question-sample__list\"},[_vm._l((_vm.questionsSample),function(item,index){return _c('div',{key:index,staticClass:\"item\",class:{'item--choosed': _vm.questionsIdChoose.includes(item.questionId)}},[_c('div',{staticClass:\"item__head display-table-full\"},[_c('b',{staticClass:\"display-inline float-left\"},[_vm._v(_vm._s(item.title))]),(item.title )?_c('span',{staticClass:\"display-inline float-left\"},[_vm._v(\":\")]):_vm._e(),_c('div',{staticClass:\"item__head__content display-inline float-left\",domProps:{\"innerHTML\":_vm._s(item.content)}}),(item.imageUrl)?_c('div',{staticClass:\"item__head__img text-center margin-center\"},[_c('img',{attrs:{\"src\":(_vm.urlQuestionImg + \"/\" + (item.imageUrl)),\"alt\":\"Ảnh câu hỏi\"}})]):_vm._e()]),_c('div',{staticClass:\"item__body\"},[(item.type !== _vm.questionDownAnswer)?_c('div',{staticClass:\"answers\"},_vm._l((item.answers),function(ans,pos){return _c('div',{key:pos,staticClass:\"item__answer\"},[(ans.imageUrl)?_c('div',{staticClass:\"item__answer__img text-center margin-center\"},[_c('img',{attrs:{\"src\":(_vm.urlQuestionImg + \"/\" + (ans.imageUrl)),\"alt\":\"Ảnh câu hỏi\"}})]):_vm._e(),_c('b',[_vm._v(_vm._s(ans.title))]),(ans.title)?_c('span',[_vm._v(\".\")]):_vm._e(),_c('div',{domProps:{\"innerHTML\":_vm._s(ans.content)}})])}),0):_vm._e()]),_c('div',{staticClass:\"item__footer full-width\"},[(_vm.questionsIdChoose.includes(item.questionId))?_c('div',{staticClass:\"item__choosed display-flex-center full-width\"},[_c('div',{staticClass:\"item__choosed__icon display-flex-center\"},[_c('img',{staticClass:\"icon-choosed\",attrs:{\"width\":\"20\",\"src\":_vm.doneIcon,\"alt\":\"Đã chọn\"}}),_c('span',{staticClass:\"font-sanpro-semibold secondary-color-txt font-size-16\"},[_vm._v(\"Đã chọn\")])]),_c('a',{staticClass:\"item__cancle primary-color font-sanpro-semibold\",attrs:{\"href\":\"javascript:;\"},on:{\"click\":function($event){return _vm.handleCancleChooseQuestion(item.questionId)}}},[_vm._v(\"\\n Hủy\\n \")])]):_c('div',{staticClass:\"item__choose display-flex-cemter\",on:{\"click\":function($event){return _vm.handleChooseQuestion(item)}}},[_vm._m(0,true)])])])}),(!_vm.questionsSample || _vm.questionsSample.length === 0)?_c('p',{staticClass:\"font-size-18 font-sanpro-semibold secondary-color-txt text-center\"},[_vm._v(\"\\n Không có câu hỏi nào\\n \")]):_vm._e()],2)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('label',{staticClass:\"custom-checkbox\"},[_c('label',{staticClass:\"font-sanpro-semibold primary-color font-size-16 cursor-pointer\"},[_vm._v(\"Chọn\")]),_c('input',{attrs:{\"type\":\"checkbox\"}}),_c('span',{staticClass:\"checkmark\"})])}]\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModalQuestionSampleList.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModalQuestionSampleList.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ModalQuestionSampleList.vue?vue&type=template&id=23880e68&scoped=true&\"\nimport script from \"./ModalQuestionSampleList.vue?vue&type=script&lang=js&\"\nexport * from \"./ModalQuestionSampleList.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ModalQuestionSampleList.vue?vue&type=style&index=0&id=23880e68&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"23880e68\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"modal-sidebar__cats\"},[_c('a',{staticClass:\"font-size-16 font-sanpro primary-color display-block modal-sidebar__cats__back\",attrs:{\"href\":\"javascript:;\"},on:{\"click\":_vm.handleBackBookList}},[_vm._m(0),_vm._v(\" \\n Trở lại\\n \")]),_c('div',{staticClass:\"modal-sidebar__cats__list modal-sidebar__cats__tpl\"},[_c('v-runtime-template',{attrs:{\"template\":_vm.template}})],1)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"icon-arrow-left primary-color font-size-12\"},[_c('span',{staticClass:\"path1 priamry-color\"}),_c('span',{staticClass:\"path2 priamry-color\"})])}]\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarCatsOfAutoTest.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarCatsOfAutoTest.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SidebarCatsOfAutoTest.vue?vue&type=template&id=3c3a3dc5&scoped=true&\"\nimport script from \"./SidebarCatsOfAutoTest.vue?vue&type=script&lang=js&\"\nexport * from \"./SidebarCatsOfAutoTest.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SidebarCatsOfAutoTest.vue?vue&type=style&index=0&id=3c3a3dc5&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3c3a3dc5\",\n null\n \n)\n\nexport default component.exports","\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModalQuestionSample.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModalQuestionSample.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ModalQuestionSample.vue?vue&type=template&id=c04acc7a&\"\nimport script from \"./ModalQuestionSample.vue?vue&type=script&lang=js&\"\nexport * from \"./ModalQuestionSample.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ModalQuestionSample.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QuestionHead.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QuestionHead.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./QuestionHead.vue?vue&type=template&id=2e28bb25&scoped=true&\"\nimport script from \"./QuestionHead.vue?vue&type=script&lang=js&\"\nexport * from \"./QuestionHead.vue?vue&type=script&lang=js&\"\nimport style0 from \"./QuestionHead.vue?vue&type=style&index=0&id=2e28bb25&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2e28bb25\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"prepare-question__choice\"},[_vm._m(0),_c('div',{staticClass:\"answer__body\",class:{'form-item-err': _vm.isSubmit && _vm.notCorrect && _vm.questionDetail.answers.length > 0}},_vm._l((_vm.questionDetail.answers),function(item,index){return _c('div',{key:index,staticClass:\"answer display-flex justify-content-between\"},[_c('div',{staticClass:\"answer__left display-flex\"},[_c('div',{staticClass:\"form-item form-item__code\"},[_vm._m(1,true),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(item.code),expression:\"item.code\"}],staticClass:\"form-h35 border-rd-20 full-width text-center\",class:{'form-item-err': _vm.isSubmit && !item.code},attrs:{\"type\":\"text\",\"name\":\"code\",\"placeholder\":\"A/B\",\"autocomplete\":\"off\"},domProps:{\"value\":(item.code)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(item, \"code\", $event.target.value)}}}),(_vm.isSubmit && !item.code)?_c('div',{staticClass:\"form-item__noti color-err font-size-15 mt-2\"},[_vm._v(\"Bạn hãy nhập Mã\")]):_vm._e()]),_c('div',{staticClass:\"form-item form-item__content\"},[_vm._m(2,true),_c('div',{staticClass:\"form-item__editor\",class:{ 'form-item-err': _vm.isSubmit && (!item.content || (item.content && item.content === _vm.contentDefault)) && !item.imageUrl}},[_c('EdittorCKAnswer',{attrs:{\"contentEditor\":item.content,\"position\":index + '_' + _vm.indexQuestionWorking}})],1),(_vm.isSubmit && (!item.content || (item.content && item.content === _vm.contentDefault)) && !item.imageUrl )?_c('div',{staticClass:\"form-item__noti color-err font-size-15 mt-2\"},[_vm._v(\"\\n Bạn hãy nhập vào nội dung \\n \")]):_vm._e()]),_c('div',{staticClass:\"form-item form-item__img mg-item__img\"},[(item && item.imageUrl)?_c('div',{staticClass:\"img-layout form-file-hide\"},[_c('input',{staticClass:\"ipt-upload\",attrs:{\"type\":\"file\",\"accept\":\"image/*\"},on:{\"change\":function($event){return _vm.changeImgAnswerItem($event, index)}}}),[_c('img',{staticClass:\"img-answer\",attrs:{\"src\":_vm.questionDetail.isSample ? (_vm.cdnUrl + \"/\" + (item.imageUrl)) : (_vm.appUrl + \"/\" + (item.imageUrl)),\"alt\":\"Ảnh câu trả lời\"}}),_c('b-button',{directives:[{name:\"b-tooltip\",rawName:\"v-b-tooltip.hover\",modifiers:{\"hover\":true}}],staticClass:\"btn btn-danger del-img\",attrs:{\"type\":\"button\",\"title\":\"Xóa ảnh\",\"variant\":\"outline-danger\"},on:{\"click\":function($event){return _vm.delImgOfAnswer($event, index)}}},[_c('i',{staticClass:\"icon-lesson-trash color-light font-size-16\"})])]],2):_c('a',{directives:[{name:\"b-tooltip\",rawName:\"v-b-tooltip.hover\",modifiers:{\"hover\":true}}],staticClass:\"font-size-16 font-sanpro-semibold display-flex full-box flex-direction-col position-rel\",attrs:{\"href\":\"javascript:;\",\"title\":\"Tải ảnh\"}},[_c('input',{staticClass:\"ipt-upload\",attrs:{\"type\":\"file\",\"accept\":\"image/*\"},on:{\"change\":function($event){return _vm.changeImgAnswerItem($event, index)}}}),_c('i',{staticClass:\"icon-lesson--picture\"})])])]),_c('div',{staticClass:\"answer__correct\"},[_c('b-form-radio',{attrs:{\"name\":\"radios_correct\",\"value\":item.orderNo},on:{\"change\":function($event){return _vm.changeAnswerCorrect($event, item, index)}},model:{value:(item.answerContent),callback:function ($$v) {_vm.$set(item, \"answerContent\", $$v)},expression:\"item.answerContent\"}})],1),_c('div',{staticClass:\"form-item form-item__remove mg-item__img\"},[_c('div',{directives:[{name:\"b-tooltip\",rawName:\"v-b-tooltip.hover\",modifiers:{\"hover\":true}}],staticClass:\"item-del border-rd-50 display-flex-center justify-content-center\",attrs:{\"title\":\"Xóa câu trả lời\"},on:{\"click\":function($event){return _vm.removeAnswer(index)}}},[_c('i',{staticClass:\"icon-close color-light font-size-7\"})])])])}),0),(_vm.isSubmit && (!_vm.questionDetail.answers || _vm.questionDetail.answers.length === 0))?_c('div',{staticClass:\"form-item__noti color-err font-size-15 mt-2 text-center mb-2\"},[_vm._v(\"Bạn hãy thêm ít nhất 1 câu trả lời\")]):_vm._e(),(_vm.isSubmit && _vm.notCorrect && _vm.questionDetail.answers.length > 0)?_c('div',{staticClass:\"form-item__noti color-err font-size-15 mt-2 text-center mb-2\"},[_vm._v(\"Bạn hãy chọn câu trả lời đúng\")]):_vm._e(),_c('div',{staticClass:\"answer__footer\"},[_c('a',{staticClass:\"btn btn-gray font-size-16 display-flex-center justify-content-center border-rd-20\",attrs:{\"href\":\"javascript:;\"},on:{\"click\":function($event){return _vm.addNewAnswer()}}},[_c('i',{staticClass:\"icon-plus\"}),_vm._v(\" Thêm đáp án\\n \")])]),_c('div',{staticClass:\"answer__layout\"},[_c('h3',{staticClass:\"answer__layout__title display-block secondary-color-txt font-sanpro-semibold font-size-17\"},[_vm._v(\"Giao diện hiển thị:\")]),_c('div',{staticClass:\"answer__layout__list\"},_vm._l((_vm.stylesQuestion),function(item,index){return _c('div',{key:index,staticClass:\"item\",class:{'active': _vm.questionDetail.layoutId === index + 1},on:{\"click\":function($event){return _vm.setStyleQuestion(index + 1)}}},[_c('img',{attrs:{\"src\":item,\"alt\":\"Hiển thị câu hỏi\"}})])}),0)])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"prepare-question__choice__head display-flex justify-content-between\"},[_c('div',{staticClass:\"answer__left secondary-color-txt font-sanpro-semibold\"},[_vm._v(\"Đáp án\")]),_c('div',{staticClass:\"answer__correct secondary-color-txt font-sanpro-semibold\"},[_vm._v(\"Đúng\")]),_c('div',{staticClass:\"answer__del\"})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('label',{staticClass:\"text-center\"},[_vm._v(\"Mã câu trả lời \"),_c('span',{staticClass:\"color-err\"},[_vm._v(\"*\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('label',[_vm._v(\"Nội dung \"),_c('span',{staticClass:\"color-err\"},[_vm._v(\"*\")])])}]\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QuestionChoice.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QuestionChoice.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./QuestionChoice.vue?vue&type=template&id=41aafbe5&scoped=true&\"\nimport script from \"./QuestionChoice.vue?vue&type=script&lang=js&\"\nexport * from \"./QuestionChoice.vue?vue&type=script&lang=js&\"\nimport style0 from \"./QuestionChoice.vue?vue&type=style&index=0&id=41aafbe5&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"41aafbe5\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"prepare-question__choice\"},[_vm._m(0),_c('div',{staticClass:\"answer__body\",class:{'form-item-err': _vm.isSubmit && _vm.notCorrect && _vm.questionDetail.answers.length > 0}},_vm._l((_vm.questionDetail.answers),function(item,index){return _c('div',{key:index,staticClass:\"answer display-flex justify-content-between\"},[_c('div',{staticClass:\"answer__left display-flex\"},[_c('div',{staticClass:\"form-item form-item__code\"},[_vm._m(1,true),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(item.code),expression:\"item.code\"}],staticClass:\"form-h35 border-rd-20 full-width text-center\",class:{'form-item-err': _vm.isSubmit && !item.code},attrs:{\"type\":\"text\",\"name\":\"code\",\"placeholder\":\"A/B\",\"autocomplete\":\"off\"},domProps:{\"value\":(item.code)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(item, \"code\", $event.target.value)}}}),(_vm.isSubmit && !item.code)?_c('div',{staticClass:\"form-item__noti color-err font-size-15 mt-2\"},[_vm._v(\"Bạn hãy nhập Mã\")]):_vm._e()]),_c('div',{staticClass:\"form-item form-item__content\"},[_vm._m(2,true),_c('div',{staticClass:\"form-item__editor\",class:{ 'form-item-err': _vm.isSubmit && (!item.content || (item.content && item.content === _vm.contentDefault)) }},[_c('EdittorCKAnswer',{attrs:{\"contentEditor\":item.content,\"position\":index + '_' + _vm.indexQuestionWorking}})],1),(_vm.isSubmit && (!item.content || (item.content && item.content === _vm.contentDefault)))?_c('div',{staticClass:\"form-item__noti color-err font-size-15 mt-2\"},[_vm._v(\"\\n Bạn hãy nhập vào nội dung\\n \")]):_vm._e()]),_c('div',{staticClass:\"form-item form-item__img mg-item__img\"},[(item && item.imageUrl)?_c('div',{staticClass:\"img-layout form-file-hide\"},[_c('input',{staticClass:\"ipt-upload\",attrs:{\"type\":\"file\",\"accept\":\"image/*\"},on:{\"change\":function($event){return _vm.changeImgAnswerItem($event, index)}}}),[_c('img',{staticClass:\"img-answer\",attrs:{\"src\":_vm.questionDetail.isSample ? (_vm.cdnUrl + \"/\" + (item.imageUrl)) : (_vm.appUrl + \"/\" + (item.imageUrl)),\"alt\":\"Ảnh câu trả lời\"}}),_c('i',{staticClass:\"icon-lesson-trash\",on:{\"click\":function($event){return _vm.delImgOfAnswer($event, index)}}})]],2):_c('a',{directives:[{name:\"b-tooltip\",rawName:\"v-b-tooltip.hover\",modifiers:{\"hover\":true}}],staticClass:\"btn font-size-16 font-sanpro-semibold display-flex full-box flex-direction-col position-rel\",attrs:{\"href\":\"javascript:;\",\"title\":\"Tải ảnh\"}},[_c('input',{staticClass:\"ipt-upload\",attrs:{\"type\":\"file\",\"accept\":\"image/*\"},on:{\"change\":function($event){return _vm.changeImgAnswerItem($event, index)}}}),_c('i',{staticClass:\"icon-lesson--picture\"})])])]),_c('div',{staticClass:\"answer__correct\"},[_c('b-form-checkbox',{attrs:{\"name\":(\"radios_correct_\" + index),\"value\":item.orderNo},on:{\"change\":function($event){return _vm.changeAnswerCorrect($event, item, index)}},model:{value:(item.answerContent),callback:function ($$v) {_vm.$set(item, \"answerContent\", $$v)},expression:\"item.answerContent\"}})],1),_c('div',{staticClass:\"answer__del mg-item__img\"},[_c('div',{directives:[{name:\"b-tooltip\",rawName:\"v-b-tooltip.hover\",modifiers:{\"hover\":true}}],staticClass:\"item-del border-rd-50 display-flex-center justify-content-center\",attrs:{\"title\":\"Xóa câu trả lời\"},on:{\"click\":function($event){return _vm.removeAnswer(index)}}},[_c('i',{staticClass:\"icon-close color-light font-size-7\"})])])])}),0),(_vm.isSubmit && (!_vm.questionDetail.answers || _vm.questionDetail.answers.length === 0))?_c('div',{staticClass:\"form-item__noti color-err font-size-15 mt-2 text-center mb-2\"},[_vm._v(\"Bạn hãy thêm ít nhất 1 câu trả lời\")]):_vm._e(),(_vm.isSubmit && _vm.notCorrect && _vm.questionDetail.answers.length > 0)?_c('div',{staticClass:\"form-item__noti color-err font-size-15 mt-2 text-center mb-2\"},[_vm._v(\"Bạn hãy chọn câu trả lời đúng\")]):_vm._e(),_c('div',{staticClass:\"answer__footer\"},[_c('a',{staticClass:\"btn btn-gray font-size-16 display-flex-center justify-content-center border-rd-20\",attrs:{\"href\":\"javascript:;\"},on:{\"click\":function($event){return _vm.addNewAnswer()}}},[_c('i',{staticClass:\"icon-plus\"}),_vm._v(\" Thêm đáp án\\n \")])]),_c('div',{staticClass:\"answer__layout\"},[_c('h3',{staticClass:\"answer__layout__title display-block secondary-color-txt font-sanpro-semibold font-size-17\"},[_vm._v(\"Giao diện hiển thị:\")]),_c('div',{staticClass:\"answer__layout__list\"},_vm._l((_vm.stylesQuestion),function(item,index){return _c('div',{key:index,staticClass:\"item\",class:{'active': _vm.questionDetail.layoutId === index + 1},on:{\"click\":function($event){return _vm.setStyleQuestion(index + 1)}}},[_c('img',{attrs:{\"src\":item,\"alt\":\"Hiển thị câu hỏi\"}})])}),0)])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"prepare-question__choice__head display-flex justify-content-between\"},[_c('div',{staticClass:\"answer__left secondary-color-txt font-sanpro-semibold\"},[_vm._v(\"Đáp án\")]),_c('div',{staticClass:\"answer__correct secondary-color-txt font-sanpro-semibold\"},[_vm._v(\"Đúng\")]),_c('div',{staticClass:\"answer__del\"})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('label',[_vm._v(\"Mã câu trả lời \"),_c('span',{staticClass:\"color-err\"},[_vm._v(\"*\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('label',[_vm._v(\"Nội dung \"),_c('span',{staticClass:\"color-err\"},[_vm._v(\"*\")])])}]\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QuestionMultiChoice.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QuestionMultiChoice.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./QuestionMultiChoice.vue?vue&type=template&id=648036a2&scoped=true&\"\nimport script from \"./QuestionMultiChoice.vue?vue&type=script&lang=js&\"\nexport * from \"./QuestionMultiChoice.vue?vue&type=script&lang=js&\"\nimport style0 from \"./QuestionMultiChoice.vue?vue&type=style&index=0&id=648036a2&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"648036a2\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"prepare-question__downanswer\"},[_c('div',{staticClass:\"answer__body\"},_vm._l((_vm.questionDetail.answers),function(item,index){return _c('div',{key:index,staticClass:\"answer display-flex justify-content-between\"},[_c('div',{staticClass:\"answer__left\"},[_c('div',{staticClass:\"form-item\"},[_vm._m(0,true),_c('div',{staticClass:\"form-item__editor\",class:{ 'form-item-err': _vm.isSubmit && (!item.content || (item.content && item.content === _vm.contentDefault)) }},[_c('EdittorCKAnswer',{attrs:{\"contentEditor\":_vm.questionDetail.answers[0].content,\"position\":'0_' + _vm.indexQuestionWorking}})],1),(_vm.isSubmit && (!item.content || (item.content && item.content === _vm.contentDefault)))?_c('div',{staticClass:\"form-item__noti color-err font-size-15 mt-2\"},[_vm._v(\"\\n Bạn hãy nhập vào nội dung\\n \")]):_vm._e()])])])}),0)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('label',{staticClass:\"display-block\"},[_vm._v(\"Nội dung câu trả lời \"),_c('span',{staticClass:\"color-err\"},[_vm._v(\"*\")])])}]\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QuestionDownAnswer.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QuestionDownAnswer.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./QuestionDownAnswer.vue?vue&type=template&id=327fd2c9&\"\nimport script from \"./QuestionDownAnswer.vue?vue&type=script&lang=js&\"\nexport * from \"./QuestionDownAnswer.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QuestionDetail.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QuestionDetail.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./QuestionDetail.vue?vue&type=template&id=031ce42c&scoped=true&\"\nimport script from \"./QuestionDetail.vue?vue&type=script&lang=js&\"\nexport * from \"./QuestionDetail.vue?vue&type=script&lang=js&\"\nimport style0 from \"./QuestionDetail.vue?vue&type=style&index=0&id=031ce42c&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"031ce42c\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('table',{staticClass:\"prepare-question__view\",staticStyle:{\"border\":\"border: 1px solid #E5E5EA\",\"margin\":\"0\",\"width\":\"100%\"},attrs:{\"cellpadding\":\"0\",\"cellspacing\":\"0\"}},[_c('tbody',[_c('tr',[_c('td',{staticStyle:{\"padding\":\"40px 30px\"}},[_c('table',{staticStyle:{\"border\":\"0\",\"margin\":\"0\",\"width\":\"100%\"},attrs:{\"border\":\"0\",\"cellpadding\":\"0\",\"cellspacing\":\"0\"}},[_c('tbody',[_c('tr',[_c('td',{staticStyle:{\"vertical-align\":\"top\",\"width\":\"40%\"}},[_c('table',{staticStyle:{\"border\":\"0\",\"margin\":\"0\",\"width\":\"100%\"},attrs:{\"border\":\"0\",\"cellpadding\":\"0\",\"cellspacing\":\"0\"}},[_c('tbody',[_c('tr',[_c('td',{staticStyle:{\"text-align\":\"center\",\"padding-bottom\":\"10px\"}},[_c('span',{staticStyle:{\"font-size\":\"26px\",\"color\":\"#40505e\",\"font-weight\":\"600\",\"line-height\":\"28px\"}},[_vm._v(_vm._s(_vm.examInfo.schoolName))])])]),_c('tr',[_c('td',{staticStyle:{\"text-align\":\"center\"}},[_c('span',{staticStyle:{\"text-align\":\"center\",\"font-size\":\"17px\",\"color\":\"#40505e\",\"font-weight\":\"600\"}},[_vm._v(\"\\n Giáo viên: \"+_vm._s(_vm.examInfo.teacherName)+\"\\n \")])])])])])]),_c('td',{staticStyle:{\"width\":\"60%\"}},[_c('table',{staticStyle:{\"border\":\"0\",\"margin\":\"0\",\"width\":\"100%\"},attrs:{\"border\":\"0\",\"cellpadding\":\"0\",\"cellspacing\":\"0\"}},[_c('tbody',[_c('tr',[_c('td',{staticStyle:{\"text-align\":\"center\",\"padding-bottom\":\"10px\"}},[_c('span',{staticStyle:{\"font-size\":\"26px\",\"color\":\"#40505e\",\"font-weight\":\"600\",\"line-height\":\"28px\"}},[_vm._v(\"\\n Đề kiểm tra \"+_vm._s(_vm.renderTimeToDo())+\"\\n \")])])]),_c('tr',[_c('td',{staticStyle:{\"text-align\":\"center\",\"padding-bottom\":\"10px\"}},[_c('span',{staticStyle:{\"font-size\":\"26px\",\"color\":\"#40505e\",\"font-weight\":\"600\",\"line-height\":\"28px\"}},[_vm._v(\"\\n Môn: \"+_vm._s(_vm.renderSubjects())+\"\\n \")])])]),_c('tr',[_c('td',{staticStyle:{\"text-align\":\"center\",\"padding-bottom\":\"18px\"}},[_c('span',{staticStyle:{\"font-size\":\"17px\",\"color\":\"#40505e\",\"font-weight\":\"600\",\"line-height\":\"20px\"}},[_vm._v(\"\\n Thời gian làm bài: \"+_vm._s(_vm.renderTimeToDo())+\", không kể thời gian phát đề\\n \")])])]),_c('tr',[_c('td',{staticStyle:{\"text-align\":\"center\"}},[_c('span',{staticStyle:{\"font-size\":\"17px\",\"color\":\"#40505e\",\"font-weight\":\"600\",\"line-height\":\"20px\"}},[_vm._v(\"\\n Mã đề: \"+_vm._s(_vm.examInfo.code)+\"\\n \")])])])])])])]),_c('tr',[_c('td',{staticStyle:{\"text-align\":\"center\",\"padding\":\"45px 30px 30px 30px\"},attrs:{\"colspan\":\"2\"}},[_c('span',{staticClass:\"prepare-question__view__note font-sanpro-light font-italic font-size-18 primary-color-txt text-center full-width\",staticStyle:{\"width\":\"100%\",\"font-size\":\"18px\",\"color\":\"#40505e\",\"font-weight\":\"300\",\"font-style\":\"italic\",\"line-height\":\"20px\",\"margin-bottom\":\"5px\",\"text-align\":\"center\"}},[_vm._v(\"\\n \"+_vm._s(_vm.examInfo.note)+\"\\n \")])])])])]),_c('table',{staticStyle:{\"border\":\"0\",\"margin\":\"0\",\"width\":\"100%\"},attrs:{\"border\":\"0\",\"cellpadding\":\"0\",\"cellspacing\":\"0\"}},[_c('tbody',_vm._l((_vm.questionList),function(item,index){return _c('tr',{key:index},[_c('td',{staticStyle:{\"padding\":\"10px 0 25px\"}},[_c('table',{staticStyle:{\"border\":\"0\",\"margin\":\"0\",\"width\":\"100%\"},attrs:{\"border\":\"0\",\"cellpadding\":\"0\",\"cellspacing\":\"0\"}},[_c('tbody',[_c('tr',[_c('td',{staticStyle:{\"vertical-align\":\"top\",\"width\":\"60px\",\"padding-bottom\":\"10px\",\"text-align\":\"left\"}},[_c('p',[_c('b',{staticClass:\"primary-color-txt\",staticStyle:{\"font-weight\":\"700\",\"color\":\"#40505e\",\"line-height\":\"24px\",\"display\":\"inline-block\"}},[_vm._v(\"\\n \"+_vm._s(item.title)+\"\\n \")]),(item.title)?_c('span',{staticStyle:{\"font-weight\":\"700\",\"color\":\"#40505e\",\"line-height\":\"24px\"}},[_vm._v(\":\")]):_vm._e()])]),_c('td',{staticStyle:{\"vertical-align\":\"top\",\"padding-bottom\":\"10px\",\"text-align\":\"left\"}},[_c('span',{staticStyle:{\"font-weight\":\"300\",\"color\":\"#40505e\"},domProps:{\"innerHTML\":_vm._s(item.content)}})])]),(item.imageUrl)?_c('tr',[_c('td',{staticStyle:{\"text-align\":\"center\",\"padding-bottom\":\"25px\"},attrs:{\"colspan\":\"2\"}},[_c('img',{staticStyle:{\"max-width\":\"600px\",\"height\":\"auto\"},attrs:{\"src\":item.isSample ? (_vm.urlQuestionImg + \"/\" + (item.imageUrl)) : (_vm.appUrl + \"/\" + (item.imageUrl)),\"alt\":\"Ảnh câu trả lời\"}})])]):_vm._e(),(item.type !== _vm.questionDownAnswer)?_c('tr',[_c('td',{attrs:{\"colspan\":\"2\"}},[_c('table',{staticStyle:{\"border\":\"0\",\"margin\":\"0\",\"width\":\"100%\"},attrs:{\"border\":\"0\",\"cellpadding\":\"0\",\"cellspacing\":\"0\"}},[_c('tbody',[(item.layoutId === 2)?_c('tr',_vm._l((item.answers),function(ans,pos){return _c('td',{key:pos,staticStyle:{\"width\":\"25%\"}},[_c('table',{staticStyle:{\"border\":\"0\",\"margin\":\"0\",\"width\":\"100%\"},attrs:{\"border\":\"0\",\"cellpadding\":\"0\",\"cellspacing\":\"0\"}},[_c('tbody',[(ans.imageUrl)?_c('tr',[_c('td',{staticStyle:{\"text-align\":\"center\"},attrs:{\"colspan\":\"2\"}},[_c('img',{staticStyle:{\"max-width\":\"100%\",\"height\":\"auto\"},attrs:{\"src\":item.isSample ? (_vm.urlQuestionImg + \"/\" + (ans.imageUrl)) : (_vm.appUrl + \"/\" + (ans.imageUrl)),\"alt\":\"Ảnh câu trả lời\"}})])]):_vm._e(),_c('tr',[_c('td',{staticStyle:{\"vertical-align\":\"top\",\"text-align\":\"center\",\"width\":\"20px\"}},[_c('p',[_c('b',{staticStyle:{\"font-weight\":\"600\",\"font-size\":\"16px\",\"color\":\"#40505e\"}},[_vm._v(_vm._s(ans.code))])])]),_c('td',{staticStyle:{\"vertical-align\":\"top\",\"text-align\":\"left\",\"width\":\"calc(100% - 20px)\"}},[_c('span',{staticStyle:{\"font-size\":\"16px\",\"font-weight\":\"300\",\"color\":\"#40505e\"},domProps:{\"innerHTML\":_vm._s(ans.content)}})])])])])])}),0):_vm._l((item.answers),function(ans,pos){return _c('tr',{key:pos},[_c('td',[_c('table',{staticStyle:{\"border\":\"0\",\"margin\":\"0\",\"width\":\"100%\"},attrs:{\"border\":\"0\",\"cellpadding\":\"0\",\"cellspacing\":\"0\"}},[_c('tbody',[(ans.imageUrl)?_c('tr',[_c('td',{staticStyle:{\"vertical-align\":\"top\",\"text-align\":\"center\"},attrs:{\"colspan\":\"2\"}},[_c('img',{staticStyle:{\"max-width\":\"100%\",\"height\":\"auto\"},attrs:{\"src\":item.isSample ? (_vm.urlQuestionImg + \"/\" + (ans.imageUrl)) : (_vm.appUrl + \"/\" + (ans.imageUrl)),\"alt\":\"Ảnh câu trả lời\"}})])]):_vm._e(),_c('tr',[_c('td',{staticStyle:{\"vertical-align\":\"top\",\"text-align\":\"left\",\"width\":\"20px\"}},[_c('p',[_c('b',{staticStyle:{\"font-weight\":\"600\",\"font-size\":\"16px\",\"color\":\"#40505e\"}},[_vm._v(_vm._s(ans.code))])])]),_c('td',{staticStyle:{\"vertical-align\":\"top\",\"text-align\":\"left\",\"width\":\"calc(100% - 20px)\"}},[_c('span',{staticStyle:{\"font-size\":\"16px\",\"font-weight\":\"300\",\"color\":\"#40505e\"},domProps:{\"innerHTML\":_vm._s(ans.content)}})])])])])])])})],2)])])]):_vm._e()])])])])}),0)])])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QuestionView.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QuestionView.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./QuestionView.vue?vue&type=template&id=4d4631de&scoped=true&\"\nimport script from \"./QuestionView.vue?vue&type=script&lang=js&\"\nexport * from \"./QuestionView.vue?vue&type=script&lang=js&\"\nimport style0 from \"./QuestionView.vue?vue&type=style&index=0&id=4d4631de&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4d4631de\",\n null\n \n)\n\nexport default component.exports","\r\n\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ExamAdd.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ExamAdd.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ExamAdd.vue?vue&type=template&id=454591a4&scoped=true&\"\nimport script from \"./ExamAdd.vue?vue&type=script&lang=js&\"\nexport * from \"./ExamAdd.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ExamAdd.vue?vue&type=style&index=0&id=454591a4&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"454591a4\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Viewer',{staticClass:\"prepare-exam\",attrs:{\"isOpenBookCats\":false,\"valOpenSidebar\":_vm.typeOpenSidebar,\"linkBack\":{ name:'examAdd', params: {id: _vm.examId} },\"hideFooter\":true,\"hideGuideUse\":true},scopedSlots:_vm._u([(_vm.examInfo)?{key:\"viewer_head_name\",fn:function(){return [_vm._v(_vm._s(_vm.examInfo.name))]},proxy:true}:null,(_vm.examInfo)?{key:\"viewer_head_right\",fn:function(){return undefined},proxy:true}:null,{key:\"viewr_body\",fn:function(){return [_c('div',{staticClass:\"container-hts\"},[_c('b-tabs',{staticClass:\"book-detail__tabs tabs-viewer tabs-tooltip text-center\"},[_c('b-tab',{staticClass:\"book-detail__tab\",scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_c('span',{directives:[{name:\"b-tooltip\",rawName:\"v-b-tooltip.hover\",modifiers:{\"hover\":true}}]},[_vm._v(\"Đề thi / Bài kiểm tra\")])]},proxy:true}])},[_c('div',{staticClass:\"prepare-exam__questions-view\",attrs:{\"id\":\"prepare_question_view\"}},[_c('QuestionView')],1)]),_c('b-tab',{scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_c('span',{directives:[{name:\"b-tooltip\",rawName:\"v-b-tooltip.hover\",modifiers:{\"hover\":true}}]},[_vm._v(\"Đáp án\")])]},proxy:true}])},[_c('QuestionCorrectView',{attrs:{\"dataSource\":_vm.questionsCorrectAnswer}})],1)],1)],1)]},proxy:true},{key:\"viewer_sidebar_content\",fn:function(){return [(_vm.keySidebarActive === 'info')?_c('div',{staticClass:\"sidebar-link\"},[_c('div',{staticClass:\"sidebar__link__result\"},[_c('div',{staticClass:\"book-viewer__sidebar__contents__wrap\"},[(_vm.examInfo && _vm.examInfo.urlImage)?_c('vueCustomScrollbar',{staticClass:\"preview-img-exam text-center\",attrs:{\"id\":\"preview_book\"}},_vm._l((_vm.imagesExam),function(item,index){return _c('img',{key:index,staticClass:\"item bg-color-light text-center item-book\",attrs:{\"id\":(\"item_\" + (index + 1)),\"src\":item,\"alt\":\"Bài kiểm tra\"}})}),0):_vm._e()],1)])]):_vm._e()]},proxy:true}],null,true)})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"avatar\",staticClass:\"prepare-question__view\",class:{'width-100': _vm.nameRouter === 'examAdd'},attrs:{\"id\":\"prepare_question_view\"}},[_c('div',{staticClass:\"prepare-question__view__head\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-lg-5\"},[_c('div',{staticClass:\"prepare-question__view__head__wrap text-center\"},[_c('p',{staticClass:\"prepare-question__view__school font-sanpro-semibold font-size-26 primary-color-txt margin-0\"},[_vm._v(\"\\n \"+_vm._s(_vm.examInfo.schoolName)+\"\\n \")]),_c('p',{staticClass:\"prepare-question__view__teacher font-sanpro-semibold font-size-18 primary-color-txt margin-0\"},[_vm._v(\"\\n Giáo viên: \"+_vm._s(_vm.examInfo.teacherName)+\"\\n \")])])]),_c('div',{staticClass:\"col-lg-7\"},[_c('div',{staticClass:\"prepare-question__view__head__wrap text-center\"},[_c('p',{staticClass:\"prepare-question__view__school font-sanpro-semibold font-size-26 primary-color-txt margin-0\"},[_vm._v(\"\\n Đề kiểm tra \"+_vm._s(_vm.renderTimeToDo())+\"\\n \")]),_c('p',{staticClass:\"prepare-question__view__subject font-sanpro-semibold font-size-26 primary-color-txt margin-0\"},[_vm._v(\"\\n Môn: \"+_vm._s(_vm.renderSubjects())+\"\\n \")]),_c('p',{staticClass:\"prepare-question__view__desc-time font-sanpro-semibold font-size-18 primary-color-txt margin-0\"},[_vm._v(\"\\n Thời gian làm bài: \"+_vm._s(_vm.renderTimeToDo())+\", không kể thời gian phát đề\\n \")]),_c('p',{staticClass:\"prepare-question__view__desc-time font-sanpro-semibold font-size-18 primary-color-txt margin-0\"},[_vm._v(\"\\n Mã đề: \"+_vm._s(_vm.examInfo.code)+\"\\n \")])])]),_c('p',{staticClass:\"prepare-question__view__note font-sanpro-light font-italic font-size-18 primary-color-txt text-center full-width\"},[_vm._v(\"\\n \"+_vm._s(_vm.examInfo.note)+\"\\n \")])])]),(_vm.dataSource)?_c('div',{staticClass:\"prepare-question__view__body question-sample__list text-left\"},_vm._l((_vm.dataSource),function(item,index){return _c('div',{key:index,staticClass:\"item\",class:(\"item__\" + (item.type) + \" layout-\" + (item.layoutId))},[_c('div',{staticClass:\"item__head\"},[_c('b',{staticClass:\"primary-color-txt\"},[_vm._v(_vm._s(item.title))]),(item.title)?_c('span',[_vm._v(\":\")]):_vm._e(),_c('div',{domProps:{\"innerHTML\":_vm._s(item.content)}}),(item.imageUrl)?_c('div',{staticClass:\"item__head__img text-center margin-center \"},[_c('img',{attrs:{\"src\":item.isSample ? (_vm.urlQuestionImg + \"/\" + (item.imageUrl)) : (_vm.appUrl + \"/\" + (item.imageUrl)),\"alt\":\"Ảnh câu trả lời\"}})]):_vm._e()]),_c('div',{staticClass:\"item__body\"},[_c('div',{staticClass:\"answers\"},_vm._l((item.answers),function(ans,pos){return _c('div',{key:pos,staticClass:\"item__answer\"},[(ans.imageUrl)?_c('div',{staticClass:\"item__answer__img text-center margin-center\"},[_c('img',{attrs:{\"src\":item.isSample ? (_vm.urlQuestionImg + \"/\" + (ans.imageUrl)) : (_vm.appUrl + \"/\" + (ans.imageUrl)),\"alt\":\"Ảnh câu trả lời\"}})]):_vm._e(),_c('div',{staticClass:\"item__answer__content\"},[_c('b',[_vm._v(_vm._s(ans.code))]),(ans.code)?_c('span',[_vm._v(\".\")]):_vm._e(),_c('div',{staticClass:\"item__answer__content__detail\",domProps:{\"innerHTML\":_vm._s(ans.content)}})])])}),0)])])}),0):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QuestionCorrectView.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QuestionCorrectView.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./QuestionCorrectView.vue?vue&type=template&id=2bca5489&scoped=true&\"\nimport script from \"./QuestionCorrectView.vue?vue&type=script&lang=js&\"\nexport * from \"./QuestionCorrectView.vue?vue&type=script&lang=js&\"\nimport style0 from \"./QuestionCorrectView.vue?vue&type=style&index=0&id=2bca5489&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2bca5489\",\n null\n \n)\n\nexport default component.exports","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ExamView.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ExamView.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ExamView.vue?vue&type=template&id=ea741d60&scoped=true&\"\nimport script from \"./ExamView.vue?vue&type=script&lang=js&\"\nexport * from \"./ExamView.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ExamView.vue?vue&type=style&index=0&id=ea741d60&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"ea741d60\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('main',{attrs:{\"role\":\"main\",\"id\":\"main-lesson\"}},[_c('div',{staticClass:\"ss-breadcrumb\"},[_c('div',{staticClass:\"container-hts\"},[_c('ul',{staticClass:\"margin-0 p-0\"},[_c('li',[_c('router-link',{attrs:{\"to\":\"/thu-vien\"}},[_vm._v(\"Danh sách đề thi\")])],1)])])]),_c('div',{staticClass:\"pre-lesson__main\"},[_c('div',{staticClass:\"container-hts\"},[_c('FilterList'),_c('div',{staticClass:\"pre-lesson__list\"},[_c('div',{staticClass:\"row\"},_vm._l((_vm.exams),function(item){return _c('div',{key:item.Id,staticClass:\"item col-lg-3 col-md-4 col-sm-6\"},[_c('div',{staticClass:\"item__wrap\"},[_c('div',{staticClass:\"item__head aspect-ratio aspect-ratio--16-9 text-center border-rd-4 bg-transparent\"},[_c('router-link',{staticClass:\"display-block\",attrs:{\"to\":{ name: 'examAdd', params: { id: item.examId }}}},[_c('div',{staticClass:\"item__img\",attrs:{\"id\":item.lessonPlanId}},[_c('img',{attrs:{\"src\":(_vm.baseUrl + \"/\" + (item.avatar)),\"alt\":item.name}})])])],1),_c('div',{staticClass:\"item__body\"},[_c('h3',{staticClass:\"primary-color-txt margin-0 font-size-16 primary-color-txt font-sanpro-semibold\"},[_c('router-link',{staticClass:\"primary-color-txt\",attrs:{\"to\":{ name: 'examAdd', params: { id: item.examId }}}},[_vm._v(\"\\n \"+_vm._s(item.name)+\"\\n \")])],1)])])])}),0)])],1)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import HttpService from \"@/utils/httpData\"\r\n\r\nexport default {\r\n filter(data) {\r\n let apiEndpoint = `exam/List`;\r\n let params = data\r\n return HttpService.post(apiEndpoint, params)\r\n .then(res => {\r\n return res ? res : null;\r\n })\r\n .catch(e => {return false}\r\n );\r\n },\r\n\r\n getById(id) {\r\n let apiEndpoint = `exam/Detail`;\r\n let params = {\r\n examId: id\r\n }\r\n return HttpService.get(apiEndpoint, params)\r\n .then(res => {\r\n return res ? res : null;\r\n })\r\n .catch(e => {return false}\r\n );\r\n },\r\n\r\n add(data) {\r\n let apiEndpoint = `exam/add`;\r\n let params = data;\r\n return HttpService.post(apiEndpoint, params)\r\n .then(res => {\r\n return res ? res : null;\r\n })\r\n .catch(e => {return false}\r\n );\r\n },\r\n\r\n edit(data) {\r\n let apiEndpoint = `exam/edit`;\r\n let params = data;\r\n return HttpService.post(apiEndpoint, params)\r\n .then(res => {\r\n return res ? res : null;\r\n })\r\n .catch(e => {return false}\r\n );\r\n },\r\n\r\n delete(id) {\r\n let apiEndpoint = `exam/delete`;\r\n let params = {\r\n id: id\r\n };\r\n return HttpService.post(apiEndpoint, params)\r\n .then(res => {\r\n return res ? res : null;\r\n })\r\n .catch(e => {return false}\r\n );\r\n },\r\n\r\n exportQuestion(data) {\r\n let apiEndpoint = `exam/ExportQuestion`;\r\n let params = data;\r\n return HttpService.post(apiEndpoint, params)\r\n .then(res => {\r\n return res ? res : null;\r\n })\r\n .catch(e => {return false}\r\n );\r\n },\r\n\r\n exportAnswer(data) {\r\n let apiEndpoint = `exam/ExportAnswer`;\r\n let params = data;\r\n return HttpService.post(apiEndpoint, params)\r\n .then(res => {\r\n return res ? res : null;\r\n })\r\n .catch(e => {return false}\r\n );\r\n },\r\n}","\r\n\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ExamList.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ExamList.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ExamList.vue?vue&type=template&id=02a5dec8&scoped=true&\"\nimport script from \"./ExamList.vue?vue&type=script&lang=js&\"\nexport * from \"./ExamList.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ExamList.vue?vue&type=style&index=0&id=02a5dec8&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"02a5dec8\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('main',{attrs:{\"role\":\"main\",\"id\":\"main-lesson\"}},[_vm._m(0),_c('div',{staticClass:\"bg-tit-hd\"},[_vm._v(\"illustration\")]),_c('div',{staticClass:\"container-hts bg-hoidap\"},[_c('div',{staticClass:\"row group-tabs\"},[_c('div',{staticClass:\"col-md-3 col-sm-12 col-xs-12\"},[_c('div',{staticClass:\"search-l\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.keywords),expression:\"keywords\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"placeholder\":\"Tìm kiếm\"},domProps:{\"value\":(_vm.keywords)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.keywords=$event.target.value}}}),_vm._m(1)]),_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.classId),expression:\"classId\"}],staticClass:\"form-control select-l\",on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.classId=$event.target.multiple ? $$selectedVal : $$selectedVal[0]}}},[_c('option',{attrs:{\"value\":\"-1\"}},[_vm._v(\"Lớp - Tất cả\")]),_vm._l((_vm.classes),function(item){return _c('option',{key:item.Id + '-class',domProps:{\"value\":item.Id}},[_vm._v(_vm._s(item.ClassName))])})],2),_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.subjectId),expression:\"subjectId\"}],staticClass:\"form-control select-l\",on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.subjectId=$event.target.multiple ? $$selectedVal : $$selectedVal[0]}}},[_c('option',{attrs:{\"value\":\"-1\"}},[_vm._v(\"Môn - Tất cả\")]),_vm._l((_vm.subjects),function(item){return _c('option',{key:item.Id + '-subject',domProps:{\"value\":item.Id}},[_vm._v(_vm._s(item.SubjectName))])})],2)]),_c('div',{staticClass:\"col-md-9 col-sm-12 col-xs-12\"},[_c('p',[_c('router-link',{attrs:{\"to\":\"/\"}},[_c('a',{staticClass:\"back\",attrs:{\"href\":\"javascript:;\"}},[_c('i',{staticClass:\"fas fa-chevron-left\"}),_vm._v(\" Trở lại\")])])],1),_c('div',{staticClass:\"comment-w\"},[_c('div',{staticClass:\"user-comment\"},[_c('img',{attrs:{\"src\":require(\"./../../../assets/imgs/user.png\")}}),_c('h5',[_vm._v(_vm._s(_vm.user.FullName))]),_vm._m(2),_c('div',{staticClass:\"clear\"})]),_c('div',{staticClass:\"form-group\",attrs:{\"id\":\"editor\"}},[_c('EditorCK',{attrs:{\"contentEditor\":_vm.post.Content,\"position\":0,\"toolbar\":_vm.toolbar,\"editorHeight\":_vm.editorHeight}})],1),_c('div',{staticClass:\"modal-comment-f\"},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.post.ClassId),expression:\"post.ClassId\"}],staticClass:\"form-control select-l\",class:{ 'is-invalid': _vm.submitted && !_vm.$v.post.ClassId.isSelected },on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.post, \"ClassId\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])}}},[_c('option',{attrs:{\"value\":\"-1\"}},[_vm._v(\"Lớp - Tất cả\")]),_vm._l((_vm.classesPost),function(item){return _c('option',{key:item.Id,domProps:{\"value\":item.Id}},[_vm._v(_vm._s(item.ClassName))])})],2),_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.post.SubjectId),expression:\"post.SubjectId\"}],staticClass:\"form-control select-l\",class:{ 'is-invalid': _vm.submitted && !_vm.$v.post.SubjectId.isSelected },on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.post, \"SubjectId\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])}}},[_c('option',{attrs:{\"value\":\"-1\"}},[_vm._v(\"Môn - Tất cả\")]),_vm._l((_vm.subjectsPost),function(item){return _c('option',{key:item.Id,domProps:{\"value\":item.Id}},[_vm._v(_vm._s(item.SubjectName))])})],2),_c('button',{staticClass:\"btn btn-primary\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.submit()}}},[_vm._v(\"Đăng\")]),_c('button',{staticClass:\"btn btn-second btn-delete\",attrs:{\"type\":\"button\",\"data-dismiss\":\"modal\"},on:{\"click\":function($event){return _vm.cancel()}}},[_vm._v(\"Hủy\")]),_c('div',{staticClass:\"clear\"})])]),_c('div',{staticClass:\"modal fade bd-example-modal-lg\",attrs:{\"id\":\"popup-ch\",\"tabindex\":\"-1\",\"role\":\"dialog\",\"aria-labelledby\":\"myLargeModalLabel\",\"aria-hidden\":\"true\"}},[_c('div',{staticClass:\"modal-dialog modal-lg\",attrs:{\"role\":\"document\"}},[_c('div',{staticClass:\"modal-content\"},[_c('div',{staticClass:\"user-comment\"},[_c('img',{attrs:{\"src\":require(\"./../../../assets/imgs/user.png\")}}),_c('h5',[_vm._v(_vm._s(_vm.user.FullName))]),_vm._m(3),_c('div',{staticClass:\"clear\"})]),_c('div',{staticClass:\"form-group modal-ndch\",attrs:{\"id\":\"answer-content\"}},[_c('EditorCK',{attrs:{\"contentEditor\":_vm.answerContent,\"position\":1,\"toolbar\":_vm.toolbar,\"editorHeight\":_vm.editorHeight}})],1),_c('div',{staticClass:\"modal-comment-f\"},[_c('button',{staticClass:\"btn btn-primary\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.answerQuestion()}}},[_vm._v(\"Đăng\")]),_c('button',{staticClass:\"btn btn-second btn-delete\",attrs:{\"type\":\"button\",\"data-dismiss\":\"modal\"}},[_vm._v(\"Hủy\")]),_c('div',{staticClass:\"clear\"})])])])]),_c('div',{staticClass:\"group-tabs\"},[_vm._m(4),_c('div',{staticClass:\"tab-content\"},[_c('div',{staticClass:\"tab-pane active\",attrs:{\"role\":\"tabpanel\",\"id\":\"cong-dong\"}},[_c('ul',{staticClass:\"comment-ul-1 ul-none\"},[_vm._l((_vm.dataList),function(item){return _c('li',{key:item.Id + '-community',staticClass:\"comment-li-1\"},[_c('div',{staticClass:\"box-comment-1\"},[_c('div',{staticClass:\"user-comment\"},[_c('img',{attrs:{\"src\":require(\"./../../../assets/imgs/user.png\")}}),_c('h5',[_vm._v(_vm._s(item.User.FullName))]),_c('p',[_vm._v(_vm._s(item.DatePost))]),_c('div',{staticClass:\"clear\"})]),_vm._m(5,true),_c('div',{staticClass:\"content-comment\",domProps:{\"innerHTML\":_vm._s(item.Content)}}),_c('div',{staticClass:\"box-like-com\"},[_c('span',{staticClass:\"num-com\"},[_vm._v(_vm._s(item.NumLike)+\" lượt thích\")]),_c('span',{staticClass:\"num-com click-traloi\"},[_c('a',{staticClass:\"dis-traloi\",attrs:{\"href\":\"javascript:;\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.showListAnswer('ds-answer-community-'+ item.Id)}}},[_vm._v(_vm._s(item.NumAnswer)+\" câu trả lời\")])]),_c('span',{staticClass:\"click-b-comment com-com traloi-1\",on:{\"click\":function($event){$event.stopPropagation();return _vm.showPopupAnswer(item)}}},[_vm._v(\"Trả lời\")]),_c('span',{staticClass:\"click-b-comment like-com\",on:{\"click\":function($event){$event.stopPropagation();return _vm.like(item.Id)}}},[_vm._v(\"Thích\")]),_c('div',{staticClass:\"clear\"})])]),_c('ul',{staticClass:\"comment-ul-2 ul-none hiden\",attrs:{\"id\":'ds-answer-community-'+ item.Id}},_vm._l((item.Children),function(answer){return _c('li',{key:answer.Id + '-answers-community'},[_c('div',{staticClass:\"bg-comment-2\"},[_c('div',{staticClass:\"box-comment-2\"},[_c('div',{staticClass:\"user-comment\"},[_c('h5',[_vm._v(_vm._s(answer.User.FullName))]),_c('p',[_vm._v(_vm._s(answer.DatePost))]),_c('div',{staticClass:\"clear\"})]),_vm._m(6,true),_c('div',{staticClass:\"content-comment\",domProps:{\"innerHTML\":_vm._s(answer.Content)}})]),_c('div',{staticClass:\"box-like-com\"},[_c('span',{staticClass:\"num-com\"},[_vm._v(_vm._s(answer.NumLike)+\" lượt thích\")]),_c('a',{staticClass:\"num-com dis-traloi\",attrs:{\"href\":\"javascript:;\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.showListAnswer('ds-answer-community-2-'+ answer.Id)}}},[_vm._v(_vm._s(answer.NumAnswer)+\" câu trả lời\")]),_c('span',{staticClass:\"click-b-comment\",on:{\"click\":function($event){$event.stopPropagation();return _vm.showPopupAnswer(answer)}}},[_vm._v(\"Trả lời\")]),_c('span',{staticClass:\"click-b-comment\",on:{\"click\":function($event){$event.stopPropagation();return _vm.like(answer.Id)}}},[_vm._v(\"Thích\")]),_c('div',{staticClass:\"clear\"})])]),_c('ul',{staticClass:\"comment-ul-2 comment-ul-n ul-none hiden\",attrs:{\"id\":'ds-answer-community-2-'+ answer.Id}},_vm._l((answer.Children),function(child){return _c('li',{key:child.Id + '-answers-community-2'},[_c('div',{staticClass:\"bg-comment-2\"},[_c('div',{staticClass:\"box-comment-2\"},[_c('div',{staticClass:\"user-comment\"},[_c('h5',[_vm._v(_vm._s(child.User.FullName))]),_c('p',[_vm._v(_vm._s(child.DatePost))]),_c('div',{staticClass:\"clear\"})]),_vm._m(7,true),_c('div',{staticClass:\"content-comment\",domProps:{\"innerHTML\":_vm._s(child.Content)}})]),_c('div',{staticClass:\"box-like-com\"},[_c('span',{staticClass:\"num-com\"},[_vm._v(_vm._s(child.NumLike)+\" lượt thích\")]),_c('a',{staticClass:\"num-com dis-traloi\",attrs:{\"href\":\"javascript:;\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.showListAnswer('ds-answer-community-3-'+ child.Id)}}},[_vm._v(_vm._s(child.NumAnswer)+\" câu trả lời\")]),_c('span',{staticClass:\"click-b-comment\",on:{\"click\":function($event){$event.stopPropagation();return _vm.showPopupAnswer(child)}}},[_vm._v(\"Trả lời\")]),_c('span',{staticClass:\"click-b-comment\",on:{\"click\":function($event){$event.stopPropagation();return _vm.like(child.Id)}}},[_vm._v(\"Thích\")]),_c('div',{staticClass:\"clear\"})])]),_c('ul',{staticClass:\"comment-ul-2 comment-ul-n ul-none hiden\",attrs:{\"id\":'ds-answer-community-3-'+ child.Id}},_vm._l((child.Children),function(c){return _c('li',{key:c.Id + '-answers-community-3'},[_c('div',{staticClass:\"bg-comment-2\"},[_c('div',{staticClass:\"box-comment-2\"},[_c('div',{staticClass:\"user-comment\"},[_c('h5',[_vm._v(_vm._s(c.User.FullName))]),_c('p',[_vm._v(_vm._s(c.DatePost))]),_c('div',{staticClass:\"clear\"})]),_vm._m(8,true),_c('div',{staticClass:\"content-comment\",domProps:{\"innerHTML\":_vm._s(c.Content)}})]),_c('div',{staticClass:\"box-like-com\"},[_c('span',{staticClass:\"num-com\"},[_vm._v(_vm._s(c.NumLike)+\" lượt thích\")]),_c('span',{staticClass:\"click-b-comment\",on:{\"click\":function($event){$event.stopPropagation();return _vm.like(c.Id)}}},[_vm._v(\"Thích\")]),_c('div',{staticClass:\"clear\"})])])])}),0)])}),0)])}),0)])}),(_vm.loadMore)?_c('div',{staticClass:\"comment-load\"},[_c('span',{staticClass:\"more-comment more-1\",on:{\"click\":function($event){return _vm.loadMoreData()}}},[_c('i',{staticClass:\"fas fa-angle-down\"}),_vm._v(\" Hiển thị thêm\")])]):_vm._e()],2)]),_c('div',{staticClass:\"tab-pane\",attrs:{\"role\":\"tabpanel\",\"id\":\"my-question\"}},[_c('ul',{staticClass:\"comment-ul-1 ul-none\"},[_vm._l((_vm.dataOfUser),function(item){return _c('li',{key:item.Id + '-my-question',staticClass:\"comment-li-1\"},[_c('div',{staticClass:\"box-comment-1\"},[_c('div',{staticClass:\"user-comment\"},[_c('img',{attrs:{\"src\":require(\"./../../../assets/imgs/user.png\")}}),_c('h5',[_vm._v(_vm._s(item.User.FullName))]),_c('p',[_vm._v(_vm._s(item.DatePost))]),_c('div',{staticClass:\"clear\"})]),_vm._m(9,true),_c('div',{staticClass:\"content-comment\",domProps:{\"innerHTML\":_vm._s(item.Content)}}),_c('div',{staticClass:\"box-like-com\"},[_c('span',{staticClass:\"num-com\"},[_vm._v(_vm._s(item.NumLike)+\" lượt thích\")]),_c('span',{staticClass:\"num-com click-traloi\"},[_c('a',{staticClass:\"dis-traloi\",attrs:{\"href\":\"javascript:;\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.showListAnswer('ds-tra-loi-'+ item.Id)}}},[_vm._v(_vm._s(item.NumAnswer)+\" câu trả lời\")])]),_c('span',{staticClass:\"click-b-comment com-com traloi-1\",on:{\"click\":function($event){$event.stopPropagation();return _vm.showPopupAnswer(item)}}},[_vm._v(\"Trả lời\")]),_c('span',{staticClass:\"click-b-comment like-com\",on:{\"click\":function($event){$event.stopPropagation();return _vm.like(item.Id)}}},[_vm._v(\"Thích\")]),_c('div',{staticClass:\"clear\"})])]),_c('ul',{staticClass:\"comment-ul-2 ul-none hiden\",attrs:{\"id\":'ds-tra-loi-'+ item.Id}},_vm._l((item.Children),function(answer){return _c('li',{key:answer.Id + '-answers'},[_c('div',{staticClass:\"bg-comment-2\"},[_c('div',{staticClass:\"box-comment-2\"},[_c('div',{staticClass:\"user-comment\"},[_c('h5',[_vm._v(_vm._s(answer.User.FullName))]),_c('p',[_vm._v(_vm._s(answer.DatePost))]),_c('div',{staticClass:\"clear\"})]),_vm._m(10,true),_c('div',{staticClass:\"content-comment\",domProps:{\"innerHTML\":_vm._s(answer.Content)}})]),_c('div',{staticClass:\"box-like-com\"},[_c('span',{staticClass:\"num-com\"},[_vm._v(_vm._s(answer.NumLike)+\" lượt thích\")]),_c('a',{staticClass:\"num-com dis-traloi\",attrs:{\"href\":\"javascript:;\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.showListAnswer('ds-tra-loi-'+ answer.Id)}}},[_vm._v(_vm._s(answer.NumAnswer)+\" câu trả lời\")]),_c('span',{staticClass:\"click-b-comment\",on:{\"click\":function($event){$event.stopPropagation();return _vm.showPopupAnswer(answer)}}},[_vm._v(\"Trả lời\")]),_c('span',{staticClass:\"click-b-comment\",on:{\"click\":function($event){$event.stopPropagation();return _vm.like(answer.Id)}}},[_vm._v(\"Thích\")]),_c('div',{staticClass:\"clear\"})])]),_c('ul',{staticClass:\"comment-ul-2 comment-ul-n ul-none hiden\",attrs:{\"id\":'ds-tra-loi-'+ answer.Id}},_vm._l((answer.Children),function(child){return _c('li',{key:child.Id + '-answers'},[_c('div',{staticClass:\"bg-comment-2\"},[_c('div',{staticClass:\"box-comment-2\"},[_c('div',{staticClass:\"user-comment\"},[_c('h5',[_vm._v(_vm._s(child.User.FullName))]),_c('p',[_vm._v(_vm._s(child.DatePost))]),_c('div',{staticClass:\"clear\"})]),_vm._m(11,true),_c('div',{staticClass:\"content-comment\",domProps:{\"innerHTML\":_vm._s(child.Content)}})]),_c('div',{staticClass:\"box-like-com\"},[_c('span',{staticClass:\"num-com\"},[_vm._v(_vm._s(child.NumLike)+\" lượt thích\")]),_c('a',{staticClass:\"num-com dis-traloi\",attrs:{\"href\":\"javascript:;\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.showListAnswer('ds-tra-loi-'+ child.Id)}}},[_vm._v(_vm._s(child.NumAnswer)+\" câu trả lời\")]),_c('span',{staticClass:\"click-b-comment\",on:{\"click\":function($event){$event.stopPropagation();return _vm.showPopupAnswer(child)}}},[_vm._v(\"Trả lời\")]),_c('span',{staticClass:\"click-b-comment\",on:{\"click\":function($event){$event.stopPropagation();return _vm.like(child.Id)}}},[_vm._v(\"Thích\")]),_c('div',{staticClass:\"clear\"})])]),_c('ul',{staticClass:\"comment-ul-2 comment-ul-n ul-none hiden\",attrs:{\"id\":'ds-tra-loi-'+ child.Id}},_vm._l((child.Children),function(c){return _c('li',{key:c.Id + '-answers'},[_c('div',{staticClass:\"bg-comment-2\"},[_c('div',{staticClass:\"box-comment-2\"},[_c('div',{staticClass:\"user-comment\"},[_c('h5',[_vm._v(_vm._s(c.User.FullName))]),_c('p',[_vm._v(_vm._s(c.DatePost))]),_c('div',{staticClass:\"clear\"})]),_vm._m(12,true),_c('div',{staticClass:\"content-comment\",domProps:{\"innerHTML\":_vm._s(c.Content)}})]),_c('div',{staticClass:\"box-like-com\"},[_c('span',{staticClass:\"num-com\"},[_vm._v(_vm._s(c.NumLike)+\" lượt thích\")]),_c('span',{staticClass:\"click-b-comment\",on:{\"click\":function($event){$event.stopPropagation();return _vm.like(c.Id)}}},[_vm._v(\"Thích\")]),_c('div',{staticClass:\"clear\"})])])])}),0)])}),0)])}),0)])}),(_vm.loadMoreUser)?_c('div',{staticClass:\"comment-load\"},[_c('span',{staticClass:\"more-comment more-1\",on:{\"click\":function($event){return _vm.loadMoreDataUser()}}},[_c('i',{staticClass:\"fas fa-angle-down\"}),_vm._v(\" Hiển thị thêm\")])]):_vm._e()],2)])])])])])])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"tit-page mg-0\"},[_c('div',{staticClass:\"container-hts\"},[_c('ul',{staticClass:\"bredcumb ul-none\"},[_c('li',[_c('h2',[_c('a',{attrs:{\"href\":\"javascript:;\"}},[_vm._v(\"Hỏi đáp\")])])])])])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"icon-search\"},[_c('i',{staticClass:\"fas fa-search\"})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',[_vm._v(\"Vai trò - Học sinh \"),_c('i',{staticClass:\"fas fa-angle-down\"})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',[_vm._v(\"Vai trò - Học sinh \"),_c('i',{staticClass:\"fas fa-angle-down\"})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ul',{staticClass:\"nav nav-tabs tab-bg\",attrs:{\"role\":\"tablist\"}},[_c('li',{attrs:{\"role\":\"presentation\"}},[_c('a',{staticClass:\"active\",attrs:{\"href\":\"#cong-dong\",\"aria-controls\":\"home\",\"role\":\"tab\",\"data-toggle\":\"tab\"}},[_vm._v(\"Cộng đồng\")])]),_c('li',{attrs:{\"role\":\"presentation\"}},[_c('a',{attrs:{\"href\":\"#my-question\",\"aria-controls\":\"messages\",\"role\":\"tab\",\"data-toggle\":\"tab\"}},[_vm._v(\"Câu hỏi của tôi\")])])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"tuychon-com\"},[_c('img',{attrs:{\"src\":require(\"./../../../assets/imgs/3cham.png\")}})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"tuychon-com\"},[_c('img',{attrs:{\"src\":require(\"./../../../assets/imgs/3cham.png\")}})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"tuychon-com\"},[_c('img',{attrs:{\"src\":require(\"./../../../assets/imgs/3cham.png\")}})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"tuychon-com\"},[_c('img',{attrs:{\"src\":require(\"./../../../assets/imgs/3cham.png\")}})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"tuychon-com\"},[_c('img',{attrs:{\"src\":require(\"./../../../assets/imgs/3cham.png\")}})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"tuychon-com\"},[_c('img',{attrs:{\"src\":require(\"./../../../assets/imgs/3cham.png\")}})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"tuychon-com\"},[_c('img',{attrs:{\"src\":require(\"./../../../assets/imgs/3cham.png\")}})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"tuychon-com\"},[_c('img',{attrs:{\"src\":require(\"./../../../assets/imgs/3cham.png\")}})])}]\n\nexport { render, staticRenderFns }","import axios from 'axios';\r\nimport HttpService from \"@/utils/httpData\"\r\nlet loginInfo = $cookies.get('login-info');\r\nlet token = '';\r\nif (loginInfo != null && loginInfo.accessToken != null) {\r\n token = loginInfo.accessToken;\r\n}\r\n\r\nexport const HTTP = axios.create({\r\n baseURL: 'http://45.118.144.25:8025/api/',\r\n headers: {\r\n 'Accept': 'application/json',\r\n \"Content-Type\": \"application/json\",\r\n 'Authorization': 'Bearer ' + token\r\n }\r\n})\r\n\r\n\r\nexport const HTTPExport = axios.create({\r\n baseURL: 'http://45.118.144.25:8025/api/',\r\n headers: {\r\n 'Accept': 'application/pdf',\r\n 'Authorization': 'Bearer ' + token\r\n },\r\n responseType: 'blob'\r\n})\r\n","import { HTTP } from './../_api';\r\nconst API_CONTROLLER = 'user/';\r\n\r\nexport default {\r\n getById(id) {\r\n let url = API_CONTROLLER + 'getById';\r\n return HTTP.get(url, {\r\n params: {\r\n id: id\r\n }\r\n });\r\n },\r\n}","\r\nimport HttpService from \"@/utils/httpData\"\r\nexport default {\r\n get(classId, subjectName) {\r\n \r\n let params= {\r\n classId: classId,\r\n subjectName: subjectName\r\n }\r\n let apiEndpoint = `subject/Get`;\r\n return HttpService.get(apiEndpoint, params)\r\n .then(res => {\r\n return res ? res : null;\r\n })\r\n .catch(e => {return false}\r\n );\r\n },\r\n}","import HttpService from \"@/utils/httpData\"\r\nexport default {\r\n filter(pageIndex, pageSize, userId, classId, subjectId, keywords) { \r\n let params = {\r\n pageIndex: pageIndex,\r\n pageSize: pageSize,\r\n userId: userId,\r\n classId: classId,\r\n subjectId: subjectId,\r\n keyword: keywords\r\n }\r\n let apiEndpoint = `QuestionAnswer/filter`;\r\n return HttpService.get(apiEndpoint, params)\r\n .then(res => {\r\n return res ? res : null;\r\n })\r\n .catch(e => {return false}\r\n );\r\n },\r\n\r\n getById(id) {\r\n let params= {\r\n id: id\r\n }\r\n let apiEndpoint = `QuestionAnswer/getById`;\r\n return HttpService.get(apiEndpoint, params)\r\n .then(res => {\r\n return res ? res : null;\r\n })\r\n .catch(e => {return false}\r\n );\r\n },\r\n\r\n add(data) {\r\n let params= data;\r\n let apiEndpoint = `QuestionAnswer/add`;\r\n return HttpService.post(apiEndpoint, params)\r\n .then(res => {\r\n return res ? res : null;\r\n })\r\n .catch(e => {return false}\r\n );\r\n },\r\n\r\n edit(data) {\r\n let params= data;\r\n let apiEndpoint = `QuestionAnswer/edit`;\r\n return HttpService.post(apiEndpoint, params)\r\n .then(res => {\r\n return res ? res : null;\r\n })\r\n .catch(e => {return false}\r\n );\r\n },\r\n\r\n delete(id) {\r\n let params= {\r\n id: id\r\n }\r\n let apiEndpoint = `QuestionAnswer/delete`;\r\n return HttpService.post(apiEndpoint, params)\r\n .then(res => {\r\n return res ? res : null;\r\n })\r\n .catch(e => {return false}\r\n );\r\n },\r\n\r\n like(questionAnswerId, userId) {\r\n \r\n let params= {\r\n questionAnswerId: questionAnswerId,\r\n userId: userId\r\n }\r\n let apiEndpoint = `QuestionAnswer/like`;\r\n return HttpService.post(apiEndpoint, params)\r\n .then(res => {\r\n return res ? res : null;\r\n })\r\n .catch(e => {return false}\r\n );\r\n },\r\n\r\n}","\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QuestionAnswer.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QuestionAnswer.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./QuestionAnswer.vue?vue&type=template&id=45bd98ca&\"\nimport script from \"./QuestionAnswer.vue?vue&type=script&lang=js&\"\nexport * from \"./QuestionAnswer.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[_c('img',{attrs:{\"width\":\"25%\"}}),_c('div',{ref:\"hello\"},[_c('h4',{staticStyle:{\"opacity\":\"0\"}},[_vm._v(\"gsgsgsgsgsgsgsggs\")]),_c('h4',[_vm._v(\"gsgsgsgsgsgsgsggs\")])]),_c('img',{attrs:{\"src\":_vm.output}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./tesst.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./tesst.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./tesst.vue?vue&type=template&id=08f02866&\"\nimport script from \"./tesst.vue?vue&type=script&lang=js&\"\nexport * from \"./tesst.vue?vue&type=script&lang=js&\"\nimport style0 from \"./tesst.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"container\",staticStyle:{\"padding-top\":\"50px\"}},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md-4 col-md-offset-4\"},[_c('form',{attrs:{\"name\":\"form\"}},[_c('div',{staticClass:\"form-group\",class:{ 'is-invalid': _vm.submitted && _vm.$v.account.email.$error }},[_c('label',{attrs:{\"for\":\"email\"}},[_vm._v(\"Email address:\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.account.email),expression:\"account.email\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"placeholder\":\"Enter email\",\"id\":\"email\"},domProps:{\"value\":(_vm.account.email)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.account, \"email\", $event.target.value)}}}),(_vm.submitted && !_vm.$v.account.email.required)?_c('div',{staticClass:\"invalid\"},[_vm._v(\"Vui lòng nhập email\")]):_vm._e()]),_c('div',{staticClass:\"form-group\",class:{ 'is-invalid': _vm.submitted && _vm.$v.account.password.$error }},[_c('label',{attrs:{\"for\":\"pwd\"}},[_vm._v(\"Password:\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.account.password),expression:\"account.password\"}],staticClass:\"form-control\",attrs:{\"type\":\"password\",\"placeholder\":\"Enter password\",\"id\":\"pwd\"},domProps:{\"value\":(_vm.account.password)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.account, \"password\", $event.target.value)}}}),(_vm.submitted && !_vm.$v.account.password.required)?_c('div',{staticClass:\"invalid\"},[_vm._v(\"Vui lòng nhập mật khẩu\")]):_vm._e()]),_c('button',{staticClass:\"btn btn-primary\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.login()}}},[_vm._v(\"Submit\")])])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { HTTP } from './../_api';\r\nconst API_CONTROLLER = 'Login/';\r\n\r\nexport default {\r\n login(data) {\r\n let url = API_CONTROLLER;\r\n return HTTP.post(url, data);\r\n },\r\n}","\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Login.vue?vue&type=template&id=4aadb300&\"\nimport script from \"./Login.vue?vue&type=script&lang=js&\"\nexport * from \"./Login.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=520fa990&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"520fa990\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PrepareDocList.vue?vue&type=style&index=0&id=2f393ce1&lang=scss&scoped=true&\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarCatsOfBook.vue?vue&type=style&index=0&id=8c7686e6&lang=scss&scoped=true&\"","(function(d){d['vi']=Object.assign(d['vi']||{},{a:\"Không thể tải file:\",b:\"Thanh công cụ hình ảnh\",c:\"Thanh công cụ bảng\",d:\"Đậm\",e:\"Ảnh đầy đủ\",f:\"Ảnh một bên\",g:\"Ảnh canh trái\",h:\"Ảnh canh giữa\",i:\"Ảnh canh phải\",j:\"Trích dẫn\",k:\"Chèn ảnh hoặc file\",l:\"Chèn ảnh\",m:\"Tạo bảng\",n:\"Tiêu đề cột\",o:\"Thêm cột vào bên trái\",p:\"Thêm cột vào bên phải\",q:\"Xoá cột\",r:\"Cột\",s:\"Tiêu đề hàng\",t:\"Thêm hàng ở dưới\",u:\"Thêm hàng phía trên\",v:\"Xoá hàng\",w:\"Hàng\",x:\"Sát nhập ô lên trên\",y:\"Sát nhập ô qua phải\",z:\"Sát nhập ô xuống dưới\",aa:\"Sát nhập ô qua trái\",ab:\"Tách ô theo chiều dọc\",ac:\"Tách ô theo chiều ngang\",ad:\"Sát nhập ô\",ae:\"Danh sách đánh số\",af:\"Danh sách đánh ký hiệu\",ag:\"Tăng lề\",ah:\"Giảm lề\",ai:\"Nghiêng\",aj:\"tiện ích ảnh\",ak:\"Chọn tiêu đề\",al:\"Tiêu đề\",am:\"Tải thất bại\",an:\"Nhập mô tả ảnh\",ao:\"Chèn đa phương tiện\",ap:\"Đường dẫn không được để trống\",aq:\"Đường dẫn đa phương tiện không hỗ trợ\",ar:\"tiện ích đa phương tiện\",as:\"Chèn liên kết\",at:\"Thanh công cụ tiện ích\",au:\"Đang tải lên\",av:\"Mở trên tab mới\",aw:\"Có thể tải về\",ax:\"Bỏ liên kết\",ay:\"Sửa liên kết\",az:\"Mở liên kết\",ba:\"Liên kết không có đường dẫn\",bb:\"Lưu\",bc:\"Hủy\",bd:\"Dán đường dẫn đa phương tiện vào trường\",be:\"Mẹo: Dán đường dẫn vào nội dung để nhúng ngay\",bf:\"Đường dẫn đa phương tiện\",bg:\"Đường dẫn liên kết\",bh:\"Hoàn tác\",bi:\"Tiếp tục\",bj:\"Trình soạn thảo văn bản\",bk:\"Thanh công cụ danh mục\",bl:\"%0 đến %1\",bm:\"Quay lại\",bn:\"Tiếp theo\",bo:\"Thanh công cụ biên tập\",bp:\"Xem thêm\",bq:\"Đoạn văn\",br:\"Tiêu đề 1\",bs:\"Tiêu đề 2\",bt:\"Tiêu đề 3\",bu:\"Tiêu đề 4\",bv:\"Tiêu đề 5\",bw:\"Tiêu đề 6\",bx:\"Đổi chữ alt của ảnh\",by:\"Trình soạn thảo văn bản, %0\",bz:\"Không thể lấy được đường dẫn ảnh đã đổi kích thước\",ca:\"Chọn ảnh đã đổi kích thước thất bại\",cb:\"Không thể chèn ảnh ở vị trí hiện tại\",cc:\"Chèn ảnh thất bại\",cd:\"Chữ alt\"})})(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Sidebar.vue?vue&type=style&index=0&id=029746f7&lang=scss&scoped=true&\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QuestionHead.vue?vue&type=style&index=0&id=2e28bb25&lang=scss&scoped=true&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PrepareDocEdit.vue?vue&type=style&index=0&id=48739cfb&lang=scss&scoped=true&\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarClassesModal.vue?vue&type=style&index=0&id=14da2d92&lang=scss&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app-cke\"},on:{\"mouseleave\":_vm.mouseLeave}},[_c('vue-ckeditor',{attrs:{\"id\":(\"myQuillEditor_\" + _vm.position),\"config\":_vm.config},on:{\"blur\":function($event){return _vm.onBlur($event)},\"focus\":function($event){return _vm.onFocus($event)}},model:{value:(_vm.content),callback:function ($$v) {_vm.content=$$v},expression:\"content\"}}),_c('b-modal',{attrs:{\"id\":(\"modal_upload_q_\" + _vm.position),\"hide-footer\":\"\"},scopedSlots:_vm._u([{key:\"modal-title\",fn:function(){return [_vm._v(\"\\n\\t \\t\\tTải lên media\\n\\t \\t\")]},proxy:true}])},[_c('div',{staticClass:\"d-block text-center\"},[_c('div',{staticClass:\"form-group\"},[_c('label',{staticClass:\"display-block font-weight-bold\"},[_vm._v(\"Tải \"+_vm._s(_vm.typeUpload === 'image' ? 'ảnh' : 'media')+\" thông qua link\")]),_c('input',{ref:\"link_media\",staticClass:\"form-control full-width\",attrs:{\"type\":\"text\"}})]),_c('p',{staticClass:\"display-block text-center full-width hr-center position-rel\"},[_c('span',{staticClass:\"position-rel\"},[_vm._v(\"Hoặc\")])]),_c('div',{staticClass:\"form-group form-editor-media position-rel text-center display-flex-center justify-content-center\"},[_c('span',{staticClass:\"margin-0\"},[_vm._v(\"Tải lên \"+_vm._s(_vm.typeUpload === 'image' ? 'ảnh' : 'media'))]),(_vm.typeUpload === 'image')?_c('input',{ref:\"upImg\",attrs:{\"type\":\"file\",\"name\":\"\",\"id\":\"upImg\",\"accept\":\"image/*\"},on:{\"change\":_vm.uploadImage}}):_c('input',{ref:\"upMedia\",attrs:{\"type\":\"file\",\"accept\":_vm.typeUpload === 'video' ? 'video/mp4,video/x-m4v,video/*' : 'audio/*'},on:{\"change\":_vm.uploadMedia}})])])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditorCK.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditorCK.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./EditorCK.vue?vue&type=template&id=e7adb8ee&scoped=true&\"\nimport script from \"./EditorCK.vue?vue&type=script&lang=js&\"\nexport * from \"./EditorCK.vue?vue&type=script&lang=js&\"\nimport style0 from \"./EditorCK.vue?vue&type=style&index=0&id=e7adb8ee&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e7adb8ee\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditorCK.vue?vue&type=style&index=0&id=e7adb8ee&lang=scss&scoped=true&\"","/*!\n * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md.\n */\n!function(t){t.en=Object.assign(t.en||{},{a:\"Cannot upload file:\",b:\"Image toolbar\",c:\"Table toolbar\",d:\"Bold\",e:\"Full size image\",f:\"Side image\",g:\"Left aligned image\",h:\"Centered image\",i:\"Right aligned image\",j:\"Block quote\",k:\"Insert image or file\",l:\"Insert image\",m:\"Insert table\",n:\"Header column\",o:\"Insert column left\",p:\"Insert column right\",q:\"Delete column\",r:\"Column\",s:\"Header row\",t:\"Insert row below\",u:\"Insert row above\",v:\"Delete row\",w:\"Row\",x:\"Merge cell up\",y:\"Merge cell right\",z:\"Merge cell down\",aa:\"Merge cell left\",ab:\"Split cell vertically\",ac:\"Split cell horizontally\",ad:\"Merge cells\",ae:\"Numbered List\",af:\"Bulleted List\",ag:\"Increase indent\",ah:\"Decrease indent\",ai:\"Italic\",aj:\"image widget\",ak:\"Choose heading\",al:\"Heading\",am:\"Upload failed\",an:\"Enter image caption\",ao:\"Insert media\",ap:\"The URL must not be empty.\",aq:\"This media URL is not supported.\",ar:\"media widget\",as:\"Link\",at:\"Widget toolbar\",au:\"Upload in progress\",av:\"Open in a new tab\",aw:\"Downloadable\",ax:\"Unlink\",ay:\"Edit link\",az:\"Open link in new tab\",ba:\"This link has no URL\",bb:\"Save\",bc:\"Cancel\",bd:\"Paste the media URL in the input.\",be:\"Tip: Paste the URL into the content to embed faster.\",bf:\"Media URL\",bg:\"Link URL\",bh:\"Undo\",bi:\"Redo\",bj:\"Rich Text Editor\",bk:\"Dropdown toolbar\",bl:\"%0 of %1\",bm:\"Previous\",bn:\"Next\",bo:\"Editor toolbar\",bp:\"Show more items\",bq:\"Paragraph\",br:\"Heading 1\",bs:\"Heading 2\",bt:\"Heading 3\",bu:\"Heading 4\",bv:\"Heading 5\",bw:\"Heading 6\",bx:\"Change image text alternative\",by:\"Rich Text Editor, %0\",bz:\"Could not obtain resized image URL.\",ca:\"Selecting resized image failed\",cb:\"Could not insert image at the current position.\",cc:\"Inserting image failed\",cd:\"Text alternative\"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})),function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define([],e):\"object\"==typeof exports?exports.ClassicEditor=e():t.ClassicEditor=e()}(window,(function(){return function(t){var e={};function n(i){if(e[i])return e[i].exports;var o=e[i]={i:i,l:!1,exports:{}};return t[i].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,i){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:i})},n.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var o in t)n.d(i,o,function(e){return t[e]}.bind(null,o));return i},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,\"a\",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p=\"\",n(n.s=92)}([function(t,e,n){\"use strict\";n.d(e,\"b\",(function(){return i})),n.d(e,\"a\",(function(){return o}));class i extends Error{constructor(t,e,n){t=o(t),n&&(t+=\" \"+JSON.stringify(n)),super(t),this.name=\"CKEditorError\",this.context=e,this.data=n}is(t){return\"CKEditorError\"===t}static rethrowUnexpectedError(t,e){if(t.is&&t.is(\"CKEditorError\"))throw t;const n=new i(t.message,e);throw n.stack=t.stack,n}}function o(t){const e=t.match(/^([^:]+):/);return e?t+` Read more: https://ckeditor.com/docs/ckeditor5/latest/framework/guides/support/error-codes.html#error-${e[1]}\\n`:t}},function(t,e,n){\"use strict\";var i,o=function(){return void 0===i&&(i=Boolean(window&&document&&document.all&&!window.atob)),i},r=function(){var t={};return function(e){if(void 0===t[e]){var n=document.querySelector(e);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(t){n=null}t[e]=n}return t[e]}}(),s=[];function a(t){for(var e=-1,n=0;n:first-child{margin-top:var(--ck-spacing-large)}.ck.ck-editor__editable_inline>:last-child{margin-bottom:var(--ck-spacing-large)}.ck.ck-balloon-panel.ck-toolbar-container[class*=arrow_n]:after{border-bottom-color:var(--ck-color-base-foreground)}.ck.ck-balloon-panel.ck-toolbar-container[class*=arrow_s]:after{border-top-color:var(--ck-color-base-foreground)}\"},function(t,e,n){var i=n(1),o=n(20);\"string\"==typeof(o=o.__esModule?o.default:o)&&(o=[[t.i,o,\"\"]]);var r={injectType:\"singletonStyleTag\",insert:\"head\",singleton:!0},s=(i(o,r),o.locals?o.locals:{});t.exports=s},function(t,e){t.exports=\".ck.ck-label{display:block}.ck.ck-voice-label{display:none}.ck.ck-label{font-weight:700}\"},function(t,e,n){var i=n(1),o=n(22);\"string\"==typeof(o=o.__esModule?o.default:o)&&(o=[[t.i,o,\"\"]]);var r={injectType:\"singletonStyleTag\",insert:\"head\",singleton:!0},s=(i(o,r),o.locals?o.locals:{});t.exports=s},function(t,e){t.exports=\".ck.ck-sticky-panel .ck-sticky-panel__content_sticky{z-index:var(--ck-z-modal);position:fixed;top:0}.ck.ck-sticky-panel .ck-sticky-panel__content_sticky_bottom-limit{top:auto;position:absolute}.ck.ck-sticky-panel .ck-sticky-panel__content_sticky{box-shadow:var(--ck-drop-shadow),0 0;border-width:0 1px 1px;border-top-left-radius:0;border-top-right-radius:0}\"},function(t,e,n){var i=n(1),o=n(24);\"string\"==typeof(o=o.__esModule?o.default:o)&&(o=[[t.i,o,\"\"]]);var r={injectType:\"singletonStyleTag\",insert:\"head\",singleton:!0},s=(i(o,r),o.locals?o.locals:{});t.exports=s},function(t,e){t.exports=\".ck.ck-dropdown{display:inline-block;position:relative}.ck.ck-dropdown .ck-dropdown__arrow{pointer-events:none;z-index:var(--ck-z-default)}.ck.ck-dropdown .ck-button.ck-dropdown__button{width:100%}.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-on .ck-tooltip{display:none}.ck.ck-dropdown .ck-dropdown__panel{-webkit-backface-visibility:hidden;display:none;z-index:var(--ck-z-modal);position:absolute}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel-visible{display:inline-block}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_ne,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nw{bottom:100%}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_se,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_sw{top:100%;bottom:auto}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_ne,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_se{left:0}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nw,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_sw{right:0}:root{--ck-dropdown-arrow-size:calc(0.5*var(--ck-icon-size))}.ck.ck-dropdown{font-size:inherit}.ck.ck-dropdown .ck-dropdown__arrow{width:var(--ck-dropdown-arrow-size)}[dir=ltr] .ck.ck-dropdown .ck-dropdown__arrow{right:var(--ck-spacing-standard);margin-left:var(--ck-spacing-small)}[dir=rtl] .ck.ck-dropdown .ck-dropdown__arrow{left:var(--ck-spacing-standard);margin-right:var(--ck-spacing-small)}.ck.ck-dropdown.ck-disabled .ck-dropdown__arrow{opacity:var(--ck-disabled-opacity)}[dir=ltr] .ck.ck-dropdown .ck-button.ck-dropdown__button:not(.ck-button_with-text){padding-left:var(--ck-spacing-small)}[dir=rtl] .ck.ck-dropdown .ck-button.ck-dropdown__button:not(.ck-button_with-text){padding-right:var(--ck-spacing-small)}.ck.ck-dropdown .ck-button.ck-dropdown__button .ck-button__label{width:7em;overflow:hidden;text-overflow:ellipsis}.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-disabled .ck-button__label{opacity:var(--ck-disabled-opacity)}.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-on{border-bottom-left-radius:0;border-bottom-right-radius:0}.ck.ck-dropdown__panel{border-radius:0}.ck-rounded-corners .ck.ck-dropdown__panel,.ck.ck-dropdown__panel.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-dropdown__panel{box-shadow:var(--ck-drop-shadow),0 0;background:var(--ck-color-dropdown-panel-background);border:1px solid var(--ck-color-dropdown-panel-border);bottom:0;min-width:100%}.ck.ck-dropdown__panel.ck-dropdown__panel_se{border-top-left-radius:0}.ck.ck-dropdown__panel.ck-dropdown__panel_sw{border-top-right-radius:0}.ck.ck-dropdown__panel.ck-dropdown__panel_ne{border-bottom-left-radius:0}.ck.ck-dropdown__panel.ck-dropdown__panel_nw{border-bottom-right-radius:0}\"},function(t,e,n){var i=n(1),o=n(26);\"string\"==typeof(o=o.__esModule?o.default:o)&&(o=[[t.i,o,\"\"]]);var r={injectType:\"singletonStyleTag\",insert:\"head\",singleton:!0},s=(i(o,r),o.locals?o.locals:{});t.exports=s},function(t,e){t.exports=\".ck.ck-icon{vertical-align:middle}:root{--ck-icon-size:calc(var(--ck-line-height-base)*var(--ck-font-size-normal))}.ck.ck-icon{width:var(--ck-icon-size);height:var(--ck-icon-size);font-size:.8333350694em;will-change:transform}.ck.ck-icon,.ck.ck-icon *{color:inherit;cursor:inherit}.ck.ck-icon :not([fill]){fill:currentColor}\"},function(t,e,n){var i=n(1),o=n(28);\"string\"==typeof(o=o.__esModule?o.default:o)&&(o=[[t.i,o,\"\"]]);var r={injectType:\"singletonStyleTag\",insert:\"head\",singleton:!0},s=(i(o,r),o.locals?o.locals:{});t.exports=s},function(t,e){t.exports='.ck.ck-tooltip,.ck.ck-tooltip .ck-tooltip__text:after{position:absolute;pointer-events:none;-webkit-backface-visibility:hidden}.ck.ck-tooltip{visibility:hidden;opacity:0;display:none;z-index:var(--ck-z-modal)}.ck.ck-tooltip .ck-tooltip__text{display:inline-block}.ck.ck-tooltip .ck-tooltip__text:after{content:\"\";width:0;height:0}:root{--ck-tooltip-arrow-size:5px}.ck.ck-tooltip{left:50%;top:0;transition:opacity .2s ease-in-out .2s}.ck.ck-tooltip .ck-tooltip__text{border-radius:0}.ck-rounded-corners .ck.ck-tooltip .ck-tooltip__text,.ck.ck-tooltip .ck-tooltip__text.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-tooltip .ck-tooltip__text{font-size:.9em;line-height:1.5;color:var(--ck-color-tooltip-text);padding:var(--ck-spacing-small) var(--ck-spacing-medium);background:var(--ck-color-tooltip-background);position:relative;left:-50%}.ck.ck-tooltip .ck-tooltip__text:after{transition:opacity .2s ease-in-out .2s;border-style:solid;left:50%}.ck.ck-tooltip.ck-tooltip_s{bottom:calc(-1*var(--ck-tooltip-arrow-size));transform:translateY(100%)}.ck.ck-tooltip.ck-tooltip_s .ck-tooltip__text:after{top:calc(-1*var(--ck-tooltip-arrow-size));transform:translateX(-50%);border-left-color:transparent;border-bottom-color:var(--ck-color-tooltip-background);border-right-color:transparent;border-top-color:transparent;border-left-width:var(--ck-tooltip-arrow-size);border-bottom-width:var(--ck-tooltip-arrow-size);border-right-width:var(--ck-tooltip-arrow-size);border-top-width:0}.ck.ck-tooltip.ck-tooltip_n{top:calc(-1*var(--ck-tooltip-arrow-size));transform:translateY(-100%)}.ck.ck-tooltip.ck-tooltip_n .ck-tooltip__text:after{bottom:calc(-1*var(--ck-tooltip-arrow-size));transform:translateX(-50%);border-left-color:transparent;border-bottom-color:transparent;border-right-color:transparent;border-top-color:var(--ck-color-tooltip-background);border-left-width:var(--ck-tooltip-arrow-size);border-bottom-width:0;border-right-width:var(--ck-tooltip-arrow-size);border-top-width:var(--ck-tooltip-arrow-size)}'},function(t,e,n){var i=n(1),o=n(30);\"string\"==typeof(o=o.__esModule?o.default:o)&&(o=[[t.i,o,\"\"]]);var r={injectType:\"singletonStyleTag\",insert:\"head\",singleton:!0},s=(i(o,r),o.locals?o.locals:{});t.exports=s},function(t,e){t.exports=\".ck.ck-button,a.ck.ck-button{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.ck.ck-button .ck-tooltip,a.ck.ck-button .ck-tooltip{display:block}@media (hover:none){.ck.ck-button .ck-tooltip,a.ck.ck-button .ck-tooltip{display:none}}.ck.ck-button,a.ck.ck-button{position:relative;display:inline-flex;align-items:center;justify-content:left}.ck.ck-button .ck-button__label,a.ck.ck-button .ck-button__label{display:none}.ck.ck-button.ck-button_with-text .ck-button__label,a.ck.ck-button.ck-button_with-text .ck-button__label{display:inline-block}.ck.ck-button:not(.ck-button_with-text),a.ck.ck-button:not(.ck-button_with-text){justify-content:center}.ck.ck-button:hover .ck-tooltip,a.ck.ck-button:hover .ck-tooltip{visibility:visible;opacity:1}.ck.ck-button:focus:not(:hover) .ck-tooltip,a.ck.ck-button:focus:not(:hover) .ck-tooltip{display:none}.ck.ck-button,a.ck.ck-button{background:var(--ck-color-button-default-background)}.ck.ck-button:not(.ck-disabled):hover,a.ck.ck-button:not(.ck-disabled):hover{background:var(--ck-color-button-default-hover-background)}.ck.ck-button:not(.ck-disabled):active,a.ck.ck-button:not(.ck-disabled):active{background:var(--ck-color-button-default-active-background);box-shadow:inset 0 2px 2px var(--ck-color-button-default-active-shadow)}.ck.ck-button.ck-disabled,a.ck.ck-button.ck-disabled{background:var(--ck-color-button-default-disabled-background)}.ck.ck-button,a.ck.ck-button{border-radius:0}.ck-rounded-corners .ck.ck-button,.ck-rounded-corners a.ck.ck-button,.ck.ck-button.ck-rounded-corners,a.ck.ck-button.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-button,a.ck.ck-button{white-space:nowrap;cursor:default;vertical-align:middle;padding:var(--ck-spacing-tiny);text-align:center;min-width:var(--ck-ui-component-min-height);min-height:var(--ck-ui-component-min-height);line-height:1;font-size:inherit;border:1px solid transparent;transition:box-shadow .2s ease-in-out,border .2s ease-in-out;-webkit-appearance:none}.ck.ck-button:active,.ck.ck-button:focus,a.ck.ck-button:active,a.ck.ck-button:focus{outline:none;border:var(--ck-focus-ring);box-shadow:var(--ck-focus-outer-shadow),0 0}.ck.ck-button .ck-button__icon use,.ck.ck-button .ck-button__icon use *,a.ck.ck-button .ck-button__icon use,a.ck.ck-button .ck-button__icon use *{color:inherit}.ck.ck-button .ck-button__label,a.ck.ck-button .ck-button__label{font-size:inherit;font-weight:inherit;color:inherit;cursor:inherit;vertical-align:middle}[dir=ltr] .ck.ck-button .ck-button__label,[dir=ltr] a.ck.ck-button .ck-button__label{text-align:left}[dir=rtl] .ck.ck-button .ck-button__label,[dir=rtl] a.ck.ck-button .ck-button__label{text-align:right}.ck.ck-button .ck-button__keystroke,a.ck.ck-button .ck-button__keystroke{color:inherit}[dir=ltr] .ck.ck-button .ck-button__keystroke,[dir=ltr] a.ck.ck-button .ck-button__keystroke{margin-left:var(--ck-spacing-large)}[dir=rtl] .ck.ck-button .ck-button__keystroke,[dir=rtl] a.ck.ck-button .ck-button__keystroke{margin-right:var(--ck-spacing-large)}.ck.ck-button .ck-button__keystroke,a.ck.ck-button .ck-button__keystroke{font-weight:700;opacity:.7}.ck.ck-button.ck-disabled:active,.ck.ck-button.ck-disabled:focus,a.ck.ck-button.ck-disabled:active,a.ck.ck-button.ck-disabled:focus{box-shadow:var(--ck-focus-disabled-outer-shadow),0 0}.ck.ck-button.ck-disabled .ck-button__icon,a.ck.ck-button.ck-disabled .ck-button__icon{opacity:var(--ck-disabled-opacity)}.ck.ck-button.ck-disabled .ck-button__label,a.ck.ck-button.ck-disabled .ck-button__label{opacity:var(--ck-disabled-opacity)}.ck.ck-button.ck-disabled .ck-button__keystroke,a.ck.ck-button.ck-disabled .ck-button__keystroke{opacity:.3}.ck.ck-button.ck-button_with-text,a.ck.ck-button.ck-button_with-text{padding:var(--ck-spacing-tiny) var(--ck-spacing-standard)}[dir=ltr] .ck.ck-button.ck-button_with-text .ck-button__icon,[dir=ltr] a.ck.ck-button.ck-button_with-text .ck-button__icon{margin-left:calc(-1*var(--ck-spacing-small));margin-right:var(--ck-spacing-small)}[dir=rtl] .ck.ck-button.ck-button_with-text .ck-button__icon,[dir=rtl] a.ck.ck-button.ck-button_with-text .ck-button__icon{margin-right:calc(-1*var(--ck-spacing-small));margin-left:var(--ck-spacing-small)}.ck.ck-button.ck-button_with-keystroke .ck-button__label,a.ck.ck-button.ck-button_with-keystroke .ck-button__label{flex-grow:1}.ck.ck-button.ck-on,a.ck.ck-button.ck-on{background:var(--ck-color-button-on-background)}.ck.ck-button.ck-on:not(.ck-disabled):hover,a.ck.ck-button.ck-on:not(.ck-disabled):hover{background:var(--ck-color-button-on-hover-background)}.ck.ck-button.ck-on:not(.ck-disabled):active,a.ck.ck-button.ck-on:not(.ck-disabled):active{background:var(--ck-color-button-on-active-background);box-shadow:inset 0 2px 2px var(--ck-color-button-on-active-shadow)}.ck.ck-button.ck-on.ck-disabled,a.ck.ck-button.ck-on.ck-disabled{background:var(--ck-color-button-on-disabled-background)}.ck.ck-button.ck-button-save,a.ck.ck-button.ck-button-save{color:var(--ck-color-button-save)}.ck.ck-button.ck-button-cancel,a.ck.ck-button.ck-button-cancel{color:var(--ck-color-button-cancel)}.ck.ck-button-action,a.ck.ck-button-action{background:var(--ck-color-button-action-background)}.ck.ck-button-action:not(.ck-disabled):hover,a.ck.ck-button-action:not(.ck-disabled):hover{background:var(--ck-color-button-action-hover-background)}.ck.ck-button-action:not(.ck-disabled):active,a.ck.ck-button-action:not(.ck-disabled):active{background:var(--ck-color-button-action-active-background);box-shadow:inset 0 2px 2px var(--ck-color-button-action-active-shadow)}.ck.ck-button-action.ck-disabled,a.ck.ck-button-action.ck-disabled{background:var(--ck-color-button-action-disabled-background)}.ck.ck-button-action,a.ck.ck-button-action{color:var(--ck-color-button-action-text)}.ck.ck-button-bold,a.ck.ck-button-bold{font-weight:700}\"},function(t,e,n){var i=n(1),o=n(32);\"string\"==typeof(o=o.__esModule?o.default:o)&&(o=[[t.i,o,\"\"]]);var r={injectType:\"singletonStyleTag\",insert:\"head\",singleton:!0},s=(i(o,r),o.locals?o.locals:{});t.exports=s},function(t,e){t.exports=\".ck.ck-list{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none;display:flex;flex-direction:column}.ck.ck-list .ck-list__item,.ck.ck-list .ck-list__separator{display:block}.ck.ck-list .ck-list__item>:focus{position:relative;z-index:var(--ck-z-default)}.ck.ck-list{border-radius:0}.ck-rounded-corners .ck.ck-list,.ck.ck-list.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-list{list-style-type:none;background:var(--ck-color-list-background)}.ck.ck-list__item{cursor:default;min-width:12em}.ck.ck-list__item .ck-button{min-height:unset;width:100%;text-align:left;border-radius:0;padding:calc(0.2*var(--ck-line-height-base)*var(--ck-font-size-base)) calc(0.4*var(--ck-line-height-base)*var(--ck-font-size-base))}.ck.ck-list__item .ck-button .ck-button__label{line-height:calc(1.2*var(--ck-line-height-base)*var(--ck-font-size-base))}.ck.ck-list__item .ck-button:active{box-shadow:none}.ck.ck-list__item .ck-button.ck-on{background:var(--ck-color-list-button-on-background);color:var(--ck-color-list-button-on-text)}.ck.ck-list__item .ck-button.ck-on:active{box-shadow:none}.ck.ck-list__item .ck-button.ck-on:hover:not(.ck-disabled){background:var(--ck-color-list-button-on-background-focus)}.ck.ck-list__item .ck-button.ck-on:focus:not(.ck-disabled){border-color:var(--ck-color-base-background)}.ck.ck-list__item .ck-button:hover:not(.ck-disabled){background:var(--ck-color-list-button-hover-background)}.ck.ck-list__item .ck-switchbutton.ck-on{background:var(--ck-color-list-background);color:inherit}.ck.ck-list__item .ck-switchbutton.ck-on:hover:not(.ck-disabled){background:var(--ck-color-list-button-hover-background);color:inherit}.ck.ck-list__separator{height:1px;width:100%;background:var(--ck-color-base-border)}\"},function(t,e,n){var i=n(1),o=n(34);\"string\"==typeof(o=o.__esModule?o.default:o)&&(o=[[t.i,o,\"\"]]);var r={injectType:\"singletonStyleTag\",insert:\"head\",singleton:!0},s=(i(o,r),o.locals?o.locals:{});t.exports=s},function(t,e){t.exports=\".ck.ck-button.ck-switchbutton .ck-button__toggle,.ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner{display:block}:root{--ck-switch-button-toggle-width:2.6153846154em;--ck-switch-button-toggle-inner-size:1.0769230769em;--ck-switch-button-toggle-spacing:1px;--ck-switch-button-translation:1.3846153847em}[dir=ltr] .ck.ck-button.ck-switchbutton .ck-button__label{margin-right:calc(2*var(--ck-spacing-large))}[dir=rtl] .ck.ck-button.ck-switchbutton .ck-button__label{margin-left:calc(2*var(--ck-spacing-large))}.ck.ck-button.ck-switchbutton .ck-button__toggle{border-radius:0}.ck-rounded-corners .ck.ck-button.ck-switchbutton .ck-button__toggle,.ck.ck-button.ck-switchbutton .ck-button__toggle.ck-rounded-corners{border-radius:var(--ck-border-radius)}[dir=ltr] .ck.ck-button.ck-switchbutton .ck-button__toggle{margin-left:auto}[dir=rtl] .ck.ck-button.ck-switchbutton .ck-button__toggle{margin-right:auto}.ck.ck-button.ck-switchbutton .ck-button__toggle{transition:background .4s ease;width:var(--ck-switch-button-toggle-width);background:var(--ck-color-switch-button-off-background)}.ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner{border-radius:0}.ck-rounded-corners .ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner,.ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner.ck-rounded-corners{border-radius:var(--ck-border-radius);border-radius:calc(0.5*var(--ck-border-radius))}.ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner{margin:var(--ck-switch-button-toggle-spacing);width:var(--ck-switch-button-toggle-inner-size);height:var(--ck-switch-button-toggle-inner-size);background:var(--ck-color-switch-button-inner-background);transition:all .3s ease}.ck.ck-button.ck-switchbutton .ck-button__toggle:hover{background:var(--ck-color-switch-button-off-hover-background)}.ck.ck-button.ck-switchbutton .ck-button__toggle:hover .ck-button__toggle__inner{box-shadow:0 0 0 5px var(--ck-color-switch-button-inner-shadow)}.ck.ck-button.ck-switchbutton.ck-disabled .ck-button__toggle{opacity:var(--ck-disabled-opacity)}.ck.ck-button.ck-switchbutton.ck-on .ck-button__toggle{background:var(--ck-color-switch-button-on-background)}.ck.ck-button.ck-switchbutton.ck-on .ck-button__toggle:hover{background:var(--ck-color-switch-button-on-hover-background)}[dir=ltr] .ck.ck-button.ck-switchbutton.ck-on .ck-button__toggle .ck-button__toggle__inner{transform:translateX(var(--ck-switch-button-translation))}[dir=rtl] .ck.ck-button.ck-switchbutton.ck-on .ck-button__toggle .ck-button__toggle__inner{transform:translateX(calc(-1*var(--ck-switch-button-translation)))}\"},function(t,e,n){var i=n(1),o=n(36);\"string\"==typeof(o=o.__esModule?o.default:o)&&(o=[[t.i,o,\"\"]]);var r={injectType:\"singletonStyleTag\",insert:\"head\",singleton:!0},s=(i(o,r),o.locals?o.locals:{});t.exports=s},function(t,e){t.exports=\".ck.ck-toolbar-dropdown .ck.ck-toolbar .ck.ck-toolbar__items{flex-wrap:nowrap}.ck.ck-toolbar-dropdown .ck-dropdown__panel .ck-button:focus{z-index:calc(var(--ck-z-default) + 1)}.ck.ck-toolbar-dropdown .ck-toolbar{border:0}\"},function(t,e,n){var i=n(1),o=n(38);\"string\"==typeof(o=o.__esModule?o.default:o)&&(o=[[t.i,o,\"\"]]);var r={injectType:\"singletonStyleTag\",insert:\"head\",singleton:!0},s=(i(o,r),o.locals?o.locals:{});t.exports=s},function(t,e){t.exports=\".ck.ck-dropdown .ck-dropdown__panel .ck-list{border-radius:0}.ck-rounded-corners .ck.ck-dropdown .ck-dropdown__panel .ck-list,.ck.ck-dropdown .ck-dropdown__panel .ck-list.ck-rounded-corners{border-radius:var(--ck-border-radius);border-top-left-radius:0}.ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:first-child .ck-button{border-radius:0}.ck-rounded-corners .ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:first-child .ck-button,.ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:first-child .ck-button.ck-rounded-corners{border-radius:var(--ck-border-radius);border-top-left-radius:0;border-bottom-left-radius:0;border-bottom-right-radius:0}.ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:last-child .ck-button{border-radius:0}.ck-rounded-corners .ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:last-child .ck-button,.ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:last-child .ck-button.ck-rounded-corners{border-radius:var(--ck-border-radius);border-top-left-radius:0;border-top-right-radius:0}\"},function(t,e,n){var i=n(1),o=n(40);\"string\"==typeof(o=o.__esModule?o.default:o)&&(o=[[t.i,o,\"\"]]);var r={injectType:\"singletonStyleTag\",insert:\"head\",singleton:!0},s=(i(o,r),o.locals?o.locals:{});t.exports=s},function(t,e){t.exports=\".ck.ck-toolbar{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none;display:flex;flex-flow:row nowrap;align-items:center}.ck.ck-toolbar>.ck-toolbar__items{display:flex;flex-flow:row wrap;align-items:center;flex-grow:1}.ck.ck-toolbar .ck.ck-toolbar__separator{display:inline-block}.ck.ck-toolbar .ck.ck-toolbar__separator:first-child,.ck.ck-toolbar .ck.ck-toolbar__separator:last-child{display:none}.ck.ck-toolbar.ck-toolbar_grouping>.ck-toolbar__items{flex-wrap:nowrap}.ck.ck-toolbar.ck-toolbar_vertical>.ck-toolbar__items{flex-direction:column}.ck.ck-toolbar.ck-toolbar_floating>.ck-toolbar__items{flex-wrap:nowrap}.ck.ck-toolbar>.ck.ck-toolbar__grouped-dropdown>.ck-dropdown__button .ck-dropdown__arrow{display:none}.ck.ck-toolbar{border-radius:0}.ck-rounded-corners .ck.ck-toolbar,.ck.ck-toolbar.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-toolbar{background:var(--ck-color-toolbar-background);padding:0 var(--ck-spacing-small);border:1px solid var(--ck-color-toolbar-border)}.ck.ck-toolbar .ck.ck-toolbar__separator{align-self:stretch;width:1px;min-width:1px;margin-top:0;margin-bottom:0;background:var(--ck-color-toolbar-border)}.ck.ck-toolbar>.ck-toolbar__items>*{margin-top:var(--ck-spacing-small);margin-bottom:var(--ck-spacing-small);margin-right:var(--ck-spacing-small)}.ck.ck-toolbar>.ck-toolbar__items:empty+.ck.ck-toolbar__separator{display:none}.ck.ck-toolbar>.ck-toolbar__items>*,.ck.ck-toolbar>.ck.ck-toolbar__grouped-dropdown{margin-top:var(--ck-spacing-small);margin-bottom:var(--ck-spacing-small)}.ck.ck-toolbar.ck-toolbar_vertical{padding:0}.ck.ck-toolbar.ck-toolbar_vertical>.ck-toolbar__items>.ck{width:100%;margin:0;border-radius:0;border:0}.ck.ck-toolbar.ck-toolbar_compact{padding:0}.ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>*{margin:0}.ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>:not(:first-child):not(:last-child){border-radius:0}.ck.ck-toolbar>.ck.ck-toolbar__grouped-dropdown>.ck.ck-button.ck-dropdown__button{padding-left:var(--ck-spacing-tiny)}.ck-toolbar-container .ck.ck-toolbar{border:0}.ck.ck-toolbar[dir=rtl]>.ck-toolbar__items>.ck,[dir=rtl] .ck.ck-toolbar>.ck-toolbar__items>.ck{margin-right:0}.ck.ck-toolbar[dir=rtl]:not(.ck-toolbar_compact)>.ck-toolbar__items>.ck,[dir=rtl] .ck.ck-toolbar:not(.ck-toolbar_compact)>.ck-toolbar__items>.ck{margin-left:var(--ck-spacing-small)}.ck.ck-toolbar[dir=rtl]>.ck-toolbar__items>.ck:last-child,[dir=rtl] .ck.ck-toolbar>.ck-toolbar__items>.ck:last-child{margin-left:0}.ck.ck-toolbar[dir=rtl].ck-toolbar_compact>.ck-toolbar__items>.ck:first-child,[dir=rtl] .ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>.ck:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.ck.ck-toolbar[dir=rtl].ck-toolbar_compact>.ck-toolbar__items>.ck:last-child,[dir=rtl] .ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>.ck:last-child{border-top-right-radius:0;border-bottom-right-radius:0}.ck.ck-toolbar[dir=rtl]>.ck.ck-toolbar__separator,[dir=rtl] .ck.ck-toolbar>.ck.ck-toolbar__separator{margin-left:var(--ck-spacing-small)}.ck.ck-toolbar[dir=rtl].ck-toolbar_grouping>.ck-toolbar__items:not(:empty):not(:only-child),[dir=rtl] .ck.ck-toolbar.ck-toolbar_grouping>.ck-toolbar__items:not(:empty):not(:only-child){margin-left:var(--ck-spacing-small)}.ck.ck-toolbar[dir=ltr]>.ck-toolbar__items>.ck:last-child,[dir=ltr] .ck.ck-toolbar>.ck-toolbar__items>.ck:last-child{margin-right:0}.ck.ck-toolbar[dir=ltr].ck-toolbar_compact>.ck-toolbar__items>.ck:first-child,[dir=ltr] .ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>.ck:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.ck.ck-toolbar[dir=ltr].ck-toolbar_compact>.ck-toolbar__items>.ck:last-child,[dir=ltr] .ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>.ck:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.ck.ck-toolbar[dir=ltr]>.ck.ck-toolbar__separator,[dir=ltr] .ck.ck-toolbar>.ck.ck-toolbar__separator{margin-right:var(--ck-spacing-small)}.ck.ck-toolbar[dir=ltr].ck-toolbar_grouping>.ck-toolbar__items:not(:empty):not(:only-child),[dir=ltr] .ck.ck-toolbar.ck-toolbar_grouping>.ck-toolbar__items:not(:empty):not(:only-child){margin-right:var(--ck-spacing-small)}\"},function(t,e,n){var i=n(1),o=n(42);\"string\"==typeof(o=o.__esModule?o.default:o)&&(o=[[t.i,o,\"\"]]);var r={injectType:\"singletonStyleTag\",insert:\"head\",singleton:!0},s=(i(o,r),o.locals?o.locals:{});t.exports=s},function(t,e){t.exports=\".ck.ck-editor{position:relative}.ck.ck-editor .ck-editor__top .ck-sticky-panel .ck-toolbar{z-index:var(--ck-z-modal)}.ck.ck-editor__top .ck-sticky-panel .ck-toolbar{border-radius:0}.ck-rounded-corners .ck.ck-editor__top .ck-sticky-panel .ck-toolbar,.ck.ck-editor__top .ck-sticky-panel .ck-toolbar.ck-rounded-corners{border-radius:var(--ck-border-radius);border-bottom-left-radius:0;border-bottom-right-radius:0}.ck.ck-editor__top .ck-sticky-panel .ck-toolbar{border-bottom-width:0}.ck.ck-editor__top .ck-sticky-panel .ck-sticky-panel__content_sticky .ck-toolbar{border-bottom-width:1px;border-radius:0}.ck-rounded-corners .ck.ck-editor__top .ck-sticky-panel .ck-sticky-panel__content_sticky .ck-toolbar,.ck.ck-editor__top .ck-sticky-panel .ck-sticky-panel__content_sticky .ck-toolbar.ck-rounded-corners{border-radius:var(--ck-border-radius);border-radius:0}.ck.ck-editor__main>.ck-editor__editable{background:var(--ck-color-base-background);border-radius:0}.ck-rounded-corners .ck.ck-editor__main>.ck-editor__editable,.ck.ck-editor__main>.ck-editor__editable.ck-rounded-corners{border-radius:var(--ck-border-radius);border-top-left-radius:0;border-top-right-radius:0}.ck.ck-editor__main>.ck-editor__editable:not(.ck-focused){border-color:var(--ck-color-base-border)}\"},function(t,e,n){var i=n(1),o=n(44);\"string\"==typeof(o=o.__esModule?o.default:o)&&(o=[[t.i,o,\"\"]]);var r={injectType:\"singletonStyleTag\",insert:\"head\",singleton:!0},s=(i(o,r),o.locals?o.locals:{});t.exports=s},function(t,e){t.exports=\".ck-content blockquote{overflow:hidden;padding-right:1.5em;padding-left:1.5em;margin-left:0;margin-right:0;font-style:italic;border-left:5px solid #ccc}.ck-content[dir=rtl] blockquote{border-left:0;border-right:5px solid #ccc}\"},function(t,e,n){var i=n(1),o=n(46);\"string\"==typeof(o=o.__esModule?o.default:o)&&(o=[[t.i,o,\"\"]]);var r={injectType:\"singletonStyleTag\",insert:\"head\",singleton:!0},s=(i(o,r),o.locals?o.locals:{});t.exports=s},function(t,e){t.exports=\".ck .ck-link_selected{background:var(--ck-color-link-selected-background)}\"},function(t,e,n){var i=n(1),o=n(48);\"string\"==typeof(o=o.__esModule?o.default:o)&&(o=[[t.i,o,\"\"]]);var r={injectType:\"singletonStyleTag\",insert:\"head\",singleton:!0},s=(i(o,r),o.locals?o.locals:{});t.exports=s},function(t,e){t.exports=\":root{--ck-color-resizer:var(--ck-color-focus-border);--ck-resizer-size:10px;--ck-resizer-border-width:1px;--ck-resizer-border-radius:2px;--ck-resizer-offset:calc(var(--ck-resizer-size)/-2 - 2px);--ck-resizer-tooltip-offset:10px;--ck-color-resizer-tooltip-background:#262626;--ck-color-resizer-tooltip-text:#f2f2f2}.ck .ck-widget.ck-widget_with-selection-handle{position:relative}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle{position:absolute}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle .ck-icon{display:block}.ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected .ck-widget__selection-handle,.ck .ck-widget.ck-widget_with-selection-handle:hover .ck-widget__selection-handle{visibility:visible}.ck .ck-size-view{background:var(--ck-color-resizer-tooltip-background);color:var(--ck-color-resizer-tooltip-text);border:1px solid var(--ck-color-resizer-tooltip-text);border-radius:var(--ck-resizer-border-radius);font-size:var(--ck-font-size-tiny);display:block;padding:var(--ck-spacing-small)}.ck .ck-size-view.ck-orientation-bottom-left,.ck .ck-size-view.ck-orientation-bottom-right,.ck .ck-size-view.ck-orientation-top-left,.ck .ck-size-view.ck-orientation-top-right{position:absolute}.ck .ck-size-view.ck-orientation-top-left{top:var(--ck-resizer-tooltip-offset);left:var(--ck-resizer-tooltip-offset)}.ck .ck-size-view.ck-orientation-top-right{top:var(--ck-resizer-tooltip-offset);right:var(--ck-resizer-tooltip-offset)}.ck .ck-size-view.ck-orientation-bottom-right{bottom:var(--ck-resizer-tooltip-offset);right:var(--ck-resizer-tooltip-offset)}.ck .ck-size-view.ck-orientation-bottom-left{bottom:var(--ck-resizer-tooltip-offset);left:var(--ck-resizer-tooltip-offset)}:root{--ck-widget-outline-thickness:3px;--ck-widget-handler-icon-size:16px;--ck-widget-handler-animation-duration:200ms;--ck-widget-handler-animation-curve:ease;--ck-color-widget-blurred-border:#dedede;--ck-color-widget-hover-border:#ffc83d;--ck-color-widget-editable-focus-background:var(--ck-color-base-background);--ck-color-widget-drag-handler-icon-color:var(--ck-color-base-background)}.ck .ck-widget{outline-width:var(--ck-widget-outline-thickness);outline-style:solid;outline-color:transparent;transition:outline-color var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve)}.ck .ck-widget.ck-widget_selected,.ck .ck-widget.ck-widget_selected:hover{outline:var(--ck-widget-outline-thickness) solid var(--ck-color-focus-border)}.ck .ck-widget:hover{outline-color:var(--ck-color-widget-hover-border)}.ck .ck-editor__nested-editable{border:1px solid transparent}.ck .ck-editor__nested-editable.ck-editor__nested-editable_focused,.ck .ck-editor__nested-editable:focus{outline:none;border:var(--ck-focus-ring);box-shadow:var(--ck-inner-shadow),0 0;background-color:var(--ck-color-widget-editable-focus-background)}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle{padding:4px;box-sizing:border-box;background-color:transparent;opacity:0;transition:background-color var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve),visibility var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve),opacity var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve);border-radius:var(--ck-border-radius) var(--ck-border-radius) 0 0;transform:translateY(-100%);left:calc(0px - var(--ck-widget-outline-thickness))}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle .ck-icon{width:var(--ck-widget-handler-icon-size);height:var(--ck-widget-handler-icon-size);color:var(--ck-color-widget-drag-handler-icon-color)}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle .ck-icon .ck-icon__selected-indicator{opacity:0;transition:opacity .3s var(--ck-widget-handler-animation-curve)}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle:hover .ck-icon .ck-icon__selected-indicator{opacity:1}.ck .ck-widget.ck-widget_with-selection-handle:hover .ck-widget__selection-handle{opacity:1;background-color:var(--ck-color-widget-hover-border)}.ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected .ck-widget__selection-handle,.ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected:hover .ck-widget__selection-handle{opacity:1;background-color:var(--ck-color-focus-border)}.ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected .ck-widget__selection-handle .ck-icon .ck-icon__selected-indicator,.ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected:hover .ck-widget__selection-handle .ck-icon .ck-icon__selected-indicator{opacity:1}.ck-editor__editable>.ck-widget.ck-widget_with-selection-handle:first-child,.ck-editor__editable blockquote>.ck-widget.ck-widget_with-selection-handle:first-child{margin-top:calc(1em + var(--ck-widget-handler-icon-size))}.ck[dir=rtl] .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle{left:auto;right:calc(0px - var(--ck-widget-outline-thickness))}.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected,.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected:hover{outline-color:var(--ck-color-widget-blurred-border)}.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected.ck-widget_with-selection-handle .ck-widget__selection-handle,.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected.ck-widget_with-selection-handle .ck-widget__selection-handle:hover,.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected:hover.ck-widget_with-selection-handle .ck-widget__selection-handle,.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected:hover.ck-widget_with-selection-handle .ck-widget__selection-handle:hover{background:var(--ck-color-widget-blurred-border)}.ck-editor__editable.ck-read-only .ck-widget{--ck-widget-outline-thickness:0}\"},function(t,e,n){var i=n(1),o=n(50);\"string\"==typeof(o=o.__esModule?o.default:o)&&(o=[[t.i,o,\"\"]]);var r={injectType:\"singletonStyleTag\",insert:\"head\",singleton:!0},s=(i(o,r),o.locals?o.locals:{});t.exports=s},function(t,e){t.exports=\".ck.ck-labeled-input .ck-labeled-input__status{font-size:var(--ck-font-size-small);margin-top:var(--ck-spacing-small);white-space:normal}.ck.ck-labeled-input .ck-labeled-input__status_error{color:var(--ck-color-base-error)}\"},function(t,e,n){var i=n(1),o=n(52);\"string\"==typeof(o=o.__esModule?o.default:o)&&(o=[[t.i,o,\"\"]]);var r={injectType:\"singletonStyleTag\",insert:\"head\",singleton:!0},s=(i(o,r),o.locals?o.locals:{});t.exports=s},function(t,e){t.exports=\":root{--ck-input-text-width:18em}.ck.ck-input-text{border-radius:0}.ck-rounded-corners .ck.ck-input-text,.ck.ck-input-text.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-input-text{box-shadow:var(--ck-inner-shadow),0 0;background:var(--ck-color-input-background);border:1px solid var(--ck-color-input-border);padding:var(--ck-spacing-extra-tiny) var(--ck-spacing-medium);min-width:var(--ck-input-text-width);min-height:var(--ck-ui-component-min-height);transition:box-shadow .2s ease-in-out,border .2s ease-in-out}.ck.ck-input-text:focus{outline:none;border:var(--ck-focus-ring);box-shadow:var(--ck-focus-outer-shadow),var(--ck-inner-shadow)}.ck.ck-input-text[readonly]{border:1px solid var(--ck-color-input-disabled-border);background:var(--ck-color-input-disabled-background);color:var(--ck-color-input-disabled-text)}.ck.ck-input-text[readonly]:focus{box-shadow:var(--ck-focus-disabled-outer-shadow),var(--ck-inner-shadow)}.ck.ck-input-text.ck-error{border-color:var(--ck-color-input-error-border);animation:ck-text-input-shake .3s ease both}.ck.ck-input-text.ck-error:focus{box-shadow:var(--ck-focus-error-outer-shadow),var(--ck-inner-shadow)}@keyframes ck-text-input-shake{20%{transform:translateX(-2px)}40%{transform:translateX(2px)}60%{transform:translateX(-1px)}80%{transform:translateX(1px)}}\"},function(t,e,n){var i=n(1),o=n(54);\"string\"==typeof(o=o.__esModule?o.default:o)&&(o=[[t.i,o,\"\"]]);var r={injectType:\"singletonStyleTag\",insert:\"head\",singleton:!0},s=(i(o,r),o.locals?o.locals:{});t.exports=s},function(t,e){t.exports=\".ck.ck-text-alternative-form{display:flex;flex-direction:row;flex-wrap:nowrap}.ck.ck-text-alternative-form .ck-labeled-input{display:inline-block}.ck.ck-text-alternative-form .ck-label{display:none}@media screen and (max-width:600px){.ck.ck-text-alternative-form{flex-wrap:wrap}.ck.ck-text-alternative-form .ck-labeled-input{flex-basis:100%}.ck.ck-text-alternative-form .ck-button{flex-basis:50%}}.ck.ck-text-alternative-form{padding:var(--ck-spacing-standard)}.ck.ck-text-alternative-form:focus{outline:none}[dir=ltr] .ck.ck-text-alternative-form>:not(:first-child),[dir=rtl] .ck.ck-text-alternative-form>:not(:last-child){margin-left:var(--ck-spacing-standard)}@media screen and (max-width:600px){.ck.ck-text-alternative-form{padding:0;width:calc(0.8*var(--ck-input-text-width))}.ck.ck-text-alternative-form .ck-labeled-input{margin:var(--ck-spacing-standard) var(--ck-spacing-standard) 0}.ck.ck-text-alternative-form .ck-labeled-input .ck-input-text{min-width:0;width:100%}.ck.ck-text-alternative-form .ck-button{padding:var(--ck-spacing-standard);margin-top:var(--ck-spacing-standard);border-radius:0;border:0;border-top:1px solid var(--ck-color-base-border)}[dir=ltr] .ck.ck-text-alternative-form .ck-button{margin-left:0}[dir=ltr] .ck.ck-text-alternative-form .ck-button:first-of-type{border-right:1px solid var(--ck-color-base-border)}[dir=rtl] .ck.ck-text-alternative-form .ck-button{margin-left:0}[dir=rtl] .ck.ck-text-alternative-form .ck-button:last-of-type{border-right:1px solid var(--ck-color-base-border)}}\"},function(t,e,n){var i=n(1),o=n(56);\"string\"==typeof(o=o.__esModule?o.default:o)&&(o=[[t.i,o,\"\"]]);var r={injectType:\"singletonStyleTag\",insert:\"head\",singleton:!0},s=(i(o,r),o.locals?o.locals:{});t.exports=s},function(t,e){t.exports=':root{--ck-balloon-panel-arrow-z-index:calc(var(--ck-z-default) - 3)}.ck.ck-balloon-panel{display:none;position:absolute;z-index:var(--ck-z-modal)}.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:after,.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:before{content:\"\";position:absolute}.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:before{z-index:var(--ck-balloon-panel-arrow-z-index)}.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:after{z-index:calc(var(--ck-balloon-panel-arrow-z-index) + 1)}.ck.ck-balloon-panel[class*=arrow_n]:before{z-index:var(--ck-balloon-panel-arrow-z-index)}.ck.ck-balloon-panel[class*=arrow_n]:after{z-index:calc(var(--ck-balloon-panel-arrow-z-index) + 1)}.ck.ck-balloon-panel[class*=arrow_s]:before{z-index:var(--ck-balloon-panel-arrow-z-index)}.ck.ck-balloon-panel[class*=arrow_s]:after{z-index:calc(var(--ck-balloon-panel-arrow-z-index) + 1)}.ck.ck-balloon-panel.ck-balloon-panel_visible{display:block}:root{--ck-balloon-arrow-offset:2px;--ck-balloon-arrow-height:10px;--ck-balloon-arrow-half-width:8px}.ck.ck-balloon-panel{border-radius:0}.ck-rounded-corners .ck.ck-balloon-panel,.ck.ck-balloon-panel.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-balloon-panel{box-shadow:var(--ck-drop-shadow),0 0;min-height:15px;background:var(--ck-color-panel-background);border:1px solid var(--ck-color-panel-border)}.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:after,.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:before{width:0;height:0;border-style:solid}.ck.ck-balloon-panel[class*=arrow_n]:after,.ck.ck-balloon-panel[class*=arrow_n]:before{border-left-width:var(--ck-balloon-arrow-half-width);border-bottom-width:var(--ck-balloon-arrow-height);border-right-width:var(--ck-balloon-arrow-half-width);border-top-width:0}.ck.ck-balloon-panel[class*=arrow_n]:before{border-bottom-color:var(--ck-color-panel-border)}.ck.ck-balloon-panel[class*=arrow_n]:after,.ck.ck-balloon-panel[class*=arrow_n]:before{border-left-color:transparent;border-right-color:transparent;border-top-color:transparent}.ck.ck-balloon-panel[class*=arrow_n]:after{border-bottom-color:var(--ck-color-panel-background);margin-top:var(--ck-balloon-arrow-offset)}.ck.ck-balloon-panel[class*=arrow_s]:after,.ck.ck-balloon-panel[class*=arrow_s]:before{border-left-width:var(--ck-balloon-arrow-half-width);border-bottom-width:0;border-right-width:var(--ck-balloon-arrow-half-width);border-top-width:var(--ck-balloon-arrow-height)}.ck.ck-balloon-panel[class*=arrow_s]:before{border-top-color:var(--ck-color-panel-border)}.ck.ck-balloon-panel[class*=arrow_s]:after,.ck.ck-balloon-panel[class*=arrow_s]:before{border-left-color:transparent;border-bottom-color:transparent;border-right-color:transparent}.ck.ck-balloon-panel[class*=arrow_s]:after{border-top-color:var(--ck-color-panel-background);margin-bottom:var(--ck-balloon-arrow-offset)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_n:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_n:before{left:50%;margin-left:calc(-1*var(--ck-balloon-arrow-half-width));top:calc(-1*var(--ck-balloon-arrow-height))}.ck.ck-balloon-panel.ck-balloon-panel_arrow_nw:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_nw:before{left:calc(2*var(--ck-balloon-arrow-half-width));top:calc(-1*var(--ck-balloon-arrow-height))}.ck.ck-balloon-panel.ck-balloon-panel_arrow_ne:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_ne:before{right:calc(2*var(--ck-balloon-arrow-half-width));top:calc(-1*var(--ck-balloon-arrow-height))}.ck.ck-balloon-panel.ck-balloon-panel_arrow_s:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_s:before{left:50%;margin-left:calc(-1*var(--ck-balloon-arrow-half-width));bottom:calc(-1*var(--ck-balloon-arrow-height))}.ck.ck-balloon-panel.ck-balloon-panel_arrow_sw:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_sw:before{left:calc(2*var(--ck-balloon-arrow-half-width));bottom:calc(-1*var(--ck-balloon-arrow-height))}.ck.ck-balloon-panel.ck-balloon-panel_arrow_se:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_se:before{right:calc(2*var(--ck-balloon-arrow-half-width));bottom:calc(-1*var(--ck-balloon-arrow-height))}.ck.ck-balloon-panel.ck-balloon-panel_arrow_sme:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_sme:before{right:25%;margin-right:calc(2*var(--ck-balloon-arrow-half-width));bottom:calc(-1*var(--ck-balloon-arrow-height))}.ck.ck-balloon-panel.ck-balloon-panel_arrow_smw:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_smw:before{left:25%;margin-left:calc(2*var(--ck-balloon-arrow-half-width));bottom:calc(-1*var(--ck-balloon-arrow-height))}.ck.ck-balloon-panel.ck-balloon-panel_arrow_nme:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_nme:before{right:25%;margin-right:calc(2*var(--ck-balloon-arrow-half-width));top:calc(-1*var(--ck-balloon-arrow-height))}.ck.ck-balloon-panel.ck-balloon-panel_arrow_nmw:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_nmw:before{left:25%;margin-left:calc(2*var(--ck-balloon-arrow-half-width));top:calc(-1*var(--ck-balloon-arrow-height))}'},function(t,e,n){var i=n(1),o=n(58);\"string\"==typeof(o=o.__esModule?o.default:o)&&(o=[[t.i,o,\"\"]]);var r={injectType:\"singletonStyleTag\",insert:\"head\",singleton:!0},s=(i(o,r),o.locals?o.locals:{});t.exports=s},function(t,e){t.exports=\".ck .ck-balloon-rotator__navigation{display:flex;align-items:center;justify-content:center}.ck .ck-balloon-rotator__content .ck-toolbar{justify-content:center}.ck .ck-balloon-rotator__navigation{background:var(--ck-color-toolbar-background);border-bottom:1px solid var(--ck-color-toolbar-border);padding:0 var(--ck-spacing-small)}.ck .ck-balloon-rotator__navigation>*{margin-right:var(--ck-spacing-small);margin-top:var(--ck-spacing-small);margin-bottom:var(--ck-spacing-small)}.ck .ck-balloon-rotator__navigation .ck-balloon-rotator__counter{margin-right:var(--ck-spacing-standard);margin-left:var(--ck-spacing-small)}.ck .ck-balloon-rotator__content .ck.ck-annotation-wrapper{box-shadow:none}\"},function(t,e,n){var i=n(1),o=n(60);\"string\"==typeof(o=o.__esModule?o.default:o)&&(o=[[t.i,o,\"\"]]);var r={injectType:\"singletonStyleTag\",insert:\"head\",singleton:!0},s=(i(o,r),o.locals?o.locals:{});t.exports=s},function(t,e){t.exports=\".ck .ck-fake-panel{position:absolute;z-index:calc(var(--ck-z-modal) - 1)}.ck .ck-fake-panel div{position:absolute}.ck .ck-fake-panel div:first-child{z-index:2}.ck .ck-fake-panel div:nth-child(2){z-index:1}:root{--ck-balloon-fake-panel-offset-horizontal:6px;--ck-balloon-fake-panel-offset-vertical:6px}.ck .ck-fake-panel div{box-shadow:var(--ck-drop-shadow),0 0;min-height:15px;background:var(--ck-color-panel-background);border:1px solid var(--ck-color-panel-border);border-radius:var(--ck-border-radius);width:100%;height:100%}.ck .ck-fake-panel div:first-child{margin-left:var(--ck-balloon-fake-panel-offset-horizontal);margin-top:var(--ck-balloon-fake-panel-offset-vertical)}.ck .ck-fake-panel div:nth-child(2){margin-left:calc(var(--ck-balloon-fake-panel-offset-horizontal)*2);margin-top:calc(var(--ck-balloon-fake-panel-offset-vertical)*2)}.ck .ck-fake-panel div:nth-child(3){margin-left:calc(var(--ck-balloon-fake-panel-offset-horizontal)*3);margin-top:calc(var(--ck-balloon-fake-panel-offset-vertical)*3)}.ck .ck-balloon-panel_arrow_s+.ck-fake-panel,.ck .ck-balloon-panel_arrow_se+.ck-fake-panel,.ck .ck-balloon-panel_arrow_sw+.ck-fake-panel{--ck-balloon-fake-panel-offset-vertical:-6px}\"},function(t,e,n){var i=n(1),o=n(62);\"string\"==typeof(o=o.__esModule?o.default:o)&&(o=[[t.i,o,\"\"]]);var r={injectType:\"singletonStyleTag\",insert:\"head\",singleton:!0},s=(i(o,r),o.locals?o.locals:{});t.exports=s},function(t,e){t.exports=\".ck-content .image{display:table;clear:both;text-align:center;margin:1em auto}.ck-content .image>img{display:block;margin:0 auto;max-width:100%;min-width:50px}\"},function(t,e,n){var i=n(1),o=n(64);\"string\"==typeof(o=o.__esModule?o.default:o)&&(o=[[t.i,o,\"\"]]);var r={injectType:\"singletonStyleTag\",insert:\"head\",singleton:!0},s=(i(o,r),o.locals?o.locals:{});t.exports=s},function(t,e){t.exports=\".ck.ck-editor__editable .image{position:relative}.ck.ck-editor__editable .image .ck-progress-bar{position:absolute;top:0;left:0}.ck.ck-editor__editable .image.ck-appear{animation:fadeIn .7s}.ck.ck-editor__editable .image .ck-progress-bar{height:2px;width:0;background:var(--ck-color-upload-bar-background);transition:width .1s}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}\"},function(t,e,n){var i=n(1),o=n(66);\"string\"==typeof(o=o.__esModule?o.default:o)&&(o=[[t.i,o,\"\"]]);var r={injectType:\"singletonStyleTag\",insert:\"head\",singleton:!0},s=(i(o,r),o.locals?o.locals:{});t.exports=s},function(t,e){t.exports='.ck-image-upload-complete-icon{display:block;position:absolute;top:10px;right:10px;border-radius:50%}.ck-image-upload-complete-icon:after{content:\"\";position:absolute}:root{--ck-color-image-upload-icon:#fff;--ck-color-image-upload-icon-background:#008a00;--ck-image-upload-icon-size:20px;--ck-image-upload-icon-width:2px}.ck-image-upload-complete-icon{width:var(--ck-image-upload-icon-size);height:var(--ck-image-upload-icon-size);opacity:0;background:var(--ck-color-image-upload-icon-background);animation-name:ck-upload-complete-icon-show,ck-upload-complete-icon-hide;animation-fill-mode:forwards,forwards;animation-duration:.5s,.5s;font-size:var(--ck-image-upload-icon-size);animation-delay:0ms,3s}.ck-image-upload-complete-icon:after{left:25%;top:50%;opacity:0;height:0;width:0;transform:scaleX(-1) rotate(135deg);transform-origin:left top;border-top:var(--ck-image-upload-icon-width) solid var(--ck-color-image-upload-icon);border-right:var(--ck-image-upload-icon-width) solid var(--ck-color-image-upload-icon);animation-name:ck-upload-complete-icon-check;animation-duration:.5s;animation-delay:.5s;animation-fill-mode:forwards;box-sizing:border-box}@keyframes ck-upload-complete-icon-show{0%{opacity:0}to{opacity:1}}@keyframes ck-upload-complete-icon-hide{0%{opacity:1}to{opacity:0}}@keyframes ck-upload-complete-icon-check{0%{opacity:1;width:0;height:0}33%{width:.3em;height:0}to{opacity:1;width:.3em;height:.45em}}'},function(t,e,n){var i=n(1),o=n(68);\"string\"==typeof(o=o.__esModule?o.default:o)&&(o=[[t.i,o,\"\"]]);var r={injectType:\"singletonStyleTag\",insert:\"head\",singleton:!0},s=(i(o,r),o.locals?o.locals:{});t.exports=s},function(t,e){t.exports='.ck .ck-upload-placeholder-loader{position:absolute;display:flex;align-items:center;justify-content:center;top:0;left:0}.ck .ck-upload-placeholder-loader:before{content:\"\";position:relative}:root{--ck-color-upload-placeholder-loader:#b3b3b3;--ck-upload-placeholder-loader-size:32px}.ck .ck-image-upload-placeholder{width:100%;margin:0}.ck .ck-upload-placeholder-loader{width:100%;height:100%}.ck .ck-upload-placeholder-loader:before{width:var(--ck-upload-placeholder-loader-size);height:var(--ck-upload-placeholder-loader-size);border-radius:50%;border-top:3px solid var(--ck-color-upload-placeholder-loader);border-right:2px solid transparent;animation:ck-upload-placeholder-loader 1s linear infinite}@keyframes ck-upload-placeholder-loader{to{transform:rotate(1turn)}}'},function(t,e){t.exports=\".ck.ck-heading_heading1{font-size:20px}.ck.ck-heading_heading2{font-size:17px}.ck.ck-heading_heading3{font-size:14px}.ck[class*=ck-heading_heading]{font-weight:700}.ck.ck-dropdown.ck-heading-dropdown .ck-dropdown__button .ck-button__label{width:8em}.ck.ck-dropdown.ck-heading-dropdown .ck-dropdown__panel .ck-list__item{min-width:18em}\"},function(t,e,n){var i=n(1),o=n(71);\"string\"==typeof(o=o.__esModule?o.default:o)&&(o=[[t.i,o,\"\"]]);var r={injectType:\"singletonStyleTag\",insert:\"head\",singleton:!0},s=(i(o,r),o.locals?o.locals:{});t.exports=s},function(t,e){t.exports=\".ck-content .image>figcaption{display:table-caption;caption-side:bottom;word-break:break-word;color:#333;background-color:#f7f7f7;padding:.6em;font-size:.75em;outline-offset:-1px}\"},function(t,e,n){var i=n(1),o=n(73);\"string\"==typeof(o=o.__esModule?o.default:o)&&(o=[[t.i,o,\"\"]]);var r={injectType:\"singletonStyleTag\",insert:\"head\",singleton:!0},s=(i(o,r),o.locals?o.locals:{});t.exports=s},function(t,e){t.exports=\":root{--ck-image-style-spacing:1.5em}.ck-content .image-style-align-center,.ck-content .image-style-align-left,.ck-content .image-style-align-right,.ck-content .image-style-side{max-width:50%}.ck-content .image-style-side{float:right;margin-left:var(--ck-image-style-spacing)}.ck-content .image-style-align-left{float:left;margin-right:var(--ck-image-style-spacing)}.ck-content .image-style-align-center{margin-left:auto;margin-right:auto}.ck-content .image-style-align-right{float:right;margin-left:var(--ck-image-style-spacing)}\"},function(t,e,n){var i=n(1),o=n(75);\"string\"==typeof(o=o.__esModule?o.default:o)&&(o=[[t.i,o,\"\"]]);var r={injectType:\"singletonStyleTag\",insert:\"head\",singleton:!0},s=(i(o,r),o.locals?o.locals:{});t.exports=s},function(t,e){t.exports=\".ck.ck-link-form{display:flex}.ck.ck-link-form .ck-label{display:none}@media screen and (max-width:600px){.ck.ck-link-form{flex-wrap:wrap}.ck.ck-link-form .ck-labeled-input{flex-basis:100%}.ck.ck-link-form .ck-button{flex-basis:50%}}.ck.ck-link-form_layout-vertical{display:block}.ck.ck-link-form{padding:var(--ck-spacing-standard)}.ck.ck-link-form:focus{outline:none}[dir=ltr] .ck.ck-link-form>:not(:first-child),[dir=rtl] .ck.ck-link-form>:not(:last-child){margin-left:var(--ck-spacing-standard)}@media screen and (max-width:600px){.ck.ck-link-form{padding:0;width:calc(0.8*var(--ck-input-text-width))}.ck.ck-link-form .ck-labeled-input{margin:var(--ck-spacing-standard) var(--ck-spacing-standard) 0}.ck.ck-link-form .ck-labeled-input .ck-input-text{min-width:0;width:100%}.ck.ck-link-form .ck-button{padding:var(--ck-spacing-standard);margin-top:var(--ck-spacing-standard);border-radius:0;border:0;border-top:1px solid var(--ck-color-base-border)}[dir=ltr] .ck.ck-link-form .ck-button{margin-left:0}[dir=ltr] .ck.ck-link-form .ck-button:first-of-type{border-right:1px solid var(--ck-color-base-border)}[dir=rtl] .ck.ck-link-form .ck-button{margin-left:0}[dir=rtl] .ck.ck-link-form .ck-button:last-of-type{border-right:1px solid var(--ck-color-base-border)}}.ck.ck-link-form_layout-vertical{padding:0;min-width:var(--ck-input-text-width)}.ck.ck-link-form_layout-vertical .ck-labeled-input{margin:var(--ck-spacing-standard) var(--ck-spacing-standard) var(--ck-spacing-small)}.ck.ck-link-form_layout-vertical .ck-labeled-input .ck-input-text{min-width:0;width:100%}.ck.ck-link-form_layout-vertical .ck-button{padding:var(--ck-spacing-standard);margin:0;border-radius:0;border:0;border-top:1px solid var(--ck-color-base-border);width:50%}[dir=ltr] .ck.ck-link-form_layout-vertical .ck-button{margin-left:0}[dir=ltr] .ck.ck-link-form_layout-vertical .ck-button:first-of-type{border-right:1px solid var(--ck-color-base-border)}[dir=rtl] .ck.ck-link-form_layout-vertical .ck-button{margin-left:0}[dir=rtl] .ck.ck-link-form_layout-vertical .ck-button:last-of-type{border-right:1px solid var(--ck-color-base-border)}.ck.ck-link-form_layout-vertical .ck.ck-list{margin-left:0}.ck.ck-link-form_layout-vertical .ck.ck-list .ck-button.ck-switchbutton{border:0;width:100%}.ck.ck-link-form_layout-vertical .ck.ck-list .ck-button.ck-switchbutton:hover{background:none}\"},function(t,e,n){var i=n(1),o=n(77);\"string\"==typeof(o=o.__esModule?o.default:o)&&(o=[[t.i,o,\"\"]]);var r={injectType:\"singletonStyleTag\",insert:\"head\",singleton:!0},s=(i(o,r),o.locals?o.locals:{});t.exports=s},function(t,e){t.exports=\".ck.ck-link-actions{display:flex;flex-direction:row;flex-wrap:nowrap}.ck.ck-link-actions .ck-link-actions__preview{display:inline-block}.ck.ck-link-actions .ck-link-actions__preview .ck-button__label{overflow:hidden}@media screen and (max-width:600px){.ck.ck-link-actions{flex-wrap:wrap}.ck.ck-link-actions .ck-link-actions__preview{flex-basis:100%}.ck.ck-link-actions .ck-button:not(.ck-link-actions__preview){flex-basis:50%}}.ck.ck-link-actions{padding:var(--ck-spacing-standard)}.ck.ck-link-actions .ck-button.ck-link-actions__preview{padding-left:0;padding-right:0}.ck.ck-link-actions .ck-button.ck-link-actions__preview .ck-button__label{padding:0 var(--ck-spacing-medium);color:var(--ck-color-link-default);text-overflow:ellipsis;cursor:pointer;max-width:var(--ck-input-text-width);min-width:3em;text-align:center}.ck.ck-link-actions .ck-button.ck-link-actions__preview .ck-button__label:hover{text-decoration:underline}.ck.ck-link-actions .ck-button.ck-link-actions__preview,.ck.ck-link-actions .ck-button.ck-link-actions__preview:active,.ck.ck-link-actions .ck-button.ck-link-actions__preview:focus,.ck.ck-link-actions .ck-button.ck-link-actions__preview:hover{background:none}.ck.ck-link-actions .ck-button.ck-link-actions__preview:active{box-shadow:none}.ck.ck-link-actions .ck-button.ck-link-actions__preview:focus .ck-button__label{text-decoration:underline}.ck.ck-link-actions:focus{outline:none}[dir=ltr] .ck.ck-link-actions .ck-button:not(:first-child),[dir=rtl] .ck.ck-link-actions .ck-button:not(:last-child){margin-left:var(--ck-spacing-standard)}@media screen and (max-width:600px){.ck.ck-link-actions{padding:0;width:calc(0.8*var(--ck-input-text-width))}.ck.ck-link-actions .ck-button.ck-link-actions__preview{margin:var(--ck-spacing-standard) var(--ck-spacing-standard) 0}.ck.ck-link-actions .ck-button.ck-link-actions__preview .ck-button__label{min-width:0;max-width:100%}.ck.ck-link-actions .ck-button:not(.ck-link-actions__preview){padding:var(--ck-spacing-standard);margin-top:var(--ck-spacing-standard);border-radius:0;border:0;border-top:1px solid var(--ck-color-base-border)}[dir=ltr] .ck.ck-link-actions .ck-button:not(.ck-link-actions__preview){margin-left:0}[dir=ltr] .ck.ck-link-actions .ck-button:not(.ck-link-actions__preview):first-of-type{border-right:1px solid var(--ck-color-base-border)}[dir=rtl] .ck.ck-link-actions .ck-button:not(.ck-link-actions__preview){margin-left:0}[dir=rtl] .ck.ck-link-actions .ck-button:not(.ck-link-actions__preview):last-of-type{border-right:1px solid var(--ck-color-base-border)}}\"},function(t,e,n){var i=n(1),o=n(79);\"string\"==typeof(o=o.__esModule?o.default:o)&&(o=[[t.i,o,\"\"]]);var r={injectType:\"singletonStyleTag\",insert:\"head\",singleton:!0},s=(i(o,r),o.locals?o.locals:{});t.exports=s},function(t,e){t.exports='.ck-media__wrapper .ck-media__placeholder{display:flex;flex-direction:column;align-items:center}.ck-media__wrapper .ck-media__placeholder .ck-media__placeholder__url .ck-tooltip{display:block}@media (hover:none){.ck-media__wrapper .ck-media__placeholder .ck-media__placeholder__url .ck-tooltip{display:none}}.ck-media__wrapper .ck-media__placeholder .ck-media__placeholder__url{max-width:100%;position:relative}.ck-media__wrapper .ck-media__placeholder .ck-media__placeholder__url:hover .ck-tooltip{visibility:visible;opacity:1}.ck-media__wrapper .ck-media__placeholder .ck-media__placeholder__url .ck-media__placeholder__url__text{overflow:hidden;display:block}.ck-media__wrapper[data-oembed-url*=\"facebook.com\"] .ck-media__placeholder__icon *,.ck-media__wrapper[data-oembed-url*=\"google.com/maps\"] .ck-media__placeholder__icon *,.ck-media__wrapper[data-oembed-url*=\"instagram.com\"] .ck-media__placeholder__icon *,.ck-media__wrapper[data-oembed-url*=\"twitter.com\"] .ck-media__placeholder__icon *{display:none}.ck-editor__editable:not(.ck-read-only) .ck-media__wrapper>:not(.ck-media__placeholder),.ck-editor__editable:not(.ck-read-only) .ck-widget:not(.ck-widget_selected) .ck-media__placeholder{pointer-events:none}:root{--ck-media-embed-placeholder-icon-size:3em;--ck-color-media-embed-placeholder-url-text:#757575;--ck-color-media-embed-placeholder-url-text-hover:var(--ck-color-base-text)}.ck-media__wrapper{margin:0 auto}.ck-media__wrapper .ck-media__placeholder{padding:calc(3*var(--ck-spacing-standard));background:var(--ck-color-base-foreground)}.ck-media__wrapper .ck-media__placeholder .ck-media__placeholder__icon{min-width:var(--ck-media-embed-placeholder-icon-size);height:var(--ck-media-embed-placeholder-icon-size);margin-bottom:var(--ck-spacing-large);background-position:50%;background-size:cover}.ck-media__wrapper .ck-media__placeholder .ck-media__placeholder__icon .ck-icon{width:100%;height:100%}.ck-media__wrapper .ck-media__placeholder .ck-media__placeholder__url__text{color:var(--ck-color-media-embed-placeholder-url-text);white-space:nowrap;text-align:center;font-style:italic;text-overflow:ellipsis}.ck-media__wrapper .ck-media__placeholder .ck-media__placeholder__url__text:hover{color:var(--ck-color-media-embed-placeholder-url-text-hover);cursor:pointer;text-decoration:underline}.ck-media__wrapper[data-oembed-url*=\"open.spotify.com\"]{max-width:300px;max-height:380px}.ck-media__wrapper[data-oembed-url*=\"google.com/maps\"] .ck-media__placeholder__icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNTAuMzc4IiBoZWlnaHQ9IjI1NC4xNjciIHZpZXdCb3g9IjAgMCA2Ni4yNDYgNjcuMjQ4Ij48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTcyLjUzMSAtMjE4LjQ1NSkgc2NhbGUoLjk4MDEyKSI+PHJlY3Qgcnk9IjUuMjM4IiByeD0iNS4yMzgiIHk9IjIzMS4zOTkiIHg9IjE3Ni4wMzEiIGhlaWdodD0iNjAuMDk5IiB3aWR0aD0iNjAuMDk5IiBmaWxsPSIjMzRhNjY4IiBwYWludC1vcmRlcj0ibWFya2VycyBzdHJva2UgZmlsbCIvPjxwYXRoIGQ9Ik0yMDYuNDc3IDI2MC45bC0yOC45ODcgMjguOTg3YTUuMjE4IDUuMjE4IDAgMDAzLjc4IDEuNjFoNDkuNjIxYzEuNjk0IDAgMy4xOS0uNzk4IDQuMTQ2LTIuMDM3eiIgZmlsbD0iIzVjODhjNSIvPjxwYXRoIGQ9Ik0yMjYuNzQyIDIyMi45ODhjLTkuMjY2IDAtMTYuNzc3IDcuMTctMTYuNzc3IDE2LjAxNC4wMDcgMi43NjIuNjYzIDUuNDc0IDIuMDkzIDcuODc1LjQzLjcwMy44MyAxLjQwOCAxLjE5IDIuMTA3LjMzMy41MDIuNjUgMS4wMDUuOTUgMS41MDguMzQzLjQ3Ny42NzMuOTU3Ljk4OCAxLjQ0IDEuMzEgMS43NjkgMi41IDMuNTAyIDMuNjM3IDUuMTY4Ljc5MyAxLjI3NSAxLjY4MyAyLjY0IDIuNDY2IDMuOTkgMi4zNjMgNC4wOTQgNC4wMDcgOC4wOTIgNC42IDEzLjkxNHYuMDEyYy4xODIuNDEyLjUxNi42NjYuODc5LjY2Ny40MDMtLjAwMS43NjgtLjMxNC45My0uNzk5LjYwMy01Ljc1NiAyLjIzOC05LjcyOSA0LjU4NS0xMy43OTQuNzgyLTEuMzUgMS42NzMtMi43MTUgMi40NjUtMy45OSAxLjEzNy0xLjY2NiAyLjMyOC0zLjQgMy42MzgtNS4xNjkuMzE1LS40ODIuNjQ1LS45NjIuOTg4LTEuNDM5LjMtLjUwMy42MTctMS4wMDYuOTUtMS41MDguMzU5LS43Ljc2LTEuNDA0IDEuMTktMi4xMDcgMS40MjYtMi40MDIgMi01LjExNCAyLjAwNC03Ljg3NSAwLTguODQ0LTcuNTExLTE2LjAxNC0xNi43NzYtMTYuMDE0eiIgZmlsbD0iI2RkNGIzZSIgcGFpbnQtb3JkZXI9Im1hcmtlcnMgc3Ryb2tlIGZpbGwiLz48ZWxsaXBzZSByeT0iNS41NjQiIHJ4PSI1LjgyOCIgY3k9IjIzOS4wMDIiIGN4PSIyMjYuNzQyIiBmaWxsPSIjODAyZDI3IiBwYWludC1vcmRlcj0ibWFya2VycyBzdHJva2UgZmlsbCIvPjxwYXRoIGQ9Ik0xOTAuMzAxIDIzNy4yODNjLTQuNjcgMC04LjQ1NyAzLjg1My04LjQ1NyA4LjYwNnMzLjc4NiA4LjYwNyA4LjQ1NyA4LjYwN2MzLjA0MyAwIDQuODA2LS45NTggNi4zMzctMi41MTYgMS41My0xLjU1NyAyLjA4Ny0zLjkxMyAyLjA4Ny02LjI5IDAtLjM2Mi0uMDIzLS43MjItLjA2NC0xLjA3OWgtOC4yNTd2My4wNDNoNC44NWMtLjE5Ny43NTktLjUzMSAxLjQ1LTEuMDU4IDEuOTg2LS45NDIuOTU4LTIuMDI4IDEuNTQ4LTMuOTAxIDEuNTQ4LTIuODc2IDAtNS4yMDgtMi4zNzItNS4yMDgtNS4yOTkgMC0yLjkyNiAyLjMzMi01LjI5OSA1LjIwOC01LjI5OSAxLjM5OSAwIDIuNjE4LjQwNyAzLjU4NCAxLjI5M2wyLjM4MS0yLjM4YzAtLjAwMi0uMDAzLS4wMDQtLjAwNC0uMDA1LTEuNTg4LTEuNTI0LTMuNjItMi4yMTUtNS45NTUtMi4yMTV6bTQuNDMgNS42NmwuMDAzLjAwNnYtLjAwM3oiIGZpbGw9IiNmZmYiIHBhaW50LW9yZGVyPSJtYXJrZXJzIHN0cm9rZSBmaWxsIi8+PHBhdGggZD0iTTIxNS4xODQgMjUxLjkyOWwtNy45OCA3Ljk3OSAyOC40NzcgMjguNDc1YTUuMjMzIDUuMjMzIDAgMDAuNDQ5LTIuMTIzdi0zMS4xNjVjLS40NjkuNjc1LS45MzQgMS4zNDktMS4zODIgMi4wMDUtLjc5MiAxLjI3NS0xLjY4MiAyLjY0LTIuNDY1IDMuOTktMi4zNDcgNC4wNjUtMy45ODIgOC4wMzgtNC41ODUgMTMuNzk0LS4xNjIuNDg1LS41MjcuNzk4LS45My43OTktLjM2My0uMDAxLS42OTctLjI1NS0uODc5LS42Njd2LS4wMTJjLS41OTMtNS44MjItMi4yMzctOS44Mi00LjYtMTMuOTE0LS43ODMtMS4zNS0xLjY3My0yLjcxNS0yLjQ2Ni0zLjk5LTEuMTM3LTEuNjY2LTIuMzI3LTMuNC0zLjYzNy01LjE2OWwtLjAwMi0uMDAzeiIgZmlsbD0iI2MzYzNjMyIvPjxwYXRoIGQ9Ik0yMTIuOTgzIDI0OC40OTVsLTM2Ljk1MiAzNi45NTN2LjgxMmE1LjIyNyA1LjIyNyAwIDAwNS4yMzggNS4yMzhoMS4wMTVsMzUuNjY2LTM1LjY2NmExMzYuMjc1IDEzNi4yNzUgMCAwMC0yLjc2NC0zLjkgMzcuNTc1IDM3LjU3NSAwIDAwLS45ODktMS40NCAzNS4xMjcgMzUuMTI3IDAgMDAtLjk1LTEuNTA4Yy0uMDgzLS4xNjItLjE3Ni0uMzI2LS4yNjQtLjQ4OXoiIGZpbGw9IiNmZGRjNGYiIHBhaW50LW9yZGVyPSJtYXJrZXJzIHN0cm9rZSBmaWxsIi8+PHBhdGggZD0iTTIxMS45OTggMjYxLjA4M2wtNi4xNTIgNi4xNTEgMjQuMjY0IDI0LjI2NGguNzgxYTUuMjI3IDUuMjI3IDAgMDA1LjIzOS01LjIzOHYtMS4wNDV6IiBmaWxsPSIjZmZmIiBwYWludC1vcmRlcj0ibWFya2VycyBzdHJva2UgZmlsbCIvPjwvZz48L3N2Zz4=)}.ck-media__wrapper[data-oembed-url*=\"facebook.com\"] .ck-media__placeholder{background:#4268b3}.ck-media__wrapper[data-oembed-url*=\"facebook.com\"] .ck-media__placeholder .ck-media__placeholder__icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAyNCIgaGVpZ2h0PSIxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik05NjcuNDg0IDBINTYuNTE3QzI1LjMwNCAwIDAgMjUuMzA0IDAgNTYuNTE3djkxMC45NjZDMCA5OTguNjk0IDI1LjI5NyAxMDI0IDU2LjUyMiAxMDI0SDU0N1Y2MjhINDE0VjQ3M2gxMzNWMzU5LjAyOWMwLTEzMi4yNjIgODAuNzczLTIwNC4yODIgMTk4Ljc1Ni0yMDQuMjgyIDU2LjUxMyAwIDEwNS4wODYgNC4yMDggMTE5LjI0NCA2LjA4OVYyOTlsLTgxLjYxNi4wMzdjLTYzLjk5MyAwLTc2LjM4NCAzMC40OTItNzYuMzg0IDc1LjIzNlY0NzNoMTUzLjQ4N2wtMTkuOTg2IDE1NUg3MDd2Mzk2aDI2MC40ODRjMzEuMjEzIDAgNTYuNTE2LTI1LjMwMyA1Ni41MTYtNTYuNTE2VjU2LjUxNUMxMDI0IDI1LjMwMyA5OTguNjk3IDAgOTY3LjQ4NCAwIiBmaWxsPSIjRkZGRkZFIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz48L3N2Zz4=)}.ck-media__wrapper[data-oembed-url*=\"facebook.com\"] .ck-media__placeholder .ck-media__placeholder__url__text{color:#cdf}.ck-media__wrapper[data-oembed-url*=\"facebook.com\"] .ck-media__placeholder .ck-media__placeholder__url__text:hover{color:#fff}.ck-media__wrapper[data-oembed-url*=\"instagram.com\"] .ck-media__placeholder{background:linear-gradient(-135deg,#1400c8,#b900b4,#f50000)}.ck-media__wrapper[data-oembed-url*=\"instagram.com\"] .ck-media__placeholder .ck-media__placeholder__icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTA0IiBoZWlnaHQ9IjUwNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+PGRlZnM+PHBhdGggaWQ9ImEiIGQ9Ik0wIC4xNTloNTAzLjg0MVY1MDMuOTRIMHoiLz48L2RlZnM+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48bWFzayBpZD0iYiIgZmlsbD0iI2ZmZiI+PHVzZSB4bGluazpocmVmPSIjYSIvPjwvbWFzaz48cGF0aCBkPSJNMjUxLjkyMS4xNTljLTY4LjQxOCAwLTc2Ljk5Ny4yOS0xMDMuODY3IDEuNTE2LTI2LjgxNCAxLjIyMy00NS4xMjcgNS40ODItNjEuMTUxIDExLjcxLTE2LjU2NiA2LjQzNy0zMC42MTUgMTUuMDUxLTQ0LjYyMSAyOS4wNTYtMTQuMDA1IDE0LjAwNi0yMi42MTkgMjguMDU1LTI5LjA1NiA0NC42MjEtNi4yMjggMTYuMDI0LTEwLjQ4NyAzNC4zMzctMTEuNzEgNjEuMTUxQy4yOSAxNzUuMDgzIDAgMTgzLjY2MiAwIDI1Mi4wOGMwIDY4LjQxNy4yOSA3Ni45OTYgMS41MTYgMTAzLjg2NiAxLjIyMyAyNi44MTQgNS40ODIgNDUuMTI3IDExLjcxIDYxLjE1MSA2LjQzNyAxNi41NjYgMTUuMDUxIDMwLjYxNSAyOS4wNTYgNDQuNjIxIDE0LjAwNiAxNC4wMDUgMjguMDU1IDIyLjYxOSA0NC42MjEgMjkuMDU3IDE2LjAyNCA2LjIyNyAzNC4zMzcgMTAuNDg2IDYxLjE1MSAxMS43MDkgMjYuODcgMS4yMjYgMzUuNDQ5IDEuNTE2IDEwMy44NjcgMS41MTYgNjguNDE3IDAgNzYuOTk2LS4yOSAxMDMuODY2LTEuNTE2IDI2LjgxNC0xLjIyMyA0NS4xMjctNS40ODIgNjEuMTUxLTExLjcwOSAxNi41NjYtNi40MzggMzAuNjE1LTE1LjA1MiA0NC42MjEtMjkuMDU3IDE0LjAwNS0xNC4wMDYgMjIuNjE5LTI4LjA1NSAyOS4wNTctNDQuNjIxIDYuMjI3LTE2LjAyNCAxMC40ODYtMzQuMzM3IDExLjcwOS02MS4xNTEgMS4yMjYtMjYuODcgMS41MTYtMzUuNDQ5IDEuNTE2LTEwMy44NjYgMC02OC40MTgtLjI5LTc2Ljk5Ny0xLjUxNi0xMDMuODY3LTEuMjIzLTI2LjgxNC01LjQ4Mi00NS4xMjctMTEuNzA5LTYxLjE1MS02LjQzOC0xNi41NjYtMTUuMDUyLTMwLjYxNS0yOS4wNTctNDQuNjIxLTE0LjAwNi0xNC4wMDUtMjguMDU1LTIyLjYxOS00NC42MjEtMjkuMDU2LTE2LjAyNC02LjIyOC0zNC4zMzctMTAuNDg3LTYxLjE1MS0xMS43MUMzMjguOTE3LjQ0OSAzMjAuMzM4LjE1OSAyNTEuOTIxLjE1OXptMCA0NS4zOTFjNjcuMjY1IDAgNzUuMjMzLjI1NyAxMDEuNzk3IDEuNDY5IDI0LjU2MiAxLjEyIDM3LjkwMSA1LjIyNCA0Ni43NzggOC42NzQgMTEuNzU5IDQuNTcgMjAuMTUxIDEwLjAyOSAyOC45NjYgMTguODQ1IDguODE2IDguODE1IDE0LjI3NSAxNy4yMDcgMTguODQ1IDI4Ljk2NiAzLjQ1IDguODc3IDcuNTU0IDIyLjIxNiA4LjY3NCA0Ni43NzggMS4yMTIgMjYuNTY0IDEuNDY5IDM0LjUzMiAxLjQ2OSAxMDEuNzk4IDAgNjcuMjY1LS4yNTcgNzUuMjMzLTEuNDY5IDEwMS43OTctMS4xMiAyNC41NjItNS4yMjQgMzcuOTAxLTguNjc0IDQ2Ljc3OC00LjU3IDExLjc1OS0xMC4wMjkgMjAuMTUxLTE4Ljg0NSAyOC45NjYtOC44MTUgOC44MTYtMTcuMjA3IDE0LjI3NS0yOC45NjYgMTguODQ1LTguODc3IDMuNDUtMjIuMjE2IDcuNTU0LTQ2Ljc3OCA4LjY3NC0yNi41NiAxLjIxMi0zNC41MjcgMS40NjktMTAxLjc5NyAxLjQ2OS02Ny4yNzEgMC03NS4yMzctLjI1Ny0xMDEuNzk4LTEuNDY5LTI0LjU2Mi0xLjEyLTM3LjkwMS01LjIyNC00Ni43NzgtOC42NzQtMTEuNzU5LTQuNTctMjAuMTUxLTEwLjAyOS0yOC45NjYtMTguODQ1LTguODE1LTguODE1LTE0LjI3NS0xNy4yMDctMTguODQ1LTI4Ljk2Ni0zLjQ1LTguODc3LTcuNTU0LTIyLjIxNi04LjY3NC00Ni43NzgtMS4yMTItMjYuNTY0LTEuNDY5LTM0LjUzMi0xLjQ2OS0xMDEuNzk3IDAtNjcuMjY2LjI1Ny03NS4yMzQgMS40NjktMTAxLjc5OCAxLjEyLTI0LjU2MiA1LjIyNC0zNy45MDEgOC42NzQtNDYuNzc4IDQuNTctMTEuNzU5IDEwLjAyOS0yMC4xNTEgMTguODQ1LTI4Ljk2NiA4LjgxNS04LjgxNiAxNy4yMDctMTQuMjc1IDI4Ljk2Ni0xOC44NDUgOC44NzctMy40NSAyMi4yMTYtNy41NTQgNDYuNzc4LTguNjc0IDI2LjU2NC0xLjIxMiAzNC41MzItMS40NjkgMTAxLjc5OC0xLjQ2OXoiIGZpbGw9IiNGRkYiIG1hc2s9InVybCgjYikiLz48cGF0aCBkPSJNMjUxLjkyMSAzMzYuMDUzYy00Ni4zNzggMC04My45NzQtMzcuNTk2LTgzLjk3NC04My45NzMgMC00Ni4zNzggMzcuNTk2LTgzLjk3NCA4My45NzQtODMuOTc0IDQ2LjM3NyAwIDgzLjk3MyAzNy41OTYgODMuOTczIDgzLjk3NCAwIDQ2LjM3Ny0zNy41OTYgODMuOTczLTgzLjk3MyA4My45NzN6bTAtMjEzLjMzOGMtNzEuNDQ3IDAtMTI5LjM2NSA1Ny45MTgtMTI5LjM2NSAxMjkuMzY1IDAgNzEuNDQ2IDU3LjkxOCAxMjkuMzY0IDEyOS4zNjUgMTI5LjM2NCA3MS40NDYgMCAxMjkuMzY0LTU3LjkxOCAxMjkuMzY0LTEyOS4zNjQgMC03MS40NDctNTcuOTE4LTEyOS4zNjUtMTI5LjM2NC0xMjkuMzY1ek00MTYuNjI3IDExNy42MDRjMCAxNi42OTYtMTMuNTM1IDMwLjIzLTMwLjIzMSAzMC4yMy0xNi42OTUgMC0zMC4yMy0xMy41MzQtMzAuMjMtMzAuMjMgMC0xNi42OTYgMTMuNTM1LTMwLjIzMSAzMC4yMy0zMC4yMzEgMTYuNjk2IDAgMzAuMjMxIDEzLjUzNSAzMC4yMzEgMzAuMjMxIiBmaWxsPSIjRkZGIi8+PC9nPjwvc3ZnPg==)}.ck-media__wrapper[data-oembed-url*=\"instagram.com\"] .ck-media__placeholder .ck-media__placeholder__url__text{color:#ffe0fe}.ck-media__wrapper[data-oembed-url*=\"instagram.com\"] .ck-media__placeholder .ck-media__placeholder__url__text:hover{color:#fff}.ck-media__wrapper[data-oembed-url*=\"twitter.com\"] .ck.ck-media__placeholder{background:linear-gradient(90deg,#71c6f4,#0d70a5)}.ck-media__wrapper[data-oembed-url*=\"twitter.com\"] .ck.ck-media__placeholder .ck-media__placeholder__icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDAgNDAwIj48cGF0aCBkPSJNNDAwIDIwMGMwIDExMC41LTg5LjUgMjAwLTIwMCAyMDBTMCAzMTAuNSAwIDIwMCA4OS41IDAgMjAwIDBzMjAwIDg5LjUgMjAwIDIwMHpNMTYzLjQgMzA1LjVjODguNyAwIDEzNy4yLTczLjUgMTM3LjItMTM3LjIgMC0yLjEgMC00LjItLjEtNi4yIDkuNC02LjggMTcuNi0xNS4zIDI0LjEtMjUtOC42IDMuOC0xNy45IDYuNC0yNy43IDcuNiAxMC02IDE3LjYtMTUuNCAyMS4yLTI2LjctOS4zIDUuNS0xOS42IDkuNS0zMC42IDExLjctOC44LTkuNC0yMS4zLTE1LjItMzUuMi0xNS4yLTI2LjYgMC00OC4yIDIxLjYtNDguMiA0OC4yIDAgMy44LjQgNy41IDEuMyAxMS00MC4xLTItNzUuNi0yMS4yLTk5LjQtNTAuNC00LjEgNy4xLTYuNSAxNS40LTYuNSAyNC4yIDAgMTYuNyA4LjUgMzEuNSAyMS41IDQwLjEtNy45LS4yLTE1LjMtMi40LTIxLjgtNnYuNmMwIDIzLjQgMTYuNiA0Mi44IDM4LjcgNDcuMy00IDEuMS04LjMgMS43LTEyLjcgMS43LTMuMSAwLTYuMS0uMy05LjEtLjkgNi4xIDE5LjIgMjMuOSAzMy4xIDQ1IDMzLjUtMTYuNSAxMi45LTM3LjMgMjAuNi01OS45IDIwLjYtMy45IDAtNy43LS4yLTExLjUtLjcgMjEuMSAxMy44IDQ2LjUgMjEuOCA3My43IDIxLjgiIGZpbGw9IiNmZmYiLz48L3N2Zz4=)}.ck-media__wrapper[data-oembed-url*=\"twitter.com\"] .ck.ck-media__placeholder .ck-media__placeholder__url__text{color:#b8e6ff}.ck-media__wrapper[data-oembed-url*=\"twitter.com\"] .ck.ck-media__placeholder .ck-media__placeholder__url__text:hover{color:#fff}'},function(t,e,n){var i=n(1),o=n(81);\"string\"==typeof(o=o.__esModule?o.default:o)&&(o=[[t.i,o,\"\"]]);var r={injectType:\"singletonStyleTag\",insert:\"head\",singleton:!0},s=(i(o,r),o.locals?o.locals:{});t.exports=s},function(t,e){t.exports=\".ck.ck-media-form{display:flex;align-items:flex-start;flex-direction:row;flex-wrap:nowrap}.ck.ck-media-form .ck-labeled-input{display:inline-block}.ck.ck-media-form .ck-label{display:none}@media screen and (max-width:600px){.ck.ck-media-form{flex-wrap:wrap}.ck.ck-media-form .ck-labeled-input{flex-basis:100%}.ck.ck-media-form .ck-button{flex-basis:50%}}.ck.ck-media-form{padding:var(--ck-spacing-standard)}.ck.ck-media-form:focus{outline:none}[dir=ltr] .ck.ck-media-form>:not(:first-child),[dir=rtl] .ck.ck-media-form>:not(:last-child){margin-left:var(--ck-spacing-standard)}@media screen and (max-width:600px){.ck.ck-media-form{padding:0;width:calc(0.8*var(--ck-input-text-width))}.ck.ck-media-form .ck-labeled-input{margin:var(--ck-spacing-standard) var(--ck-spacing-standard) 0}.ck.ck-media-form .ck-labeled-input .ck-input-text{min-width:0;width:100%}.ck.ck-media-form .ck-labeled-input .ck-labeled-input__error{white-space:normal}.ck.ck-media-form .ck-button{padding:var(--ck-spacing-standard);margin-top:var(--ck-spacing-standard);border-radius:0;border:0;border-top:1px solid var(--ck-color-base-border)}[dir=ltr] .ck.ck-media-form .ck-button{margin-left:0}[dir=ltr] .ck.ck-media-form .ck-button:first-of-type{border-right:1px solid var(--ck-color-base-border)}[dir=rtl] .ck.ck-media-form .ck-button{margin-left:0}[dir=rtl] .ck.ck-media-form .ck-button:last-of-type{border-right:1px solid var(--ck-color-base-border)}}\"},function(t,e,n){var i=n(1),o=n(83);\"string\"==typeof(o=o.__esModule?o.default:o)&&(o=[[t.i,o,\"\"]]);var r={injectType:\"singletonStyleTag\",insert:\"head\",singleton:!0},s=(i(o,r),o.locals?o.locals:{});t.exports=s},function(t,e){t.exports=\".ck-content .media{clear:both;margin:1em 0;display:block;min-width:15em}\"},function(t,e,n){var i=n(1),o=n(85);\"string\"==typeof(o=o.__esModule?o.default:o)&&(o=[[t.i,o,\"\"]]);var r={injectType:\"singletonStyleTag\",insert:\"head\",singleton:!0},s=(i(o,r),o.locals?o.locals:{});t.exports=s},function(t,e){t.exports=\":root{--ck-color-table-focused-cell-background:rgba(158,207,250,0.3)}.ck-widget.table td.ck-editor__nested-editable.ck-editor__nested-editable_focused,.ck-widget.table td.ck-editor__nested-editable:focus,.ck-widget.table th.ck-editor__nested-editable.ck-editor__nested-editable_focused,.ck-widget.table th.ck-editor__nested-editable:focus{background:var(--ck-color-table-focused-cell-background);border-style:none;outline:1px solid var(--ck-color-focus-border);outline-offset:-1px}\"},function(t,e,n){var i=n(1),o=n(87);\"string\"==typeof(o=o.__esModule?o.default:o)&&(o=[[t.i,o,\"\"]]);var r={injectType:\"singletonStyleTag\",insert:\"head\",singleton:!0},s=(i(o,r),o.locals?o.locals:{});t.exports=s},function(t,e){t.exports=\".ck .ck-insert-table-dropdown__grid{display:flex;flex-direction:row;flex-wrap:wrap}:root{--ck-insert-table-dropdown-padding:10px;--ck-insert-table-dropdown-box-height:11px;--ck-insert-table-dropdown-box-width:12px;--ck-insert-table-dropdown-box-margin:1px}.ck .ck-insert-table-dropdown__grid{width:calc(var(--ck-insert-table-dropdown-box-width)*10 + var(--ck-insert-table-dropdown-box-margin)*20 + var(--ck-insert-table-dropdown-padding)*2);padding:var(--ck-insert-table-dropdown-padding) var(--ck-insert-table-dropdown-padding) 0}.ck .ck-insert-table-dropdown__label{text-align:center}.ck .ck-insert-table-dropdown-grid-box{width:var(--ck-insert-table-dropdown-box-width);height:var(--ck-insert-table-dropdown-box-height);margin:var(--ck-insert-table-dropdown-box-margin);border:1px solid var(--ck-color-base-border);border-radius:1px}.ck .ck-insert-table-dropdown-grid-box.ck-on{border-color:var(--ck-color-focus-border);background:var(--ck-color-focus-outer-shadow)}\"},function(t,e,n){var i=n(1),o=n(89);\"string\"==typeof(o=o.__esModule?o.default:o)&&(o=[[t.i,o,\"\"]]);var r={injectType:\"singletonStyleTag\",insert:\"head\",singleton:!0},s=(i(o,r),o.locals?o.locals:{});t.exports=s},function(t,e){t.exports=\":root{--ck-table-selected-cell-background:#cee5fd}.ck.ck-editor__editable .table table td.ck-editor__editable_selected,.ck.ck-editor__editable .table table th.ck-editor__editable_selected{background-color:var(--ck-table-selected-cell-background)!important;caret-color:transparent;outline:unset;box-shadow:unset}.ck.ck-editor__editable .table table td.ck-editor__editable_selected ::selection,.ck.ck-editor__editable .table table th.ck-editor__editable_selected ::selection{background-color:transparent}.ck.ck-editor__editable .table table td.ck-editor__editable_selected .ck-widget_selected,.ck.ck-editor__editable .table table th.ck-editor__editable_selected .ck-widget_selected{outline:unset}\"},function(t,e,n){var i=n(1),o=n(91);\"string\"==typeof(o=o.__esModule?o.default:o)&&(o=[[t.i,o,\"\"]]);var r={injectType:\"singletonStyleTag\",insert:\"head\",singleton:!0},s=(i(o,r),o.locals?o.locals:{});t.exports=s},function(t,e){t.exports=\".ck-content .table{margin:1em auto;display:table}.ck-content .table table{border-collapse:collapse;border-spacing:0;width:100%;height:100%;border:1px double #b3b3b3}.ck-content .table table td,.ck-content .table table th{min-width:2em;padding:.4em;border-color:#bfbfbf}.ck-content .table table th{font-weight:700;background:hsla(0,0%,0%,5%)}\"},function(t,e,n){\"use strict\";n.r(e),n.d(e,\"default\",(function(){return Cp}));var i=n(3),o=i.a.Symbol,r=Object.prototype,s=r.hasOwnProperty,a=r.toString,c=o?o.toStringTag:void 0;var l=function(t){var e=s.call(t,c),n=t[c];try{t[c]=void 0;var i=!0}catch(t){}var o=a.call(t);return i&&(e?t[c]=n:delete t[c]),o},d=Object.prototype.toString;var h=function(t){return d.call(t)},u=o?o.toStringTag:void 0;var f=function(t){return null==t?void 0===t?\"[object Undefined]\":\"[object Null]\":u&&u in Object(t)?l(t):h(t)};var m=function(t,e){return function(n){return t(e(n))}},g=m(Object.getPrototypeOf,Object);var p=function(t){return null!=t&&\"object\"==typeof t},b=Function.prototype,w=Object.prototype,k=b.toString,_=w.hasOwnProperty,v=k.call(Object);var y=function(t){if(!p(t)||\"[object Object]\"!=f(t))return!1;var e=g(t);if(null===e)return!0;var n=_.call(e,\"constructor\")&&e.constructor;return\"function\"==typeof n&&n instanceof n&&k.call(n)==v};var x=function(){this.__data__=[],this.size=0};var A=function(t,e){return t===e||t!=t&&e!=e};var C=function(t,e){for(var n=t.length;n--;)if(A(t[n][0],e))return n;return-1},T=Array.prototype.splice;var P=function(t){var e=this.__data__,n=C(e,t);return!(n<0)&&(n==e.length-1?e.pop():T.call(e,n,1),--this.size,!0)};var S=function(t){var e=this.__data__,n=C(e,t);return n<0?void 0:e[n][1]};var M=function(t){return C(this.__data__,t)>-1};var E=function(t,e){var n=this.__data__,i=C(n,t);return i<0?(++this.size,n.push([t,e])):n[i][1]=e,this};function I(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e-1&&t%1==0&&t-1&&t%1==0&&t<=9007199254740991},Bt={};Bt[\"[object Float32Array]\"]=Bt[\"[object Float64Array]\"]=Bt[\"[object Int8Array]\"]=Bt[\"[object Int16Array]\"]=Bt[\"[object Int32Array]\"]=Bt[\"[object Uint8Array]\"]=Bt[\"[object Uint8ClampedArray]\"]=Bt[\"[object Uint16Array]\"]=Bt[\"[object Uint32Array]\"]=!0,Bt[\"[object Arguments]\"]=Bt[\"[object Array]\"]=Bt[\"[object ArrayBuffer]\"]=Bt[\"[object Boolean]\"]=Bt[\"[object DataView]\"]=Bt[\"[object Date]\"]=Bt[\"[object Error]\"]=Bt[\"[object Function]\"]=Bt[\"[object Map]\"]=Bt[\"[object Number]\"]=Bt[\"[object Object]\"]=Bt[\"[object RegExp]\"]=Bt[\"[object Set]\"]=Bt[\"[object String]\"]=Bt[\"[object WeakMap]\"]=!1;var Ft=function(t){return p(t)&&zt(t.length)&&!!Bt[f(t)]};var Ut=function(t){return function(e){return t(e)}},Ht=n(5),qt=Ht.a&&Ht.a.isTypedArray,Wt=qt?Ut(qt):Ft,Yt=Object.prototype.hasOwnProperty;var $t=function(t,e){var n=Dt(t),i=!n&&Rt(t),o=!n&&!i&&Object(Lt.a)(t),r=!n&&!i&&!o&&Wt(t),s=n||i||o||r,a=s?Mt(t.length,String):[],c=a.length;for(var l in t)!e&&!Yt.call(t,l)||s&&(\"length\"==l||o&&(\"offset\"==l||\"parent\"==l)||r&&(\"buffer\"==l||\"byteLength\"==l||\"byteOffset\"==l)||Vt(l,c))||a.push(l);return a},Gt=Object.prototype;var Qt=function(t){var e=t&&t.constructor;return t===(\"function\"==typeof e&&e.prototype||Gt)},Kt=m(Object.keys,Object),Jt=Object.prototype.hasOwnProperty;var Zt=function(t){if(!Qt(t))return Kt(t);var e=[];for(var n in Object(t))Jt.call(t,n)&&\"constructor\"!=n&&e.push(n);return e};var Xt=function(t){return null!=t&&zt(t.length)&&!z(t)};var te=function(t){return Xt(t)?$t(t):Zt(t)};var ee=function(t,e){return t&&St(e,te(e),t)};var ne=function(t){var e=[];if(null!=t)for(var n in Object(t))e.push(n);return e},ie=Object.prototype.hasOwnProperty;var oe=function(t){if(!j(t))return ne(t);var e=Qt(t),n=[];for(var i in t)(\"constructor\"!=i||!e&&ie.call(t,i))&&n.push(i);return n};var re=function(t){return Xt(t)?$t(t,!0):oe(t)};var se=function(t,e){return t&&St(e,re(e),t)},ae=n(8);var ce=function(t,e){var n=-1,i=t.length;for(e||(e=Array(i));++n{this._setToTarget(t,i,e[i],n)})}}function rn(t){return en(t,sn)}function sn(t){return nn(t)?t:void 0}var an=function(){return function t(){t.called=!0}};class cn{constructor(t,e){this.source=t,this.name=e,this.path=[],this.stop=an(),this.off=an()}}const ln=new Array(256).fill().map((t,e)=>(\"0\"+e.toString(16)).slice(-2));function dn(){const t=4294967296*Math.random()>>>0,e=4294967296*Math.random()>>>0,n=4294967296*Math.random()>>>0,i=4294967296*Math.random()>>>0;return\"e\"+ln[t>>0&255]+ln[t>>8&255]+ln[t>>16&255]+ln[t>>24&255]+ln[e>>0&255]+ln[e>>8&255]+ln[e>>16&255]+ln[e>>24&255]+ln[n>>0&255]+ln[n>>8&255]+ln[n>>16&255]+ln[n>>24&255]+ln[i>>0&255]+ln[i>>8&255]+ln[i>>16&255]+ln[i>>24&255]}var hn={get(t){return\"number\"!=typeof t?this[t]||this.normal:t},highest:1e5,high:1e3,normal:0,low:-1e3,lowest:-1e5},un=(n(6),n(0));const fn=Symbol(\"listeningTo\"),mn=Symbol(\"emitterId\");var gn={on(t,e,n={}){this.listenTo(this,t,e,n)},once(t,e,n){let i=!1;this.listenTo(this,t,(function(t,...n){i||(i=!0,t.off(),e.call(this,t,...n))}),n)},off(t,e){this.stopListening(this,t,e)},listenTo(t,e,n,i={}){let o,r;this[fn]||(this[fn]={});const s=this[fn];bn(t)||pn(t);const a=bn(t);(o=s[a])||(o=s[a]={emitter:t,callbacks:{}}),(r=o.callbacks[e])||(r=o.callbacks[e]=[]),r.push(n),function(t,e){const n=wn(t);if(n[e])return;let i=e,o=null;const r=[];for(;\"\"!==i&&!n[i];)n[i]={callbacks:[],childEvents:[]},r.push(n[i]),o&&n[i].childEvents.push(o),o=i,i=i.substr(0,i.lastIndexOf(\":\"));if(\"\"!==i){for(const t of r)t.callbacks=n[i].callbacks.slice();n[i].childEvents.push(o)}}(t,e);const c=kn(t,e),l=hn.get(i.priority),d={callback:n,priority:l};for(const t of c){let e=!1;for(let n=0;n-1?t(e,n.substr(0,n.lastIndexOf(\":\"))):null;return i.callbacks}(this,i);if(n.path.push(this),o){const t=[n,...e];o=Array.from(o);for(let e=0;e{this._delegations||(this._delegations=new Map),t.forEach(t=>{const i=this._delegations.get(t);i?i.set(e,n):this._delegations.set(t,new Map([[e,n]]))})}}},stopDelegating(t,e){if(this._delegations)if(t)if(e){const n=this._delegations.get(t);n&&n.delete(e)}else this._delegations.delete(t);else this._delegations.clear()}};function pn(t,e){t[mn]||(t[mn]=e||dn())}function bn(t){return t[mn]}function wn(t){return t._events||Object.defineProperty(t,\"_events\",{value:{}}),t._events}function kn(t,e){const n=wn(t)[e];if(!n)return[];let i=[n.callbacks];for(let e=0;e{Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e)).forEach(n=>{if(n in t.prototype)return;const i=Object.getOwnPropertyDescriptor(e,n);i.enumerable=!1,Object.defineProperty(t.prototype,n,i)})})}class xn{constructor(t={}){this._items=[],this._itemMap=new Map,this._idProperty=t.idProperty||\"id\",this._bindToExternalToInternalMap=new WeakMap,this._bindToInternalToExternalMap=new WeakMap,this._skippedIndexesFromExternal=[]}get length(){return this._items.length}get first(){return this._items[0]||null}get last(){return this._items[this.length-1]||null}add(t,e){let n;const i=this._idProperty;if(i in t){if(n=t[i],\"string\"!=typeof n)throw new un.b(\"collection-add-invalid-id\",this);if(this.get(n))throw new un.b(\"collection-add-item-already-exists\",this)}else t[i]=n=dn();if(void 0===e)e=this._items.length;else if(e>this._items.length||e<0)throw new un.b(\"collection-add-item-invalid-index\",this);return this._items.splice(e,0,t),this._itemMap.set(n,t),this.fire(\"add\",t,e),this}get(t){let e;if(\"string\"==typeof t)e=this._itemMap.get(t);else{if(\"number\"!=typeof t)throw new un.b(\"collection-get-invalid-arg: Index or id must be given.\",this);e=this._items[t]}return e||null}has(t){if(\"string\"==typeof t)return this._itemMap.has(t);{const e=t[this._idProperty];return this._itemMap.has(e)}}getIndex(t){let e;return e=\"string\"==typeof t?this._itemMap.get(t):t,this._items.indexOf(e)}remove(t){let e,n,i,o=!1;const r=this._idProperty;if(\"string\"==typeof t?(n=t,i=this._itemMap.get(n),o=!i,i&&(e=this._items.indexOf(i))):\"number\"==typeof t?(e=t,i=this._items[e],o=!i,i&&(n=i[r])):(i=t,n=i[r],e=this._items.indexOf(i),o=-1==e||!this._itemMap.get(n)),o)throw new un.b(\"collection-remove-404: Item not found.\",this);this._items.splice(e,1),this._itemMap.delete(n);const s=this._bindToInternalToExternalMap.get(i);return this._bindToInternalToExternalMap.delete(i),this._bindToExternalToInternalMap.delete(s),this.fire(\"remove\",i,e),i}map(t,e){return this._items.map(t,e)}find(t,e){return this._items.find(t,e)}filter(t,e){return this._items.filter(t,e)}clear(){for(this._bindToCollection&&(this.stopListening(this._bindToCollection),this._bindToCollection=null);this.length;)this.remove(0)}bindTo(t){if(this._bindToCollection)throw new un.b(\"collection-bind-to-rebind: The collection cannot be bound more than once.\",this);return this._bindToCollection=t,{as:t=>{this._setUpBindToBinding(e=>new t(e))},using:t=>{\"function\"==typeof t?this._setUpBindToBinding(e=>t(e)):this._setUpBindToBinding(e=>e[t])}}}_setUpBindToBinding(t){const e=this._bindToCollection,n=(n,i,o)=>{const r=e._bindToCollection==this,s=e._bindToInternalToExternalMap.get(i);if(r&&s)this._bindToExternalToInternalMap.set(i,s),this._bindToInternalToExternalMap.set(s,i);else{const n=t(i);if(!n)return void this._skippedIndexesFromExternal.push(o);let r=o;for(const t of this._skippedIndexesFromExternal)o>t&&r--;for(const t of e._skippedIndexesFromExternal)r>=t&&r++;this._bindToExternalToInternalMap.set(i,n),this._bindToInternalToExternalMap.set(n,i),this.add(n,r);for(let t=0;t{const i=this._bindToExternalToInternalMap.get(e);i&&this.remove(i),this._skippedIndexesFromExternal=this._skippedIndexesFromExternal.reduce((t,e)=>(ne&&t.push(e),t),[])})}[Symbol.iterator](){return this._items[Symbol.iterator]()}}yn(xn,gn);class An{constructor(t,e=[],n=[]){this._context=t,this._plugins=new Map,this._availablePlugins=new Map;for(const t of e)t.pluginName&&this._availablePlugins.set(t.pluginName,t);this._contextPlugins=new Map;for(const[t,e]of n)this._contextPlugins.set(t,e),this._contextPlugins.set(e,t),t.pluginName&&this._availablePlugins.set(t.pluginName,t)}*[Symbol.iterator](){for(const t of this._plugins)\"function\"==typeof t[0]&&(yield t)}get(t){const e=this._plugins.get(t);if(!e){const e=\"plugincollection-plugin-not-loaded: The requested plugin is not loaded.\";let n=t;throw\"function\"==typeof t&&(n=t.pluginName||t.name),new un.b(e,this._context,{plugin:n})}return e}has(t){return this._plugins.has(t)}init(t,e=[]){const n=this,i=this._context,o=new Set,r=[],s=u(t),a=u(e),c=function(t){const e=[];for(const n of t)h(n)||e.push(n);return e.length?e:null}(t);if(c){const t=\"plugincollection-plugin-not-found: Some plugins are not available and could not be loaded.\";return console.error(Object(un.a)(t),{plugins:c}),Promise.reject(new un.b(t,i,{plugins:c}))}return Promise.all(s.map(l)).then(()=>d(r,\"init\")).then(()=>d(r,\"afterInit\")).then(()=>r);function l(t){if(!a.includes(t)&&!n._plugins.has(t)&&!o.has(t))return function(t){return new Promise(s=>{o.add(t),t.requires&&t.requires.forEach(n=>{const o=h(n);if(t.isContextPlugin&&!o.isContextPlugin)throw new un.b(\"plugincollection-context-required: Context plugin can not require plugin which is not a context plugin\",null,{plugin:o.name,requiredBy:t.name});if(e.includes(o))throw new un.b(\"plugincollection-required: Cannot load a plugin because one of its dependencies is listed inthe `removePlugins` option.\",i,{plugin:o.name,requiredBy:t.name});l(o)});const a=n._contextPlugins.get(t)||new t(i);n._add(t,a),r.push(a),s()})}(t).catch(e=>{throw console.error(Object(un.a)(\"plugincollection-load: It was not possible to load the plugin.\"),{plugin:t}),e})}function d(t,e){return t.reduce((t,i)=>i[e]?n._contextPlugins.has(i)?t:t.then(i[e].bind(i)):t,Promise.resolve())}function h(t){return\"function\"==typeof t?t:n._availablePlugins.get(t)}function u(t){return t.map(t=>h(t)).filter(t=>!!t)}}destroy(){const t=[];for(const[,e]of this)\"function\"!=typeof e.destroy||this._contextPlugins.has(e)||t.push(e.destroy());return Promise.all(t)}_add(t,e){this._plugins.set(t,e);const n=t.pluginName;if(n){if(this._plugins.has(n))throw new un.b(\"plugincollection-plugin-name-conflict: Two plugins with the same name were loaded.\",null,{pluginName:n,plugin1:this._plugins.get(n).constructor,plugin2:t});this._plugins.set(n,e)}}}function Cn(t,e){const n=Object.keys(window.CKEDITOR_TRANSLATIONS).length;return 1===n&&(t=Object.keys(window.CKEDITOR_TRANSLATIONS)[0]),0!==n&&function(t,e){return t in window.CKEDITOR_TRANSLATIONS&&e in window.CKEDITOR_TRANSLATIONS[t]}(t,e)?window.CKEDITOR_TRANSLATIONS[t][e].replace(/ \\[context: [^\\]]+\\]$/,\"\"):e.replace(/ \\[context: [^\\]]+\\]$/,\"\")}yn(An,gn),window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={});const Tn=[\"ar\",\"fa\",\"he\",\"ku\",\"ug\"];class Pn{constructor(t={}){this.uiLanguage=t.uiLanguage||\"en\",this.contentLanguage=t.contentLanguage||this.uiLanguage,this.uiLanguageDirection=Sn(this.uiLanguage),this.contentLanguageDirection=Sn(this.contentLanguage),this.t=(...t)=>this._t(...t)}get language(){return console.warn(\"locale-deprecated-language-property: The Locale#language property has been deprecated and will be removed in the near future. Please use #uiLanguage and #contentLanguage properties instead.\"),this.uiLanguage}_t(t,e){let n=Cn(this.uiLanguage,t);return e&&(n=n.replace(/%(\\d+)/g,(t,n)=>nt.destroy())).then(()=>this.plugins.destroy())}_addEditor(t,e){if(this._contextOwner)throw new un.b(\"context-addEditor-private-context: Cannot add multiple editors to the context which is created by the editor.\");this.editors.add(t),e&&(this._contextOwner=t)}_removeEditor(t){return this.editors.has(t)&&this.editors.remove(t),this._contextOwner===t?this.destroy():Promise.resolve()}_getEditorConfig(){const t={};for(const e of this.config.names())[\"plugins\",\"removePlugins\",\"extraPlugins\"].includes(e)||(t[e]=this.config.get(e));return t}static create(t){return new Promise(e=>{const n=new this(t);e(n.initPlugins().then(()=>n))})}}function En(t,e){const n=Math.min(t.length,e.length);for(let i=0;it.data.length)throw new un.b(\"view-textproxy-wrong-offsetintext: Given offsetInText value is incorrect.\",this);if(n<0||e+n>t.data.length)throw new un.b(\"view-textproxy-wrong-length: Given length value is incorrect.\",this);this.data=t.data.substring(e,e+n),this.offsetInText=e}get offsetSize(){return this.data.length}get isPartial(){return this.data.length!==this.textNode.data.length}get parent(){return this.textNode.parent}get root(){return this.textNode.root}get document(){return this.textNode.document}is(t){return\"textProxy\"==t||\"view:textProxy\"==t}getAncestors(t={includeSelf:!1,parentFirst:!1}){const e=[];let n=t.includeSelf?this.textNode:this.parent;for(;null!==n;)e[t.parentFirst?\"push\":\"unshift\"](n),n=n.parent;return e}}function Dn(t){return!(!t||!t[Symbol.iterator])}function Ln(t){return Dn(t)?new Map(t):function(t){const e=new Map;for(const n in t)e.set(n,t[n]);return e}(t)}class jn{constructor(...t){this._patterns=[],this.add(...t)}add(...t){for(let e of t)(\"string\"==typeof e||e instanceof RegExp)&&(e={name:e}),e.classes&&(\"string\"==typeof e.classes||e.classes instanceof RegExp)&&(e.classes=[e.classes]),this._patterns.push(e)}match(...t){for(const e of t)for(const t of this._patterns){const n=Vn(e,t);if(n)return{element:e,pattern:t,match:n}}return null}matchAll(...t){const e=[];for(const n of t)for(const t of this._patterns){const i=Vn(n,t);i&&e.push({element:n,pattern:t,match:i})}return e.length>0?e:null}getElementName(){if(1!==this._patterns.length)return null;const t=this._patterns[0],e=t.name;return\"function\"==typeof t||!e||e instanceof RegExp?null:e}}function Vn(t,e){if(\"function\"==typeof e)return e(t);const n={};return e.name&&(n.name=function(t,e){if(t instanceof RegExp)return t.test(e);return t===e}(e.name,t.name),!n.name)||e.attributes&&(n.attributes=function(t,e){const n=[];for(const i in t){const o=t[i];if(!e.hasAttribute(i))return null;{const t=e.getAttribute(i);if(!0===o)n.push(i);else if(o instanceof RegExp){if(!o.test(t))return null;n.push(i)}else{if(t!==o)return null;n.push(i)}}}return n}(e.attributes,t),!n.attributes)?null:!(e.classes&&(n.classes=function(t,e){const n=[];for(const i of t)if(i instanceof RegExp){const t=e.getClassNames();for(const e of t)i.test(e)&&n.push(e);if(0===n.length)return null}else{if(!e.hasClass(i))return null;n.push(i)}return n}(e.classes,t),!n.classes))&&(!(e.styles&&(n.styles=function(t,e){const n=[];for(const i in t){const o=t[i];if(!e.hasStyle(i))return null;{const t=e.getStyle(i);if(o instanceof RegExp){if(!o.test(t))return null;n.push(i)}else{if(t!==o)return null;n.push(i)}}}return n}(e.styles,t),!n.styles))&&n)}var zn=function(t){return\"symbol\"==typeof t||p(t)&&\"[object Symbol]\"==f(t)},Bn=/\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,Fn=/^\\w*$/;var Un=function(t,e){if(Dt(t))return!1;var n=typeof t;return!(\"number\"!=n&&\"symbol\"!=n&&\"boolean\"!=n&&null!=t&&!zn(t))||(Fn.test(t)||!Bn.test(t)||null!=e&&t in Object(e))};function Hn(t,e){if(\"function\"!=typeof t||null!=e&&\"function\"!=typeof e)throw new TypeError(\"Expected a function\");var n=function(){var i=arguments,o=e?e.apply(this,i):i[0],r=n.cache;if(r.has(o))return r.get(o);var s=t.apply(this,i);return n.cache=r.set(o,s)||r,s};return n.cache=new(Hn.Cache||kt),n}Hn.Cache=kt;var qn=Hn;var Wn=/[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g,Yn=/\\\\(\\\\)?/g,$n=function(t){var e=qn(t,(function(t){return 500===n.size&&n.clear(),t})),n=e.cache;return e}((function(t){var e=[];return 46===t.charCodeAt(0)&&e.push(\"\"),t.replace(Wn,(function(t,n,i,o){e.push(i?o.replace(Yn,\"$1\"):n||t)})),e}));var Gn=function(t,e){for(var n=-1,i=null==t?0:t.length,o=Array(i);++no?0:o+e),(n=n>o?o:n)<0&&(n+=o),o=e>n?0:n-e>>>0,e>>>=0;for(var r=Array(o);++i0){if(++e>=800)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(_i);var xi=function(t,e){return yi(wi(t,e,gi),t+\"\")};var Ai=function(t,e,n){if(!j(n))return!1;var i=typeof e;return!!(\"number\"==i?Xt(n)&&Vt(e,n.length):\"string\"==i&&e in n)&&A(n[e],t)};var Ci=function(t){return xi((function(e,n){var i=-1,o=n.length,r=o>1?n[o-1]:void 0,s=o>2?n[2]:void 0;for(r=t.length>3&&\"function\"==typeof r?(o--,r):void 0,s&&Ai(n[0],n[1],s)&&(r=o<3?void 0:r,o=1),e=Object(e);++ie===t);return Array.isArray(e)}set(t,e){if(j(t))for(const[e,n]of Object.entries(t))this._styleProcessor.toNormalizedForm(e,n,this._styles);else this._styleProcessor.toNormalizedForm(t,e,this._styles)}remove(t){const e=Ii(t);si(this._styles,e),delete this._styles[t],this._cleanEmptyObjectsOnPath(e)}getNormalized(t){return this._styleProcessor.getNormalized(t,this._styles)}toString(){return this.isEmpty?\"\":this._getStylesEntries().map(t=>t.join(\":\")).sort().join(\";\")+\";\"}getAsString(t){if(this.isEmpty)return;if(this._styles[t]&&!j(this._styles[t]))return this._styles[t];const e=this._styleProcessor.getReducedForm(t,this._styles).find(([e])=>e===t);return Array.isArray(e)?e[1]:void 0}getStyleNames(){if(this.isEmpty)return[];return this._getStylesEntries().map(([t])=>t)}clear(){this._styles={}}_getStylesEntries(){const t=[],e=Object.keys(this._styles);for(const n of e)t.push(...this._styleProcessor.getReducedForm(n,this._styles));return t}_cleanEmptyObjectsOnPath(t){const e=t.split(\".\");if(!(e.length>1))return;const n=e.splice(0,e.length-1).join(\".\"),i=ai(this._styles,n);i&&!Array.from(Object.keys(i)).length&&this.remove(n)}}class Ei{constructor(){this._normalizers=new Map,this._extractors=new Map,this._reducers=new Map,this._consumables=new Map}toNormalizedForm(t,e,n){if(j(e))Ni(n,Ii(t),e);else if(this._normalizers.has(t)){const i=this._normalizers.get(t),{path:o,value:r}=i(e);Ni(n,o,r)}else Ni(n,t,e)}getNormalized(t,e){if(!t)return Ti({},e);if(void 0!==e[t])return e[t];if(this._extractors.has(t)){const n=this._extractors.get(t);if(\"string\"==typeof n)return ai(e,n);const i=n(t,e);if(i)return i}return ai(e,Ii(t))}getReducedForm(t,e){const n=this.getNormalized(t,e);if(void 0===n)return[];if(this._reducers.has(t)){return this._reducers.get(t)(n)}return[[t,n]]}getRelatedStyles(t){return this._consumables.get(t)||[]}setNormalizer(t,e){this._normalizers.set(t,e)}setExtractor(t,e){this._extractors.set(t,e)}setReducer(t,e){this._reducers.set(t,e)}setStyleRelation(t,e){this._mapStyleNames(t,e);for(const n of e)this._mapStyleNames(n,[t])}_mapStyleNames(t,e){this._consumables.has(t)||this._consumables.set(t,[]),this._consumables.get(t).push(...e)}}function Ii(t){return t.replace(\"-\",\".\")}function Ni(t,e,n){let i=n;j(n)&&(i=Ti({},ai(t,e),n)),Si(t,e,i)}class Oi extends Nn{constructor(t,e,n,i){if(super(t),this.name=e,this._attrs=function(t){t=Ln(t);for(const[e,n]of t)null===n?t.delete(e):\"string\"!=typeof n&&t.set(e,String(n));return t}(n),this._children=[],i&&this._insertChild(0,i),this._classes=new Set,this._attrs.has(\"class\")){const t=this._attrs.get(\"class\");Ri(this._classes,t),this._attrs.delete(\"class\")}this._styles=new Mi(this.document.stylesProcessor),this._attrs.has(\"style\")&&(this._styles.setTo(this._attrs.get(\"style\")),this._attrs.delete(\"style\")),this._customProperties=new Map}get childCount(){return this._children.length}get isEmpty(){return 0===this._children.length}is(t,e=null){const n=t.replace(/^view:/,\"\");return e?\"element\"==n&&e==this.name:\"element\"==n||n==this.name||super.is(t)}getChild(t){return this._children[t]}getChildIndex(t){return this._children.indexOf(t)}getChildren(){return this._children[Symbol.iterator]()}*getAttributeKeys(){this._classes.size>0&&(yield\"class\"),this._styles.isEmpty||(yield\"style\"),yield*this._attrs.keys()}*getAttributes(){yield*this._attrs.entries(),this._classes.size>0&&(yield[\"class\",this.getAttribute(\"class\")]),this._styles.isEmpty||(yield[\"style\",this.getAttribute(\"style\")])}getAttribute(t){if(\"class\"==t)return this._classes.size>0?[...this._classes].join(\" \"):void 0;if(\"style\"==t){const t=this._styles.toString();return\"\"==t?void 0:t}return this._attrs.get(t)}hasAttribute(t){return\"class\"==t?this._classes.size>0:\"style\"==t?!this._styles.isEmpty:this._attrs.has(t)}isSimilar(t){if(!(t instanceof Oi))return!1;if(this===t)return!0;if(this.name!=t.name)return!1;if(this._attrs.size!==t._attrs.size||this._classes.size!==t._classes.size||this._styles.size!==t._styles.size)return!1;for(const[e,n]of this._attrs)if(!t._attrs.has(e)||t._attrs.get(e)!==n)return!1;for(const e of this._classes)if(!t._classes.has(e))return!1;for(const e of this._styles.getStyleNames())if(!t._styles.has(e)||t._styles.getAsString(e)!==this._styles.getAsString(e))return!1;return!0}hasClass(...t){for(const e of t)if(!this._classes.has(e))return!1;return!0}getClassNames(){return this._classes.keys()}getStyle(t){return this._styles.getAsString(t)}getNormalizedStyle(t){return this._styles.getNormalized(t)}getStyleNames(){return this._styles.getStyleNames()}hasStyle(...t){for(const e of t)if(!this._styles.has(e))return!1;return!0}findAncestor(...t){const e=new jn(...t);let n=this.parent;for(;n;){if(e.match(n))return n;n=n.parent}return null}getCustomProperty(t){return this._customProperties.get(t)}*getCustomProperties(){yield*this._customProperties.entries()}getIdentity(){const t=Array.from(this._classes).sort().join(\",\"),e=this._styles.toString(),n=Array.from(this._attrs).map(t=>`${t[0]}=\"${t[1]}\"`).sort().join(\" \");return this.name+(\"\"==t?\"\":` class=\"${t}\"`)+(e?` style=\"${e}\"`:\"\")+(\"\"==n?\"\":` ${n}`)}_clone(t=!1){const e=[];if(t)for(const n of this.getChildren())e.push(n._clone(t));const n=new this.constructor(this.document,this.name,this._attrs,e);return n._classes=new Set(this._classes),n._styles.set(this._styles.getNormalized()),n._customProperties=new Map(this._customProperties),n.getFillerOffset=this.getFillerOffset,n}_appendChild(t){return this._insertChild(this.childCount,t)}_insertChild(t,e){this._fireChange(\"children\",this);let n=0;const i=function(t,e){if(\"string\"==typeof e)return[new On(t,e)];Dn(e)||(e=[e]);return Array.from(e).map(e=>\"string\"==typeof e?new On(t,e):e instanceof Rn?new On(t,e.data):e)}(this.document,e);for(const e of i)null!==e.parent&&e._remove(),e.parent=this,e.document=this.document,this._children.splice(t,0,e),t++,n++;return n}_removeChildren(t,e=1){this._fireChange(\"children\",this);for(let n=t;n0&&(this._classes.clear(),!0):\"style\"==t?!this._styles.isEmpty&&(this._styles.clear(),!0):this._attrs.delete(t)}_addClass(t){this._fireChange(\"attributes\",this),(t=Array.isArray(t)?t:[t]).forEach(t=>this._classes.add(t))}_removeClass(t){this._fireChange(\"attributes\",this),(t=Array.isArray(t)?t:[t]).forEach(t=>this._classes.delete(t))}_setStyle(t,e){this._fireChange(\"attributes\",this),this._styles.set(t,e)}_removeStyle(t){this._fireChange(\"attributes\",this),(t=Array.isArray(t)?t:[t]).forEach(t=>this._styles.remove(t))}_setCustomProperty(t,e){this._customProperties.set(t,e)}_removeCustomProperty(t){return this._customProperties.delete(t)}}function Ri(t,e){const n=e.split(/\\s+/);t.clear(),n.forEach(e=>t.add(e))}class Di extends Oi{constructor(t,e,n,i){super(t,e,n,i),this.getFillerOffset=Li}is(t,e=null){const n=t&&t.replace(/^view:/,\"\");return e?\"containerElement\"==n&&e==this.name||super.is(t,e):\"containerElement\"==n||super.is(t)}}function Li(){const t=[...this.getChildren()],e=t[this.childCount-1];if(e&&e.is(\"element\",\"br\"))return this.childCount;for(const e of t)if(!e.is(\"uiElement\"))return null;return this.childCount}var ji=Ci((function(t,e){St(e,re(e),t)}));const Vi=Symbol(\"observableProperties\"),zi=Symbol(\"boundObservables\"),Bi=Symbol(\"boundProperties\"),Fi={set(t,e){if(j(t))return void Object.keys(t).forEach(e=>{this.set(e,t[e])},this);Hi(this);const n=this[Vi];if(t in this&&!n.has(t))throw new un.b(\"observable-set-cannot-override: Cannot override an existing property.\",this);Object.defineProperty(this,t,{enumerable:!0,configurable:!0,get:()=>n.get(t),set(e){const i=n.get(t);let o=this.fire(\"set:\"+t,t,e,i);void 0===o&&(o=e),i===o&&n.has(t)||(n.set(t,o),this.fire(\"change:\"+t,t,o,i))}}),this[t]=e},bind(...t){if(!t.length||!Yi(t))throw new un.b(\"observable-bind-wrong-properties: All properties must be strings.\",this);if(new Set(t).size!==t.length)throw new un.b(\"observable-bind-duplicate-properties: Properties must be unique.\",this);Hi(this);const e=this[Bi];t.forEach(t=>{if(e.has(t))throw new un.b(\"observable-bind-rebind: Cannot bind the same property more than once.\",this)});const n=new Map;return t.forEach(t=>{const i={property:t,to:[]};e.set(t,i),n.set(t,i)}),{to:qi,toMany:Wi,_observable:this,_bindProperties:t,_to:[],_bindings:n}},unbind(...t){if(!(Vi in this))return;const e=this[Bi],n=this[zi];if(t.length){if(!Yi(t))throw new un.b(\"observable-unbind-wrong-properties: Properties must be strings.\",this);t.forEach(t=>{const i=e.get(t);if(!i)return;let o,r,s,a;i.to.forEach(t=>{o=t[0],r=t[1],s=n.get(o),a=s[r],a.delete(i),a.size||delete s[r],Object.keys(s).length||(n.delete(o),this.stopListening(o,\"change\"))}),e.delete(t)})}else n.forEach((t,e)=>{this.stopListening(e,\"change\")}),n.clear(),e.clear()},decorate(t){const e=this[t];if(!e)throw new un.b(\"observablemixin-cannot-decorate-undefined: Cannot decorate an undefined method.\",this,{object:this,methodName:t});this.on(t,(t,n)=>{t.return=e.apply(this,n)}),this[t]=function(...e){return this.fire(t,e)}}};ji(Fi,gn);var Ui=Fi;function Hi(t){Vi in t||(Object.defineProperty(t,Vi,{value:new Map}),Object.defineProperty(t,zi,{value:new Map}),Object.defineProperty(t,Bi,{value:new Map}))}function qi(...t){const e=function(...t){if(!t.length)throw new un.b(\"observable-bind-to-parse-error: Invalid argument syntax in `to()`.\",null);const e={to:[]};let n;\"function\"==typeof t[t.length-1]&&(e.callback=t.pop());return t.forEach(t=>{if(\"string\"==typeof t)n.properties.push(t);else{if(\"object\"!=typeof t)throw new un.b(\"observable-bind-to-parse-error: Invalid argument syntax in `to()`.\",null);n={observable:t,properties:[]},e.to.push(n)}}),e}(...t),n=Array.from(this._bindings.keys()),i=n.length;if(!e.callback&&e.to.length>1)throw new un.b(\"observable-bind-to-no-callback: Binding multiple observables only possible with callback.\",this);if(i>1&&e.callback)throw new un.b(\"observable-bind-to-extra-callback: Cannot bind multiple properties and use a callback in one binding.\",this);var o;e.to.forEach(t=>{if(t.properties.length&&t.properties.length!==i)throw new un.b(\"observable-bind-to-properties-length: The number of properties must match.\",this);t.properties.length||(t.properties=this._bindProperties)}),this._to=e.to,e.callback&&(this._bindings.get(n[0]).callback=e.callback),o=this._observable,this._to.forEach(t=>{const e=o[zi];let n;e.get(t.observable)||o.listenTo(t.observable,\"change\",(i,r)=>{n=e.get(t.observable)[r],n&&n.forEach(t=>{$i(o,t.property)})})}),function(t){let e;t._bindings.forEach((n,i)=>{t._to.forEach(o=>{e=o.properties[n.callback?0:t._bindProperties.indexOf(i)],n.to.push([o.observable,e]),function(t,e,n,i){const o=t[zi],r=o.get(n),s=r||{};s[i]||(s[i]=new Set);s[i].add(e),r||o.set(n,s)}(t._observable,n,o.observable,e)})})}(this),this._bindProperties.forEach(t=>{$i(this._observable,t)})}function Wi(t,e,n){if(this._bindings.size>1)throw new un.b(\"observable-bind-to-many-not-one-binding: Cannot bind multiple properties with toMany().\",this);this.to(...function(t,e){const n=t.map(t=>[t,e]);return Array.prototype.concat.apply([],n)}(t,e),n)}function Yi(t){return t.every(t=>\"string\"==typeof t)}function $i(t,e){const n=t[Bi].get(e);let i;n.callback?i=n.callback.apply(t,n.to.map(t=>t[0][t[1]])):(i=n.to[0],i=i[0][i[1]]),t.hasOwnProperty(e)?t[e]=i:t.set(e,i)}class Gi extends Di{constructor(t,e,n,i){super(t,e,n,i),this.set(\"isReadOnly\",!1),this.set(\"isFocused\",!1),this.bind(\"isReadOnly\").to(t),this.bind(\"isFocused\").to(t,\"isFocused\",e=>e&&t.selection.editableElement==this),this.listenTo(t.selection,\"change\",()=>{this.isFocused=t.isFocused&&t.selection.editableElement==this})}is(t,e=null){const n=t&&t.replace(/^view:/,\"\");return e?\"editableElement\"==n&&e==this.name||super.is(t,e):\"editableElement\"==n||super.is(t)}destroy(){this.stopListening()}}yn(Gi,Ui);const Qi=Symbol(\"rootName\");class Ki extends Gi{constructor(t,e){super(t,e),this.rootName=\"main\"}is(t,e=null){const n=t.replace(/^view:/,\"\");return e?\"rootElement\"==n&&e==this.name||super.is(t,e):\"rootElement\"==n||super.is(t)}get rootName(){return this.getCustomProperty(Qi)}set rootName(t){this._setCustomProperty(Qi,t)}set _name(t){this.name=t}}class Ji{constructor(t={}){if(!t.boundaries&&!t.startPosition)throw new un.b(\"view-tree-walker-no-start-position: Neither boundaries nor starting position have been defined.\",null);if(t.direction&&\"forward\"!=t.direction&&\"backward\"!=t.direction)throw new un.b(\"view-tree-walker-unknown-direction: Only `backward` and `forward` direction allowed.\",t.startPosition,{direction:t.direction});this.boundaries=t.boundaries||null,t.startPosition?this.position=Zi._createAt(t.startPosition):this.position=Zi._createAt(t.boundaries[\"backward\"==t.direction?\"end\":\"start\"]),this.direction=t.direction||\"forward\",this.singleCharacters=!!t.singleCharacters,this.shallow=!!t.shallow,this.ignoreElementEnd=!!t.ignoreElementEnd,this._boundaryStartParent=this.boundaries?this.boundaries.start.parent:null,this._boundaryEndParent=this.boundaries?this.boundaries.end.parent:null}[Symbol.iterator](){return this}skip(t){let e,n,i;do{i=this.position,({done:e,value:n}=this.next())}while(!e&&t(n));e||(this.position=i)}next(){return\"forward\"==this.direction?this._next():this._previous()}_next(){let t=this.position.clone();const e=this.position,n=t.parent;if(null===n.parent&&t.offset===n.childCount)return{done:!0};if(n===this._boundaryEndParent&&t.offset==this.boundaries.end.offset)return{done:!0};let i;if(n instanceof On){if(t.isAtEnd)return this.position=Zi._createAfter(n),this._next();i=n.data[t.offset]}else i=n.getChild(t.offset);if(i instanceof Oi)return this.shallow?t.offset++:t=new Zi(i,0),this.position=t,this._formatReturnValue(\"elementStart\",i,e,t,1);if(i instanceof On){if(this.singleCharacters)return t=new Zi(i,0),this.position=t,this._next();{let n,o=i.data.length;return i==this._boundaryEndParent?(o=this.boundaries.end.offset,n=new Rn(i,0,o),t=Zi._createAfter(n)):(n=new Rn(i,0,i.data.length),t.offset++),this.position=t,this._formatReturnValue(\"text\",n,e,t,o)}}if(\"string\"==typeof i){let i;if(this.singleCharacters)i=1;else{i=(n===this._boundaryEndParent?this.boundaries.end.offset:n.data.length)-t.offset}const o=new Rn(n,t.offset,i);return t.offset+=i,this.position=t,this._formatReturnValue(\"text\",o,e,t,i)}return t=Zi._createAfter(n),this.position=t,this.ignoreElementEnd?this._next():this._formatReturnValue(\"elementEnd\",n,e,t)}_previous(){let t=this.position.clone();const e=this.position,n=t.parent;if(null===n.parent&&0===t.offset)return{done:!0};if(n==this._boundaryStartParent&&t.offset==this.boundaries.start.offset)return{done:!0};let i;if(n instanceof On){if(t.isAtStart)return this.position=Zi._createBefore(n),this._previous();i=n.data[t.offset-1]}else i=n.getChild(t.offset-1);if(i instanceof Oi)return this.shallow?(t.offset--,this.position=t,this._formatReturnValue(\"elementStart\",i,e,t,1)):(t=new Zi(i,i.childCount),this.position=t,this.ignoreElementEnd?this._previous():this._formatReturnValue(\"elementEnd\",i,e,t));if(i instanceof On){if(this.singleCharacters)return t=new Zi(i,i.data.length),this.position=t,this._previous();{let n,o=i.data.length;if(i==this._boundaryStartParent){const e=this.boundaries.start.offset;n=new Rn(i,e,i.data.length-e),o=n.data.length,t=Zi._createBefore(n)}else n=new Rn(i,0,i.data.length),t.offset--;return this.position=t,this._formatReturnValue(\"text\",n,e,t,o)}}if(\"string\"==typeof i){let i;if(this.singleCharacters)i=1;else{const e=n===this._boundaryStartParent?this.boundaries.start.offset:0;i=t.offset-e}t.offset-=i;const o=new Rn(n,t.offset,i);return this.position=t,this._formatReturnValue(\"text\",o,e,t,i)}return t=Zi._createBefore(n),this.position=t,this._formatReturnValue(\"elementStart\",n,e,t,1)}_formatReturnValue(t,e,n,i,o){return e instanceof Rn&&(e.offsetInText+e.data.length==e.textNode.data.length&&(\"forward\"!=this.direction||this.boundaries&&this.boundaries.end.isEqual(this.position)?n=Zi._createAfter(e.textNode):(i=Zi._createAfter(e.textNode),this.position=i)),0===e.offsetInText&&(\"backward\"!=this.direction||this.boundaries&&this.boundaries.start.isEqual(this.position)?n=Zi._createBefore(e.textNode):(i=Zi._createBefore(e.textNode),this.position=i))),{done:!1,value:{type:t,item:e,previousPosition:n,nextPosition:i,length:o}}}}class Zi{constructor(t,e){this.parent=t,this.offset=e}get nodeAfter(){return this.parent.is(\"text\")?null:this.parent.getChild(this.offset)||null}get nodeBefore(){return this.parent.is(\"text\")?null:this.parent.getChild(this.offset-1)||null}get isAtStart(){return 0===this.offset}get isAtEnd(){const t=this.parent.is(\"text\")?this.parent.data.length:this.parent.childCount;return this.offset===t}get root(){return this.parent.root}get editableElement(){let t=this.parent;for(;!(t instanceof Gi);){if(!t.parent)return null;t=t.parent}return t}getShiftedBy(t){const e=Zi._createAt(this),n=e.offset+t;return e.offset=n<0?0:n,e}getLastMatchingPosition(t,e={}){e.startPosition=this;const n=new Ji(e);return n.skip(t),n.position}getAncestors(){return this.parent.is(\"documentFragment\")?[this.parent]:this.parent.getAncestors({includeSelf:!0})}getCommonAncestor(t){const e=this.getAncestors(),n=t.getAncestors();let i=0;for(;e[i]==n[i]&&e[i];)i++;return 0===i?null:e[i-1]}is(t){return\"position\"==t||\"view:position\"==t}isEqual(t){return this.parent==t.parent&&this.offset==t.offset}isBefore(t){return\"before\"==this.compareWith(t)}isAfter(t){return\"after\"==this.compareWith(t)}compareWith(t){if(this.root!==t.root)return\"different\";if(this.isEqual(t))return\"same\";const e=this.parent.is(\"node\")?this.parent.getPath():[],n=t.parent.is(\"node\")?t.parent.getPath():[];e.push(this.offset),n.push(t.offset);const i=En(e,n);switch(i){case\"prefix\":return\"before\";case\"extension\":return\"after\";default:return e[i]0?new this(n,i):new this(i,n)}static _createIn(t){return this._createFromParentsAndOffsets(t,0,t,t.childCount)}static _createOn(t){const e=t.is(\"textProxy\")?t.offsetSize:1;return this._createFromPositionAndShift(Zi._createBefore(t),e)}}function to(t){return!(!t.item.is(\"attributeElement\")&&!t.item.is(\"uiElement\"))}function eo(t){let e=0;for(const n of t)e++;return e}class no{constructor(t=null,e,n){this._ranges=[],this._lastRangeBackward=!1,this._isFake=!1,this._fakeSelectionLabel=\"\",this.setTo(t,e,n)}get isFake(){return this._isFake}get fakeSelectionLabel(){return this._fakeSelectionLabel}get anchor(){if(!this._ranges.length)return null;const t=this._ranges[this._ranges.length-1];return(this._lastRangeBackward?t.end:t.start).clone()}get focus(){if(!this._ranges.length)return null;const t=this._ranges[this._ranges.length-1];return(this._lastRangeBackward?t.start:t.end).clone()}get isCollapsed(){return 1===this.rangeCount&&this._ranges[0].isCollapsed}get rangeCount(){return this._ranges.length}get isBackward(){return!this.isCollapsed&&this._lastRangeBackward}get editableElement(){return this.anchor?this.anchor.editableElement:null}*getRanges(){for(const t of this._ranges)yield t.clone()}getFirstRange(){let t=null;for(const e of this._ranges)t&&!e.start.isBefore(t.start)||(t=e);return t?t.clone():null}getLastRange(){let t=null;for(const e of this._ranges)t&&!e.end.isAfter(t.end)||(t=e);return t?t.clone():null}getFirstPosition(){const t=this.getFirstRange();return t?t.start.clone():null}getLastPosition(){const t=this.getLastRange();return t?t.end.clone():null}isEqual(t){if(this.isFake!=t.isFake)return!1;if(this.isFake&&this.fakeSelectionLabel!=t.fakeSelectionLabel)return!1;if(this.rangeCount!=t.rangeCount)return!1;if(0===this.rangeCount)return!0;if(!this.anchor.isEqual(t.anchor)||!this.focus.isEqual(t.focus))return!1;for(const e of this._ranges){let n=!1;for(const i of t._ranges)if(e.isEqual(i)){n=!0;break}if(!n)return!1}return!0}isSimilar(t){if(this.isBackward!=t.isBackward)return!1;const e=eo(this.getRanges());if(e!=eo(t.getRanges()))return!1;if(0==e)return!0;for(let e of this.getRanges()){e=e.getTrimmed();let n=!1;for(let i of t.getRanges())if(i=i.getTrimmed(),e.start.isEqual(i.start)&&e.end.isEqual(i.end)){n=!0;break}if(!n)return!1}return!0}getSelectedElement(){return 1!==this.rangeCount?null:this.getFirstRange().getContainedElement()}setTo(t,e,n){if(null===t)this._setRanges([]),this._setFakeOptions(e);else if(t instanceof no||t instanceof io)this._setRanges(t.getRanges(),t.isBackward),this._setFakeOptions({fake:t.isFake,label:t.fakeSelectionLabel});else if(t instanceof Xi)this._setRanges([t],e&&e.backward),this._setFakeOptions(e);else if(t instanceof Zi)this._setRanges([new Xi(t)]),this._setFakeOptions(e);else if(t instanceof Nn){const i=!!n&&!!n.backward;let o;if(void 0===e)throw new un.b(\"view-selection-setTo-required-second-parameter: selection.setTo requires the second parameter when the first parameter is a node.\",this);o=\"in\"==e?Xi._createIn(t):\"on\"==e?Xi._createOn(t):new Xi(Zi._createAt(t,e)),this._setRanges([o],i),this._setFakeOptions(n)}else{if(!Dn(t))throw new un.b(\"view-selection-setTo-not-selectable: Cannot set selection to given place.\",this);this._setRanges(t,e&&e.backward),this._setFakeOptions(e)}this.fire(\"change\")}setFocus(t,e){if(null===this.anchor)throw new un.b(\"view-selection-setFocus-no-ranges: Cannot set selection focus if there are no ranges in selection.\",this);const n=Zi._createAt(t,e);if(\"same\"==n.compareWith(this.focus))return;const i=this.anchor;this._ranges.pop(),\"before\"==n.compareWith(i)?this._addRange(new Xi(n,i),!0):this._addRange(new Xi(i,n)),this.fire(\"change\")}is(t){return\"selection\"==t||\"view:selection\"==t}_setRanges(t,e=!1){t=Array.from(t),this._ranges=[];for(const e of t)this._addRange(e);this._lastRangeBackward=!!e}_setFakeOptions(t={}){this._isFake=!!t.fake,this._fakeSelectionLabel=t.fake&&t.label||\"\"}_addRange(t,e=!1){if(!(t instanceof Xi))throw new un.b(\"view-selection-add-range-not-range: Selection range set to an object that is not an instance of view.Range\",this);this._pushRange(t),this._lastRangeBackward=!!e}_pushRange(t){for(const e of this._ranges)if(t.isIntersecting(e))throw new un.b(\"view-selection-range-intersects: Trying to add a range that intersects with another range from selection.\",this,{addedRange:t,intersectingRange:e});this._ranges.push(new Xi(t.start,t.end))}}yn(no,gn);class io{constructor(t=null,e,n){this._selection=new no,this._selection.delegate(\"change\").to(this),this._selection.setTo(t,e,n)}get isFake(){return this._selection.isFake}get fakeSelectionLabel(){return this._selection.fakeSelectionLabel}get anchor(){return this._selection.anchor}get focus(){return this._selection.focus}get isCollapsed(){return this._selection.isCollapsed}get rangeCount(){return this._selection.rangeCount}get isBackward(){return this._selection.isBackward}get editableElement(){return this._selection.editableElement}get _ranges(){return this._selection._ranges}*getRanges(){yield*this._selection.getRanges()}getFirstRange(){return this._selection.getFirstRange()}getLastRange(){return this._selection.getLastRange()}getFirstPosition(){return this._selection.getFirstPosition()}getLastPosition(){return this._selection.getLastPosition()}getSelectedElement(){return this._selection.getSelectedElement()}isEqual(t){return this._selection.isEqual(t)}isSimilar(t){return this._selection.isSimilar(t)}is(t){return\"selection\"==t||\"documentSelection\"==t||\"view:selection\"==t||\"view:documentSelection\"==t}_setTo(t,e,n){this._selection.setTo(t,e,n)}_setFocus(t,e){this._selection.setFocus(t,e)}}yn(io,gn);class oo{constructor(t){this.selection=new io,this.roots=new xn({idProperty:\"rootName\"}),this.stylesProcessor=t,this.set(\"isReadOnly\",!1),this.set(\"isFocused\",!1),this.set(\"isComposing\",!1),this._postFixers=new Set}getRoot(t=\"main\"){return this.roots.get(t)}registerPostFixer(t){this._postFixers.add(t)}destroy(){this.roots.map(t=>t.destroy()),this.stopListening()}_callPostFixers(t){let e=!1;do{for(const n of this._postFixers)if(e=n(t),e)break}while(e)}}yn(oo,Ui);class ro extends Oi{constructor(t,e,n,i){super(t,e,n,i),this.getFillerOffset=so,this._priority=10,this._id=null,this._clonesGroup=null}get priority(){return this._priority}get id(){return this._id}getElementsWithSameId(){if(null===this.id)throw new un.b(\"attribute-element-get-elements-with-same-id-no-id: Cannot get elements with the same id for an attribute element without id.\",this);return new Set(this._clonesGroup)}is(t,e=null){const n=t&&t.replace(/^view:/,\"\");return e?\"attributeElement\"==n&&e==this.name||super.is(t,e):\"attributeElement\"==n||super.is(t)}isSimilar(t){return null!==this.id||null!==t.id?this.id===t.id:super.isSimilar(t)&&this.priority==t.priority}_clone(t){const e=super._clone(t);return e._priority=this._priority,e._id=this._id,e}}function so(){if(ao(this))return null;let t=this.parent;for(;t&&t.is(\"attributeElement\");){if(ao(t)>1)return null;t=t.parent}return!t||ao(t)>1?null:this.childCount}function ao(t){return Array.from(t.getChildren()).filter(t=>!t.is(\"uiElement\")).length}ro.DEFAULT_PRIORITY=10;class co extends Oi{constructor(t,e,n,i){super(t,e,n,i),this.getFillerOffset=lo}is(t,e=null){const n=t.replace(/^view:/,\"\");return e?\"emptyElement\"==n&&e==this.name||super.is(t,e):\"emptyElement\"==n||super.is(t)}_insertChild(t,e){if(e&&(e instanceof Nn||Array.from(e).length>0))throw new un.b(\"view-emptyelement-cannot-add: Cannot add child nodes to EmptyElement instance.\",[this,e])}}function lo(){return null}const ho=navigator.userAgent.toLowerCase();var uo={isMac:function(t){return t.indexOf(\"macintosh\")>-1}(ho),isEdge:function(t){return!!t.match(/edge\\/(\\d+.?\\d*)/)}(ho),isGecko:function(t){return!!t.match(/gecko\\/\\d+/)}(ho),isSafari:function(t){return t.indexOf(\" applewebkit/\")>-1&&-1===t.indexOf(\"chrome\")}(ho),isAndroid:function(t){return t.indexOf(\"android\")>-1}(ho),features:{isRegExpUnicodePropertySupported:function(){let t=!1;try{t=0===\"ć\".search(new RegExp(\"[\\\\p{L}]\",\"u\"))}catch(t){}return t}()}};const fo={\"⌘\":\"ctrl\",\"⇧\":\"shift\",\"⌥\":\"alt\"},mo={ctrl:\"⌘\",shift:\"⇧\",alt:\"⌥\"},go=function(){const t={arrowleft:37,arrowup:38,arrowright:39,arrowdown:40,backspace:8,delete:46,enter:13,space:32,esc:27,tab:9,ctrl:1114112,cmd:1114112,shift:2228224,alt:4456448};for(let e=65;e<=90;e++){const n=String.fromCharCode(e);t[n.toLowerCase()]=e}for(let e=48;e<=57;e++)t[e-48]=e;for(let e=112;e<=123;e++)t[\"f\"+(e-111)]=e;return t}();function po(t){let e;if(\"string\"==typeof t){if(e=go[t.toLowerCase()],!e)throw new un.b(\"keyboard-unknown-key: Unknown key name.\",null,{key:t})}else e=t.keyCode+(t.altKey?go.alt:0)+(t.ctrlKey?go.ctrl:0)+(t.shiftKey?go.shift:0);return e}function bo(t){return\"string\"==typeof t&&(t=ko(t)),t.map(t=>\"string\"==typeof t?po(t):t).reduce((t,e)=>e+t,0)}function wo(t){return uo.isMac?ko(t).map(t=>mo[t.toLowerCase()]||t).reduce((t,e)=>t.slice(-1)in fo?t+e:t+\"+\"+e):t}function ko(t){return t.split(/\\s*\\+\\s*/)}class _o extends Oi{constructor(t,e,n,i){super(t,e,n,i),this.getFillerOffset=yo}is(t,e=null){const n=t.replace(/^view:/,\"\");return e?\"uiElement\"==n&&e==this.name||super.is(t,e):\"uiElement\"==n||super.is(t)}_insertChild(t,e){if(e&&(e instanceof Nn||Array.from(e).length>0))throw new un.b(\"view-uielement-cannot-add: Cannot add child nodes to UIElement instance.\",this)}render(t){return this.toDomElement(t)}toDomElement(t){const e=t.createElement(this.name);for(const t of this.getAttributeKeys())e.setAttribute(t,this.getAttribute(t));return e}}function vo(t){t.document.on(\"keydown\",(e,n)=>function(t,e,n){if(e.keyCode==go.arrowright){const t=e.domTarget.ownerDocument.defaultView.getSelection(),i=1==t.rangeCount&&t.getRangeAt(0).collapsed;if(i||e.shiftKey){const e=t.focusNode,o=t.focusOffset,r=n.domPositionToView(e,o);if(null===r)return;let s=!1;const a=r.getLastMatchingPosition(t=>(t.item.is(\"uiElement\")&&(s=!0),!(!t.item.is(\"uiElement\")&&!t.item.is(\"attributeElement\"))));if(s){const e=n.viewPositionToDom(a);i?t.collapse(e.parent,e.offset):t.extend(e.parent,e.offset)}}}}(0,n,t.domConverter))}function yo(){return null}class xo{constructor(t,e){this.document=t,this._children=[],e&&this._insertChild(0,e)}[Symbol.iterator](){return this._children[Symbol.iterator]()}get childCount(){return this._children.length}get isEmpty(){return 0===this.childCount}get root(){return this}get parent(){return null}is(t){return\"documentFragment\"==t||\"view:documentFragment\"==t}_appendChild(t){return this._insertChild(this.childCount,t)}getChild(t){return this._children[t]}getChildIndex(t){return this._children.indexOf(t)}getChildren(){return this._children[Symbol.iterator]()}_insertChild(t,e){this._fireChange(\"children\",this);let n=0;const i=function(t,e){if(\"string\"==typeof e)return[new On(t,e)];Dn(e)||(e=[e]);return Array.from(e).map(e=>\"string\"==typeof e?new On(t,e):e instanceof Rn?new On(t,e.data):e)}(this.document,e);for(const e of i)null!==e.parent&&e._remove(),e.parent=this,this._children.splice(t,0,e),t++,n++;return n}_removeChildren(t,e=1){this._fireChange(\"children\",this);for(let n=t;ni instanceof t))throw new un.b(\"view-writer-insert-invalid-node\",n);i.is(\"text\")||t(i.getChildren(),n)}})(e=Dn(e)?[...e]:[e],this.document);const n=Co(t);if(!n)throw new un.b(\"view-writer-invalid-position-container\",this.document);const i=this._breakAttributes(t,!0),o=n._insertChild(i.offset,e);for(const t of e)this._addToClonedElementsGroup(t);const r=i.getShiftedBy(o),s=this.mergeAttributes(i);if(0===o)return new Xi(s,s);{s.isEqual(i)||r.offset--;const t=this.mergeAttributes(r);return new Xi(s,t)}}remove(t){const e=t instanceof Xi?t:Xi._createOn(t);if(No(e,this.document),e.isCollapsed)return new xo(this.document);const{start:n,end:i}=this._breakAttributesRange(e,!0),o=n.parent,r=i.offset-n.offset,s=o._removeChildren(n.offset,r);for(const t of s)this._removeFromClonedElementsGroup(t);const a=this.mergeAttributes(n);return e.start=a,e.end=a.clone(),new xo(this.document,s)}clear(t,e){No(t,this.document);const n=t.getWalker({direction:\"backward\",ignoreElementEnd:!0});for(const i of n){const n=i.item;let o;if(n.is(\"element\")&&e.isSimilar(n))o=Xi._createOn(n);else if(!i.nextPosition.isAfter(t.start)&&n.is(\"textProxy\")){const t=n.getAncestors().find(t=>t.is(\"element\")&&e.isSimilar(t));t&&(o=Xi._createIn(t))}o&&(o.end.isAfter(t.end)&&(o.end=t.end),o.start.isBefore(t.start)&&(o.start=t.start),this.remove(o))}}move(t,e){let n;if(e.isAfter(t.end)){const i=(e=this._breakAttributes(e,!0)).parent,o=i.childCount;t=this._breakAttributesRange(t,!0),n=this.remove(t),e.offset+=i.childCount-o}else n=this.remove(t);return this.insert(e,n)}wrap(t,e){if(!(e instanceof ro))throw new un.b(\"view-writer-wrap-invalid-attribute\",this.document);if(No(t,this.document),t.isCollapsed){let i=t.start;i.parent.is(\"element\")&&(n=i.parent,!Array.from(n.getChildren()).some(t=>!t.is(\"uiElement\")))&&(i=i.getLastMatchingPosition(t=>t.item.is(\"uiElement\"))),i=this._wrapPosition(i,e);const o=this.document.selection;return o.isCollapsed&&o.getFirstPosition().isEqual(t.start)&&this.setSelection(i),new Xi(i)}return this._wrapRange(t,e);var n}unwrap(t,e){if(!(e instanceof ro))throw new un.b(\"view-writer-unwrap-invalid-attribute\",this.document);if(No(t,this.document),t.isCollapsed)return t;const{start:n,end:i}=this._breakAttributesRange(t,!0),o=n.parent,r=this._unwrapChildren(o,n.offset,i.offset,e),s=this.mergeAttributes(r.start);s.isEqual(r.start)||r.end.offset--;const a=this.mergeAttributes(r.end);return new Xi(s,a)}rename(t,e){const n=new Di(this.document,t,e.getAttributes());return this.insert(Zi._createAfter(e),n),this.move(Xi._createIn(e),Zi._createAt(n,0)),this.remove(Xi._createOn(e)),n}clearClonedElementsGroup(t){this._cloneGroups.delete(t)}createPositionAt(t,e){return Zi._createAt(t,e)}createPositionAfter(t){return Zi._createAfter(t)}createPositionBefore(t){return Zi._createBefore(t)}createRange(t,e){return new Xi(t,e)}createRangeOn(t){return Xi._createOn(t)}createRangeIn(t){return Xi._createIn(t)}createSelection(t,e,n){return new no(t,e,n)}_wrapChildren(t,e,n,i){let o=e;const r=[];for(;o!1,t.parent._insertChild(t.offset,n);const i=new Xi(t,t.getShiftedBy(1));this.wrap(i,e);const o=new Zi(n.parent,n.index);n._remove();const r=o.nodeBefore,s=o.nodeAfter;return r instanceof On&&s instanceof On?Mo(r,s):Po(o)}_wrapAttributeElement(t,e){if(!Oo(t,e))return!1;if(t.name!==e.name||t.priority!==e.priority)return!1;for(const n of t.getAttributeKeys())if(\"class\"!==n&&\"style\"!==n&&e.hasAttribute(n)&&e.getAttribute(n)!==t.getAttribute(n))return!1;for(const n of t.getStyleNames())if(e.hasStyle(n)&&e.getStyle(n)!==t.getStyle(n))return!1;for(const n of t.getAttributeKeys())\"class\"!==n&&\"style\"!==n&&(e.hasAttribute(n)||this.setAttribute(n,t.getAttribute(n),e));for(const n of t.getStyleNames())e.hasStyle(n)||this.setStyle(n,t.getStyle(n),e);for(const n of t.getClassNames())e.hasClass(n)||this.addClass(n,e);return!0}_unwrapAttributeElement(t,e){if(!Oo(t,e))return!1;if(t.name!==e.name||t.priority!==e.priority)return!1;for(const n of t.getAttributeKeys())if(\"class\"!==n&&\"style\"!==n&&(!e.hasAttribute(n)||e.getAttribute(n)!==t.getAttribute(n)))return!1;if(!e.hasClass(...t.getClassNames()))return!1;for(const n of t.getStyleNames())if(!e.hasStyle(n)||e.getStyle(n)!==t.getStyle(n))return!1;for(const n of t.getAttributeKeys())\"class\"!==n&&\"style\"!==n&&this.removeAttribute(n,e);return this.removeClass(Array.from(t.getClassNames()),e),this.removeStyle(Array.from(t.getStyleNames()),e),!0}_breakAttributesRange(t,e=!1){const n=t.start,i=t.end;if(No(t,this.document),t.isCollapsed){const n=this._breakAttributes(t.start,e);return new Xi(n,n)}const o=this._breakAttributes(i,e),r=o.parent.childCount,s=this._breakAttributes(n,e);return o.offset+=o.parent.childCount-r,new Xi(s,o)}_breakAttributes(t,e=!1){const n=t.offset,i=t.parent;if(t.parent.is(\"emptyElement\"))throw new un.b(\"view-writer-cannot-break-empty-element\",this.document);if(t.parent.is(\"uiElement\"))throw new un.b(\"view-writer-cannot-break-ui-element\",this.document);if(!e&&i.is(\"text\")&&Io(i.parent))return t.clone();if(Io(i))return t.clone();if(i.is(\"text\"))return this._breakAttributes(So(t),e);if(n==i.childCount){const t=new Zi(i.parent,i.index+1);return this._breakAttributes(t,e)}if(0===n){const t=new Zi(i.parent,i.index);return this._breakAttributes(t,e)}{const t=i.index+1,o=i._clone();i.parent._insertChild(t,o),this._addToClonedElementsGroup(o);const r=i.childCount-n,s=i._removeChildren(n,r);o._appendChild(s);const a=new Zi(i.parent,t);return this._breakAttributes(a,e)}}_addToClonedElementsGroup(t){if(!t.root.is(\"rootElement\"))return;if(t.is(\"element\"))for(const e of t.getChildren())this._addToClonedElementsGroup(e);const e=t.id;if(!e)return;let n=this._cloneGroups.get(e);n||(n=new Set,this._cloneGroups.set(e,n)),n.add(t),t._clonesGroup=n}_removeFromClonedElementsGroup(t){if(t.is(\"element\"))for(const e of t.getChildren())this._removeFromClonedElementsGroup(e);const e=t.id;if(!e)return;const n=this._cloneGroups.get(e);n&&n.delete(t)}}function Co(t){let e=t.parent;for(;!Io(e);){if(!e)return;e=e.parent}return e}function To(t,e){return t.prioritye.priority)&&t.getIdentity()t.createTextNode(\" \"),Lo=t=>{const e=t.createElement(\"br\");return e.dataset.ckeFiller=!0,e},jo=(()=>{let t=\"\";for(let e=0;e<7;e++)t+=\"​\";return t})();function Vo(t){return Ro(t)&&t.data.substr(0,7)===jo}function zo(t){return 7==t.data.length&&Vo(t)}function Bo(t){return Vo(t)?t.data.slice(7):t.data}function Fo(t,e){if(e.keyCode==go.arrowleft){const t=e.domTarget.ownerDocument.defaultView.getSelection();if(1==t.rangeCount&&t.getRangeAt(0).collapsed){const e=t.getRangeAt(0).startContainer,n=t.getRangeAt(0).startOffset;Vo(e)&&n<=7&&t.collapse(e,0)}}}function Uo(t,e,n,i=!1){n=n||function(t,e){return t===e},Array.isArray(t)||(t=Array.from(t)),Array.isArray(e)||(e=Array.from(e));const o=function(t,e,n){const i=Ho(t,e,n);if(-1===i)return{firstIndex:-1,lastIndexOld:-1,lastIndexNew:-1};const o=qo(t,i),r=qo(e,i),s=Ho(o,r,n),a=t.length-s,c=e.length-s;return{firstIndex:i,lastIndexOld:a,lastIndexNew:c}}(t,e,n);return i?function(t,e){const{firstIndex:n,lastIndexOld:i,lastIndexNew:o}=t;if(-1===n)return Array(e).fill(\"equal\");let r=[];n>0&&(r=r.concat(Array(n).fill(\"equal\")));o-n>0&&(r=r.concat(Array(o-n).fill(\"insert\")));i-n>0&&(r=r.concat(Array(i-n).fill(\"delete\")));o0&&n.push({index:i,type:\"insert\",values:t.slice(i,r)});o-i>0&&n.push({index:i+(r-i),type:\"delete\",howMany:o-i});return n}(e,o)}function Ho(t,e,n){for(let i=0;i200||o>200||i+o>300)return Wo.fastDiff(t,e,n,!0);let r,s;if(ol?-1:1;d[i+u]&&(d[i]=d[i+u].slice(0)),d[i]||(d[i]=[]),d[i].push(o>l?r:s);let f=Math.max(o,l),m=f-i;for(;ml;f--)h[f]=u(f);h[l]=u(l),m++}while(h[l]!==c);return d[l].slice(1)}function Yo(t,e,n){t.insertBefore(n,t.childNodes[e]||null)}function $o(t){const e=t.parentNode;e&&e.removeChild(t)}function Go(t){if(t){if(t.defaultView)return t instanceof t.defaultView.Document;if(t.ownerDocument&&t.ownerDocument.defaultView)return t instanceof t.ownerDocument.defaultView.Node}return!1}Wo.fastDiff=Uo;class Qo{constructor(t,e){this.domDocuments=new Set,this.domConverter=t,this.markedAttributes=new Set,this.markedChildren=new Set,this.markedTexts=new Set,this.selection=e,this.isFocused=!1,this._inlineFiller=null,this._fakeSelectionContainer=null}markToSync(t,e){if(\"text\"===t)this.domConverter.mapViewToDom(e.parent)&&this.markedTexts.add(e);else{if(!this.domConverter.mapViewToDom(e))return;if(\"attributes\"===t)this.markedAttributes.add(e);else{if(\"children\"!==t)throw new un.b(\"view-renderer-unknown-type: Unknown type passed to Renderer.markToSync.\",this);this.markedChildren.add(e)}}}render(){let t;for(const t of this.markedChildren)this._updateChildrenMappings(t);this._inlineFiller&&!this._isSelectionInInlineFiller()&&this._removeInlineFiller(),this._inlineFiller?t=this._getInlineFillerPosition():this._needsInlineFillerAtSelection()&&(t=this.selection.getFirstPosition(),this.markedChildren.add(t.parent));for(const t of this.markedAttributes)this._updateAttrs(t);for(const e of this.markedChildren)this._updateChildren(e,{inlineFillerPosition:t});for(const e of this.markedTexts)!this.markedChildren.has(e.parent)&&this.domConverter.mapViewToDom(e.parent)&&this._updateText(e,{inlineFillerPosition:t});if(t){const e=this.domConverter.viewPositionToDom(t),n=e.parent.ownerDocument;Vo(e.parent)?this._inlineFiller=e.parent:this._inlineFiller=Ko(n,e.parent,e.offset)}else this._inlineFiller=null;this._updateSelection(),this._updateFocus(),this.markedTexts.clear(),this.markedAttributes.clear(),this.markedChildren.clear()}_updateChildrenMappings(t){const e=this.domConverter.mapViewToDom(t);if(!e)return;const n=this.domConverter.mapViewToDom(t).childNodes,i=Array.from(this.domConverter.viewChildrenToDom(t,e.ownerDocument,{withChildren:!1})),o=this._diffNodeLists(n,i),r=this._findReplaceActions(o,n,i);if(-1!==r.indexOf(\"replace\")){const e={equal:0,insert:0,delete:0};for(const o of r)if(\"replace\"===o){const o=e.equal+e.insert,r=e.equal+e.delete,s=t.getChild(o);s&&!s.is(\"uiElement\")&&this._updateElementMappings(s,n[r]),$o(i[o]),e.equal++}else e[o]++}}_updateElementMappings(t,e){this.domConverter.unbindDomElement(e),this.domConverter.bindElements(e,t),this.markedChildren.add(t),this.markedAttributes.add(t)}_getInlineFillerPosition(){const t=this.selection.getFirstPosition();return t.parent.is(\"text\")?Zi._createBefore(this.selection.getFirstPosition().parent):t}_isSelectionInInlineFiller(){if(1!=this.selection.rangeCount||!this.selection.isCollapsed)return!1;const t=this.selection.getFirstPosition(),e=this.domConverter.viewPositionToDom(t);return!!(e&&Ro(e.parent)&&Vo(e.parent))}_removeInlineFiller(){const t=this._inlineFiller;if(!Vo(t))throw new un.b(\"view-renderer-filler-was-lost: The inline filler node was lost.\",this);zo(t)?t.parentNode.removeChild(t):t.data=t.data.substr(7),this._inlineFiller=null}_needsInlineFillerAtSelection(){if(1!=this.selection.rangeCount||!this.selection.isCollapsed)return!1;const t=this.selection.getFirstPosition(),e=t.parent,n=t.offset;if(!this.domConverter.mapViewToDom(e.root))return!1;if(!e.is(\"element\"))return!1;if(!function(t){if(\"false\"==t.getAttribute(\"contenteditable\"))return!1;const e=t.findAncestor(t=>t.hasAttribute(\"contenteditable\"));return!e||\"true\"==e.getAttribute(\"contenteditable\")}(e))return!1;if(n===e.getFillerOffset())return!1;const i=t.nodeBefore,o=t.nodeAfter;return!(i instanceof On||o instanceof On)}_updateText(t,e){const n=this.domConverter.findCorrespondingDomText(t),i=this.domConverter.viewToDom(t,n.ownerDocument),o=n.data;let r=i.data;const s=e.inlineFillerPosition;if(s&&s.parent==t.parent&&s.offset==t.index&&(r=jo+r),o!=r){const t=Uo(o,r);for(const e of t)\"insert\"===e.type?n.insertData(e.index,e.values.join(\"\")):n.deleteData(e.index,e.howMany)}}_updateAttrs(t){const e=this.domConverter.mapViewToDom(t);if(!e)return;const n=Array.from(e.attributes).map(t=>t.name),i=t.getAttributeKeys();for(const n of i)e.setAttribute(n,t.getAttribute(n));for(const i of n)t.hasAttribute(i)||e.removeAttribute(i)}_updateChildren(t,e){const n=this.domConverter.mapViewToDom(t);if(!n)return;const i=e.inlineFillerPosition,o=this.domConverter.mapViewToDom(t).childNodes,r=Array.from(this.domConverter.viewChildrenToDom(t,n.ownerDocument,{bind:!0,inlineFillerPosition:i}));i&&i.parent===t&&Ko(n.ownerDocument,r,i.offset);const s=this._diffNodeLists(o,r);let a=0;const c=new Set;for(const t of s)\"delete\"===t?(c.add(o[a]),$o(o[a])):\"equal\"===t&&a++;a=0;for(const t of s)\"insert\"===t?(Yo(n,a,r[a]),a++):\"equal\"===t&&(this._markDescendantTextToSync(this.domConverter.domToView(r[a])),a++);for(const t of c)t.parentNode||this.domConverter.unbindDomElement(t)}_diffNodeLists(t,e){return Wo(t=function(t,e){const n=Array.from(t);if(0==n.length||!e)return n;n[n.length-1]==e&&n.pop();return n}(t,this._fakeSelectionContainer),e,Zo.bind(null,this.domConverter))}_findReplaceActions(t,e,n){if(-1===t.indexOf(\"insert\")||-1===t.indexOf(\"delete\"))return t;let i=[],o=[],r=[];const s={equal:0,insert:0,delete:0};for(const a of t)\"insert\"===a?r.push(n[s.equal+s.insert]):\"delete\"===a?o.push(e[s.equal+s.delete]):(i=i.concat(Wo(o,r,Jo).map(t=>\"equal\"===t?\"replace\":t)),i.push(\"equal\"),o=[],r=[]),s[a]++;return i.concat(Wo(o,r,Jo).map(t=>\"equal\"===t?\"replace\":t))}_markDescendantTextToSync(t){if(t)if(t.is(\"text\"))this.markedTexts.add(t);else if(t.is(\"element\"))for(const e of t.getChildren())this._markDescendantTextToSync(e)}_updateSelection(){if(0===this.selection.rangeCount)return this._removeDomSelection(),void this._removeFakeSelection();const t=this.domConverter.mapViewToDom(this.selection.editableElement);this.isFocused&&t&&(this.selection.isFake?this._updateFakeSelection(t):(this._removeFakeSelection(),this._updateDomSelection(t)))}_updateFakeSelection(t){const e=t.ownerDocument;this._fakeSelectionContainer||(this._fakeSelectionContainer=function(t){const e=t.createElement(\"div\");return Object.assign(e.style,{position:\"fixed\",top:0,left:\"-9999px\",width:\"42px\"}),e.textContent=\" \",e}(e));const n=this._fakeSelectionContainer;if(this.domConverter.bindFakeSelection(n,this.selection),!this._fakeSelectionNeedsUpdate(t))return;n.parentElement&&n.parentElement==t||t.appendChild(n),n.textContent=this.selection.fakeSelectionLabel||\" \";const i=e.getSelection(),o=e.createRange();i.removeAllRanges(),o.selectNodeContents(n),i.addRange(o)}_updateDomSelection(t){const e=t.ownerDocument.defaultView.getSelection();if(!this._domSelectionNeedsUpdate(e))return;const n=this.domConverter.viewPositionToDom(this.selection.anchor),i=this.domConverter.viewPositionToDom(this.selection.focus);t.focus(),e.collapse(n.parent,n.offset),e.extend(i.parent,i.offset),uo.isGecko&&function(t,e){const n=t.parent;if(n.nodeType!=Node.ELEMENT_NODE||t.offset!=n.childNodes.length-1)return;const i=n.childNodes[t.offset];i&&\"BR\"==i.tagName&&e.addRange(e.getRangeAt(0))}(i,e)}_domSelectionNeedsUpdate(t){if(!this.domConverter.isDomSelectionCorrect(t))return!0;const e=t&&this.domConverter.domSelectionToView(t);return(!e||!this.selection.isEqual(e))&&!(!this.selection.isCollapsed&&this.selection.isSimilar(e))}_fakeSelectionNeedsUpdate(t){const e=this._fakeSelectionContainer,n=t.ownerDocument.getSelection();return!e||e.parentElement!==t||(n.anchorNode!==e&&!e.contains(n.anchorNode)||e.textContent!==this.selection.fakeSelectionLabel)}_removeDomSelection(){for(const t of this.domDocuments){if(t.getSelection().rangeCount){const e=t.activeElement,n=this.domConverter.mapDomToView(e);e&&n&&t.getSelection().removeAllRanges()}}}_removeFakeSelection(){const t=this._fakeSelectionContainer;t&&t.remove()}_updateFocus(){if(this.isFocused){const t=this.selection.editableElement;t&&this.domConverter.focus(t)}}}function Ko(t,e,n){const i=e instanceof Array?e:e.childNodes,o=i[n];if(Ro(o))return o.data=jo+o.data,o;{const o=t.createTextNode(jo);return Array.isArray(e)?i.splice(n,0,o):Yo(e,n,o),o}}function Jo(t,e){return Go(t)&&Go(e)&&!Ro(t)&&!Ro(e)&&t.tagName.toLowerCase()===e.tagName.toLowerCase()}function Zo(t,e,n){return e===n||(Ro(e)&&Ro(n)?e.data===n.data:!(!t.isBlockFiller(e)||!t.isBlockFiller(n)))}yn(Qo,Ui);var Xo={window:window,document:document};function tr(t){let e=0;for(;t.previousSibling;)t=t.previousSibling,e++;return e}function er(t){const e=[];for(;t&&t.nodeType!=Node.DOCUMENT_NODE;)e.unshift(t),t=t.parentNode;return e}const nr=Lo(document);class ir{constructor(t,e={}){this.document=t,this.blockFillerMode=e.blockFillerMode||\"br\",this.preElements=[\"pre\"],this.blockElements=[\"p\",\"div\",\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"li\",\"dd\",\"dt\",\"figcaption\"],this._blockFiller=\"br\"==this.blockFillerMode?Lo:Do,this._domToViewMapping=new WeakMap,this._viewToDomMapping=new WeakMap,this._fakeSelectionMapping=new WeakMap}bindFakeSelection(t,e){this._fakeSelectionMapping.set(t,new no(e))}fakeSelectionToView(t){return this._fakeSelectionMapping.get(t)}bindElements(t,e){this._domToViewMapping.set(t,e),this._viewToDomMapping.set(e,t)}unbindDomElement(t){const e=this._domToViewMapping.get(t);if(e){this._domToViewMapping.delete(t),this._viewToDomMapping.delete(e);for(const e of Array.from(t.childNodes))this.unbindDomElement(e)}}bindDocumentFragments(t,e){this._domToViewMapping.set(t,e),this._viewToDomMapping.set(e,t)}viewToDom(t,e,n={}){if(t.is(\"text\")){const n=this._processDataFromViewText(t);return e.createTextNode(n)}{if(this.mapViewToDom(t))return this.mapViewToDom(t);let i;if(t.is(\"documentFragment\"))i=e.createDocumentFragment(),n.bind&&this.bindDocumentFragments(i,t);else{if(t.is(\"uiElement\"))return i=t.render(e),n.bind&&this.bindElements(i,t),i;i=t.hasAttribute(\"xmlns\")?e.createElementNS(t.getAttribute(\"xmlns\"),t.name):e.createElement(t.name),n.bind&&this.bindElements(i,t);for(const e of t.getAttributeKeys())i.setAttribute(e,t.getAttribute(e))}if(n.withChildren||void 0===n.withChildren)for(const o of this.viewChildrenToDom(t,e,n))i.appendChild(o);return i}}*viewChildrenToDom(t,e,n={}){const i=t.getFillerOffset&&t.getFillerOffset();let o=0;for(const r of t.getChildren())i===o&&(yield this._blockFiller(e)),yield this.viewToDom(r,e,n),o++;i===o&&(yield this._blockFiller(e))}viewRangeToDom(t){const e=this.viewPositionToDom(t.start),n=this.viewPositionToDom(t.end),i=document.createRange();return i.setStart(e.parent,e.offset),i.setEnd(n.parent,n.offset),i}viewPositionToDom(t){const e=t.parent;if(e.is(\"text\")){const n=this.findCorrespondingDomText(e);if(!n)return null;let i=t.offset;return Vo(n)&&(i+=7),{parent:n,offset:i}}{let n,i,o;if(0===t.offset){if(n=this.mapViewToDom(e),!n)return null;o=n.childNodes[0]}else{const e=t.nodeBefore;if(i=e.is(\"text\")?this.findCorrespondingDomText(e):this.mapViewToDom(t.nodeBefore),!i)return null;n=i.parentNode,o=i.nextSibling}if(Ro(o)&&Vo(o))return{parent:o,offset:7};return{parent:n,offset:i?tr(i)+1:0}}}domToView(t,e={}){if(this.isBlockFiller(t,this.blockFillerMode))return null;const n=this.getParentUIElement(t,this._domToViewMapping);if(n)return n;if(Ro(t)){if(zo(t))return null;{const e=this._processDataFromDomText(t);return\"\"===e?null:new On(this.document,e)}}if(this.isComment(t))return null;{if(this.mapDomToView(t))return this.mapDomToView(t);let n;if(this.isDocumentFragment(t))n=new xo(this.document),e.bind&&this.bindDocumentFragments(t,n);else{const i=e.keepOriginalCase?t.tagName:t.tagName.toLowerCase();n=new Oi(this.document,i),e.bind&&this.bindElements(t,n);const o=t.attributes;for(let t=o.length-1;t>=0;t--)n._setAttribute(o[t].name,o[t].value)}if(e.withChildren||void 0===e.withChildren)for(const i of this.domChildrenToView(t,e))n._appendChild(i);return n}}*domChildrenToView(t,e={}){for(let n=0;n{const{scrollLeft:e,scrollTop:n}=t;i.push([e,n])}),e.focus(),rr(e,t=>{const[e,n]=i.shift();t.scrollLeft=e,t.scrollTop=n}),Xo.window.scrollTo(t,n)}}isElement(t){return t&&t.nodeType==Node.ELEMENT_NODE}isDocumentFragment(t){return t&&t.nodeType==Node.DOCUMENT_FRAGMENT_NODE}isComment(t){return t&&t.nodeType==Node.COMMENT_NODE}isBlockFiller(t){return\"br\"==this.blockFillerMode?t.isEqualNode(nr):!(\"BR\"!==t.tagName||!sr(t,this.blockElements)||1!==t.parentNode.childNodes.length)||function(t,e){return Ro(t)&&\" \"==t.data&&sr(t,e)&&1===t.parentNode.childNodes.length}(t,this.blockElements)}isDomSelectionBackward(t){if(t.isCollapsed)return!1;const e=document.createRange();e.setStart(t.anchorNode,t.anchorOffset),e.setEnd(t.focusNode,t.focusOffset);const n=e.collapsed;return e.detach(),n}getParentUIElement(t){const e=er(t);for(e.pop();e.length;){const t=e.pop(),n=this._domToViewMapping.get(t);if(n&&n.is(\"uiElement\"))return n}return null}isDomSelectionCorrect(t){return this._isDomSelectionPositionCorrect(t.anchorNode,t.anchorOffset)&&this._isDomSelectionPositionCorrect(t.focusNode,t.focusOffset)}_isDomSelectionPositionCorrect(t,e){if(Ro(t)&&Vo(t)&&e<7)return!1;if(this.isElement(t)&&Vo(t.childNodes[e]))return!1;const n=this.mapDomToView(t);return!n||!n.is(\"uiElement\")}_processDataFromViewText(t){let e=t.data;if(t.getAncestors().some(t=>this.preElements.includes(t.name)))return e;if(\" \"==e.charAt(0)){const n=this._getTouchingViewTextNode(t,!1);!(n&&this._nodeEndsWithSpace(n))&&n||(e=\" \"+e.substr(1))}if(\" \"==e.charAt(e.length-1)){const n=this._getTouchingViewTextNode(t,!0);\" \"!=e.charAt(e.length-2)&&n&&\" \"!=n.data.charAt(0)||(e=e.substr(0,e.length-1)+\" \")}return e.replace(/ {2}/g,\"  \")}_nodeEndsWithSpace(t){if(t.getAncestors().some(t=>this.preElements.includes(t.name)))return!1;const e=this._processDataFromViewText(t);return\" \"==e.charAt(e.length-1)}_processDataFromDomText(t){let e=t.data;if(or(t,this.preElements))return Bo(t);e=e.replace(/[ \\n\\t\\r]{1,}/g,\" \");const n=this._getTouchingInlineDomNode(t,!1),i=this._getTouchingInlineDomNode(t,!0),o=this._checkShouldLeftTrimDomText(n),r=this._checkShouldRightTrimDomText(t,i);return o&&(e=e.replace(/^ /,\"\")),r&&(e=e.replace(/ $/,\"\")),e=Bo(new Text(e)),e=e.replace(/ \\u00A0/g,\" \"),(/( |\\u00A0)\\u00A0$/.test(e)||!i||i.data&&\" \"==i.data.charAt(0))&&(e=e.replace(/\\u00A0$/,\" \")),o&&(e=e.replace(/^\\u00A0/,\" \")),e}_checkShouldLeftTrimDomText(t){return!t||(!!nn(t)||/[^\\S\\u00A0]/.test(t.data.charAt(t.data.length-1)))}_checkShouldRightTrimDomText(t,e){return!e&&!Vo(t)}_getTouchingViewTextNode(t,e){const n=new Ji({startPosition:e?Zi._createAfter(t):Zi._createBefore(t),direction:e?\"forward\":\"backward\"});for(const t of n){if(t.item.is(\"containerElement\"))return null;if(t.item.is(\"br\"))return null;if(t.item.is(\"textProxy\"))return t.item}return null}_getTouchingInlineDomNode(t,e){if(!t.parentNode)return null;const n=e?\"nextNode\":\"previousNode\",i=t.ownerDocument,o=er(t)[0],r=i.createTreeWalker(o,NodeFilter.SHOW_TEXT|NodeFilter.SHOW_ELEMENT,{acceptNode:t=>Ro(t)||\"BR\"==t.tagName?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP});r.currentNode=t;const s=r[n]();if(null!==s){const e=function(t,e){const n=er(t),i=er(e);let o=0;for(;n[o]==i[o]&&n[o];)o++;return 0===o?null:n[o-1]}(t,s);if(e&&!or(t,this.blockElements,e)&&!or(s,this.blockElements,e))return s}return null}}function or(t,e,n){let i=er(t);return n&&(i=i.slice(i.indexOf(n)+1)),i.some(t=>t.tagName&&e.includes(t.tagName.toLowerCase()))}function rr(t,e){for(;t&&t!=Xo.document;)e(t),t=t.parentNode}function sr(t,e){const n=t.parentNode;return n&&n.tagName&&e.includes(n.tagName.toLowerCase())}function ar(t){const e=Object.prototype.toString.apply(t);return\"[object Window]\"==e||\"[object global]\"==e}var cr=ji({},gn,{listenTo(t,...e){if(Go(t)||ar(t)){const n=this._getProxyEmitter(t)||new lr(t);n.attach(...e),t=n}gn.listenTo.call(this,t,...e)},stopListening(t,e,n){if(Go(t)||ar(t)){const e=this._getProxyEmitter(t);if(!e)return;t=e}gn.stopListening.call(this,t,e,n),t instanceof lr&&t.detach(e)},_getProxyEmitter(t){return e=this,n=dr(t),e[fn]&&e[fn][n]?e[fn][n].emitter:null;var e,n}});class lr{constructor(t){pn(this,dr(t)),this._domNode=t}}function dr(t){return t[\"data-ck-expando\"]||(t[\"data-ck-expando\"]=dn())}ji(lr.prototype,gn,{attach(t,e,n={}){if(this._domListeners&&this._domListeners[t])return;const i=this._createDomListener(t,!!n.useCapture);this._domNode.addEventListener(t,i,!!n.useCapture),this._domListeners||(this._domListeners={}),this._domListeners[t]=i},detach(t){let e;!this._domListeners[t]||(e=this._events[t])&&e.callbacks.length||this._domListeners[t].removeListener()},_createDomListener(t,e){const n=e=>{this.fire(t,e)};return n.removeListener=()=>{this._domNode.removeEventListener(t,n,e),delete this._domListeners[t]},n}});class hr{constructor(t){this.view=t,this.document=t.document,this.isEnabled=!1}enable(){this.isEnabled=!0}disable(){this.isEnabled=!1}destroy(){this.disable(),this.stopListening()}}yn(hr,cr);var ur=function(t){return this.__data__.set(t,\"__lodash_hash_undefined__\"),this};var fr=function(t){return this.__data__.has(t)};function mr(t){var e=-1,n=null==t?0:t.length;for(this.__data__=new kt;++ea))return!1;var l=r.get(t);if(l&&r.get(e))return l==e;var d=-1,h=!0,u=2&n?new gr:void 0;for(r.set(t,e),r.set(e,t);++d{this.listenTo(t,e,(t,e)=>{this.isEnabled&&this.onDomEvent(e)},{useCapture:this.useCapture})})}fire(t,e,n){this.isEnabled&&this.document.fire(t,new Ir(this.view,e,n))}}class Or extends Nr{constructor(t){super(t),this.domEventType=[\"keydown\",\"keyup\"]}onDomEvent(t){this.fire(t.type,t,{keyCode:t.keyCode,altKey:t.altKey,ctrlKey:t.ctrlKey||t.metaKey,shiftKey:t.shiftKey,get keystroke(){return po(this)}})}}var Rr=function(){return i.a.Date.now()},Dr=/^\\s+|\\s+$/g,Lr=/^[-+]0x[0-9a-f]+$/i,jr=/^0b[01]+$/i,Vr=/^0o[0-7]+$/i,zr=parseInt;var Br=function(t){if(\"number\"==typeof t)return t;if(zn(t))return NaN;if(j(t)){var e=\"function\"==typeof t.valueOf?t.valueOf():t;t=j(e)?e+\"\":e}if(\"string\"!=typeof t)return 0===t?t:+t;t=t.replace(Dr,\"\");var n=jr.test(t);return n||Vr.test(t)?zr(t.slice(2),n?2:8):Lr.test(t)?NaN:+t},Fr=Math.max,Ur=Math.min;var Hr=function(t,e,n){var i,o,r,s,a,c,l=0,d=!1,h=!1,u=!0;if(\"function\"!=typeof t)throw new TypeError(\"Expected a function\");function f(e){var n=i,r=o;return i=o=void 0,l=e,s=t.apply(r,n)}function m(t){return l=t,a=setTimeout(p,e),d?f(t):s}function g(t){var n=t-c;return void 0===c||n>=e||n<0||h&&t-l>=r}function p(){var t=Rr();if(g(t))return b(t);a=setTimeout(p,function(t){var n=e-(t-c);return h?Ur(n,r-(t-l)):n}(t))}function b(t){return a=void 0,u&&i?f(t):(i=o=void 0,s)}function w(){var t=Rr(),n=g(t);if(i=arguments,o=this,c=t,n){if(void 0===a)return m(c);if(h)return clearTimeout(a),a=setTimeout(p,e),f(c)}return void 0===a&&(a=setTimeout(p,e)),s}return e=Br(e)||0,j(n)&&(d=!!n.leading,r=(h=\"maxWait\"in n)?Fr(Br(n.maxWait)||0,e):r,u=\"trailing\"in n?!!n.trailing:u),w.cancel=function(){void 0!==a&&clearTimeout(a),l=0,i=c=o=a=void 0},w.flush=function(){return void 0===a?s:b(Rr())},w};class qr extends hr{constructor(t){super(t),this._fireSelectionChangeDoneDebounced=Hr(t=>this.document.fire(\"selectionChangeDone\",t),200)}observe(){const t=this.document;t.on(\"keydown\",(e,n)=>{var i;t.selection.isFake&&((i=n.keyCode)==go.arrowright||i==go.arrowleft||i==go.arrowup||i==go.arrowdown)&&this.isEnabled&&(n.preventDefault(),this._handleSelectionMove(n.keyCode))},{priority:\"lowest\"})}destroy(){super.destroy(),this._fireSelectionChangeDoneDebounced.cancel()}_handleSelectionMove(t){const e=this.document.selection,n=new no(e.getRanges(),{backward:e.isBackward,fake:!1});t!=go.arrowleft&&t!=go.arrowup||n.setTo(n.getFirstPosition()),t!=go.arrowright&&t!=go.arrowdown||n.setTo(n.getLastPosition());const i={oldSelection:e,newSelection:n,domSelection:null};this.document.fire(\"selectionChange\",i),this._fireSelectionChangeDoneDebounced(i)}}class Wr extends hr{constructor(t){super(t),this.mutationObserver=t.getObserver(Er),this.selection=this.document.selection,this.domConverter=t.domConverter,this._documents=new WeakSet,this._fireSelectionChangeDoneDebounced=Hr(t=>this.document.fire(\"selectionChangeDone\",t),200),this._clearInfiniteLoopInterval=setInterval(()=>this._clearInfiniteLoop(),1e3),this._loopbackCounter=0}observe(t){const e=t.ownerDocument;this._documents.has(e)||(this.listenTo(e,\"selectionchange\",()=>{this._handleSelectionChange(e)}),this._documents.add(e))}destroy(){super.destroy(),clearInterval(this._clearInfiniteLoopInterval),this._fireSelectionChangeDoneDebounced.cancel()}_handleSelectionChange(t){if(!this.isEnabled)return;this.mutationObserver.flush();const e=t.defaultView.getSelection(),n=this.domConverter.domSelectionToView(e);if(0!=n.rangeCount&&!(this.selection.isEqual(n)&&this.domConverter.isDomSelectionCorrect(e)||++this._loopbackCounter>60))if(this.selection.isSimilar(n))this.view.forceRender();else{const t={oldSelection:this.selection,newSelection:n,domSelection:e};this.document.fire(\"selectionChange\",t),this._fireSelectionChangeDoneDebounced(t)}}_clearInfiniteLoop(){this._loopbackCounter=0}}class Yr extends Nr{constructor(t){super(t),this.domEventType=[\"focus\",\"blur\"],this.useCapture=!0;const e=this.document;e.on(\"focus\",()=>{e.isFocused=!0,this._renderTimeoutId=setTimeout(()=>t.forceRender(),50)}),e.on(\"blur\",(n,i)=>{const o=e.selection.editableElement;null!==o&&o!==i.target||(e.isFocused=!1,t.forceRender())})}onDomEvent(t){this.fire(t.type,t)}destroy(){this._renderTimeoutId&&clearTimeout(this._renderTimeoutId),super.destroy()}}class $r extends Nr{constructor(t){super(t),this.domEventType=[\"compositionstart\",\"compositionupdate\",\"compositionend\"];const e=this.document;e.on(\"compositionstart\",()=>{e.isComposing=!0}),e.on(\"compositionend\",()=>{e.isComposing=!1})}onDomEvent(t){this.fire(t.type,t)}}class Gr extends Nr{constructor(t){super(t),this.domEventType=[\"beforeinput\"]}onDomEvent(t){this.fire(t.type,t)}}function Qr(t){return\"[object Range]\"==Object.prototype.toString.apply(t)}function Kr(t){const e=t.ownerDocument.defaultView.getComputedStyle(t);return{top:parseInt(e.borderTopWidth,10),right:parseInt(e.borderRightWidth,10),bottom:parseInt(e.borderBottomWidth,10),left:parseInt(e.borderLeftWidth,10)}}const Jr=[\"top\",\"right\",\"bottom\",\"left\",\"width\",\"height\"];class Zr{constructor(t){const e=Qr(t);if(Object.defineProperty(this,\"_source\",{value:t._source||t,writable:!0,enumerable:!1}),nn(t)||e)Xr(this,e?Zr.getDomRangeRects(t)[0]:t.getBoundingClientRect());else if(ar(t)){const{innerWidth:e,innerHeight:n}=t;Xr(this,{top:0,right:e,bottom:n,left:0,width:e,height:n})}else Xr(this,t)}clone(){return new Zr(this)}moveTo(t,e){return this.top=e,this.right=t+this.width,this.bottom=e+this.height,this.left=t,this}moveBy(t,e){return this.top+=e,this.right+=t,this.left+=t,this.bottom+=e,this}getIntersection(t){const e={top:Math.max(this.top,t.top),right:Math.min(this.right,t.right),bottom:Math.min(this.bottom,t.bottom),left:Math.max(this.left,t.left)};return e.width=e.right-e.left,e.height=e.bottom-e.top,e.width<0||e.height<0?null:new Zr(e)}getIntersectionArea(t){const e=this.getIntersection(t);return e?e.getArea():0}getArea(){return this.width*this.height}getVisible(){const t=this._source;let e=this.clone();if(!ts(t)){let n=t.parentNode||t.commonAncestorContainer;for(;n&&!ts(n);){const t=new Zr(n),i=e.getIntersection(t);if(!i)return null;i.getArea()ds(t,i));const s=ds(t,i);if(ns(i,s,e),i.parent!=i){if(o=i.frameElement,i=i.parent,!o)return}else i=null}}function ns(t,e,n){const i=e.clone().moveBy(0,n),o=e.clone().moveBy(0,-n),r=new Zr(t).excludeScrollbarsAndBorders();if(![o,i].every(t=>r.contains(t))){let{scrollX:s,scrollY:a}=t;rs(o,r)?a-=r.top-e.top+n:os(i,r)&&(a+=e.bottom-r.bottom+n),ss(e,r)?s-=r.left-e.left+n:as(e,r)&&(s+=e.right-r.right+n),t.scrollTo(s,a)}}function is(t,e){const n=cs(t);let i,o;for(;t!=n.document.body;)o=e(),i=new Zr(t).excludeScrollbarsAndBorders(),i.contains(o)||(rs(o,i)?t.scrollTop-=i.top-o.top:os(o,i)&&(t.scrollTop+=o.bottom-i.bottom),ss(o,i)?t.scrollLeft-=i.left-o.left:as(o,i)&&(t.scrollLeft+=o.right-i.right)),t=t.parentNode}function os(t,e){return t.bottom>e.bottom}function rs(t,e){return t.tope.right}function cs(t){return Qr(t)?t.startContainer.ownerDocument.defaultView:t.ownerDocument.defaultView}function ls(t){if(Qr(t)){let e=t.commonAncestorContainer;return Ro(e)&&(e=e.parentNode),e}return t.parentNode}function ds(t,e){const n=cs(t),i=new Zr(t);if(n===e)return i;{let t=n;for(;t!=e;){const e=t.frameElement,n=new Zr(e).excludeScrollbarsAndBorders();i.moveBy(n.left,n.top),t=t.parent}}return i}Object.assign({},{scrollViewportToShowTarget:es,scrollAncestorsToShowTarget:function(t){is(ls(t),()=>new Zr(t))}});class hs{constructor(t){this.document=new oo(t),this.domConverter=new ir(this.document),this.domRoots=new Map,this.set(\"isRenderingInProgress\",!1),this._renderer=new Qo(this.domConverter,this.document.selection),this._renderer.bind(\"isFocused\").to(this.document),this._initialDomRootAttributes=new WeakMap,this._observers=new Map,this._ongoingChange=!1,this._postFixersInProgress=!1,this._renderingDisabled=!1,this._hasChangedSinceTheLastRendering=!1,this._writer=new Ao(this.document),this.addObserver(Er),this.addObserver(Wr),this.addObserver(Yr),this.addObserver(Or),this.addObserver(qr),this.addObserver($r),uo.isAndroid&&this.addObserver(Gr),this.document.on(\"keydown\",Fo),vo(this),this.on(\"render\",()=>{this._render(),this.document.fire(\"layoutChanged\"),this._hasChangedSinceTheLastRendering=!1}),this.listenTo(this.document.selection,\"change\",()=>{this._hasChangedSinceTheLastRendering=!0})}attachDomRoot(t,e=\"main\"){const n=this.document.getRoot(e);n._name=t.tagName.toLowerCase();const i={};for(const{name:e,value:o}of Array.from(t.attributes))i[e]=o,\"class\"===e?this._writer.addClass(o.split(\" \"),n):this._writer.setAttribute(e,o,n);this._initialDomRootAttributes.set(t,i);const o=()=>{this._writer.setAttribute(\"contenteditable\",!n.isReadOnly,n),n.isReadOnly?this._writer.addClass(\"ck-read-only\",n):this._writer.removeClass(\"ck-read-only\",n)};o(),this.domRoots.set(e,t),this.domConverter.bindElements(t,n),this._renderer.markToSync(\"children\",n),this._renderer.markToSync(\"attributes\",n),this._renderer.domDocuments.add(t.ownerDocument),n.on(\"change:children\",(t,e)=>this._renderer.markToSync(\"children\",e)),n.on(\"change:attributes\",(t,e)=>this._renderer.markToSync(\"attributes\",e)),n.on(\"change:text\",(t,e)=>this._renderer.markToSync(\"text\",e)),n.on(\"change:isReadOnly\",()=>this.change(o)),n.on(\"change\",()=>{this._hasChangedSinceTheLastRendering=!0});for(const n of this._observers.values())n.observe(t,e)}detachDomRoot(t){const e=this.domRoots.get(t);Array.from(e.attributes).forEach(({name:t})=>e.removeAttribute(t));const n=this._initialDomRootAttributes.get(e);for(const t in n)e.setAttribute(t,n[t]);this.domRoots.delete(t),this.domConverter.unbindDomElement(e)}getDomRoot(t=\"main\"){return this.domRoots.get(t)}addObserver(t){let e=this._observers.get(t);if(e)return e;e=new t(this),this._observers.set(t,e);for(const[t,n]of this.domRoots)e.observe(n,t);return e.enable(),e}getObserver(t){return this._observers.get(t)}disableObservers(){for(const t of this._observers.values())t.disable()}enableObservers(){for(const t of this._observers.values())t.enable()}scrollToTheSelection(){const t=this.document.selection.getFirstRange();t&&es({target:this.domConverter.viewRangeToDom(t),viewportOffset:20})}focus(){if(!this.document.isFocused){const t=this.document.selection.editableElement;t&&(this.domConverter.focus(t),this.forceRender())}}change(t){if(this.isRenderingInProgress||this._postFixersInProgress)throw new un.b(\"cannot-change-view-tree: Attempting to make changes to the view when it is in an incorrect state: rendering or post-fixers are in progress. This may cause some unexpected behavior and inconsistency between the DOM and the view.\",this);try{if(this._ongoingChange)return t(this._writer);this._ongoingChange=!0;const e=t(this._writer);return this._ongoingChange=!1,!this._renderingDisabled&&this._hasChangedSinceTheLastRendering&&(this._postFixersInProgress=!0,this.document._callPostFixers(this._writer),this._postFixersInProgress=!1,this.fire(\"render\")),e}catch(t){un.b.rethrowUnexpectedError(t,this)}}forceRender(){this._hasChangedSinceTheLastRendering=!0,this.change(()=>{})}destroy(){for(const t of this._observers.values())t.destroy();this.document.destroy(),this.stopListening()}createPositionAt(t,e){return Zi._createAt(t,e)}createPositionAfter(t){return Zi._createAfter(t)}createPositionBefore(t){return Zi._createBefore(t)}createRange(t,e){return new Xi(t,e)}createRangeOn(t){return Xi._createOn(t)}createRangeIn(t){return Xi._createIn(t)}createSelection(t,e,n){return new no(t,e,n)}_disableRendering(t){this._renderingDisabled=t,0==t&&this.change(()=>{})}_render(){this.isRenderingInProgress=!0,this.disableObservers(),this._renderer.render(),this.enableObservers(),this.isRenderingInProgress=!1}}yn(hs,Ui);class us{constructor(t){this.parent=null,this._attrs=Ln(t)}get index(){let t;if(!this.parent)return null;if(null===(t=this.parent.getChildIndex(this)))throw new un.b(\"model-node-not-found-in-parent: The node's parent does not contain this node.\",this);return t}get startOffset(){let t;if(!this.parent)return null;if(null===(t=this.parent.getChildStartOffset(this)))throw new un.b(\"model-node-not-found-in-parent: The node's parent does not contain this node.\",this);return t}get offsetSize(){return 1}get endOffset(){return this.parent?this.startOffset+this.offsetSize:null}get nextSibling(){const t=this.index;return null!==t&&this.parent.getChild(t+1)||null}get previousSibling(){const t=this.index;return null!==t&&this.parent.getChild(t-1)||null}get root(){let t=this;for(;t.parent;)t=t.parent;return t}isAttached(){return this.root.is(\"rootElement\")}getPath(){const t=[];let e=this;for(;e.parent;)t.unshift(e.startOffset),e=e.parent;return t}getAncestors(t={includeSelf:!1,parentFirst:!1}){const e=[];let n=t.includeSelf?this:this.parent;for(;n;)e[t.parentFirst?\"push\":\"unshift\"](n),n=n.parent;return e}getCommonAncestor(t,e={}){const n=this.getAncestors(e),i=t.getAncestors(e);let o=0;for(;n[o]==i[o]&&n[o];)o++;return 0===o?null:n[o-1]}isBefore(t){if(this==t)return!1;if(this.root!==t.root)return!1;const e=this.getPath(),n=t.getPath(),i=En(e,n);switch(i){case\"prefix\":return!0;case\"extension\":return!1;default:return e[i](t[e[0]]=e[1],t),{})),t}is(t){return\"node\"==t||\"model:node\"==t}_clone(){return new us(this._attrs)}_remove(){this.parent._removeChildren(this.index)}_setAttribute(t,e){this._attrs.set(t,e)}_setAttributesTo(t){this._attrs=Ln(t)}_removeAttribute(t){return this._attrs.delete(t)}_clearAttributes(){this._attrs.clear()}}class fs extends us{constructor(t,e){super(e),this._data=t||\"\"}get offsetSize(){return this.data.length}get data(){return this._data}is(t){return\"text\"==t||\"model:text\"==t||super.is(t)}toJSON(){const t=super.toJSON();return t.data=this.data,t}_clone(){return new fs(this.data,this.getAttributes())}static fromJSON(t){return new fs(t.data,t.attributes)}}class ms{constructor(t,e,n){if(this.textNode=t,e<0||e>t.offsetSize)throw new un.b(\"model-textproxy-wrong-offsetintext: Given offsetInText value is incorrect.\",this);if(n<0||e+n>t.offsetSize)throw new un.b(\"model-textproxy-wrong-length: Given length value is incorrect.\",this);this.data=t.data.substring(e,e+n),this.offsetInText=e}get startOffset(){return null!==this.textNode.startOffset?this.textNode.startOffset+this.offsetInText:null}get offsetSize(){return this.data.length}get endOffset(){return null!==this.startOffset?this.startOffset+this.offsetSize:null}get isPartial(){return this.offsetSize!==this.textNode.offsetSize}get parent(){return this.textNode.parent}get root(){return this.textNode.root}is(t){return\"textProxy\"==t||\"model:textProxy\"==t}getPath(){const t=this.textNode.getPath();return t.length>0&&(t[t.length-1]+=this.offsetInText),t}getAncestors(t={includeSelf:!1,parentFirst:!1}){const e=[];let n=t.includeSelf?this:this.parent;for(;n;)e[t.parentFirst?\"push\":\"unshift\"](n),n=n.parent;return e}hasAttribute(t){return this.textNode.hasAttribute(t)}getAttribute(t){return this.textNode.getAttribute(t)}getAttributes(){return this.textNode.getAttributes()}getAttributeKeys(){return this.textNode.getAttributeKeys()}}class gs{constructor(t){this._nodes=[],t&&this._insertNodes(0,t)}[Symbol.iterator](){return this._nodes[Symbol.iterator]()}get length(){return this._nodes.length}get maxOffset(){return this._nodes.reduce((t,e)=>t+e.offsetSize,0)}getNode(t){return this._nodes[t]||null}getNodeIndex(t){const e=this._nodes.indexOf(t);return-1==e?null:e}getNodeStartOffset(t){const e=this.getNodeIndex(t);return null===e?null:this._nodes.slice(0,e).reduce((t,e)=>t+e.offsetSize,0)}indexToOffset(t){if(t==this._nodes.length)return this.maxOffset;const e=this._nodes[t];if(!e)throw new un.b(\"model-nodelist-index-out-of-bounds: Given index cannot be found in the node list.\",this);return this.getNodeStartOffset(e)}offsetToIndex(t){let e=0;for(const n of this._nodes){if(t>=e&&tt.toJSON())}}class ps extends us{constructor(t,e,n){super(e),this.name=t,this._children=new gs,n&&this._insertChild(0,n)}get childCount(){return this._children.length}get maxOffset(){return this._children.maxOffset}get isEmpty(){return 0===this.childCount}is(t,e=null){const n=t.replace(/^model:/,\"\");return e?\"element\"==n&&e==this.name:\"element\"==n||n==this.name||super.is(t)}getChild(t){return this._children.getNode(t)}getChildren(){return this._children[Symbol.iterator]()}getChildIndex(t){return this._children.getNodeIndex(t)}getChildStartOffset(t){return this._children.getNodeStartOffset(t)}offsetToIndex(t){return this._children.offsetToIndex(t)}getNodeByPath(t){let e=this;for(const n of t)e=e.getChild(e.offsetToIndex(n));return e}toJSON(){const t=super.toJSON();if(t.name=this.name,this._children.length>0){t.children=[];for(const e of this._children)t.children.push(e.toJSON())}return t}_clone(t=!1){const e=t?Array.from(this._children).map(t=>t._clone(!0)):null;return new ps(this.name,this.getAttributes(),e)}_appendChild(t){this._insertChild(this.childCount,t)}_insertChild(t,e){const n=function(t){if(\"string\"==typeof t)return[new fs(t)];Dn(t)||(t=[t]);return Array.from(t).map(t=>\"string\"==typeof t?new fs(t):t instanceof ms?new fs(t.data,t.getAttributes()):t)}(e);for(const t of n)null!==t.parent&&t._remove(),t.parent=this;this._children._insertNodes(t,n)}_removeChildren(t,e=1){const n=this._children._removeNodes(t,e);for(const t of n)t.parent=null;return n}static fromJSON(t){let e=null;if(t.children){e=[];for(const n of t.children)n.name?e.push(ps.fromJSON(n)):e.push(fs.fromJSON(n))}return new ps(t.name,t.attributes,e)}}class bs{constructor(t={}){if(!t.boundaries&&!t.startPosition)throw new un.b(\"model-tree-walker-no-start-position: Neither boundaries nor starting position have been defined.\",null);const e=t.direction||\"forward\";if(\"forward\"!=e&&\"backward\"!=e)throw new un.b(\"model-tree-walker-unknown-direction: Only `backward` and `forward` direction allowed.\",t,{direction:e});this.direction=e,this.boundaries=t.boundaries||null,t.startPosition?this.position=t.startPosition.clone():this.position=ks._createAt(this.boundaries[\"backward\"==this.direction?\"end\":\"start\"]),this.position.stickiness=\"toNone\",this.singleCharacters=!!t.singleCharacters,this.shallow=!!t.shallow,this.ignoreElementEnd=!!t.ignoreElementEnd,this._boundaryStartParent=this.boundaries?this.boundaries.start.parent:null,this._boundaryEndParent=this.boundaries?this.boundaries.end.parent:null,this._visitedParent=this.position.parent}[Symbol.iterator](){return this}skip(t){let e,n,i,o;do{i=this.position,o=this._visitedParent,({done:e,value:n}=this.next())}while(!e&&t(n));e||(this.position=i,this._visitedParent=o)}next(){return\"forward\"==this.direction?this._next():this._previous()}_next(){const t=this.position,e=this.position.clone(),n=this._visitedParent;if(null===n.parent&&e.offset===n.maxOffset)return{done:!0};if(n===this._boundaryEndParent&&e.offset==this.boundaries.end.offset)return{done:!0};const i=e.textNode?e.textNode:e.nodeAfter;if(i instanceof ps)return this.shallow?e.offset++:(e.path.push(0),this._visitedParent=i),this.position=e,ws(\"elementStart\",i,t,e,1);if(i instanceof fs){let o;if(this.singleCharacters)o=1;else{let t=i.endOffset;this._boundaryEndParent==n&&this.boundaries.end.offsett&&(t=this.boundaries.start.offset),o=e.offset-t}const r=e.offset-i.startOffset,s=new ms(i,r-o,o);return e.offset-=o,this.position=e,ws(\"text\",s,t,e,o)}return e.path.pop(),this.position=e,this._visitedParent=n.parent,ws(\"elementStart\",n,t,e,1)}}function ws(t,e,n,i,o){return{done:!1,value:{type:t,item:e,previousPosition:n,nextPosition:i,length:o}}}class ks{constructor(t,e,n=\"toNone\"){if(!t.is(\"element\")&&!t.is(\"documentFragment\"))throw new un.b(\"model-position-root-invalid: Position root invalid.\",t);if(!(e instanceof Array)||0===e.length)throw new un.b(\"model-position-path-incorrect-format: Position path must be an array with at least one item.\",t,{path:e});e=t.getPath().concat(e),t=t.root,this.root=t,this.path=e,this.stickiness=n}get offset(){return ti(this.path)}set offset(t){this.path[this.path.length-1]=t}get parent(){let t=this.root;for(let e=0;en.path.length){if(e.offset!==i.maxOffset)return!1;e.path=e.path.slice(0,-1),i=i.parent,e.offset++}else{if(0!==n.offset)return!1;n.path=n.path.slice(0,-1)}}}is(t){return\"position\"==t||\"model:position\"==t}hasSameParentAs(t){if(this.root!==t.root)return!1;return\"same\"==En(this.getParentPath(),t.getParentPath())}getTransformedByOperation(t){let e;switch(t.type){case\"insert\":e=this._getTransformedByInsertOperation(t);break;case\"move\":case\"remove\":case\"reinsert\":e=this._getTransformedByMoveOperation(t);break;case\"split\":e=this._getTransformedBySplitOperation(t);break;case\"merge\":e=this._getTransformedByMergeOperation(t);break;default:e=ks._createAt(this)}return e}_getTransformedByInsertOperation(t){return this._getTransformedByInsertion(t.position,t.howMany)}_getTransformedByMoveOperation(t){return this._getTransformedByMove(t.sourcePosition,t.targetPosition,t.howMany)}_getTransformedBySplitOperation(t){const e=t.movedRange;return e.containsPosition(this)||e.start.isEqual(this)&&\"toNext\"==this.stickiness?this._getCombined(t.splitPosition,t.moveTargetPosition):t.graveyardPosition?this._getTransformedByMove(t.graveyardPosition,t.insertionPosition,1):this._getTransformedByInsertion(t.insertionPosition,1)}_getTransformedByMergeOperation(t){const e=t.movedRange;let n;return e.containsPosition(this)||e.start.isEqual(this)?(n=this._getCombined(t.sourcePosition,t.targetPosition),t.sourcePosition.isBefore(t.targetPosition)&&(n=n._getTransformedByDeletion(t.deletionPosition,1))):n=this.isEqual(t.deletionPosition)?ks._createAt(t.deletionPosition):this._getTransformedByMove(t.deletionPosition,t.graveyardPosition,1),n}_getTransformedByDeletion(t,e){const n=ks._createAt(this);if(this.root!=t.root)return n;if(\"same\"==En(t.getParentPath(),this.getParentPath())){if(t.offsetthis.offset)return null;n.offset-=e}}else if(\"prefix\"==En(t.getParentPath(),this.getParentPath())){const i=t.path.length-1;if(t.offset<=this.path[i]){if(t.offset+e>this.path[i])return null;n.path[i]-=e}}return n}_getTransformedByInsertion(t,e){const n=ks._createAt(this);if(this.root!=t.root)return n;if(\"same\"==En(t.getParentPath(),this.getParentPath()))(t.offsete+1;){const e=i.maxOffset-n.offset;0!==e&&t.push(new _s(n,n.getShiftedBy(e))),n.path=n.path.slice(0,-1),n.offset++,i=i.parent}for(;n.path.length<=this.end.path.length;){const e=this.end.path[n.path.length-1],i=e-n.offset;0!==i&&t.push(new _s(n,n.getShiftedBy(i))),n.offset=e,n.path.push(0)}return t}getWalker(t={}){return t.boundaries=this,new bs(t)}*getItems(t={}){t.boundaries=this,t.ignoreElementEnd=!0;const e=new bs(t);for(const t of e)yield t.item}*getPositions(t={}){t.boundaries=this;const e=new bs(t);yield e.position;for(const t of e)yield t.nextPosition}getTransformedByOperation(t){switch(t.type){case\"insert\":return this._getTransformedByInsertOperation(t);case\"move\":case\"remove\":case\"reinsert\":return this._getTransformedByMoveOperation(t);case\"split\":return[this._getTransformedBySplitOperation(t)];case\"merge\":return[this._getTransformedByMergeOperation(t)]}return[new _s(this.start,this.end)]}getTransformedByOperations(t){const e=[new _s(this.start,this.end)];for(const n of t)for(let t=0;t0?new this(n,i):new this(i,n)}static _createIn(t){return new this(ks._createAt(t,0),ks._createAt(t,t.maxOffset))}static _createOn(t){return this._createFromPositionAndShift(ks._createBefore(t),t.offsetSize)}static _createFromRanges(t){if(0===t.length)throw new un.b(\"range-create-from-ranges-empty-array: At least one range has to be passed.\",null);if(1==t.length)return t[0].clone();const e=t[0];t.sort((t,e)=>t.start.isAfter(e.start)?1:-1);const n=t.indexOf(e),i=new this(e.start,e.end);if(n>0)for(let e=n-1;t[e].end.isEqual(i.start);e++)i.start=ks._createAt(t[e].start);for(let e=n+1;e{if(e.viewPosition)return;const n=this._modelToViewMapping.get(e.modelPosition.parent);e.viewPosition=this._findPositionIn(n,e.modelPosition.offset)},{priority:\"low\"}),this.on(\"viewToModelPosition\",(t,e)=>{if(e.modelPosition)return;const n=this.findMappedViewAncestor(e.viewPosition),i=this._viewToModelMapping.get(n),o=this._toModelOffset(e.viewPosition.parent,e.viewPosition.offset,n);e.modelPosition=ks._createAt(i,o)},{priority:\"low\"})}bindElements(t,e){this._modelToViewMapping.set(t,e),this._viewToModelMapping.set(e,t)}unbindViewElement(t){const e=this.toModelElement(t);if(this._viewToModelMapping.delete(t),this._elementToMarkerNames.has(t))for(const e of this._elementToMarkerNames.get(t))this._unboundMarkerNames.add(e);this._modelToViewMapping.get(e)==t&&this._modelToViewMapping.delete(e)}unbindModelElement(t){const e=this.toViewElement(t);this._modelToViewMapping.delete(t),this._viewToModelMapping.get(e)==t&&this._viewToModelMapping.delete(e)}bindElementToMarker(t,e){const n=this._markerNameToElements.get(e)||new Set;n.add(t);const i=this._elementToMarkerNames.get(t)||new Set;i.add(e),this._markerNameToElements.set(e,n),this._elementToMarkerNames.set(t,i)}unbindElementFromMarkerName(t,e){const n=this._markerNameToElements.get(e);n&&(n.delete(t),0==n.size&&this._markerNameToElements.delete(e));const i=this._elementToMarkerNames.get(t);i&&(i.delete(e),0==i.size&&this._elementToMarkerNames.delete(t))}flushUnboundMarkerNames(){const t=Array.from(this._unboundMarkerNames);return this._unboundMarkerNames.clear(),t}clearBindings(){this._modelToViewMapping=new WeakMap,this._viewToModelMapping=new WeakMap,this._markerNameToElements=new Map,this._elementToMarkerNames=new Map,this._unboundMarkerNames=new Set}toModelElement(t){return this._viewToModelMapping.get(t)}toViewElement(t){return this._modelToViewMapping.get(t)}toModelRange(t){return new _s(this.toModelPosition(t.start),this.toModelPosition(t.end))}toViewRange(t){return new Xi(this.toViewPosition(t.start),this.toViewPosition(t.end))}toModelPosition(t){const e={viewPosition:t,mapper:this};return this.fire(\"viewToModelPosition\",e),e.modelPosition}toViewPosition(t,e={isPhantom:!1}){const n={modelPosition:t,mapper:this,isPhantom:e.isPhantom};return this.fire(\"modelToViewPosition\",n),n.viewPosition}markerNameToElements(t){const e=this._markerNameToElements.get(t);if(!e)return null;const n=new Set;for(const t of e)if(t.is(\"attributeElement\"))for(const e of t.getElementsWithSameId())n.add(e);else n.add(t);return n}registerViewToModelLength(t,e){this._viewToModelLengthCallbacks.set(t,e)}findMappedViewAncestor(t){let e=t.parent;for(;!this._viewToModelMapping.has(e);)e=e.parent;return e}_toModelOffset(t,e,n){if(n!=t){return this._toModelOffset(t.parent,t.index,n)+this._toModelOffset(t,e,t)}if(t.is(\"text\"))return e;let i=0;for(let n=0;n1?e[0]+\":\"+e[1]:e[0]}class As{constructor(t){this.conversionApi=ji({dispatcher:this},t)}convertChanges(t,e,n){for(const e of t.getMarkersToRemove())this.convertMarkerRemove(e.name,e.range,n);for(const e of t.getChanges())\"insert\"==e.type?this.convertInsert(_s._createFromPositionAndShift(e.position,e.length),n):\"remove\"==e.type?this.convertRemove(e.position,e.length,e.name,n):this.convertAttribute(e.range,e.attributeKey,e.attributeOldValue,e.attributeNewValue,n);for(const t of this.conversionApi.mapper.flushUnboundMarkerNames()){const i=e.get(t).getRange();this.convertMarkerRemove(t,i,n),this.convertMarkerAdd(t,i,n)}for(const e of t.getMarkersToAdd())this.convertMarkerAdd(e.name,e.range,n)}convertInsert(t,e){this.conversionApi.writer=e,this.conversionApi.consumable=this._createInsertConsumable(t);for(const e of t){const t=e.item,n={item:t,range:_s._createFromPositionAndShift(e.previousPosition,e.length)};this._testAndFire(\"insert\",n);for(const e of t.getAttributeKeys())n.attributeKey=e,n.attributeOldValue=null,n.attributeNewValue=t.getAttribute(e),this._testAndFire(`attribute:${e}`,n)}this._clearConversionApi()}convertRemove(t,e,n,i){this.conversionApi.writer=i,this.fire(\"remove:\"+n,{position:t,length:e},this.conversionApi),this._clearConversionApi()}convertAttribute(t,e,n,i,o){this.conversionApi.writer=o,this.conversionApi.consumable=this._createConsumableForRange(t,`attribute:${e}`);for(const o of t){const t={item:o.item,range:_s._createFromPositionAndShift(o.previousPosition,o.length),attributeKey:e,attributeOldValue:n,attributeNewValue:i};this._testAndFire(`attribute:${e}`,t)}this._clearConversionApi()}convertSelection(t,e,n){const i=Array.from(e.getMarkersAtPosition(t.getFirstPosition()));if(this.conversionApi.writer=n,this.conversionApi.consumable=this._createSelectionConsumable(t,i),this.fire(\"selection\",{selection:t},this.conversionApi),t.isCollapsed){for(const e of i){const n=e.getRange();if(!Cs(t.getFirstPosition(),e,this.conversionApi.mapper))continue;const i={item:t,markerName:e.name,markerRange:n};this.conversionApi.consumable.test(t,\"addMarker:\"+e.name)&&this.fire(\"addMarker:\"+e.name,i,this.conversionApi)}for(const e of t.getAttributeKeys()){const n={item:t,range:t.getFirstRange(),attributeKey:e,attributeOldValue:null,attributeNewValue:t.getAttribute(e)};this.conversionApi.consumable.test(t,\"attribute:\"+n.attributeKey)&&this.fire(\"attribute:\"+n.attributeKey+\":$text\",n,this.conversionApi)}this._clearConversionApi()}}convertMarkerAdd(t,e,n){if(!e.root.document||\"$graveyard\"==e.root.rootName)return;this.conversionApi.writer=n;const i=\"addMarker:\"+t,o=new ys;if(o.add(e,i),this.conversionApi.consumable=o,this.fire(i,{markerName:t,markerRange:e},this.conversionApi),o.test(e,i)){this.conversionApi.consumable=this._createConsumableForRange(e,i);for(const n of e.getItems()){if(!this.conversionApi.consumable.test(n,i))continue;const o={item:n,range:_s._createOn(n),markerName:t,markerRange:e};this.fire(i,o,this.conversionApi)}this._clearConversionApi()}}convertMarkerRemove(t,e,n){e.root.document&&\"$graveyard\"!=e.root.rootName&&(this.conversionApi.writer=n,this.fire(\"removeMarker:\"+t,{markerName:t,markerRange:e},this.conversionApi),this._clearConversionApi())}_createInsertConsumable(t){const e=new ys;for(const n of t){const t=n.item;e.add(t,\"insert\");for(const n of t.getAttributeKeys())e.add(t,\"attribute:\"+n)}return e}_createConsumableForRange(t,e){const n=new ys;for(const i of t.getItems())n.add(i,e);return n}_createSelectionConsumable(t,e){const n=new ys;n.add(t,\"selection\");for(const i of e)n.add(t,\"addMarker:\"+i.name);for(const e of t.getAttributeKeys())n.add(t,\"attribute:\"+e);return n}_testAndFire(t,e){if(!this.conversionApi.consumable.test(e.item,t))return;const n=e.item.name||\"$text\";this.fire(t+\":\"+n,e,this.conversionApi)}_clearConversionApi(){delete this.conversionApi.writer,delete this.conversionApi.consumable}}function Cs(t,e,n){const i=e.getRange(),o=Array.from(t.getAncestors());return o.shift(),o.reverse(),!o.some(t=>{if(i.containsItem(t)){return!!n.toViewElement(t).getCustomProperty(\"addHighlight\")}})}yn(As,gn);class Ts{constructor(t,e,n){this._lastRangeBackward=!1,this._ranges=[],this._attrs=new Map,t&&this.setTo(t,e,n)}get anchor(){if(this._ranges.length>0){const t=this._ranges[this._ranges.length-1];return this._lastRangeBackward?t.end:t.start}return null}get focus(){if(this._ranges.length>0){const t=this._ranges[this._ranges.length-1];return this._lastRangeBackward?t.start:t.end}return null}get isCollapsed(){return 1===this._ranges.length&&this._ranges[0].isCollapsed}get rangeCount(){return this._ranges.length}get isBackward(){return!this.isCollapsed&&this._lastRangeBackward}isEqual(t){if(this.rangeCount!=t.rangeCount)return!1;if(0===this.rangeCount)return!0;if(!this.anchor.isEqual(t.anchor)||!this.focus.isEqual(t.focus))return!1;for(const e of this._ranges){let n=!1;for(const i of t._ranges)if(e.isEqual(i)){n=!0;break}if(!n)return!1}return!0}*getRanges(){for(const t of this._ranges)yield new _s(t.start,t.end)}getFirstRange(){let t=null;for(const e of this._ranges)t&&!e.start.isBefore(t.start)||(t=e);return t?new _s(t.start,t.end):null}getLastRange(){let t=null;for(const e of this._ranges)t&&!e.end.isAfter(t.end)||(t=e);return t?new _s(t.start,t.end):null}getFirstPosition(){const t=this.getFirstRange();return t?t.start.clone():null}getLastPosition(){const t=this.getLastRange();return t?t.end.clone():null}setTo(t,e,n){if(null===t)this._setRanges([]);else if(t instanceof Ts)this._setRanges(t.getRanges(),t.isBackward);else if(t&&\"function\"==typeof t.getRanges)this._setRanges(t.getRanges(),t.isBackward);else if(t instanceof _s)this._setRanges([t],!!e&&!!e.backward);else if(t instanceof ks)this._setRanges([new _s(t)]);else if(t instanceof us){const i=!!n&&!!n.backward;let o;if(\"in\"==e)o=_s._createIn(t);else if(\"on\"==e)o=_s._createOn(t);else{if(void 0===e)throw new un.b(\"model-selection-setTo-required-second-parameter: selection.setTo requires the second parameter when the first parameter is a node.\",[this,t]);o=new _s(ks._createAt(t,e))}this._setRanges([o],i)}else{if(!Dn(t))throw new un.b(\"model-selection-setTo-not-selectable: Cannot set the selection to the given place.\",[this,t]);this._setRanges(t,e&&!!e.backward)}}_setRanges(t,e=!1){const n=(t=Array.from(t)).some(e=>{if(!(e instanceof _s))throw new un.b(\"model-selection-set-ranges-not-range: Selection range set to an object that is not an instance of model.Range.\",[this,t]);return this._ranges.every(t=>!t.isEqual(e))});if(t.length!==this._ranges.length||n){this._removeAllRanges();for(const e of t)this._pushRange(e);this._lastRangeBackward=!!e,this.fire(\"change:range\",{directChange:!0})}}setFocus(t,e){if(null===this.anchor)throw new un.b(\"model-selection-setFocus-no-ranges: Cannot set selection focus if there are no ranges in selection.\",[this,t]);const n=ks._createAt(t,e);if(\"same\"==n.compareWith(this.focus))return;const i=this.anchor;this._ranges.length&&this._popRange(),\"before\"==n.compareWith(i)?(this._pushRange(new _s(n,i)),this._lastRangeBackward=!0):(this._pushRange(new _s(i,n)),this._lastRangeBackward=!1),this.fire(\"change:range\",{directChange:!0})}getAttribute(t){return this._attrs.get(t)}getAttributes(){return this._attrs.entries()}getAttributeKeys(){return this._attrs.keys()}hasAttribute(t){return this._attrs.has(t)}removeAttribute(t){this.hasAttribute(t)&&(this._attrs.delete(t),this.fire(\"change:attribute\",{attributeKeys:[t],directChange:!0}))}setAttribute(t,e){this.getAttribute(t)!==e&&(this._attrs.set(t,e),this.fire(\"change:attribute\",{attributeKeys:[t],directChange:!0}))}getSelectedElement(){return 1!==this.rangeCount?null:this.getFirstRange().getContainedElement()}is(t){return\"selection\"==t||\"model:selection\"==t}*getSelectedBlocks(){const t=new WeakSet;for(const e of this.getRanges()){const n=Ms(e.start,t);n&&Es(n,e)&&(yield n);for(const n of e.getWalker()){const i=n.item;\"elementEnd\"==n.type&&Ss(i,t,e)&&(yield i)}const i=Ms(e.end,t);i&&!e.end.isTouching(ks._createAt(i,0))&&Es(i,e)&&(yield i)}}containsEntireContent(t=this.anchor.root){const e=ks._createAt(t,0),n=ks._createAt(t,\"end\");return e.isTouching(this.getFirstPosition())&&n.isTouching(this.getLastPosition())}_pushRange(t){this._checkRange(t),this._ranges.push(new _s(t.start,t.end))}_checkRange(t){for(let e=0;e0;)this._popRange()}_popRange(){this._ranges.pop()}}function Ps(t,e){return!e.has(t)&&(e.add(t),t.root.document.model.schema.isBlock(t)&&t.parent)}function Ss(t,e,n){return Ps(t,e)&&Es(t,n)}function Ms(t,e){const n=t.parent.root.document.model.schema,i=t.parent.getAncestors({parentFirst:!0,includeSelf:!0});let o=!1;const r=i.find(t=>!o&&(o=n.isLimit(t),!o&&Ps(t,e)));return i.forEach(t=>e.add(t)),r}function Es(t,e){const n=function(t){const e=t.root.document.model.schema;let n=t.parent;for(;n;){if(e.isBlock(n))return n;n=n.parent}}(t);return!n||!e.containsRange(_s._createOn(n),!0)}yn(Ts,gn);class Is extends _s{constructor(t,e){super(t,e),Ns.call(this)}detach(){this.stopListening()}is(t){return\"liveRange\"==t||\"model:liveRange\"==t||super.is(t)}toRange(){return new _s(this.start,this.end)}static fromRange(t){return new Is(t.start,t.end)}}function Ns(){this.listenTo(this.root.document.model,\"applyOperation\",(t,e)=>{const n=e[0];n.isDocumentOperation&&Os.call(this,n)},{priority:\"low\"})}function Os(t){const e=this.getTransformedByOperation(t),n=_s._createFromRanges(e),i=!n.isEqual(this),o=function(t,e){switch(e.type){case\"insert\":return t.containsPosition(e.position);case\"move\":case\"remove\":case\"reinsert\":case\"merge\":return t.containsPosition(e.sourcePosition)||t.start.isEqual(e.sourcePosition)||t.containsPosition(e.targetPosition);case\"split\":return t.containsPosition(e.splitPosition)||t.containsPosition(e.insertionPosition)}return!1}(this,t);let r=null;if(i){\"$graveyard\"==n.root.rootName&&(r=\"remove\"==t.type?t.sourcePosition:t.deletionPosition);const e=this.toRange();this.start=n.start,this.end=n.end,this.fire(\"change:range\",e,{deletionPosition:r})}else o&&this.fire(\"change:content\",this.toRange(),{deletionPosition:r})}yn(Is,gn);class Rs{constructor(t){this._selection=new Ds(t),this._selection.delegate(\"change:range\").to(this),this._selection.delegate(\"change:attribute\").to(this),this._selection.delegate(\"change:marker\").to(this)}get isCollapsed(){return this._selection.isCollapsed}get anchor(){return this._selection.anchor}get focus(){return this._selection.focus}get rangeCount(){return this._selection.rangeCount}get hasOwnRange(){return this._selection.hasOwnRange}get isBackward(){return this._selection.isBackward}get isGravityOverridden(){return this._selection.isGravityOverridden}get markers(){return this._selection.markers}get _ranges(){return this._selection._ranges}getRanges(){return this._selection.getRanges()}getFirstPosition(){return this._selection.getFirstPosition()}getLastPosition(){return this._selection.getLastPosition()}getFirstRange(){return this._selection.getFirstRange()}getLastRange(){return this._selection.getLastRange()}getSelectedBlocks(){return this._selection.getSelectedBlocks()}getSelectedElement(){return this._selection.getSelectedElement()}containsEntireContent(t){return this._selection.containsEntireContent(t)}destroy(){this._selection.destroy()}getAttributeKeys(){return this._selection.getAttributeKeys()}getAttributes(){return this._selection.getAttributes()}getAttribute(t){return this._selection.getAttribute(t)}hasAttribute(t){return this._selection.hasAttribute(t)}refresh(){this._selection._updateMarkers(),this._selection._updateAttributes(!1)}is(t){return\"selection\"==t||\"model:selection\"==t||\"documentSelection\"==t||\"model:documentSelection\"==t}_setFocus(t,e){this._selection.setFocus(t,e)}_setTo(t,e,n){this._selection.setTo(t,e,n)}_setAttribute(t,e){this._selection.setAttribute(t,e)}_removeAttribute(t){this._selection.removeAttribute(t)}_getStoredAttributes(){return this._selection._getStoredAttributes()}_overrideGravity(){return this._selection.overrideGravity()}_restoreGravity(t){this._selection.restoreGravity(t)}static _getStoreAttributeKey(t){return\"selection:\"+t}static _isStoreAttributeKey(t){return t.startsWith(\"selection:\")}}yn(Rs,gn);class Ds extends Ts{constructor(t){super(),this.markers=new xn({idProperty:\"name\"}),this._model=t.model,this._document=t,this._attributePriority=new Map,this._fixGraveyardRangesData=[],this._hasChangedRange=!1,this._overriddenGravityRegister=new Set,this.listenTo(this._model,\"applyOperation\",(t,e)=>{const n=e[0];if(n.isDocumentOperation&&\"marker\"!=n.type&&\"rename\"!=n.type&&\"noop\"!=n.type){for(;this._fixGraveyardRangesData.length;){const{liveRange:t,sourcePosition:e}=this._fixGraveyardRangesData.shift();this._fixGraveyardSelection(t,e)}this._hasChangedRange&&(this._hasChangedRange=!1,this.fire(\"change:range\",{directChange:!1}))}},{priority:\"lowest\"}),this.on(\"change:range\",()=>{for(const t of this.getRanges())if(!this._document._validateSelectionRange(t))throw new un.b(\"document-selection-wrong-position: Range from document selection starts or ends at incorrect position.\",this,{range:t})}),this.listenTo(this._model.markers,\"update\",()=>this._updateMarkers()),this.listenTo(this._document,\"change\",(t,e)=>{!function(t,e){const n=t.document.differ;for(const i of n.getChanges()){if(\"insert\"!=i.type)continue;const n=i.position.parent;i.length===n.maxOffset&&t.enqueueChange(e,t=>{const e=Array.from(n.getAttributeKeys()).filter(t=>t.startsWith(\"selection:\"));for(const i of e)t.removeAttribute(i,n)})}}(this._model,e)})}get isCollapsed(){return 0===this._ranges.length?this._document._getDefaultRange().isCollapsed:super.isCollapsed}get anchor(){return super.anchor||this._document._getDefaultRange().start}get focus(){return super.focus||this._document._getDefaultRange().end}get rangeCount(){return this._ranges.length?this._ranges.length:1}get hasOwnRange(){return this._ranges.length>0}get isGravityOverridden(){return!!this._overriddenGravityRegister.size}destroy(){for(let t=0;t{this._hasChangedRange=!0,e.root==this._document.graveyard&&this._fixGraveyardRangesData.push({liveRange:e,sourcePosition:i.deletionPosition})}),e}_updateMarkers(){const t=[];let e=!1;for(const e of this._model.markers){const n=e.getRange();for(const i of this.getRanges())n.containsRange(i,!i.isCollapsed)&&t.push(e)}const n=Array.from(this.markers);for(const n of t)this.markers.has(n)||(this.markers.add(n),e=!0);for(const n of Array.from(this.markers))t.includes(n)||(this.markers.remove(n),e=!0);e&&this.fire(\"change:marker\",{oldMarkers:n,directChange:!1})}_updateAttributes(t){const e=Ln(this._getSurroundingAttributes()),n=Ln(this.getAttributes());if(t)this._attributePriority=new Map,this._attrs=new Map;else for(const[t,e]of this._attributePriority)\"low\"==e&&(this._attrs.delete(t),this._attributePriority.delete(t));this._setAttributesTo(e);const i=[];for(const[t,e]of this.getAttributes())n.has(t)&&n.get(t)===e||i.push(t);for(const[t]of n)this.hasAttribute(t)||i.push(t);i.length>0&&this.fire(\"change:attribute\",{attributeKeys:i,directChange:!1})}_setAttribute(t,e,n=!0){const i=n?\"normal\":\"low\";return(\"low\"!=i||\"normal\"!=this._attributePriority.get(t))&&(super.getAttribute(t)!==e&&(this._attrs.set(t,e),this._attributePriority.set(t,i),!0))}_removeAttribute(t,e=!0){const n=e?\"normal\":\"low\";return(\"low\"!=n||\"normal\"!=this._attributePriority.get(t))&&(this._attributePriority.set(t,n),!!super.hasAttribute(t)&&(this._attrs.delete(t),!0))}_setAttributesTo(t){const e=new Set;for(const[e,n]of this.getAttributes())t.get(e)!==n&&this._removeAttribute(e,!1);for(const[n,i]of t){this._setAttribute(n,i,!1)&&e.add(n)}return e}*_getStoredAttributes(){const t=this.getFirstPosition().parent;if(this.isCollapsed&&t.isEmpty)for(const e of t.getAttributeKeys())if(e.startsWith(\"selection:\")){const n=e.substr(\"selection:\".length);yield[n,t.getAttribute(e)]}}_getSurroundingAttributes(){const t=this.getFirstPosition(),e=this._model.schema;let n=null;if(this.isCollapsed){const e=t.textNode?t.textNode:t.nodeBefore,i=t.textNode?t.textNode:t.nodeAfter;if(this.isGravityOverridden||(n=Ls(e)),n||(n=Ls(i)),!this.isGravityOverridden&&!n){let t=e;for(;t&&!n;)t=t.previousSibling,n=Ls(t)}if(!n){let t=i;for(;t&&!n;)t=t.nextSibling,n=Ls(t)}n||(n=this._getStoredAttributes())}else{const t=this.getFirstRange();for(const i of t){if(i.item.is(\"element\")&&e.isObject(i.item))break;if(\"text\"==i.type){n=i.item.getAttributes();break}}}return n}_fixGraveyardSelection(t,e){const n=e.clone(),i=this._model.schema.getNearestSelectionRange(n),o=this._ranges.indexOf(t);if(this._ranges.splice(o,1),t.detach(),i){const t=this._prepareRange(i);this._ranges.splice(o,0,t)}}}function Ls(t){return t instanceof ms||t instanceof fs?t.getAttributes():null}class js{constructor(t){this._dispatchers=t}add(t){for(const e of this._dispatchers)t(e);return this}}var Vs=function(t){return tn(t,5)};class zs extends js{elementToElement(t){return this.add(function(t){return(t=Vs(t)).view=Fs(t.view,\"container\"),e=>{var n;e.on(\"insert:\"+t.model,(n=t.view,(t,e,i)=>{const o=n(e.item,i.writer);if(!o)return;if(!i.consumable.consume(e.item,\"insert\"))return;const r=i.mapper.toViewPosition(e.range.start);i.mapper.bindElements(e.item,o),i.writer.insert(r,o)}),{priority:t.converterPriority||\"normal\"})}}(t))}attributeToElement(t){return this.add(function(t){let e=\"attribute:\"+((t=Vs(t)).model.key?t.model.key:t.model);t.model.name&&(e+=\":\"+t.model.name);if(t.model.values)for(const e of t.model.values)t.view[e]=Fs(t.view[e],\"attribute\");else t.view=Fs(t.view,\"attribute\");const n=Us(t);return i=>{i.on(e,function(t){return(e,n,i)=>{const o=t(n.attributeOldValue,i.writer),r=t(n.attributeNewValue,i.writer);if(!o&&!r)return;if(!i.consumable.consume(n.item,e.name))return;const s=i.writer,a=s.document.selection;if(n.item instanceof Ts||n.item instanceof Rs)s.wrap(a.getFirstRange(),r);else{let t=i.mapper.toViewRange(n.range);null!==n.attributeOldValue&&o&&(t=s.unwrap(t,o)),null!==n.attributeNewValue&&r&&s.wrap(t,r)}}}(n),{priority:t.converterPriority||\"normal\"})}}(t))}attributeToAttribute(t){return this.add(function(t){let e=\"attribute:\"+((t=Vs(t)).model.key?t.model.key:t.model);t.model.name&&(e+=\":\"+t.model.name);if(t.model.values)for(const e of t.model.values)t.view[e]=Hs(t.view[e]);else t.view=Hs(t.view);const n=Us(t);return i=>{var o;i.on(e,(o=n,(t,e,n)=>{const i=o(e.attributeOldValue,e),r=o(e.attributeNewValue,e);if(!i&&!r)return;if(!n.consumable.consume(e.item,t.name))return;const s=n.mapper.toViewElement(e.item),a=n.writer;if(!s)throw new un.b(\"conversion-attribute-to-attribute-on-text: Trying to convert text node's attribute with attribute-to-attribute converter.\",[e,n]);if(null!==e.attributeOldValue&&i)if(\"class\"==i.key){const t=Array.isArray(i.value)?i.value:[i.value];for(const e of t)a.removeClass(e,s)}else if(\"style\"==i.key){const t=Object.keys(i.value);for(const e of t)a.removeStyle(e,s)}else a.removeAttribute(i.key,s);if(null!==e.attributeNewValue&&r)if(\"class\"==r.key){const t=Array.isArray(r.value)?r.value:[r.value];for(const e of t)a.addClass(e,s)}else if(\"style\"==r.key){const t=Object.keys(r.value);for(const e of t)a.setStyle(e,r.value[e],s)}else a.setAttribute(r.key,r.value,s)}),{priority:t.converterPriority||\"normal\"})}}(t))}markerToElement(t){return this.add(function(t){return(t=Vs(t)).view=Fs(t.view,\"ui\"),e=>{var n;e.on(\"addMarker:\"+t.model,(n=t.view,(t,e,i)=>{e.isOpening=!0;const o=n(e,i.writer);e.isOpening=!1;const r=n(e,i.writer);if(!o||!r)return;const s=e.markerRange;if(s.isCollapsed&&!i.consumable.consume(s,t.name))return;for(const e of s)if(!i.consumable.consume(e.item,t.name))return;const a=i.mapper,c=i.writer;c.insert(a.toViewPosition(s.start),o),i.mapper.bindElementToMarker(o,e.markerName),s.isCollapsed||(c.insert(a.toViewPosition(s.end),r),i.mapper.bindElementToMarker(r,e.markerName)),t.stop()}),{priority:t.converterPriority||\"normal\"}),e.on(\"removeMarker:\"+t.model,(t.view,(t,e,n)=>{const i=n.mapper.markerNameToElements(e.markerName);if(i){for(const t of i)n.mapper.unbindElementFromMarkerName(t,e.markerName),n.writer.clear(n.writer.createRangeOn(t),t);n.writer.clearClonedElementsGroup(e.markerName),t.stop()}}),{priority:t.converterPriority||\"normal\"})}}(t))}markerToHighlight(t){return this.add(function(t){return e=>{var n;e.on(\"addMarker:\"+t.model,(n=t.view,(t,e,i)=>{if(!e.item)return;if(!(e.item instanceof Ts||e.item instanceof Rs||e.item.is(\"textProxy\")))return;const o=qs(n,e,i);if(!o)return;if(!i.consumable.consume(e.item,t.name))return;const r=i.writer,s=Bs(r,o),a=r.document.selection;if(e.item instanceof Ts||e.item instanceof Rs)r.wrap(a.getFirstRange(),s,a);else{const t=i.mapper.toViewRange(e.range),n=r.wrap(t,s);for(const t of n.getItems())if(t.is(\"attributeElement\")&&t.isSimilar(s)){i.mapper.bindElementToMarker(t,e.markerName);break}}}),{priority:t.converterPriority||\"normal\"}),e.on(\"addMarker:\"+t.model,function(t){return(e,n,i)=>{if(!n.item)return;if(!(n.item instanceof ps))return;const o=qs(t,n,i);if(!o)return;if(!i.consumable.test(n.item,e.name))return;const r=i.mapper.toViewElement(n.item);if(r&&r.getCustomProperty(\"addHighlight\")){i.consumable.consume(n.item,e.name);for(const t of _s._createIn(n.item))i.consumable.consume(t.item,e.name);r.getCustomProperty(\"addHighlight\")(r,o,i.writer),i.mapper.bindElementToMarker(r,n.markerName)}}}(t.view),{priority:t.converterPriority||\"normal\"}),e.on(\"removeMarker:\"+t.model,function(t){return(e,n,i)=>{if(n.markerRange.isCollapsed)return;const o=qs(t,n,i);if(!o)return;const r=Bs(i.writer,o),s=i.mapper.markerNameToElements(n.markerName);if(s){for(const t of s)i.mapper.unbindElementFromMarkerName(t,n.markerName),t.is(\"attributeElement\")?i.writer.unwrap(i.writer.createRangeOn(t),r):t.getCustomProperty(\"removeHighlight\")(t,o.id,i.writer);i.writer.clearClonedElementsGroup(n.markerName),e.stop()}}}(t.view),{priority:t.converterPriority||\"normal\"})}}(t))}}function Bs(t,e){const n=t.createAttributeElement(\"span\",e.attributes);return e.classes&&n._addClass(e.classes),e.priority&&(n._priority=e.priority),n._id=e.id,n}function Fs(t,e){return\"function\"==typeof t?t:(n,i)=>function(t,e,n){\"string\"==typeof t&&(t={name:t});let i;const o=Object.assign({},t.attributes);if(\"container\"==n)i=e.createContainerElement(t.name,o);else if(\"attribute\"==n){const n={priority:t.priority||ro.DEFAULT_PRIORITY};i=e.createAttributeElement(t.name,o,n)}else i=e.createUIElement(t.name,o);if(t.styles){const n=Object.keys(t.styles);for(const o of n)e.setStyle(o,t.styles[o],i)}if(t.classes){const n=t.classes;if(\"string\"==typeof n)e.addClass(n,i);else for(const t of n)e.addClass(t,i)}return i}(t,i,e)}function Us(t){return t.model.values?(e,n)=>{const i=t.view[e];return i?i(e,n):null}:t.view}function Hs(t){return\"string\"==typeof t?e=>({key:t,value:e}):\"object\"==typeof t?t.value?()=>t:e=>({key:t.key,value:e}):t}function qs(t,e,n){const i=\"function\"==typeof t?t(e,n):t;return i?(i.priority||(i.priority=10),i.id||(i.id=e.markerName),i):null}class Ws extends js{elementToElement(t){return this.add(Ys(t))}elementToAttribute(t){return this.add(function(t){Gs(t=Vs(t));const e=Qs(t,!1),n=$s(t.view),i=n?\"element:\"+n:\"element\";return n=>{n.on(i,e,{priority:t.converterPriority||\"low\"})}}(t))}attributeToAttribute(t){return this.add(function(t){t=Vs(t);let e=null;(\"string\"==typeof t.view||t.view.key)&&(e=function(t){\"string\"==typeof t.view&&(t.view={key:t.view});const e=t.view.key;let n;if(\"class\"==e||\"style\"==e){n={[\"class\"==e?\"classes\":\"styles\"]:t.view.value}}else{const i=void 0===t.view.value?/[\\s\\S]*/:t.view.value;n={attributes:{[e]:i}}}t.view.name&&(n.name=t.view.name);return t.view=n,e}(t));Gs(t,e);const n=Qs(t,!0);return e=>{e.on(\"element\",n,{priority:t.converterPriority||\"low\"})}}(t))}elementToMarker(t){return this.add(function(t){return function(t){const e=t.model;t.model=(t,n)=>{const i=\"string\"==typeof e?e:e(t);return n.createElement(\"$marker\",{\"data-name\":i})}}(t=Vs(t)),Ys(t)}(t))}}function Ys(t){const e=function(t){const e=t.view?new jn(t.view):null;return(n,i,o)=>{let r={};if(e){const t=e.match(i.viewItem);if(!t)return;r=t.match}r.name=!0;const s=(a=t.model,c=i.viewItem,l=o.writer,a instanceof Function?a(c,l):l.createElement(a));var a,c,l;if(!s)return;if(!o.consumable.test(i.viewItem,r))return;const d=o.splitToAllowedParent(s,i.modelCursor);if(!d)return;o.writer.insert(s,d.position),o.convertChildren(i.viewItem,o.writer.createPositionAt(s,0)),o.consumable.consume(i.viewItem,r);const h=o.getSplitParts(s);i.modelRange=new _s(o.writer.createPositionBefore(s),o.writer.createPositionAfter(h[h.length-1])),d.cursorParent?i.modelCursor=o.writer.createPositionAt(d.cursorParent,0):i.modelCursor=i.modelRange.end}}(t=Vs(t)),n=$s(t.view),i=n?\"element:\"+n:\"element\";return n=>{n.on(i,e,{priority:t.converterPriority||\"normal\"})}}function $s(t){return\"string\"==typeof t?t:\"object\"==typeof t&&\"string\"==typeof t.name?t.name:null}function Gs(t,e=null){const n=null===e||(t=>t.getAttribute(e)),i=\"object\"!=typeof t.model?t.model:t.model.key,o=\"object\"!=typeof t.model||void 0===t.model.value?n:t.model.value;t.model={key:i,value:o}}function Qs(t,e){const n=new jn(t.view);return(i,o,r)=>{const s=n.match(o.viewItem);if(!s)return;const a=t.model.key,c=\"function\"==typeof t.model.value?t.model.value(o.viewItem):t.model.value;null!==c&&(!function(t,e){const n=\"function\"==typeof t?t(e):t;if(\"object\"==typeof n&&!$s(n))return!1;return!n.classes&&!n.attributes&&!n.styles}(t.view,o.viewItem)?delete s.match.name:s.match.name=!0,r.consumable.test(o.viewItem,s.match)&&(o.modelRange||(o=Object.assign(o,r.convertChildren(o.viewItem,o.modelCursor))),function(t,e,n,i){let o=!1;for(const r of Array.from(t.getItems({shallow:n})))i.schema.checkAttribute(r,e.key)&&(i.writer.setAttribute(e.key,e.value,r),o=!0);return o}(o.modelRange,{key:a,value:c},e,r)&&r.consumable.consume(o.viewItem,s.match)))}}class Ks{constructor(t,e){this.model=t,this.view=new hs(e),this.mapper=new vs,this.downcastDispatcher=new As({mapper:this.mapper});const n=this.model.document,i=n.selection,o=this.model.markers;this.listenTo(this.model,\"_beforeChanges\",()=>{this.view._disableRendering(!0)},{priority:\"highest\"}),this.listenTo(this.model,\"_afterChanges\",()=>{this.view._disableRendering(!1)},{priority:\"lowest\"}),this.listenTo(n,\"change\",()=>{this.view.change(t=>{this.downcastDispatcher.convertChanges(n.differ,o,t),this.downcastDispatcher.convertSelection(i,o,t)})},{priority:\"low\"}),this.listenTo(this.view.document,\"selectionChange\",function(t,e){return(n,i)=>{const o=i.newSelection,r=new Ts,s=[];for(const t of o.getRanges())s.push(e.toModelRange(t));r.setTo(s,{backward:o.isBackward}),r.isEqual(t.document.selection)||t.change(t=>{t.setSelection(r)})}}(this.model,this.mapper)),this.downcastDispatcher.on(\"insert:$text\",(t,e,n)=>{if(!n.consumable.consume(e.item,\"insert\"))return;const i=n.writer,o=n.mapper.toViewPosition(e.range.start),r=i.createText(e.item.data);i.insert(o,r)},{priority:\"lowest\"}),this.downcastDispatcher.on(\"remove\",(t,e,n)=>{const i=n.mapper.toViewPosition(e.position),o=e.position.getShiftedBy(e.length),r=n.mapper.toViewPosition(o,{isPhantom:!0}),s=n.writer.createRange(i,r),a=n.writer.remove(s.getTrimmed());for(const t of n.writer.createRangeIn(a).getItems())n.mapper.unbindViewElement(t)},{priority:\"low\"}),this.downcastDispatcher.on(\"selection\",(t,e,n)=>{const i=n.writer,o=i.document.selection;for(const t of o.getRanges())t.isCollapsed&&t.end.parent.isAttached()&&n.writer.mergeAttributes(t.start);i.setSelection(null)},{priority:\"low\"}),this.downcastDispatcher.on(\"selection\",(t,e,n)=>{const i=e.selection;if(i.isCollapsed)return;if(!n.consumable.consume(i,\"selection\"))return;const o=[];for(const t of i.getRanges()){const e=n.mapper.toViewRange(t);o.push(e)}n.writer.setSelection(o,{backward:i.isBackward})},{priority:\"low\"}),this.downcastDispatcher.on(\"selection\",(t,e,n)=>{const i=e.selection;if(!i.isCollapsed)return;if(!n.consumable.consume(i,\"selection\"))return;const o=n.writer,r=i.getFirstPosition(),s=n.mapper.toViewPosition(r),a=o.breakAttributes(s);o.setSelection(a)},{priority:\"low\"}),this.view.document.roots.bindTo(this.model.document.roots).using(t=>{if(\"$graveyard\"==t.rootName)return null;const e=new Ki(this.view.document,t.name);return e.rootName=t.rootName,this.mapper.bindElements(t,e),e})}destroy(){this.view.destroy(),this.stopListening()}}yn(Ks,Ui);class Js{constructor(){this._commands=new Map}add(t,e){this._commands.set(t,e)}get(t){return this._commands.get(t)}execute(t,...e){const n=this.get(t);if(!n)throw new un.b(\"commandcollection-command-not-found: Command does not exist.\",this,{commandName:t});n.execute(...e)}*names(){yield*this._commands.keys()}*commands(){yield*this._commands.values()}[Symbol.iterator](){return this._commands[Symbol.iterator]()}destroy(){for(const t of this.commands())t.destroy()}}class Zs{constructor(){this._consumables=new Map}add(t,e){let n;t.is(\"text\")||t.is(\"documentFragment\")?this._consumables.set(t,!0):(this._consumables.has(t)?n=this._consumables.get(t):(n=new Xs(t),this._consumables.set(t,n)),n.add(e))}test(t,e){const n=this._consumables.get(t);return void 0===n?null:t.is(\"text\")||t.is(\"documentFragment\")?n:n.test(e)}consume(t,e){return!!this.test(t,e)&&(t.is(\"text\")||t.is(\"documentFragment\")?this._consumables.set(t,!1):this._consumables.get(t).consume(e),!0)}revert(t,e){const n=this._consumables.get(t);void 0!==n&&(t.is(\"text\")||t.is(\"documentFragment\")?this._consumables.set(t,!0):n.revert(e))}static consumablesFromElement(t){const e={element:t,name:!0,attributes:[],classes:[],styles:[]},n=t.getAttributeKeys();for(const t of n)\"style\"!=t&&\"class\"!=t&&e.attributes.push(t);const i=t.getClassNames();for(const t of i)e.classes.push(t);const o=t.getStyleNames();for(const t of o)e.styles.push(t);return e}static createFrom(t,e){if(e||(e=new Zs(t)),t.is(\"text\"))return e.add(t),e;t.is(\"element\")&&e.add(t,Zs.consumablesFromElement(t)),t.is(\"documentFragment\")&&e.add(t);for(const n of t.getChildren())e=Zs.createFrom(n,e);return e}}class Xs{constructor(t){this.element=t,this._canConsumeName=null,this._consumables={attributes:new Map,styles:new Map,classes:new Map}}add(t){t.name&&(this._canConsumeName=!0);for(const e in this._consumables)e in t&&this._add(e,t[e])}test(t){if(t.name&&!this._canConsumeName)return this._canConsumeName;for(const e in this._consumables)if(e in t){const n=this._test(e,t[e]);if(!0!==n)return n}return!0}consume(t){t.name&&(this._canConsumeName=!1);for(const e in this._consumables)e in t&&this._consume(e,t[e])}revert(t){t.name&&(this._canConsumeName=!0);for(const e in this._consumables)e in t&&this._revert(e,t[e])}_add(t,e){const n=Dt(e)?e:[e],i=this._consumables[t];for(const e of n){if(\"attributes\"===t&&(\"class\"===e||\"style\"===e))throw new un.b(\"viewconsumable-invalid-attribute: Classes and styles should be handled separately.\",this);if(i.set(e,!0),\"styles\"===t)for(const t of this.element.document.stylesProcessor.getRelatedStyles(e))i.set(t,!0)}}_test(t,e){const n=Dt(e)?e:[e],i=this._consumables[t];for(const e of n)if(\"attributes\"!==t||\"class\"!==e&&\"style\"!==e){const t=i.get(e);if(void 0===t)return null;if(!t)return!1}else{const t=\"class\"==e?\"classes\":\"styles\",n=this._test(t,[...this._consumables[t].keys()]);if(!0!==n)return n}return!0}_consume(t,e){const n=Dt(e)?e:[e],i=this._consumables[t];for(const e of n)if(\"attributes\"!==t||\"class\"!==e&&\"style\"!==e){if(i.set(e,!1),\"styles\"==t)for(const t of this.element.document.stylesProcessor.getRelatedStyles(e))i.set(t,!1)}else{const t=\"class\"==e?\"classes\":\"styles\";this._consume(t,[...this._consumables[t].keys()])}}_revert(t,e){const n=Dt(e)?e:[e],i=this._consumables[t];for(const e of n)if(\"attributes\"!==t||\"class\"!==e&&\"style\"!==e){!1===i.get(e)&&i.set(e,!0)}else{const t=\"class\"==e?\"classes\":\"styles\";this._revert(t,[...this._consumables[t].keys()])}}}class ta{constructor(){this._sourceDefinitions={},this._attributeProperties={},this.decorate(\"checkChild\"),this.decorate(\"checkAttribute\"),this.on(\"checkAttribute\",(t,e)=>{e[0]=new ea(e[0])},{priority:\"highest\"}),this.on(\"checkChild\",(t,e)=>{e[0]=new ea(e[0]),e[1]=this.getDefinition(e[1])},{priority:\"highest\"})}register(t,e){if(this._sourceDefinitions[t])throw new un.b(\"schema-cannot-register-item-twice: A single item cannot be registered twice in the schema.\",this,{itemName:t});this._sourceDefinitions[t]=[Object.assign({},e)],this._clearCache()}extend(t,e){if(!this._sourceDefinitions[t])throw new un.b(\"schema-cannot-extend-missing-item: Cannot extend an item which was not registered yet.\",this,{itemName:t});this._sourceDefinitions[t].push(Object.assign({},e)),this._clearCache()}getDefinitions(){return this._compiledDefinitions||this._compile(),this._compiledDefinitions}getDefinition(t){let e;return e=\"string\"==typeof t?t:t.is&&(t.is(\"text\")||t.is(\"textProxy\"))?\"$text\":t.name,this.getDefinitions()[e]}isRegistered(t){return!!this.getDefinition(t)}isBlock(t){const e=this.getDefinition(t);return!(!e||!e.isBlock)}isLimit(t){const e=this.getDefinition(t);return!!e&&!(!e.isLimit&&!e.isObject)}isObject(t){const e=this.getDefinition(t);return!(!e||!e.isObject)}isInline(t){const e=this.getDefinition(t);return!(!e||!e.isInline)}checkChild(t,e){return!!e&&this._checkContextMatch(e,t)}checkAttribute(t,e){const n=this.getDefinition(t.last);return!!n&&n.allowAttributes.includes(e)}checkMerge(t,e=null){if(t instanceof ks){const e=t.nodeBefore,n=t.nodeAfter;if(!(e instanceof ps))throw new un.b(\"schema-check-merge-no-element-before: The node before the merge position must be an element.\",this);if(!(n instanceof ps))throw new un.b(\"schema-check-merge-no-element-after: The node after the merge position must be an element.\",this);return this.checkMerge(e,n)}for(const n of e.getChildren())if(!this.checkChild(t,n))return!1;return!0}addChildCheck(t){this.on(\"checkChild\",(e,[n,i])=>{if(!i)return;const o=t(n,i);\"boolean\"==typeof o&&(e.stop(),e.return=o)},{priority:\"high\"})}addAttributeCheck(t){this.on(\"checkAttribute\",(e,[n,i])=>{const o=t(n,i);\"boolean\"==typeof o&&(e.stop(),e.return=o)},{priority:\"high\"})}setAttributeProperties(t,e){this._attributeProperties[t]=Object.assign(this.getAttributeProperties(t),e)}getAttributeProperties(t){return this._attributeProperties[t]||{}}getLimitElement(t){let e;if(t instanceof ks)e=t.parent;else{e=(t instanceof _s?[t]:Array.from(t.getRanges())).reduce((t,e)=>{const n=e.getCommonAncestor();return t?t.getCommonAncestor(n,{includeSelf:!0}):n},null)}for(;!this.isLimit(e)&&e.parent;)e=e.parent;return e}checkAttributeInSelection(t,e){if(t.isCollapsed){const n=[...t.getFirstPosition().getAncestors(),new fs(\"\",t.getAttributes())];return this.checkAttribute(n,e)}{const n=t.getRanges();for(const t of n)for(const n of t)if(this.checkAttribute(n.item,e))return!0}return!1}*getValidRanges(t,e){t=function*(t){for(const e of t)yield*e.getMinimalFlatRanges()}(t);for(const n of t)yield*this._getValidRangesForRange(n,e)}getNearestSelectionRange(t,e=\"both\"){if(this.checkChild(t,\"$text\"))return new _s(t);let n,i;const o=t.getAncestors().reverse().find(t=>this.isLimit(t))||t.root;\"both\"!=e&&\"backward\"!=e||(n=new bs({boundaries:_s._createIn(o),startPosition:t,direction:\"backward\"})),\"both\"!=e&&\"forward\"!=e||(i=new bs({boundaries:_s._createIn(o),startPosition:t}));for(const t of function*(t,e){let n=!1;for(;!n;){if(n=!0,t){const e=t.next();e.done||(n=!1,yield{walker:t,value:e.value})}if(e){const t=e.next();t.done||(n=!1,yield{walker:e,value:t.value})}}}(n,i)){const e=t.walker==n?\"elementEnd\":\"elementStart\",i=t.value;if(i.type==e&&this.isObject(i.item))return _s._createOn(i.item);if(this.checkChild(i.nextPosition,\"$text\"))return new _s(i.nextPosition)}return null}findAllowedParent(t,e){let n=t.parent;for(;n;){if(this.checkChild(n,e))return n;if(this.isLimit(n))return null;n=n.parent}return null}removeDisallowedAttributes(t,e){for(const n of t)if(n.is(\"text\"))ua(this,n,e);else{const t=_s._createIn(n).getPositions();for(const n of t){ua(this,n.nodeBefore||n.parent,e)}}}createContext(t){return new ea(t)}_clearCache(){this._compiledDefinitions=null}_compile(){const t={},e=this._sourceDefinitions,n=Object.keys(e);for(const i of n)t[i]=na(e[i],i);for(const e of n)ia(t,e);for(const e of n)oa(t,e);for(const e of n)ra(t,e),sa(t,e);for(const e of n)aa(t,e),ca(t,e);this._compiledDefinitions=t}_checkContextMatch(t,e,n=e.length-1){const i=e.getItem(n);if(t.allowIn.includes(i.name)){if(0==n)return!0;{const t=this.getDefinition(i);return this._checkContextMatch(t,e,n-1)}}return!1}*_getValidRangesForRange(t,e){let n=t.start,i=t.start;for(const o of t.getItems({shallow:!0}))o.is(\"element\")&&(yield*this._getValidRangesForRange(_s._createIn(o),e)),this.checkAttribute(o,e)||(n.isEqual(i)||(yield new _s(n,i)),n=ks._createAfter(o)),i=ks._createAfter(o);n.isEqual(i)||(yield new _s(n,i))}}yn(ta,Ui);class ea{constructor(t){if(t instanceof ea)return t;\"string\"==typeof t?t=[t]:Array.isArray(t)||(t=t.getAncestors({includeSelf:!0})),t[0]&&\"string\"!=typeof t[0]&&t[0].is(\"documentFragment\")&&t.shift(),this._items=t.map(ha)}get length(){return this._items.length}get last(){return this._items[this._items.length-1]}[Symbol.iterator](){return this._items[Symbol.iterator]()}push(t){const e=new ea([t]);return e._items=[...this._items,...e._items],e}getItem(t){return this._items[t]}*getNames(){yield*this._items.map(t=>t.name)}endsWith(t){return Array.from(this.getNames()).join(\" \").endsWith(t)}startsWith(t){return Array.from(this.getNames()).join(\" \").startsWith(t)}}function na(t,e){const n={name:e,allowIn:[],allowContentOf:[],allowWhere:[],allowAttributes:[],allowAttributesOf:[],inheritTypesFrom:[]};return function(t,e){for(const n of t){const t=Object.keys(n).filter(t=>t.startsWith(\"is\"));for(const i of t)e[i]=n[i]}}(t,n),la(t,n,\"allowIn\"),la(t,n,\"allowContentOf\"),la(t,n,\"allowWhere\"),la(t,n,\"allowAttributes\"),la(t,n,\"allowAttributesOf\"),la(t,n,\"inheritTypesFrom\"),function(t,e){for(const n of t){const t=n.inheritAllFrom;t&&(e.allowContentOf.push(t),e.allowWhere.push(t),e.allowAttributesOf.push(t),e.inheritTypesFrom.push(t))}}(t,n),n}function ia(t,e){for(const n of t[e].allowContentOf)if(t[n]){da(t,n).forEach(t=>{t.allowIn.push(e)})}delete t[e].allowContentOf}function oa(t,e){for(const n of t[e].allowWhere){const i=t[n];if(i){const n=i.allowIn;t[e].allowIn.push(...n)}}delete t[e].allowWhere}function ra(t,e){for(const n of t[e].allowAttributesOf){const i=t[n];if(i){const n=i.allowAttributes;t[e].allowAttributes.push(...n)}}delete t[e].allowAttributesOf}function sa(t,e){const n=t[e];for(const e of n.inheritTypesFrom){const i=t[e];if(i){const t=Object.keys(i).filter(t=>t.startsWith(\"is\"));for(const e of t)e in n||(n[e]=i[e])}}delete n.inheritTypesFrom}function aa(t,e){const n=t[e],i=n.allowIn.filter(e=>t[e]);n.allowIn=Array.from(new Set(i))}function ca(t,e){const n=t[e];n.allowAttributes=Array.from(new Set(n.allowAttributes))}function la(t,e,n){for(const i of t)\"string\"==typeof i[n]?e[n].push(i[n]):Array.isArray(i[n])&&e[n].push(...i[n])}function da(t,e){const n=t[e];return(i=t,Object.keys(i).map(t=>i[t])).filter(t=>t.allowIn.includes(n.name));var i}function ha(t){return\"string\"==typeof t?{name:t,*getAttributeKeys(){},getAttribute(){}}:{name:t.is(\"element\")?t.name:\"$text\",*getAttributeKeys(){yield*t.getAttributeKeys()},getAttribute:e=>t.getAttribute(e)}}function ua(t,e,n){for(const i of e.getAttributeKeys())t.checkAttribute(e,i)||n.removeAttribute(i,e)}class fa{constructor(t={}){this._splitParts=new Map,this._modelCursor=null,this.conversionApi=Object.assign({},t),this.conversionApi.convertItem=this._convertItem.bind(this),this.conversionApi.convertChildren=this._convertChildren.bind(this),this.conversionApi.splitToAllowedParent=this._splitToAllowedParent.bind(this),this.conversionApi.getSplitParts=this._getSplitParts.bind(this)}convert(t,e,n=[\"$root\"]){this.fire(\"viewCleanup\",t),this._modelCursor=function(t,e){let n;for(const i of new ea(t)){const t={};for(const e of i.getAttributeKeys())t[e]=i.getAttribute(e);const o=e.createElement(i.name,t);n&&e.append(o,n),n=ks._createAt(o,0)}return n}(n,e),this.conversionApi.writer=e,this.conversionApi.consumable=Zs.createFrom(t),this.conversionApi.store={};const{modelRange:i}=this._convertItem(t,this._modelCursor),o=e.createDocumentFragment();if(i){this._removeEmptyElements();for(const t of Array.from(this._modelCursor.parent.getChildren()))e.append(t,o);o.markers=function(t,e){const n=new Set,i=new Map,o=_s._createIn(t).getItems();for(const t of o)\"$marker\"==t.name&&n.add(t);for(const t of n){const n=t.getAttribute(\"data-name\"),o=e.createPositionBefore(t);i.has(n)?i.get(n).end=o.clone():i.set(n,new _s(o.clone())),e.remove(t)}return i}(o,e)}return this._modelCursor=null,this._splitParts.clear(),this.conversionApi.writer=null,this.conversionApi.store=null,o}_convertItem(t,e){const n=Object.assign({viewItem:t,modelCursor:e,modelRange:null});if(t.is(\"element\")?this.fire(\"element:\"+t.name,n,this.conversionApi):t.is(\"text\")?this.fire(\"text\",n,this.conversionApi):this.fire(\"documentFragment\",n,this.conversionApi),n.modelRange&&!(n.modelRange instanceof _s))throw new un.b(\"view-conversion-dispatcher-incorrect-result: Incorrect conversion result was dropped.\",this);return{modelRange:n.modelRange,modelCursor:n.modelCursor}}_convertChildren(t,e){const n=new _s(e);let i=e;for(const e of Array.from(t.getChildren())){const t=this._convertItem(e,i);t.modelRange instanceof _s&&(n.end=t.modelRange.end,i=t.modelCursor)}return{modelRange:n,modelCursor:i}}_splitToAllowedParent(t,e){const n=this.conversionApi.schema.findAllowedParent(e,t);if(!n)return null;if(n===e.parent)return{position:e};if(this._modelCursor.parent.getAncestors().includes(n))return null;const i=this.conversionApi.writer.split(e,n),o=[];for(const t of i.range.getWalker())if(\"elementEnd\"==t.type)o.push(t.item);else{const e=o.pop(),n=t.item;this._registerSplitPair(e,n)}return{position:i.position,cursorParent:i.range.end.parent}}_registerSplitPair(t,e){this._splitParts.has(t)||this._splitParts.set(t,[t]);const n=this._splitParts.get(t);this._splitParts.set(e,n),n.push(e)}_getSplitParts(t){let e;return e=this._splitParts.has(t)?this._splitParts.get(t):[t],e}_removeEmptyElements(){let t=!1;for(const e of this._splitParts.keys())e.isEmpty&&(this.conversionApi.writer.remove(e),this._splitParts.delete(e),t=!0);t&&this._removeEmptyElements()}}yn(fa,gn);class ma{constructor(t,e){this.model=t,this.stylesProcessor=e,this.processor,this.mapper=new vs,this.downcastDispatcher=new As({mapper:this.mapper}),this.downcastDispatcher.on(\"insert:$text\",(t,e,n)=>{if(!n.consumable.consume(e.item,\"insert\"))return;const i=n.writer,o=n.mapper.toViewPosition(e.range.start),r=i.createText(e.item.data);i.insert(o,r)},{priority:\"lowest\"}),this.upcastDispatcher=new fa({schema:t.schema}),this.viewDocument=new oo(e),this._viewWriter=new Ao(this.viewDocument),this.upcastDispatcher.on(\"text\",(t,e,n)=>{if(n.schema.checkChild(e.modelCursor,\"$text\")&&n.consumable.consume(e.viewItem)){const t=n.writer.createText(e.viewItem.data);n.writer.insert(t,e.modelCursor),e.modelRange=_s._createFromPositionAndShift(e.modelCursor,t.offsetSize),e.modelCursor=e.modelRange.end}},{priority:\"lowest\"}),this.upcastDispatcher.on(\"element\",(t,e,n)=>{if(!e.modelRange&&n.consumable.consume(e.viewItem,{name:!0})){const{modelRange:t,modelCursor:i}=n.convertChildren(e.viewItem,e.modelCursor);e.modelRange=t,e.modelCursor=i}},{priority:\"lowest\"}),this.upcastDispatcher.on(\"documentFragment\",(t,e,n)=>{if(!e.modelRange&&n.consumable.consume(e.viewItem,{name:!0})){const{modelRange:t,modelCursor:i}=n.convertChildren(e.viewItem,e.modelCursor);e.modelRange=t,e.modelCursor=i}},{priority:\"lowest\"}),this.decorate(\"init\"),this.on(\"init\",()=>{this.fire(\"ready\")},{priority:\"lowest\"})}get(t){const{rootName:e=\"main\",trim:n=\"empty\"}=t||{};if(!this._checkIfRootsExists([e]))throw new un.b(\"datacontroller-get-non-existent-root: Attempting to get data from a non-existing root.\",this);const i=this.model.document.getRoot(e);return\"empty\"!==n||this.model.hasContent(i,{ignoreWhitespaces:!0})?this.stringify(i):\"\"}stringify(t){const e=this.toView(t);return this.processor.toData(e)}toView(t){const e=this.viewDocument,n=this._viewWriter;this.mapper.clearBindings();const i=_s._createIn(t),o=new xo(e);if(this.mapper.bindElements(t,o),this.downcastDispatcher.convertInsert(i,n),!t.is(\"documentFragment\")){const e=function(t){const e=[],n=t.root.document;if(!n)return[];const i=_s._createIn(t);for(const t of n.model.markers){const n=i.getIntersection(t.getRange());n&&e.push([t.name,n])}return e}(t);for(const[t,i]of e)this.downcastDispatcher.convertMarkerAdd(t,i,n)}return o}init(t){if(this.model.document.version)throw new un.b(\"datacontroller-init-document-not-empty: Trying to set initial data to not empty document.\",this);let e={};if(\"string\"==typeof t?e.main=t:e=t,!this._checkIfRootsExists(Object.keys(e)))throw new un.b(\"datacontroller-init-non-existent-root: Attempting to init data on a non-existing root.\",this);return this.model.enqueueChange(\"transparent\",t=>{for(const n of Object.keys(e)){const i=this.model.document.getRoot(n);t.insert(this.parse(e[n],i),i,0)}}),Promise.resolve()}set(t){let e={};if(\"string\"==typeof t?e.main=t:e=t,!this._checkIfRootsExists(Object.keys(e)))throw new un.b(\"datacontroller-set-non-existent-root: Attempting to set data on a non-existing root.\",this);this.model.enqueueChange(\"transparent\",t=>{t.setSelection(null),t.removeSelectionAttribute(this.model.document.selection.getAttributeKeys());for(const n of Object.keys(e)){const i=this.model.document.getRoot(n);t.remove(t.createRangeIn(i)),t.insert(this.parse(e[n],i),i,0)}})}parse(t,e=\"$root\"){const n=this.processor.toView(t);return this.toModel(n,e)}toModel(t,e=\"$root\"){return this.model.change(n=>this.upcastDispatcher.convert(t,n,e))}addStyleProcessorRules(t){t(this.stylesProcessor)}destroy(){this.stopListening()}_checkIfRootsExists(t){for(const e of t)if(!this.model.document.getRootNames().includes(e))return!1;return!0}}yn(ma,Ui);class ga{constructor(t,e){this._helpers=new Map,this._downcast=Array.isArray(t)?t:[t],this._createConversionHelpers({name:\"downcast\",dispatchers:this._downcast,isDowncast:!0}),this._upcast=Array.isArray(e)?e:[e],this._createConversionHelpers({name:\"upcast\",dispatchers:this._upcast,isDowncast:!1})}addAlias(t,e){const n=this._downcast.includes(e);if(!this._upcast.includes(e)&&!n)throw new un.b(\"conversion-add-alias-dispatcher-not-registered: Trying to register and alias for a dispatcher that nas not been registered.\",this);this._createConversionHelpers({name:t,dispatchers:[e],isDowncast:n})}for(t){if(!this._helpers.has(t))throw new un.b(\"conversion-for-unknown-group: Trying to add a converter to an unknown dispatchers group.\",this);return this._helpers.get(t)}elementToElement(t){this.for(\"downcast\").elementToElement(t);for(const{model:e,view:n}of pa(t))this.for(\"upcast\").elementToElement({model:e,view:n,converterPriority:t.converterPriority})}attributeToElement(t){this.for(\"downcast\").attributeToElement(t);for(const{model:e,view:n}of pa(t))this.for(\"upcast\").elementToAttribute({view:n,model:e,converterPriority:t.converterPriority})}attributeToAttribute(t){this.for(\"downcast\").attributeToAttribute(t);for(const{model:e,view:n}of pa(t))this.for(\"upcast\").attributeToAttribute({view:n,model:e})}_createConversionHelpers({name:t,dispatchers:e,isDowncast:n}){if(this._helpers.has(t))throw new un.b(\"conversion-group-exists: Trying to register a group name that has already been registered.\",this);const i=n?new zs(e):new Ws(e);this._helpers.set(t,i)}}function*pa(t){if(t.model.values)for(const e of t.model.values){const n={key:t.model.key,value:e},i=t.view[e],o=t.upcastAlso?t.upcastAlso[e]:void 0;yield*ba(n,i,o)}else yield*ba(t.model,t.view,t.upcastAlso)}function*ba(t,e,n){if(yield{model:t,view:e},n){n=Array.isArray(n)?n:[n];for(const e of n)yield{model:t,view:e}}}class wa{constructor(t=\"default\"){this.operations=[],this.type=t}get baseVersion(){for(const t of this.operations)if(null!==t.baseVersion)return t.baseVersion;return null}addOperation(t){return t.batch=this,this.operations.push(t),t}}class ka{constructor(t){this.baseVersion=t,this.isDocumentOperation=null!==this.baseVersion,this.batch=null}_validate(){}toJSON(){const t=Object.assign({},this);return t.__className=this.constructor.className,delete t.batch,delete t.isDocumentOperation,t}static get className(){return\"Operation\"}static fromJSON(t){return new this(t.baseVersion)}}class _a{constructor(t){this.markers=new Map,this._children=new gs,t&&this._insertChild(0,t)}[Symbol.iterator](){return this.getChildren()}get childCount(){return this._children.length}get maxOffset(){return this._children.maxOffset}get isEmpty(){return 0===this.childCount}get root(){return this}get parent(){return null}is(t){return\"documentFragment\"==t||\"model:documentFragment\"==t}getChild(t){return this._children.getNode(t)}getChildren(){return this._children[Symbol.iterator]()}getChildIndex(t){return this._children.getNodeIndex(t)}getChildStartOffset(t){return this._children.getNodeStartOffset(t)}getPath(){return[]}getNodeByPath(t){let e=this;for(const n of t)e=e.getChild(e.offsetToIndex(n));return e}offsetToIndex(t){return this._children.offsetToIndex(t)}toJSON(){const t=[];for(const e of this._children)t.push(e.toJSON());return t}static fromJSON(t){const e=[];for(const n of t)n.name?e.push(ps.fromJSON(n)):e.push(fs.fromJSON(n));return new _a(e)}_appendChild(t){this._insertChild(this.childCount,t)}_insertChild(t,e){const n=function(t){if(\"string\"==typeof t)return[new fs(t)];Dn(t)||(t=[t]);return Array.from(t).map(t=>\"string\"==typeof t?new fs(t):t instanceof ms?new fs(t.data,t.getAttributes()):t)}(e);for(const t of n)null!==t.parent&&t._remove(),t.parent=this;this._children._insertNodes(t,n)}_removeChildren(t,e=1){const n=this._children._removeNodes(t,e);for(const t of n)t.parent=null;return n}}function va(t,e){const n=(e=Aa(e)).reduce((t,e)=>t+e.offsetSize,0),i=t.parent;Ta(t);const o=t.index;return i._insertChild(o,e),Ca(i,o+e.length),Ca(i,o),new _s(t,t.getShiftedBy(n))}function ya(t){if(!t.isFlat)throw new un.b(\"operation-utils-remove-range-not-flat: Trying to remove a range which starts and ends in different element.\",this);const e=t.start.parent;Ta(t.start),Ta(t.end);const n=e._removeChildren(t.start.index,t.end.index-t.start.index);return Ca(e,t.start.index),n}function xa(t,e){if(!t.isFlat)throw new un.b(\"operation-utils-move-range-not-flat: Trying to move a range which starts and ends in different element.\",this);const n=ya(t);return va(e=e._getTransformedByDeletion(t.start,t.end.offset-t.start.offset),n)}function Aa(t){const e=[];t instanceof Array||(t=[t]);for(let n=0;nt.maxOffset)throw new un.b(\"move-operation-nodes-do-not-exist: The nodes which should be moved do not exist.\",this);if(t===e&&n=n&&this.targetPosition.path[t]t._clone(!0))),e=new Na(this.position,t,this.baseVersion);return e.shouldReceiveAttributes=this.shouldReceiveAttributes,e}getReversed(){const t=this.position.root.document.graveyard,e=new ks(t,[0]);return new Ia(this.position,this.nodes.maxOffset,e,this.baseVersion+1)}_validate(){const t=this.position.parent;if(!t||t.maxOffsett._clone(!0))),va(this.position,t)}toJSON(){const t=super.toJSON();return t.position=this.position.toJSON(),t.nodes=this.nodes.toJSON(),t}static get className(){return\"InsertOperation\"}static fromJSON(t,e){const n=[];for(const e of t.nodes)e.name?n.push(ps.fromJSON(e)):n.push(fs.fromJSON(e));const i=new Na(ks.fromJSON(t.position,e),n,t.baseVersion);return i.shouldReceiveAttributes=t.shouldReceiveAttributes,i}}class Oa extends ka{constructor(t,e,n,i,o,r){super(r),this.name=t,this.oldRange=e?e.clone():null,this.newRange=n?n.clone():null,this.affectsData=o,this._markers=i}get type(){return\"marker\"}clone(){return new Oa(this.name,this.oldRange,this.newRange,this._markers,this.affectsData,this.baseVersion)}getReversed(){return new Oa(this.name,this.newRange,this.oldRange,this._markers,this.affectsData,this.baseVersion+1)}_execute(){const t=this.newRange?\"_set\":\"_remove\";this._markers[t](this.name,this.newRange,!0,this.affectsData)}toJSON(){const t=super.toJSON();return this.oldRange&&(t.oldRange=this.oldRange.toJSON()),this.newRange&&(t.newRange=this.newRange.toJSON()),delete t._markers,t}static get className(){return\"MarkerOperation\"}static fromJSON(t,e){return new Oa(t.name,t.oldRange?_s.fromJSON(t.oldRange,e):null,t.newRange?_s.fromJSON(t.newRange,e):null,e.model.markers,t.affectsData,t.baseVersion)}}class Ra extends ka{constructor(t,e,n,i){super(i),this.position=t,this.position.stickiness=\"toNext\",this.oldName=e,this.newName=n}get type(){return\"rename\"}clone(){return new Ra(this.position.clone(),this.oldName,this.newName,this.baseVersion)}getReversed(){return new Ra(this.position.clone(),this.newName,this.oldName,this.baseVersion+1)}_validate(){const t=this.position.nodeAfter;if(!(t instanceof ps))throw new un.b(\"rename-operation-wrong-position: Given position is invalid or node after it is not an instance of Element.\",this);if(t.name!==this.oldName)throw new un.b(\"rename-operation-wrong-name: Element to change has different name than operation's old name.\",this)}_execute(){this.position.nodeAfter.name=this.newName}toJSON(){const t=super.toJSON();return t.position=this.position.toJSON(),t}static get className(){return\"RenameOperation\"}static fromJSON(t,e){return new Ra(ks.fromJSON(t.position,e),t.oldName,t.newName,t.baseVersion)}}class Da extends ka{constructor(t,e,n,i,o){super(o),this.root=t,this.key=e,this.oldValue=n,this.newValue=i}get type(){return null===this.oldValue?\"addRootAttribute\":null===this.newValue?\"removeRootAttribute\":\"changeRootAttribute\"}clone(){return new Da(this.root,this.key,this.oldValue,this.newValue,this.baseVersion)}getReversed(){return new Da(this.root,this.key,this.newValue,this.oldValue,this.baseVersion+1)}_validate(){if(this.root!=this.root.root||this.root.is(\"documentFragment\"))throw new un.b(\"rootattribute-operation-not-a-root: The element to change is not a root element.\",this,{root:this.root,key:this.key});if(null!==this.oldValue&&this.root.getAttribute(this.key)!==this.oldValue)throw new un.b(\"rootattribute-operation-wrong-old-value: Changed node has different attribute value than operation's old attribute value.\",this,{root:this.root,key:this.key});if(null===this.oldValue&&null!==this.newValue&&this.root.hasAttribute(this.key))throw new un.b(\"rootattribute-operation-attribute-exists: The attribute with given key already exists.\",this,{root:this.root,key:this.key})}_execute(){null!==this.newValue?this.root._setAttribute(this.key,this.newValue):this.root._removeAttribute(this.key)}toJSON(){const t=super.toJSON();return t.root=this.root.toJSON(),t}static get className(){return\"RootAttributeOperation\"}static fromJSON(t,e){if(!e.getRoot(t.root))throw new un.b(\"rootattribute-operation-fromjson-no-root: Cannot create RootAttributeOperation. Root with specified name does not exist.\",this,{rootName:t.root});return new Da(e.getRoot(t.root),t.key,t.oldValue,t.newValue,t.baseVersion)}}class La extends ka{constructor(t,e,n,i,o){super(o),this.sourcePosition=t.clone(),this.sourcePosition.stickiness=\"toPrevious\",this.howMany=e,this.targetPosition=n.clone(),this.targetPosition.stickiness=\"toNext\",this.graveyardPosition=i.clone()}get type(){return\"merge\"}get deletionPosition(){return new ks(this.sourcePosition.root,this.sourcePosition.path.slice(0,-1))}get movedRange(){const t=this.sourcePosition.getShiftedBy(Number.POSITIVE_INFINITY);return new _s(this.sourcePosition,t)}clone(){return new this.constructor(this.sourcePosition,this.howMany,this.targetPosition,this.graveyardPosition,this.baseVersion)}getReversed(){const t=this.targetPosition._getTransformedByMergeOperation(this),e=this.sourcePosition.path.slice(0,-1),n=new ks(this.sourcePosition.root,e)._getTransformedByMergeOperation(this),i=new ja(t,this.howMany,this.graveyardPosition,this.baseVersion+1);return i.insertionPosition=n,i}_validate(){const t=this.sourcePosition.parent,e=this.targetPosition.parent;if(!t.parent)throw new un.b(\"merge-operation-source-position-invalid: Merge source position is invalid.\",this);if(!e.parent)throw new un.b(\"merge-operation-target-position-invalid: Merge target position is invalid.\",this);if(this.howMany!=t.maxOffset)throw new un.b(\"merge-operation-how-many-invalid: Merge operation specifies wrong number of nodes to move.\",this)}_execute(){const t=this.sourcePosition.parent;xa(_s._createIn(t),this.targetPosition),xa(_s._createOn(t),this.graveyardPosition)}toJSON(){const t=super.toJSON();return t.sourcePosition=t.sourcePosition.toJSON(),t.targetPosition=t.targetPosition.toJSON(),t.graveyardPosition=t.graveyardPosition.toJSON(),t}static get className(){return\"MergeOperation\"}static fromJSON(t,e){const n=ks.fromJSON(t.sourcePosition,e),i=ks.fromJSON(t.targetPosition,e),o=ks.fromJSON(t.graveyardPosition,e);return new this(n,t.howMany,i,o,t.baseVersion)}}class ja extends ka{constructor(t,e,n,i){super(i),this.splitPosition=t.clone(),this.splitPosition.stickiness=\"toNext\",this.howMany=e,this.insertionPosition=ja.getInsertionPosition(t),this.insertionPosition.stickiness=\"toNone\",this.graveyardPosition=n?n.clone():null,this.graveyardPosition&&(this.graveyardPosition.stickiness=\"toNext\")}get type(){return\"split\"}get moveTargetPosition(){const t=this.insertionPosition.path.slice();return t.push(0),new ks(this.insertionPosition.root,t)}get movedRange(){const t=this.splitPosition.getShiftedBy(Number.POSITIVE_INFINITY);return new _s(this.splitPosition,t)}clone(){const t=new this.constructor(this.splitPosition,this.howMany,this.graveyardPosition,this.baseVersion);return t.insertionPosition=this.insertionPosition,t}getReversed(){const t=this.splitPosition.root.document.graveyard,e=new ks(t,[0]);return new La(this.moveTargetPosition,this.howMany,this.splitPosition,e,this.baseVersion+1)}_validate(){const t=this.splitPosition.parent,e=this.splitPosition.offset;if(!t||t.maxOffset{for(const e of t.getAttributeKeys())this.removeAttribute(e,t)};if(t instanceof _s)for(const n of t.getItems())e(n);else e(t)}move(t,e,n){if(this._assertWriterUsedCorrectly(),!(t instanceof _s))throw new un.b(\"writer-move-invalid-range: Invalid range to move.\",this);if(!t.isFlat)throw new un.b(\"writer-move-range-not-flat: Range to move is not flat.\",this);const i=ks._createAt(e,n);if(i.isEqual(t.start))return;if(this._addOperationForAffectedMarkers(\"move\",t),!qa(t.root,i.root))throw new un.b(\"writer-move-different-document: Range is going to be moved between different documents.\",this);const o=t.root.document?t.root.document.version:null,r=new Ia(t.start,t.end.offset-t.start.offset,i,o);this.batch.addOperation(r),this.model.applyOperation(r)}remove(t){this._assertWriterUsedCorrectly();const e=(t instanceof _s?t:_s._createOn(t)).getMinimalFlatRanges().reverse();for(const t of e)this._addOperationForAffectedMarkers(\"move\",t),Ha(t.start,t.end.offset-t.start.offset,this.batch,this.model)}merge(t){this._assertWriterUsedCorrectly();const e=t.nodeBefore,n=t.nodeAfter;if(this._addOperationForAffectedMarkers(\"merge\",t),!(e instanceof ps))throw new un.b(\"writer-merge-no-element-before: Node before merge position must be an element.\",this);if(!(n instanceof ps))throw new un.b(\"writer-merge-no-element-after: Node after merge position must be an element.\",this);t.root.document?this._merge(t):this._mergeDetached(t)}createPositionFromPath(t,e,n){return this.model.createPositionFromPath(t,e,n)}createPositionAt(t,e){return this.model.createPositionAt(t,e)}createPositionAfter(t){return this.model.createPositionAfter(t)}createPositionBefore(t){return this.model.createPositionBefore(t)}createRange(t,e){return this.model.createRange(t,e)}createRangeIn(t){return this.model.createRangeIn(t)}createRangeOn(t){return this.model.createRangeOn(t)}createSelection(t,e,n){return this.model.createSelection(t,e,n)}_mergeDetached(t){const e=t.nodeBefore,n=t.nodeAfter;this.move(_s._createIn(n),ks._createAt(e,\"end\")),this.remove(n)}_merge(t){const e=ks._createAt(t.nodeBefore,\"end\"),n=ks._createAt(t.nodeAfter,0),i=t.root.document.graveyard,o=new ks(i,[0]),r=t.root.document.version,s=new La(n,t.nodeAfter.maxOffset,e,o,r);this.batch.addOperation(s),this.model.applyOperation(s)}rename(t,e){if(this._assertWriterUsedCorrectly(),!(t instanceof ps))throw new un.b(\"writer-rename-not-element-instance: Trying to rename an object which is not an instance of Element.\",this);const n=t.root.document?t.root.document.version:null,i=new Ra(ks._createBefore(t),t.name,e,n);this.batch.addOperation(i),this.model.applyOperation(i)}split(t,e){this._assertWriterUsedCorrectly();let n,i,o=t.parent;if(!o.parent)throw new un.b(\"writer-split-element-no-parent: Element with no parent can not be split.\",this);if(e||(e=o.parent),!t.parent.getAncestors({includeSelf:!0}).includes(e))throw new un.b(\"writer-split-invalid-limit-element: Limit element is not a position ancestor.\",this);do{const e=o.root.document?o.root.document.version:null,r=o.maxOffset-t.offset,s=new ja(t,r,null,e);this.batch.addOperation(s),this.model.applyOperation(s),n||i||(n=o,i=t.parent.nextSibling),o=(t=this.createPositionAfter(t.parent)).parent}while(o!==e);return{position:t,range:new _s(ks._createAt(n,\"end\"),ks._createAt(i,0))}}wrap(t,e){if(this._assertWriterUsedCorrectly(),!t.isFlat)throw new un.b(\"writer-wrap-range-not-flat: Range to wrap is not flat.\",this);const n=e instanceof ps?e:new ps(e);if(n.childCount>0)throw new un.b(\"writer-wrap-element-not-empty: Element to wrap with is not empty.\",this);if(null!==n.parent)throw new un.b(\"writer-wrap-element-attached: Element to wrap with is already attached to tree model.\",this);this.insert(n,t.start);const i=new _s(t.start.getShiftedBy(1),t.end.getShiftedBy(1));this.move(i,ks._createAt(n,0))}unwrap(t){if(this._assertWriterUsedCorrectly(),null===t.parent)throw new un.b(\"writer-unwrap-element-no-parent: Trying to unwrap an element which has no parent.\",this);this.move(_s._createIn(t),this.createPositionAfter(t)),this.remove(t)}addMarker(t,e){if(this._assertWriterUsedCorrectly(),!e||\"boolean\"!=typeof e.usingOperation)throw new un.b(\"writer-addMarker-no-usingOperation: The options.usingOperation parameter is required when adding a new marker.\",this);const n=e.usingOperation,i=e.range,o=void 0!==e.affectsData&&e.affectsData;if(this.model.markers.has(t))throw new un.b(\"writer-addMarker-marker-exists: Marker with provided name already exists.\",this);if(!i)throw new un.b(\"writer-addMarker-no-range: Range parameter is required when adding a new marker.\",this);return n?(Ua(this,t,null,i,o),this.model.markers.get(t)):this.model.markers._set(t,i,n,o)}updateMarker(t,e){this._assertWriterUsedCorrectly();const n=\"string\"==typeof t?t:t.name,i=this.model.markers.get(n);if(!i)throw new un.b(\"writer-updateMarker-marker-not-exists: Marker with provided name does not exists.\",this);if(!e)return void this.model.markers._refresh(i);const o=\"boolean\"==typeof e.usingOperation,r=\"boolean\"==typeof e.affectsData,s=r?e.affectsData:i.affectsData;if(!o&&!e.range&&!r)throw new un.b(\"writer-updateMarker-wrong-options: One of the options is required - provide range, usingOperations or affectsData.\",this);const a=i.getRange(),c=e.range?e.range:a;o&&e.usingOperation!==i.managedUsingOperations?e.usingOperation?Ua(this,n,null,c,s):(Ua(this,n,a,null,s),this.model.markers._set(n,c,void 0,s)):i.managedUsingOperations?Ua(this,n,a,c,s):this.model.markers._set(n,c,void 0,s)}removeMarker(t){this._assertWriterUsedCorrectly();const e=\"string\"==typeof t?t:t.name;if(!this.model.markers.has(e))throw new un.b(\"writer-removeMarker-no-marker: Trying to remove marker which does not exist.\",this);const n=this.model.markers.get(e);n.managedUsingOperations?Ua(this,e,n.getRange(),null,n.affectsData):this.model.markers._remove(e)}setSelection(t,e,n){this._assertWriterUsedCorrectly(),this.model.document.selection._setTo(t,e,n)}setSelectionFocus(t,e){this._assertWriterUsedCorrectly(),this.model.document.selection._setFocus(t,e)}setSelectionAttribute(t,e){if(this._assertWriterUsedCorrectly(),\"string\"==typeof t)this._setSelectionAttribute(t,e);else for(const[e,n]of Ln(t))this._setSelectionAttribute(e,n)}removeSelectionAttribute(t){if(this._assertWriterUsedCorrectly(),\"string\"==typeof t)this._removeSelectionAttribute(t);else for(const e of t)this._removeSelectionAttribute(e)}overrideSelectionGravity(){return this.model.document.selection._overrideGravity()}restoreSelectionGravity(t){this.model.document.selection._restoreGravity(t)}_setSelectionAttribute(t,e){const n=this.model.document.selection;if(n.isCollapsed&&n.anchor.parent.isEmpty){const i=Rs._getStoreAttributeKey(t);this.setAttribute(i,e,n.anchor.parent)}n._setAttribute(t,e)}_removeSelectionAttribute(t){const e=this.model.document.selection;if(e.isCollapsed&&e.anchor.parent.isEmpty){const n=Rs._getStoreAttributeKey(t);this.removeAttribute(n,e.anchor.parent)}e._removeAttribute(t)}_assertWriterUsedCorrectly(){if(this.model._currentWriter!==this)throw new un.b(\"writer-incorrect-use: Trying to use a writer outside the change() block.\",this)}_addOperationForAffectedMarkers(t,e){for(const n of this.model.markers){if(!n.managedUsingOperations)continue;const i=n.getRange();let o=!1;if(\"move\"==t)o=e.containsPosition(i.start)||e.start.isEqual(i.start)||e.containsPosition(i.end)||e.end.isEqual(i.end);else{const t=e.nodeBefore,n=e.nodeAfter,r=i.start.parent==t&&i.start.isAtEnd,s=i.end.parent==n&&0==i.end.offset,a=i.end.nodeAfter==n,c=i.start.nodeAfter==n;o=r||s||a||c}o&&this.updateMarker(n.name,{range:i})}}}function Ba(t,e,n,i){const o=t.model,r=o.document;let s,a,c,l=i.start;for(const t of i.getWalker({shallow:!0}))c=t.item.getAttribute(e),s&&a!=c&&(a!=n&&d(),l=s),s=t.nextPosition,a=c;function d(){const i=new _s(l,s),c=i.root.document?r.version:null,d=new Ma(i,e,a,n,c);t.batch.addOperation(d),o.applyOperation(d)}s instanceof ks&&s!=l&&a!=n&&d()}function Fa(t,e,n,i){const o=t.model,r=o.document,s=i.getAttribute(e);let a,c;if(s!=n){if(i.root===i){const t=i.document?r.version:null;c=new Da(i,e,s,n,t)}else{a=new _s(ks._createBefore(i),t.createPositionAfter(i));const o=a.root.document?r.version:null;c=new Ma(a,e,s,n,o)}t.batch.addOperation(c),o.applyOperation(c)}}function Ua(t,e,n,i,o){const r=t.model,s=r.document,a=new Oa(e,n,i,r.markers,o,s.version);t.batch.addOperation(a),r.applyOperation(a)}function Ha(t,e,n,i){let o;if(t.root.document){const n=i.document,r=new ks(n.graveyard,[0]);o=new Ia(t,e,r,n.version)}else o=new Ea(t,e);n.addOperation(o),i.applyOperation(o)}function qa(t,e){return t===e||t instanceof Va&&e instanceof Va}class Wa{constructor(t){this._markerCollection=t,this._changesInElement=new Map,this._elementSnapshots=new Map,this._changedMarkers=new Map,this._changeCount=0,this._cachedChanges=null,this._cachedChangesWithGraveyard=null}get isEmpty(){return 0==this._changesInElement.size&&0==this._changedMarkers.size}refreshItem(t){if(this._isInInsertedElement(t.parent))return;this._markRemove(t.parent,t.startOffset,t.offsetSize),this._markInsert(t.parent,t.startOffset,t.offsetSize);const e=_s._createOn(t);for(const t of this._markerCollection.getMarkersIntersectingRange(e)){const e=t.getRange();this.bufferMarkerChange(t.name,e,e,t.affectsData)}this._cachedChanges=null}bufferOperation(t){switch(t.type){case\"insert\":if(this._isInInsertedElement(t.position.parent))return;this._markInsert(t.position.parent,t.position.offset,t.nodes.maxOffset);break;case\"addAttribute\":case\"removeAttribute\":case\"changeAttribute\":for(const e of t.range.getItems({shallow:!0}))this._isInInsertedElement(e.parent)||this._markAttribute(e);break;case\"remove\":case\"move\":case\"reinsert\":{if(t.sourcePosition.isEqual(t.targetPosition)||t.sourcePosition.getShiftedBy(t.howMany).isEqual(t.targetPosition))return;const e=this._isInInsertedElement(t.sourcePosition.parent),n=this._isInInsertedElement(t.targetPosition.parent);e||this._markRemove(t.sourcePosition.parent,t.sourcePosition.offset,t.howMany),n||this._markInsert(t.targetPosition.parent,t.getMovedRangeStart().offset,t.howMany);break}case\"rename\":{if(this._isInInsertedElement(t.position.parent))return;this._markRemove(t.position.parent,t.position.offset,1),this._markInsert(t.position.parent,t.position.offset,1);const e=_s._createFromPositionAndShift(t.position,1);for(const t of this._markerCollection.getMarkersIntersectingRange(e)){const e=t.getRange();this.bufferMarkerChange(t.name,e,e,t.affectsData)}break}case\"split\":{const e=t.splitPosition.parent;this._isInInsertedElement(e)||this._markRemove(e,t.splitPosition.offset,t.howMany),this._isInInsertedElement(t.insertionPosition.parent)||this._markInsert(t.insertionPosition.parent,t.insertionPosition.offset,1),t.graveyardPosition&&this._markRemove(t.graveyardPosition.parent,t.graveyardPosition.offset,1);break}case\"merge\":{const e=t.sourcePosition.parent;this._isInInsertedElement(e.parent)||this._markRemove(e.parent,e.startOffset,1);const n=t.graveyardPosition.parent;this._markInsert(n,t.graveyardPosition.offset,1);const i=t.targetPosition.parent;this._isInInsertedElement(i)||this._markInsert(i,t.targetPosition.offset,e.maxOffset);break}}this._cachedChanges=null}bufferMarkerChange(t,e,n,i){const o=this._changedMarkers.get(t);o?(o.newRange=n,o.affectsData=i,null==o.oldRange&&null==o.newRange&&this._changedMarkers.delete(t)):this._changedMarkers.set(t,{oldRange:e,newRange:n,affectsData:i})}getMarkersToRemove(){const t=[];for(const[e,n]of this._changedMarkers)null!=n.oldRange&&t.push({name:e,range:n.oldRange});return t}getMarkersToAdd(){const t=[];for(const[e,n]of this._changedMarkers)null!=n.newRange&&t.push({name:e,range:n.newRange});return t}getChangedMarkers(){return Array.from(this._changedMarkers).map(t=>({name:t[0],data:{oldRange:t[1].oldRange,newRange:t[1].newRange}}))}hasDataChanges(){for(const[,t]of this._changedMarkers)if(t.affectsData)return!0;return this._changesInElement.size>0}getChanges(t={includeChangesInGraveyard:!1}){if(this._cachedChanges)return t.includeChangesInGraveyard?this._cachedChangesWithGraveyard.slice():this._cachedChanges.slice();const e=[];for(const t of this._changesInElement.keys()){const n=this._changesInElement.get(t).sort((t,e)=>t.offset===e.offset?t.type!=e.type?\"remove\"==t.type?-1:1:0:t.offsett.position.root!=e.position.root?t.position.root.rootNamen.offset){if(i>o){const t={type:\"attribute\",offset:o,howMany:i-o,count:this._changeCount++};this._handleChange(t,e),e.push(t)}t.nodesToHandle=n.offset-t.offset,t.howMany=t.nodesToHandle}else t.offset>=n.offset&&t.offseto?(t.nodesToHandle=i-o,t.offset=o):t.nodesToHandle=0);if(\"remove\"==n.type&&t.offsetn.offset){const o={type:\"attribute\",offset:n.offset,howMany:i-n.offset,count:this._changeCount++};this._handleChange(o,e),e.push(o),t.nodesToHandle=n.offset-t.offset,t.howMany=t.nodesToHandle}\"attribute\"==n.type&&(t.offset>=n.offset&&i<=o?(t.nodesToHandle=0,t.howMany=0,t.offset=0):t.offset<=n.offset&&i>=o&&(n.howMany=0))}}t.howMany=t.nodesToHandle,delete t.nodesToHandle}_getInsertDiff(t,e,n){return{type:\"insert\",position:ks._createAt(t,e),name:n,length:1,changeCount:this._changeCount++}}_getRemoveDiff(t,e,n){return{type:\"remove\",position:ks._createAt(t,e),name:n,length:1,changeCount:this._changeCount++}}_getAttributesDiff(t,e,n){const i=[];n=new Map(n);for(const[o,r]of e){const e=n.has(o)?n.get(o):null;e!==r&&i.push({type:\"attribute\",position:t.start,range:t.clone(),length:1,attributeKey:o,attributeOldValue:r,attributeNewValue:e,changeCount:this._changeCount++}),n.delete(o)}for(const[e,o]of n)i.push({type:\"attribute\",position:t.start,range:t.clone(),length:1,attributeKey:e,attributeOldValue:null,attributeNewValue:o,changeCount:this._changeCount++});return i}_isInInsertedElement(t){const e=t.parent;if(!e)return!1;const n=this._changesInElement.get(e),i=t.startOffset;if(n)for(const t of n)if(\"insert\"==t.type&&i>=t.offset&&ii){for(let e=0;e{const n=e[0];if(n.isDocumentOperation&&n.baseVersion!==this.version)throw new un.b(\"model-document-applyOperation-wrong-version: Only operations with matching versions can be applied.\",this,{operation:n})},{priority:\"highest\"}),this.listenTo(t,\"applyOperation\",(t,e)=>{const n=e[0];n.isDocumentOperation&&this.differ.bufferOperation(n)},{priority:\"high\"}),this.listenTo(t,\"applyOperation\",(t,e)=>{const n=e[0];n.isDocumentOperation&&(this.version++,this.history.addOperation(n))},{priority:\"low\"}),this.listenTo(this.selection,\"change\",()=>{this._hasSelectionChangedFromTheLastChangeBlock=!0}),this.listenTo(t.markers,\"update\",(t,e,n,i)=>{this.differ.bufferMarkerChange(e.name,n,i,e.affectsData),null===n&&e.on(\"change\",(t,n)=>{this.differ.bufferMarkerChange(e.name,n,e.getRange(),e.affectsData)})})}get graveyard(){return this.getRoot(\"$graveyard\")}createRoot(t=\"$root\",e=\"main\"){if(this.roots.get(e))throw new un.b(\"model-document-createRoot-name-exists: Root with specified name already exists.\",this,{name:e});const n=new Va(this,t,e);return this.roots.add(n),n}destroy(){this.selection.destroy(),this.stopListening()}getRoot(t=\"main\"){return this.roots.get(t)}getRootNames(){return Array.from(this.roots,t=>t.rootName).filter(t=>\"$graveyard\"!=t)}registerPostFixer(t){this._postFixers.add(t)}toJSON(){const t=In(this);return t.selection=\"[engine.model.DocumentSelection]\",t.model=\"[engine.model.Model]\",t}_handleChangeBlock(t){this._hasDocumentChangedFromTheLastChangeBlock()&&(this._callPostFixers(t),this.selection.refresh(),this.differ.hasDataChanges()?this.fire(\"change:data\",t.batch):this.fire(\"change\",t.batch),this.selection.refresh(),this.differ.reset()),this._hasSelectionChangedFromTheLastChangeBlock=!1}_hasDocumentChangedFromTheLastChangeBlock(){return!this.differ.isEmpty||this._hasSelectionChangedFromTheLastChangeBlock}_getDefaultRoot(){for(const t of this.roots)if(t!==this.graveyard)return t;return this.graveyard}_getDefaultRange(){const t=this._getDefaultRoot(),e=this.model,n=e.schema,i=e.createPositionFromPath(t,[0]);return n.getNearestSelectionRange(i)||e.createRange(i)}_validateSelectionRange(t){return Xa(t.start)&&Xa(t.end)}_callPostFixers(t){let e=!1;do{for(const n of this._postFixers)if(this.selection.refresh(),e=n(t),e)break}while(e)}}function Xa(t){const e=t.textNode;if(e){const n=e.data,i=t.offset-e.startOffset;return!Ka(n,i)&&!Ja(n,i)}return!0}yn(Za,gn);class tc{constructor(){this._markers=new Map}[Symbol.iterator](){return this._markers.values()}has(t){return this._markers.has(t)}get(t){return this._markers.get(t)||null}_set(t,e,n=!1,i=!1){const o=t instanceof ec?t.name:t,r=this._markers.get(o);if(r){const t=r.getRange();let s=!1;return t.isEqual(e)||(r._attachLiveRange(Is.fromRange(e)),s=!0),n!=r.managedUsingOperations&&(r._managedUsingOperations=n,s=!0),\"boolean\"==typeof i&&i!=r.affectsData&&(r._affectsData=i,s=!0),s&&this.fire(\"update:\"+o,r,t,e),r}const s=Is.fromRange(e),a=new ec(o,s,n,i);return this._markers.set(o,a),this.fire(\"update:\"+o,a,null,e),a}_remove(t){const e=t instanceof ec?t.name:t,n=this._markers.get(e);return!!n&&(this._markers.delete(e),this.fire(\"update:\"+e,n,n.getRange(),null),this._destroyMarker(n),!0)}_refresh(t){const e=t instanceof ec?t.name:t,n=this._markers.get(e);if(!n)throw new un.b(\"markercollection-refresh-marker-not-exists: Marker with provided name does not exists.\",this);const i=n.getRange();this.fire(\"update:\"+e,n,i,i,n.managedUsingOperations,n.affectsData)}*getMarkersAtPosition(t){for(const e of this)e.getRange().containsPosition(t)&&(yield e)}*getMarkersIntersectingRange(t){for(const e of this)null!==e.getRange().getIntersection(t)&&(yield e)}destroy(){for(const t of this._markers.values())this._destroyMarker(t);this._markers=null,this.stopListening()}*getMarkersGroup(t){for(const e of this._markers.values())e.name.startsWith(t+\":\")&&(yield e)}_destroyMarker(t){t.stopListening(),t._detachLiveRange()}}yn(tc,gn);class ec{constructor(t,e,n,i){this.name=t,this._liveRange=this._attachLiveRange(e),this._managedUsingOperations=n,this._affectsData=i}get managedUsingOperations(){if(!this._liveRange)throw new un.b(\"marker-destroyed: Cannot use a destroyed marker instance.\",this);return this._managedUsingOperations}get affectsData(){if(!this._liveRange)throw new un.b(\"marker-destroyed: Cannot use a destroyed marker instance.\",this);return this._affectsData}getStart(){if(!this._liveRange)throw new un.b(\"marker-destroyed: Cannot use a destroyed marker instance.\",this);return this._liveRange.start.clone()}getEnd(){if(!this._liveRange)throw new un.b(\"marker-destroyed: Cannot use a destroyed marker instance.\",this);return this._liveRange.end.clone()}getRange(){if(!this._liveRange)throw new un.b(\"marker-destroyed: Cannot use a destroyed marker instance.\",this);return this._liveRange.toRange()}is(t){return\"marker\"==t||\"model:marker\"==t}_attachLiveRange(t){return this._liveRange&&this._detachLiveRange(),t.delegate(\"change:range\").to(this),t.delegate(\"change:content\").to(this),this._liveRange=t,t}_detachLiveRange(){this._liveRange.stopDelegating(\"change:range\",this),this._liveRange.stopDelegating(\"change:content\",this),this._liveRange.detach(),this._liveRange=null}}yn(ec,gn);class nc extends ka{get type(){return\"noop\"}clone(){return new nc(this.baseVersion)}getReversed(){return new nc(this.baseVersion+1)}_execute(){}static get className(){return\"NoOperation\"}}const ic={};ic[Ma.className]=Ma,ic[Na.className]=Na,ic[Oa.className]=Oa,ic[Ia.className]=Ia,ic[nc.className]=nc,ic[ka.className]=ka,ic[Ra.className]=Ra,ic[Da.className]=Da,ic[ja.className]=ja,ic[La.className]=La;class oc extends ks{constructor(t,e,n=\"toNone\"){if(super(t,e,n),!this.root.is(\"rootElement\"))throw new un.b(\"model-liveposition-root-not-rootelement: LivePosition's root has to be an instance of RootElement.\",t);rc.call(this)}detach(){this.stopListening()}is(t){return\"livePosition\"==t||\"model:livePosition\"==t||super.is(t)}toPosition(){return new ks(this.root,this.path.slice(),this.stickiness)}static fromPosition(t,e){return new this(t.root,t.path.slice(),e||t.stickiness)}}function rc(){this.listenTo(this.root.document.model,\"applyOperation\",(t,e)=>{const n=e[0];n.isDocumentOperation&&sc.call(this,n)},{priority:\"low\"})}function sc(t){const e=this.getTransformedByOperation(t);if(!this.isEqual(e)){const t=this.toPosition();this.path=e.path,this.root=e.root,this.fire(\"change\",t)}}yn(oc,gn);class ac{constructor(t,e,n){this.model=t,this.writer=e,this.position=n,this.canMergeWith=new Set([this.position.parent]),this.schema=t.schema,this._filterAttributesOf=[],this._affectedStart=null,this._affectedEnd=null}handleNodes(t,e){t=Array.from(t);for(let n=0;n{if(!n.doNotResetEntireContent&&function(t,e){const n=t.getLimitElement(e);if(!e.containsEntireContent(n))return!1;const i=e.getFirstRange();if(i.start.parent==i.end.parent)return!1;return t.checkChild(n,\"paragraph\")}(o,e))return void function(t,e){const n=t.model.schema.getLimitElement(e);t.remove(t.createRangeIn(n)),lc(t,t.createPositionAt(n,0),e)}(t,e);const r=i.start,s=oc.fromPosition(i.end,\"toNext\");i.start.isTouching(i.end)||t.remove(i),n.leaveUnmerged||(!function t(e,n,i){const o=n.parent,r=i.parent;if(o==r)return;if(e.model.schema.isLimit(o)||e.model.schema.isLimit(r))return;if(!function(t,e,n){const i=new _s(t,e);for(const t of i.getWalker())if(n.isLimit(t.item))return!1;return!0}(n,i,e.model.schema))return;n=e.createPositionAfter(o),(i=e.createPositionBefore(r)).isEqual(n)||e.insert(r,n);e.merge(n);for(;i.parent.isEmpty;){const t=i.parent;i=e.createPositionBefore(t),e.remove(t)}t(e,n,i)}(t,r,s),o.removeDisallowedAttributes(r.parent.getChildren(),t)),dc(t,e,r),!n.doNotAutoparagraph&&function(t,e){const n=t.checkChild(e,\"$text\"),i=t.checkChild(e,\"paragraph\");return!n&&i}(o,r)&&lc(t,r,e),s.detach()})}function lc(t,e,n){const i=t.createElement(\"paragraph\");t.insert(i,e),dc(t,n,t.createPositionAt(i,0))}function dc(t,e,n){e instanceof Rs?t.setSelection(n):e.setTo(n)}function hc(t,e){if(\"text\"==e.type)return\"word\"===t.unit?function(t,e){let n=t.position.textNode;if(n){let i=t.position.offset-n.startOffset;for(;!fc(n.data,i,e)&&!mc(n,i,e);){t.next();const o=e?t.position.nodeAfter:t.position.nodeBefore;if(o&&o.is(\"text\")){const i=o.data.charAt(e?0:o.data.length-1);' ,.?!:;\"-()'.includes(i)||(t.next(),n=t.position.textNode)}i=t.position.offset-n.startOffset}}return t.position}(t.walker,t.isForward):function(t,e){const n=t.position.textNode;if(n){const i=n.data;let o=t.position.offset-n.startOffset;for(;Ka(i,o)||\"character\"==e&&Ja(i,o);)t.next(),o=t.position.offset-n.startOffset}return t.position}(t.walker,t.unit,t.isForward);if(e.type==(t.isForward?\"elementStart\":\"elementEnd\")){if(t.schema.isObject(e.item))return ks._createAt(e.item,t.isForward?\"after\":\"before\");if(t.schema.checkChild(e.nextPosition,\"$text\"))return e.nextPosition}else{if(t.schema.isLimit(e.item))return void t.walker.skip(()=>!0);if(t.schema.checkChild(e.nextPosition,\"$text\"))return e.nextPosition}}function uc(t,e){const n=t.root,i=ks._createAt(n,e?\"end\":0);return e?new _s(t,i):new _s(i,t)}function fc(t,e,n){const i=e+(n?0:-1);return' ,.?!:;\"-()'.includes(t.charAt(i))}function mc(t,e,n){return e===(n?t.endOffset:0)}function gc(t,e){const n=[];Array.from(t.getItems({direction:\"backward\"})).map(t=>e.createRangeOn(t)).filter(e=>(e.start.isAfter(t.start)||e.start.isEqual(t.start))&&(e.end.isBefore(t.end)||e.end.isEqual(t.end))).forEach(t=>{n.push(t.start.parent),e.remove(t)}),n.forEach(t=>{let n=t;for(;n.parent&&n.isEmpty;){const t=e.createRangeOn(n);n=n.parent,e.remove(t)}})}function pc(t){t.document.registerPostFixer(e=>function(t,e){const n=e.document.selection,i=e.schema,o=[];let r=!1;for(const t of n.getRanges()){const e=bc(t,i);e?(o.push(e),r=!0):o.push(t)}r&&t.setSelection(function(t){const e=[];e.push(t.shift());for(const n of t){const t=e.pop();if(n.isIntersecting(t)){const i=t.start.isAfter(n.start)?n.start:t.start,o=t.end.isAfter(n.end)?t.end:n.end,r=new _s(i,o);e.push(r)}else e.push(t),e.push(n)}return e}(o),{backward:n.isBackward})}(e,t))}function bc(t,e){return t.isCollapsed?function(t,e){const n=t.start,i=e.getNearestSelectionRange(n);if(!i)return null;if(!i.isCollapsed)return i;const o=i.start;if(n.isEqual(o))return null;return new _s(o)}(t,e):function(t,e){const n=t.start,i=t.end,o=e.checkChild(n,\"$text\"),r=e.checkChild(i,\"$text\"),s=e.getLimitElement(n),a=e.getLimitElement(i);if(s===a){if(o&&r)return null;if(function(t,e,n){const i=t.nodeAfter&&!n.isLimit(t.nodeAfter)||n.checkChild(t,\"$text\"),o=e.nodeBefore&&!n.isLimit(e.nodeBefore)||n.checkChild(e,\"$text\");return i||o}(n,i,e)){const t=n.nodeAfter&&e.isObject(n.nodeAfter)?null:e.getNearestSelectionRange(n,\"forward\"),o=i.nodeBefore&&e.isObject(i.nodeBefore)?null:e.getNearestSelectionRange(i,\"backward\"),r=t?t.start:n,s=o?o.start:i;return new _s(r,s)}}const c=s&&!s.is(\"rootElement\"),l=a&&!a.is(\"rootElement\");if(c||l){const t=n.nodeAfter&&i.nodeBefore&&n.nodeAfter.parent===i.nodeBefore.parent,o=c&&(!t||!kc(n.nodeAfter,e)),r=l&&(!t||!kc(i.nodeBefore,e));let d=n,h=i;return o&&(d=ks._createBefore(wc(s,e))),r&&(h=ks._createAfter(wc(a,e))),new _s(d,h)}return null}(t,e)}function wc(t,e){let n=t,i=n;for(;e.isLimit(i)&&i.parent;)n=i,i=i.parent;return n}function kc(t,e){return t&&e.isObject(t)}class _c{constructor(){this.markers=new tc,this.document=new Za(this),this.schema=new ta,this._pendingChanges=[],this._currentWriter=null,[\"insertContent\",\"deleteContent\",\"modifySelection\",\"getSelectedContent\",\"applyOperation\"].forEach(t=>this.decorate(t)),this.on(\"applyOperation\",(t,e)=>{e[0]._validate()},{priority:\"highest\"}),this.schema.register(\"$root\",{isLimit:!0}),this.schema.register(\"$block\",{allowIn:\"$root\",isBlock:!0}),this.schema.register(\"$text\",{allowIn:\"$block\",isInline:!0}),this.schema.register(\"$clipboardHolder\",{allowContentOf:\"$root\",isLimit:!0}),this.schema.extend(\"$text\",{allowIn:\"$clipboardHolder\"}),this.schema.register(\"$marker\"),this.schema.addChildCheck((t,e)=>{if(\"$marker\"===e.name)return!0}),pc(this)}change(t){try{return 0===this._pendingChanges.length?(this._pendingChanges.push({batch:new wa,callback:t}),this._runPendingChanges()[0]):t(this._currentWriter)}catch(t){un.b.rethrowUnexpectedError(t,this)}}enqueueChange(t,e){try{\"string\"==typeof t?t=new wa(t):\"function\"==typeof t&&(e=t,t=new wa),this._pendingChanges.push({batch:t,callback:e}),1==this._pendingChanges.length&&this._runPendingChanges()}catch(t){un.b.rethrowUnexpectedError(t,this)}}applyOperation(t){t._execute()}insertContent(t,e,n){return function(t,e,n,i){return t.change(o=>{let r;r=n?n instanceof Ts||n instanceof Rs?n:o.createSelection(n,i):t.document.selection,r.isCollapsed||t.deleteContent(r,{doNotAutoparagraph:!0});const s=new ac(t,o,r.anchor);let a;a=e.is(\"documentFragment\")?e.getChildren():[e],s.handleNodes(a,{isFirst:!0,isLast:!0});const c=s.getSelectionRange();c&&(r instanceof Rs?o.setSelection(c):r.setTo(c));const l=s.getAffectedRange()||t.createRange(r.anchor);return s.destroy(),l})}(this,t,e,n)}deleteContent(t,e){cc(this,t,e)}modifySelection(t,e){!function(t,e,n={}){const i=t.schema,o=\"backward\"!=n.direction,r=n.unit?n.unit:\"character\",s=e.focus,a=new bs({boundaries:uc(s,o),singleCharacters:!0,direction:o?\"forward\":\"backward\"}),c={walker:a,schema:i,isForward:o,unit:r};let l;for(;l=a.next();){if(l.done)return;const n=hc(c,l.value);if(n)return void(e instanceof Rs?t.change(t=>{t.setSelectionFocus(n)}):e.setFocus(n))}}(this,t,e)}getSelectedContent(t){return function(t,e){return t.change(t=>{const n=t.createDocumentFragment(),i=e.getFirstRange();if(!i||i.isCollapsed)return n;const o=i.start.root,r=i.start.getCommonPath(i.end),s=o.getNodeByPath(r);let a;a=i.start.parent==i.end.parent?i:t.createRange(t.createPositionAt(s,i.start.path[r.length]),t.createPositionAt(s,i.end.path[r.length]+1));const c=a.end.offset-a.start.offset;for(const e of a.getItems({shallow:!0}))e.is(\"textProxy\")?t.appendText(e.data,e.getAttributes(),n):t.append(e._clone(!0),n);if(a!=i){const e=i._getTransformedByMove(a.start,t.createPositionAt(n,0),c)[0],o=t.createRange(t.createPositionAt(n,0),e.start);gc(t.createRange(e.end,t.createPositionAt(n,\"end\")),t),gc(o,t)}return n})}(this,t)}hasContent(t,e){const n=t instanceof ps?_s._createIn(t):t;if(n.isCollapsed)return!1;for(const t of this.markers.getMarkersIntersectingRange(n))if(t.affectsData)return!0;const{ignoreWhitespaces:i=!1}=e||{};for(const t of n.getItems())if(t.is(\"textProxy\")){if(!i)return!0;if(-1!==t.data.search(/\\S/))return!0}else if(this.schema.isObject(t))return!0;return!1}createPositionFromPath(t,e,n){return new ks(t,e,n)}createPositionAt(t,e){return ks._createAt(t,e)}createPositionAfter(t){return ks._createAfter(t)}createPositionBefore(t){return ks._createBefore(t)}createRange(t,e){return new _s(t,e)}createRangeIn(t){return _s._createIn(t)}createRangeOn(t){return _s._createOn(t)}createSelection(t,e,n){return new Ts(t,e,n)}createBatch(t){return new wa(t)}createOperationFromJSON(t){return class{static fromJSON(t,e){return ic[t.__className].fromJSON(t,e)}}.fromJSON(t,this.document)}destroy(){this.document.destroy(),this.stopListening()}_runPendingChanges(){const t=[];for(this.fire(\"_beforeChanges\");this._pendingChanges.length;){const e=this._pendingChanges[0].batch;this._currentWriter=new za(this,e);const n=this._pendingChanges[0].callback(this._currentWriter);t.push(n),this.document._handleChangeBlock(this._currentWriter),this._pendingChanges.shift(),this._currentWriter=null}return this.fire(\"_afterChanges\"),t}}yn(_c,Ui);class vc{constructor(){this._listener=Object.create(cr)}listenTo(t){this._listener.listenTo(t,\"keydown\",(t,e)=>{this._listener.fire(\"_keydown:\"+po(e),e)})}set(t,e,n={}){const i=bo(t),o=n.priority;this._listener.listenTo(this._listener,\"_keydown:\"+i,(t,n)=>{e(n,()=>{n.preventDefault(),n.stopPropagation(),t.stop()}),t.return=!0},{priority:o})}press(t){return!!this._listener.fire(\"_keydown:\"+po(t),t)}destroy(){this._listener.stopListening()}}class yc extends vc{constructor(t){super(),this.editor=t}set(t,e,n={}){if(\"string\"==typeof e){const t=e;e=(e,n)=>{this.editor.execute(t),n()}}super.set(t,e,n)}}class xc{constructor(t={}){this._context=t.context||new Mn({language:t.language}),this._context._addEditor(this,!t.context);const e=Array.from(this.constructor.builtinPlugins||[]);this.config=new on(t,this.constructor.defaultConfig),this.config.define(\"plugins\",e),this.config.define(this._context._getEditorConfig()),this.plugins=new An(this,e,this._context.plugins),this.locale=this._context.locale,this.t=this.locale.t,this.commands=new Js,this.set(\"state\",\"initializing\"),this.once(\"ready\",()=>this.state=\"ready\",{priority:\"high\"}),this.once(\"destroy\",()=>this.state=\"destroyed\",{priority:\"high\"}),this.set(\"isReadOnly\",!1),this.model=new _c;const n=new Ei;this.data=new ma(this.model,n),this.editing=new Ks(this.model,n),this.editing.view.document.bind(\"isReadOnly\").to(this),this.conversion=new ga([this.editing.downcastDispatcher,this.data.downcastDispatcher],this.data.upcastDispatcher),this.conversion.addAlias(\"dataDowncast\",this.data.downcastDispatcher),this.conversion.addAlias(\"editingDowncast\",this.editing.downcastDispatcher),this.keystrokes=new yc(this),this.keystrokes.listenTo(this.editing.view.document)}initPlugins(){const t=this.config,e=t.get(\"plugins\"),n=t.get(\"removePlugins\")||[],i=t.get(\"extraPlugins\")||[];return this.plugins.init(e.concat(i),n)}destroy(){let t=Promise.resolve();return\"initializing\"==this.state&&(t=new Promise(t=>this.once(\"ready\",t))),t.then(()=>{this.fire(\"destroy\"),this.stopListening(),this.commands.destroy()}).then(()=>this.plugins.destroy()).then(()=>{this.model.destroy(),this.data.destroy(),this.editing.destroy(),this.keystrokes.destroy()}).then(()=>this._context._removeEditor(this))}execute(...t){try{this.commands.execute(...t)}catch(t){un.b.rethrowUnexpectedError(t,this)}}}yn(xc,Ui);var Ac={setData(t){this.data.set(t)},getData(t){return this.data.get(t)}};var Cc={updateSourceElement(){if(!this.sourceElement)throw new un.b(\"editor-missing-sourceelement: Cannot update the source element of a detached editor.\",this);var t,e;t=this.sourceElement,e=this.data.get(),t instanceof HTMLTextAreaElement&&(t.value=e),t.innerHTML=e}};class Tc{getHtml(t){const e=document.implementation.createHTMLDocument(\"\").createElement(\"div\");return e.appendChild(t),e.innerHTML}}class Pc{constructor(t){this._domParser=new DOMParser,this._domConverter=new ir(t,{blockFillerMode:\"nbsp\"}),this._htmlWriter=new Tc}toData(t){const e=this._domConverter.viewToDom(t,document);return this._htmlWriter.getHtml(e)}toView(t){const e=this._toDom(t);return this._domConverter.domToView(e)}_toDom(t){const e=this._domParser.parseFromString(t,\"text/html\"),n=e.createDocumentFragment(),i=e.body.childNodes;for(;i.length>0;)n.appendChild(i[0]);return n}}class Sc{constructor(t){this.editor=t,this._components=new Map}*names(){for(const t of this._components.values())yield t.originalName}add(t,e){if(this.has(t))throw new un.b(\"componentfactory-item-exists: The item already exists in the component factory.\",this,{name:t});this._components.set(Mc(t),{callback:e,originalName:t})}create(t){if(!this.has(t))throw new un.b(\"componentfactory-item-missing: The required component is not registered in the factory.\",this,{name:t});return this._components.get(Mc(t)).callback(this.editor.locale)}has(t){return this._components.has(Mc(t))}}function Mc(t){return String(t).toLowerCase()}class Ec{constructor(){this.set(\"isFocused\",!1),this.set(\"focusedElement\",null),this._elements=new Set,this._nextEventLoopTimeout=null}add(t){if(this._elements.has(t))throw new un.b(\"focusTracker-add-element-already-exist\",this);this.listenTo(t,\"focus\",()=>this._focus(t),{useCapture:!0}),this.listenTo(t,\"blur\",()=>this._blur(),{useCapture:!0}),this._elements.add(t)}remove(t){t===this.focusedElement&&this._blur(t),this._elements.has(t)&&(this.stopListening(t),this._elements.delete(t))}destroy(){this.stopListening()}_focus(t){clearTimeout(this._nextEventLoopTimeout),this.focusedElement=t,this.isFocused=!0}_blur(){clearTimeout(this._nextEventLoopTimeout),this._nextEventLoopTimeout=setTimeout(()=>{this.focusedElement=null,this.isFocused=!1},0)}}yn(Ec,cr),yn(Ec,Ui);class Ic{constructor(t){this.editor=t,this.componentFactory=new Sc(t),this.focusTracker=new Ec,this._editableElementsMap=new Map,this.listenTo(t.editing.view.document,\"layoutChanged\",()=>this.update())}get element(){return null}update(){this.fire(\"update\")}destroy(){this.stopListening(),this.focusTracker.destroy();for(const t of this._editableElementsMap.values())t.ckeditorInstance=null;this._editableElementsMap=new Map}setEditableElement(t,e){this._editableElementsMap.set(t,e),e.ckeditorInstance||(e.ckeditorInstance=this.editor)}getEditableElement(t=\"main\"){return this._editableElementsMap.get(t)}getEditableElementsNames(){return this._editableElementsMap.keys()}get _editableElements(){return console.warn(\"editor-ui-deprecated-editable-elements: The EditorUI#_editableElements property has been deprecated and will be removed in the near future.\",{editorUI:this}),this._editableElementsMap}}yn(Ic,gn);n(13);const Nc=new WeakMap;function Oc(t){const{view:e,element:n,text:i,isDirectHost:o=!0}=t,r=e.document;Nc.has(r)||(Nc.set(r,new Map),r.registerPostFixer(t=>Dc(r,t))),Nc.get(r).set(n,{text:i,isDirectHost:o}),e.change(t=>Dc(r,t))}function Rc(t,e){return!!e.hasClass(\"ck-placeholder\")&&(t.removeClass(\"ck-placeholder\",e),!0)}function Dc(t,e){const n=Nc.get(t);let i=!1;for(const[t,o]of n)Lc(e,t,o)&&(i=!0);return i}function Lc(t,e,n){const{text:i,isDirectHost:o}=n,r=o?e:function(t){if(1===t.childCount){const e=t.getChild(0);if(e.is(\"element\")&&!e.is(\"uiElement\"))return e}return null}(e);let s=!1;return!!r&&(n.hostElement=r,r.getAttribute(\"data-placeholder\")!==i&&(t.setAttribute(\"data-placeholder\",i,r),s=!0),!function(t){if(!t.isAttached())return!1;const e=!Array.from(t.getChildren()).some(t=>!t.is(\"uiElement\")),n=t.document;if(!n.isFocused&&e)return!0;const i=n.selection.anchor;return!(!e||!i||i.parent===t)}(r)?Rc(t,r)&&(s=!0):function(t,e){return!e.hasClass(\"ck-placeholder\")&&(t.addClass(\"ck-placeholder\",e),!0)}(t,r)&&(s=!0),s)}class jc{constructor(){this._replacedElements=[]}replace(t,e){this._replacedElements.push({element:t,newElement:e}),t.style.display=\"none\",e&&t.parentNode.insertBefore(e,t.nextSibling)}restore(){this._replacedElements.forEach(({element:t,newElement:e})=>{t.style.display=\"\",e&&e.remove()}),this._replacedElements=[]}}class Vc extends Ic{constructor(t,e){var n;super(t),this.view=e,this._toolbarConfig=(n=t.config.get(\"toolbar\"),Array.isArray(n)?{items:n}:n?Object.assign({items:[]},n):{items:[]}),this._elementReplacer=new jc}get element(){return this.view.element}init(t){const e=this.editor,n=this.view,i=e.editing.view,o=n.editable,r=i.document.getRoot();o.name=r.rootName,n.render();const s=o.element;this.setEditableElement(o.name,s),this.focusTracker.add(s),n.editable.bind(\"isFocused\").to(this.focusTracker),i.attachDomRoot(s),t&&this._elementReplacer.replace(t,this.element),this._initPlaceholder(),this._initToolbar(),this.fire(\"ready\")}destroy(){const t=this.view,e=this.editor.editing.view;this._elementReplacer.restore(),e.detachDomRoot(t.editable.name),t.destroy(),super.destroy()}_initToolbar(){const t=this.editor,e=this.view,n=t.editing.view;e.stickyPanel.bind(\"isActive\").to(this.focusTracker,\"isFocused\"),e.stickyPanel.limiterElement=e.element,this._toolbarConfig.viewportTopOffset&&(e.stickyPanel.viewportTopOffset=this._toolbarConfig.viewportTopOffset),e.toolbar.fillFromConfig(this._toolbarConfig.items,this.componentFactory),function({origin:t,originKeystrokeHandler:e,originFocusTracker:n,toolbar:i,beforeFocus:o,afterBlur:r}){n.add(i.element),e.set(\"Alt+F10\",(t,e)=>{n.isFocused&&!i.focusTracker.isFocused&&(o&&o(),i.focus(),e())}),i.keystrokes.set(\"Esc\",(e,n)=>{i.focusTracker.isFocused&&(t.focus(),r&&r(),n())})}({origin:n,originFocusTracker:this.focusTracker,originKeystrokeHandler:t.keystrokes,toolbar:e.toolbar})}_initPlaceholder(){const t=this.editor,e=t.editing.view,n=e.document.getRoot(),i=t.sourceElement,o=t.config.get(\"placeholder\")||i&&\"textarea\"===i.tagName.toLowerCase()&&i.getAttribute(\"placeholder\");o&&Oc({view:e,element:n,text:o,isDirectHost:!1})}}class zc extends xn{constructor(t){super({idProperty:\"viewUid\"}),this.on(\"add\",(t,e,n)=>{e.isRendered||e.render(),e.element&&this._parentElement&&this._parentElement.insertBefore(e.element,this._parentElement.children[n])}),this.on(\"remove\",(t,e)=>{e.element&&this._parentElement&&e.element.remove()}),this.locale=t,this._parentElement=null}destroy(){this.map(t=>t.destroy())}setParent(t){this._parentElement=t}delegate(...t){if(!t.length||!t.every(t=>\"string\"==typeof t))throw new un.b(\"ui-viewcollection-delegate-wrong-events: All event names must be strings.\",this);return{to:e=>{for(const n of this)for(const i of t)n.delegate(i).to(e);this.on(\"add\",(n,i)=>{for(const n of t)i.delegate(n).to(e)}),this.on(\"remove\",(n,i)=>{for(const n of t)i.stopDelegating(n,e)})}}}}class Bc{constructor(t){Object.assign(this,Kc(Qc(t))),this._isRendered=!1,this._revertData=null}render(){const t=this._renderNode({intoFragment:!0});return this._isRendered=!0,t}apply(t){return this._revertData={children:[],bindings:[],attributes:{}},this._renderNode({node:t,isApplying:!0,revertData:this._revertData}),t}revert(t){if(!this._revertData)throw new un.b(\"ui-template-revert-not-applied: Attempting to revert a template which has not been applied yet.\",[this,t]);this._revertTemplateFromNode(t,this._revertData)}*getViews(){yield*function*t(e){if(e.children)for(const n of e.children)el(n)?yield n:nl(n)&&(yield*t(n))}(this)}static bind(t,e){return{to:(n,i)=>new Uc({eventNameOrFunction:n,attribute:n,observable:t,emitter:e,callback:i}),if:(n,i,o)=>new Hc({observable:t,emitter:e,attribute:n,valueIfTrue:i,callback:o})}}static extend(t,e){if(t._isRendered)throw new un.b(\"template-extend-render: Attempting to extend a template which has already been rendered.\",[this,t]);!function t(e,n){n.attributes&&(e.attributes||(e.attributes={}),Xc(e.attributes,n.attributes));n.eventListeners&&(e.eventListeners||(e.eventListeners={}),Xc(e.eventListeners,n.eventListeners));n.text&&e.text.push(...n.text);if(n.children&&n.children.length){if(e.children.length!=n.children.length)throw new un.b(\"ui-template-extend-children-mismatch: The number of children in extended definition does not match.\",e);let i=0;for(const o of n.children)t(e.children[i++],o)}}(t,Kc(Qc(e)))}_renderNode(t){let e;if(e=t.node?this.tag&&this.text:this.tag?this.text:!this.text,e)throw new un.b('ui-template-wrong-syntax: Node definition must have either \"tag\" or \"text\" when rendering a new Node.',this);return this.text?this._renderText(t):this._renderElement(t)}_renderElement(t){let e=t.node;return e||(e=t.node=document.createElementNS(this.ns||\"http://www.w3.org/1999/xhtml\",this.tag)),this._renderAttributes(t),this._renderElementChildren(t),this._setUpListeners(t),e}_renderText(t){let e=t.node;return e?t.revertData.text=e.textContent:e=t.node=document.createTextNode(\"\"),qc(this.text)?this._bindToObservable({schema:this.text,updater:Yc(e),data:t}):e.textContent=this.text.join(\"\"),e}_renderAttributes(t){let e,n,i,o;if(!this.attributes)return;const r=t.node,s=t.revertData;for(e in this.attributes)if(i=r.getAttribute(e),n=this.attributes[e],s&&(s.attributes[e]=i),o=j(n[0])&&n[0].ns?n[0].ns:null,qc(n)){const a=o?n[0].value:n;s&&ol(e)&&a.unshift(i),this._bindToObservable({schema:a,updater:$c(r,e,o),data:t})}else\"style\"==e&&\"string\"!=typeof n[0]?this._renderStyleAttribute(n[0],t):(s&&i&&ol(e)&&n.unshift(i),n=n.map(t=>t&&t.value||t).reduce((t,e)=>t.concat(e),[]).reduce(Zc,\"\"),tl(n)||r.setAttributeNS(o,e,n))}_renderStyleAttribute(t,e){const n=e.node;for(const i in t){const o=t[i];qc(o)?this._bindToObservable({schema:[o],updater:Gc(n,i),data:e}):n.style[i]=o}}_renderElementChildren(t){const e=t.node,n=t.intoFragment?document.createDocumentFragment():e,i=t.isApplying;let o=0;for(const r of this.children)if(il(r)){if(!i){r.setParent(e);for(const t of r)n.appendChild(t.element)}}else if(el(r))i||(r.isRendered||r.render(),n.appendChild(r.element));else if(Go(r))n.appendChild(r);else if(i){const e={children:[],bindings:[],attributes:{}};t.revertData.children.push(e),r._renderNode({node:n.childNodes[o++],isApplying:!0,revertData:e})}else n.appendChild(r.render());t.intoFragment&&e.appendChild(n)}_setUpListeners(t){if(this.eventListeners)for(const e in this.eventListeners){const n=this.eventListeners[e].map(n=>{const[i,o]=e.split(\"@\");return n.activateDomEventListener(i,o,t)});t.revertData&&t.revertData.bindings.push(n)}}_bindToObservable({schema:t,updater:e,data:n}){const i=n.revertData;Wc(t,e,n);const o=t.filter(t=>!tl(t)).filter(t=>t.observable).map(i=>i.activateAttributeListener(t,e,n));i&&i.bindings.push(o)}_revertTemplateFromNode(t,e){for(const t of e.bindings)for(const e of t)e();if(e.text)t.textContent=e.text;else{for(const n in e.attributes){const i=e.attributes[n];null===i?t.removeAttribute(n):t.setAttribute(n,i)}for(let n=0;nWc(t,e,n);return this.emitter.listenTo(this.observable,\"change:\"+this.attribute,i),()=>{this.emitter.stopListening(this.observable,\"change:\"+this.attribute,i)}}}class Uc extends Fc{activateDomEventListener(t,e,n){const i=(t,n)=>{e&&!n.target.matches(e)||(\"function\"==typeof this.eventNameOrFunction?this.eventNameOrFunction(n):this.observable.fire(this.eventNameOrFunction,n))};return this.emitter.listenTo(n.node,t,i),()=>{this.emitter.stopListening(n.node,t,i)}}}class Hc extends Fc{getValue(t){return!tl(super.getValue(t))&&(this.valueIfTrue||!0)}}function qc(t){return!!t&&(t.value&&(t=t.value),Array.isArray(t)?t.some(qc):t instanceof Fc)}function Wc(t,e,{node:n}){let i=function(t,e){return t.map(t=>t instanceof Fc?t.getValue(e):t)}(t,n);i=1==t.length&&t[0]instanceof Hc?i[0]:i.reduce(Zc,\"\"),tl(i)?e.remove():e.set(i)}function Yc(t){return{set(e){t.textContent=e},remove(){t.textContent=\"\"}}}function $c(t,e,n){return{set(i){t.setAttributeNS(n,e,i)},remove(){t.removeAttributeNS(n,e)}}}function Gc(t,e){return{set(n){t.style[e]=n},remove(){t.style[e]=null}}}function Qc(t){return en(t,t=>{if(t&&(t instanceof Fc||nl(t)||el(t)||il(t)))return t})}function Kc(t){if(\"string\"==typeof t?t=function(t){return{text:[t]}}(t):t.text&&function(t){Array.isArray(t.text)||(t.text=[t.text])}(t),t.on&&(t.eventListeners=function(t){for(const e in t)Jc(t,e);return t}(t.on),delete t.on),!t.text){t.attributes&&function(t){for(const e in t)t[e].value&&(t[e].value=[].concat(t[e].value)),Jc(t,e)}(t.attributes);const e=[];if(t.children)if(il(t.children))e.push(t.children);else for(const n of t.children)nl(n)||el(n)||Go(n)?e.push(n):e.push(new Bc(n));t.children=e}return t}function Jc(t,e){Array.isArray(t[e])||(t[e]=[t[e]])}function Zc(t,e){return tl(e)?t:tl(t)?e:`${t} ${e}`}function Xc(t,e){for(const n in e)t[n]?t[n].push(...e[n]):t[n]=e[n]}function tl(t){return!t&&0!==t}function el(t){return t instanceof rl}function nl(t){return t instanceof Bc}function il(t){return t instanceof zc}function ol(t){return\"class\"==t||\"style\"==t}n(15);class rl{constructor(t){this.element=null,this.isRendered=!1,this.locale=t,this.t=t&&t.t,this._viewCollections=new xn,this._unboundChildren=this.createCollection(),this._viewCollections.on(\"add\",(e,n)=>{n.locale=t}),this.decorate(\"render\")}get bindTemplate(){return this._bindTemplate?this._bindTemplate:this._bindTemplate=Bc.bind(this,this)}createCollection(){const t=new zc;return this._viewCollections.add(t),t}registerChild(t){Dn(t)||(t=[t]);for(const e of t)this._unboundChildren.add(e)}deregisterChild(t){Dn(t)||(t=[t]);for(const e of t)this._unboundChildren.remove(e)}setTemplate(t){this.template=new Bc(t)}extendTemplate(t){Bc.extend(this.template,t)}render(){if(this.isRendered)throw new un.b(\"ui-view-render-already-rendered: This View has already been rendered.\",this);this.template&&(this.element=this.template.render(),this.registerChild(this.template.getViews())),this.isRendered=!0}destroy(){this.stopListening(),this._viewCollections.map(t=>t.destroy()),this.template&&this.template._revertData&&this.template.revert(this.element)}}yn(rl,cr),yn(rl,Ui);var sl=function(t){return\"string\"==typeof t||!Dt(t)&&p(t)&&\"[object String]\"==f(t)};class al extends zc{attachToDom(){this._bodyCollectionContainer=new Bc({tag:\"div\",attributes:{class:[\"ck\",\"ck-reset_all\",\"ck-body\",\"ck-rounded-corners\"],dir:this.locale.uiLanguageDirection},children:this}).render();let t=document.querySelector(\".ck-body-wrapper\");t||(t=function(t,e,n={},i=[]){const o=n&&n.xmlns,r=o?t.createElementNS(o,e):t.createElement(e);for(const t in n)r.setAttribute(t,n[t]);!sl(i)&&Dn(i)||(i=[i]);for(let e of i)sl(e)&&(e=t.createTextNode(e)),r.appendChild(e);return r}(document,\"div\",{class:\"ck-body-wrapper\"}),document.body.appendChild(t)),t.appendChild(this._bodyCollectionContainer)}detachFromDom(){super.destroy(),this._bodyCollectionContainer&&this._bodyCollectionContainer.remove();const t=document.querySelector(\".ck-body-wrapper\");t&&0==t.childElementCount&&t.remove()}}n(17);class cl extends rl{constructor(t){super(t),this.body=new al(t)}render(){super.render(),this.body.attachToDom()}destroy(){return this.body.detachFromDom(),super.destroy()}}n(19);class ll extends rl{constructor(t){super(t),this.set(\"text\"),this.set(\"for\"),this.id=`ck-editor__label_${dn()}`;const e=this.bindTemplate;this.setTemplate({tag:\"label\",attributes:{class:[\"ck\",\"ck-label\"],id:this.id,for:e.to(\"for\")},children:[{text:e.to(\"text\")}]})}}class dl extends cl{constructor(t){super(t),this.top=this.createCollection(),this.main=this.createCollection(),this._voiceLabelView=this._createVoiceLabel(),this.setTemplate({tag:\"div\",attributes:{class:[\"ck\",\"ck-reset\",\"ck-editor\",\"ck-rounded-corners\"],role:\"application\",dir:t.uiLanguageDirection,lang:t.uiLanguage,\"aria-labelledby\":this._voiceLabelView.id},children:[this._voiceLabelView,{tag:\"div\",attributes:{class:[\"ck\",\"ck-editor__top\",\"ck-reset_all\"],role:\"presentation\"},children:this.top},{tag:\"div\",attributes:{class:[\"ck\",\"ck-editor__main\"],role:\"presentation\"},children:this.main}]})}_createVoiceLabel(){const t=this.t,e=new ll;return e.text=t(\"bj\"),e.extendTemplate({attributes:{class:\"ck-voice-label\"}}),e}}class hl extends rl{constructor(t,e,n){super(t),this.setTemplate({tag:\"div\",attributes:{class:[\"ck\",\"ck-content\",\"ck-editor__editable\",\"ck-rounded-corners\"],lang:t.contentLanguage,dir:t.contentLanguageDirection}}),this.name=null,this.set(\"isFocused\",!1),this._editableElement=n,this._hasExternalElement=!!this._editableElement,this._editingView=e}render(){super.render(),this._hasExternalElement?this.template.apply(this.element=this._editableElement):this._editableElement=this.element,this.on(\"change:isFocused\",()=>this._updateIsFocusedClasses()),this._updateIsFocusedClasses()}destroy(){this._hasExternalElement&&this.template.revert(this._editableElement),super.destroy()}_updateIsFocusedClasses(){const t=this._editingView;function e(e){t.change(n=>{const i=t.document.getRoot(e.name);n.addClass(e.isFocused?\"ck-focused\":\"ck-blurred\",i),n.removeClass(e.isFocused?\"ck-blurred\":\"ck-focused\",i)})}t.isRenderingInProgress?function n(i){t.once(\"change:isRenderingInProgress\",(t,o,r)=>{r?n(i):e(i)})}(this):e(this)}}class ul extends hl{constructor(t,e,n){super(t,e,n),this.extendTemplate({attributes:{role:\"textbox\",class:\"ck-editor__editable_inline\"}})}render(){super.render();const t=this._editingView,e=this.t;t.change(n=>{const i=t.document.getRoot(this.name);n.setAttribute(\"aria-label\",e(\"by\",[this.name]),i)})}}function fl(t){return e=>e+t}n(21);const ml=fl(\"px\");class gl extends rl{constructor(t){super(t);const e=this.bindTemplate;this.set(\"isActive\",!1),this.set(\"isSticky\",!1),this.set(\"limiterElement\",null),this.set(\"limiterBottomOffset\",50),this.set(\"viewportTopOffset\",0),this.set(\"_marginLeft\",null),this.set(\"_isStickyToTheLimiter\",!1),this.set(\"_hasViewportTopOffset\",!1),this.content=this.createCollection(),this._contentPanelPlaceholder=new Bc({tag:\"div\",attributes:{class:[\"ck\",\"ck-sticky-panel__placeholder\"],style:{display:e.to(\"isSticky\",t=>t?\"block\":\"none\"),height:e.to(\"isSticky\",t=>t?ml(this._panelRect.height):null)}}}).render(),this._contentPanel=new Bc({tag:\"div\",attributes:{class:[\"ck\",\"ck-sticky-panel__content\",e.if(\"isSticky\",\"ck-sticky-panel__content_sticky\"),e.if(\"_isStickyToTheLimiter\",\"ck-sticky-panel__content_sticky_bottom-limit\")],style:{width:e.to(\"isSticky\",t=>t?ml(this._contentPanelPlaceholder.getBoundingClientRect().width):null),top:e.to(\"_hasViewportTopOffset\",t=>t?ml(this.viewportTopOffset):null),bottom:e.to(\"_isStickyToTheLimiter\",t=>t?ml(this.limiterBottomOffset):null),marginLeft:e.to(\"_marginLeft\")}},children:this.content}).render(),this.setTemplate({tag:\"div\",attributes:{class:[\"ck\",\"ck-sticky-panel\"]},children:[this._contentPanelPlaceholder,this._contentPanel]})}render(){super.render(),this._checkIfShouldBeSticky(),this.listenTo(Xo.window,\"scroll\",()=>{this._checkIfShouldBeSticky()}),this.listenTo(this,\"change:isActive\",()=>{this._checkIfShouldBeSticky()})}_checkIfShouldBeSticky(){const t=this._panelRect=this._contentPanel.getBoundingClientRect();let e;this.limiterElement?(e=this._limiterRect=this.limiterElement.getBoundingClientRect(),this.isSticky=this.isActive&&e.top{this[e](),n()})}}get first(){return this.focusables.find(bl)||null}get last(){return this.focusables.filter(bl).slice(-1)[0]||null}get next(){return this._getFocusableItem(1)}get previous(){return this._getFocusableItem(-1)}get current(){let t=null;return null===this.focusTracker.focusedElement?null:(this.focusables.find((e,n)=>{const i=e.element===this.focusTracker.focusedElement;return i&&(t=n),i}),t)}focusFirst(){this._focus(this.first)}focusLast(){this._focus(this.last)}focusNext(){this._focus(this.next)}focusPrevious(){this._focus(this.previous)}_focus(t){t&&t.focus()}_getFocusableItem(t){const e=this.current,n=this.focusables.length;if(!n)return null;if(null===e)return this[1===t?\"first\":\"last\"];let i=(e+n+t)%n;do{const e=this.focusables.get(i);if(bl(e))return e;i=(i+n+t)%n}while(i!==e);return null}}function bl(t){return!(!t.focus||\"none\"==Xo.window.getComputedStyle(t.element).display)}class wl extends rl{constructor(t){super(t),this.setTemplate({tag:\"span\",attributes:{class:[\"ck\",\"ck-toolbar__separator\"]}})}}class kl{constructor(t,e){kl._observerInstance||kl._createObserver(),this._element=t,this._callback=e,kl._addElementCallback(t,e),kl._observerInstance.observe(t)}destroy(){kl._deleteElementCallback(this._element,this._callback)}static _addElementCallback(t,e){kl._elementCallbacks||(kl._elementCallbacks=new Map);let n=kl._elementCallbacks.get(t);n||(n=new Set,kl._elementCallbacks.set(t,n)),n.add(e)}static _deleteElementCallback(t,e){const n=kl._getElementCallbacks(t);n&&(n.delete(e),n.size||(kl._elementCallbacks.delete(t),kl._observerInstance.unobserve(t))),kl._elementCallbacks&&!kl._elementCallbacks.size&&(kl._observerInstance=null,kl._elementCallbacks=null)}static _getElementCallbacks(t){return kl._elementCallbacks?kl._elementCallbacks.get(t):null}static _createObserver(){let t;t=\"function\"==typeof Xo.window.ResizeObserver?Xo.window.ResizeObserver:_l,kl._observerInstance=new t(t=>{for(const e of t){const t=kl._getElementCallbacks(e.target);if(t)for(const n of t)n(e)}})}}kl._observerInstance=null,kl._elementCallbacks=null;class _l{constructor(t){this._callback=t,this._elements=new Set,this._previousRects=new Map,this._periodicCheckTimeout=null}observe(t){this._elements.add(t),this._checkElementRectsAndExecuteCallback(),1===this._elements.size&&this._startPeriodicCheck()}unobserve(t){this._elements.delete(t),this._previousRects.delete(t),this._elements.size||this._stopPeriodicCheck()}_startPeriodicCheck(){const t=()=>{this._checkElementRectsAndExecuteCallback(),this._periodicCheckTimeout=setTimeout(t,100)};this.listenTo(Xo.window,\"resize\",()=>{this._checkElementRectsAndExecuteCallback()}),this._periodicCheckTimeout=setTimeout(t,100)}_stopPeriodicCheck(){clearTimeout(this._periodicCheckTimeout),this.stopListening(),this._previousRects.clear()}_checkElementRectsAndExecuteCallback(){const t=[];for(const e of this._elements)this._hasRectChanged(e)&&t.push({target:e,contentRect:this._previousRects.get(e)});t.length&&this._callback(t)}_hasRectChanged(t){if(!t.ownerDocument.body.contains(t))return!1;const e=new Zr(t),n=this._previousRects.get(t),i=!n||!n.isEqual(e);return this._previousRects.set(t,e),i}}yn(_l,cr);class vl extends rl{constructor(t){super(t);const e=this.bindTemplate;this.set(\"isVisible\",!1),this.set(\"position\",\"se\"),this.children=this.createCollection(),this.setTemplate({tag:\"div\",attributes:{class:[\"ck\",\"ck-reset\",\"ck-dropdown__panel\",e.to(\"position\",t=>`ck-dropdown__panel_${t}`),e.if(\"isVisible\",\"ck-dropdown__panel-visible\")]},children:this.children,on:{selectstart:e.to(t=>t.preventDefault())}})}focus(){this.children.length&&this.children.first.focus()}focusLast(){if(this.children.length){const t=this.children.last;\"function\"==typeof t.focusLast?t.focusLast():t.focus()}}}n(23);function yl({element:t,target:e,positions:n,limiter:i,fitInViewport:o}){z(e)&&(e=e()),z(i)&&(i=i());const r=function(t){for(;t&&\"html\"!=t.tagName.toLowerCase();){if(\"static\"!=Xo.window.getComputedStyle(t).position)return t;t=t.parentElement}return null}(t.parentElement),s=new Zr(t),a=new Zr(e);let c,l;if(i||o){const t=i&&new Zr(i).getVisible(),e=o&&new Zr(Xo.window);[l,c]=function(t,e,n,i,o){let r,s,a=0,c=0;const l=n.getArea();return t.some(t=>{const[d,h]=xl(t,e,n);let u,f;if(i)if(o){const t=i.getIntersection(o);u=t?t.getIntersectionArea(h):0}else u=i.getIntersectionArea(h);function m(){c=f,a=u,r=h,s=d}return o&&(f=o.getIntersectionArea(h)),o&&!i?f>c&&m():!o&&i?u>a&&m():(f>c&&u>=a||f>=c&&u>a)&&m(),u===l}),r?[s,r]:null}(n,a,s,t,e)||xl(n[0],a,s)}else[l,c]=xl(n[0],a,s);let{left:d,top:h}=Al(c);if(r){const t=Al(new Zr(r)),e=Kr(r);d-=t.left,h-=t.top,d+=r.scrollLeft,h+=r.scrollTop,d-=e.left,h-=e.top}return{left:d,top:h,name:l}}function xl(t,e,n){const{left:i,top:o,name:r}=t(e,n);return[r,n.clone().moveTo(i,o)]}function Al({left:t,top:e}){const{scrollX:n,scrollY:i}=Xo.window;return{left:t+n,top:e+i}}class Cl extends rl{constructor(t,e,n){super(t);const i=this.bindTemplate;this.buttonView=e,this.panelView=n,this.set(\"isOpen\",!1),this.set(\"isEnabled\",!0),this.set(\"class\"),this.set(\"id\"),this.set(\"panelPosition\",\"auto\"),this.focusTracker=new Ec,this.keystrokes=new vc,this.setTemplate({tag:\"div\",attributes:{class:[\"ck\",\"ck-dropdown\",i.to(\"class\"),i.if(\"isEnabled\",\"ck-disabled\",t=>!t)],id:i.to(\"id\"),\"aria-describedby\":i.to(\"ariaDescribedById\")},children:[e,n]}),e.extendTemplate({attributes:{class:[\"ck-dropdown__button\"]}})}render(){super.render(),this.listenTo(this.buttonView,\"open\",()=>{this.isOpen=!this.isOpen}),this.panelView.bind(\"isVisible\").to(this,\"isOpen\"),this.on(\"change:isOpen\",()=>{this.isOpen&&(\"auto\"===this.panelPosition?this.panelView.position=Cl._getOptimalPosition({element:this.panelView.element,target:this.buttonView.element,fitInViewport:!0,positions:this._panelPositions}).name:this.panelView.position=this.panelPosition)}),this.keystrokes.listenTo(this.element),this.focusTracker.add(this.element);const t=(t,e)=>{this.isOpen&&(this.buttonView.focus(),this.isOpen=!1,e())};this.keystrokes.set(\"arrowdown\",(t,e)=>{this.buttonView.isEnabled&&!this.isOpen&&(this.isOpen=!0,e())}),this.keystrokes.set(\"arrowright\",(t,e)=>{this.isOpen&&e()}),this.keystrokes.set(\"arrowleft\",t),this.keystrokes.set(\"esc\",t)}focus(){this.buttonView.focus()}get _panelPositions(){const{southEast:t,southWest:e,northEast:n,northWest:i}=Cl.defaultPanelPositions;return\"ltr\"===this.locale.uiLanguageDirection?[t,e,n,i]:[e,t,i,n]}}Cl.defaultPanelPositions={southEast:t=>({top:t.bottom,left:t.left,name:\"se\"}),southWest:(t,e)=>({top:t.bottom,left:t.left-e.width+t.width,name:\"sw\"}),northEast:(t,e)=>({top:t.top-e.height,left:t.left,name:\"ne\"}),northWest:(t,e)=>({top:t.bottom-e.height,left:t.left-e.width+t.width,name:\"nw\"})},Cl._getOptimalPosition=yl;n(25);class Tl extends rl{constructor(){super();const t=this.bindTemplate;this.set(\"content\",\"\"),this.set(\"viewBox\",\"0 0 20 20\"),this.set(\"fillColor\",\"\"),this.setTemplate({tag:\"svg\",ns:\"http://www.w3.org/2000/svg\",attributes:{class:[\"ck\",\"ck-icon\"],viewBox:t.to(\"viewBox\")}})}render(){super.render(),this._updateXMLContent(),this._colorFillPaths(),this.on(\"change:content\",()=>{this._updateXMLContent(),this._colorFillPaths()}),this.on(\"change:fillColor\",()=>{this._colorFillPaths()})}_updateXMLContent(){if(this.content){const t=(new DOMParser).parseFromString(this.content.trim(),\"image/svg+xml\").querySelector(\"svg\"),e=t.getAttribute(\"viewBox\");for(e&&(this.viewBox=e),this.element.innerHTML=\"\";t.childNodes.length>0;)this.element.appendChild(t.childNodes[0])}}_colorFillPaths(){this.fillColor&&this.element.querySelectorAll(\".ck-icon__fill\").forEach(t=>{t.style.fill=this.fillColor})}}n(27);class Pl extends rl{constructor(t){super(t),this.set(\"text\",\"\"),this.set(\"position\",\"s\");const e=this.bindTemplate;this.setTemplate({tag:\"span\",attributes:{class:[\"ck\",\"ck-tooltip\",e.to(\"position\",t=>\"ck-tooltip_\"+t),e.if(\"text\",\"ck-hidden\",t=>!t.trim())]},children:[{tag:\"span\",attributes:{class:[\"ck\",\"ck-tooltip__text\"]},children:[{text:e.to(\"text\")}]}]})}}n(29);class Sl extends rl{constructor(t){super(t);const e=this.bindTemplate,n=dn();this.set(\"class\"),this.set(\"labelStyle\"),this.set(\"icon\"),this.set(\"isEnabled\",!0),this.set(\"isOn\",!1),this.set(\"isVisible\",!0),this.set(\"isToggleable\",!1),this.set(\"keystroke\"),this.set(\"label\"),this.set(\"tabindex\",-1),this.set(\"tooltip\"),this.set(\"tooltipPosition\",\"s\"),this.set(\"type\",\"button\"),this.set(\"withText\",!1),this.set(\"withKeystroke\",!1),this.children=this.createCollection(),this.tooltipView=this._createTooltipView(),this.labelView=this._createLabelView(n),this.iconView=new Tl,this.iconView.extendTemplate({attributes:{class:\"ck-button__icon\"}}),this.keystrokeView=this._createKeystrokeView(),this.bind(\"_tooltipString\").to(this,\"tooltip\",this,\"label\",this,\"keystroke\",this._getTooltipString.bind(this)),this.setTemplate({tag:\"button\",attributes:{class:[\"ck\",\"ck-button\",e.to(\"class\"),e.if(\"isEnabled\",\"ck-disabled\",t=>!t),e.if(\"isVisible\",\"ck-hidden\",t=>!t),e.to(\"isOn\",t=>t?\"ck-on\":\"ck-off\"),e.if(\"withText\",\"ck-button_with-text\"),e.if(\"withKeystroke\",\"ck-button_with-keystroke\")],type:e.to(\"type\",t=>t||\"button\"),tabindex:e.to(\"tabindex\"),\"aria-labelledby\":`ck-editor__aria-label_${n}`,\"aria-disabled\":e.if(\"isEnabled\",!0,t=>!t),\"aria-pressed\":e.to(\"isOn\",t=>!!this.isToggleable&&String(t))},children:this.children,on:{mousedown:e.to(t=>{t.preventDefault()}),click:e.to(t=>{this.isEnabled?this.fire(\"execute\"):t.preventDefault()})}})}render(){super.render(),this.icon&&(this.iconView.bind(\"content\").to(this,\"icon\"),this.children.add(this.iconView)),this.children.add(this.tooltipView),this.children.add(this.labelView),this.withKeystroke&&this.children.add(this.keystrokeView)}focus(){this.element.focus()}_createTooltipView(){const t=new Pl;return t.bind(\"text\").to(this,\"_tooltipString\"),t.bind(\"position\").to(this,\"tooltipPosition\"),t}_createLabelView(t){const e=new rl,n=this.bindTemplate;return e.setTemplate({tag:\"span\",attributes:{class:[\"ck\",\"ck-button__label\"],style:n.to(\"labelStyle\"),id:`ck-editor__aria-label_${t}`},children:[{text:this.bindTemplate.to(\"label\")}]}),e}_createKeystrokeView(){const t=new rl;return t.setTemplate({tag:\"span\",attributes:{class:[\"ck\",\"ck-button__keystroke\"]},children:[{text:this.bindTemplate.to(\"keystroke\",t=>wo(t))}]}),t}_getTooltipString(t,e,n){return t?\"string\"==typeof t?t:(n&&(n=wo(n)),t instanceof Function?t(e,n):`${e}${n?` (${n})`:\"\"}`):\"\"}}class Ml extends Sl{constructor(t){super(t),this.arrowView=this._createArrowView(),this.extendTemplate({attributes:{\"aria-haspopup\":!0}}),this.delegate(\"execute\").to(this,\"open\")}render(){super.render(),this.children.add(this.arrowView)}_createArrowView(){const t=new Tl;return t.content='',t.extendTemplate({attributes:{class:\"ck-dropdown__arrow\"}}),t}}n(31);class El extends rl{constructor(){super(),this.items=this.createCollection(),this.focusTracker=new Ec,this.keystrokes=new vc,this._focusCycler=new pl({focusables:this.items,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:\"arrowup\",focusNext:\"arrowdown\"}}),this.setTemplate({tag:\"ul\",attributes:{class:[\"ck\",\"ck-reset\",\"ck-list\"]},children:this.items})}render(){super.render();for(const t of this.items)this.focusTracker.add(t.element);this.items.on(\"add\",(t,e)=>{this.focusTracker.add(e.element)}),this.items.on(\"remove\",(t,e)=>{this.focusTracker.remove(e.element)}),this.keystrokes.listenTo(this.element)}focus(){this._focusCycler.focusFirst()}focusLast(){this._focusCycler.focusLast()}}class Il extends rl{constructor(t){super(t),this.children=this.createCollection(),this.setTemplate({tag:\"li\",attributes:{class:[\"ck\",\"ck-list__item\"]},children:this.children})}focus(){this.children.first.focus()}}class Nl extends rl{constructor(t){super(t),this.setTemplate({tag:\"li\",attributes:{class:[\"ck\",\"ck-list__separator\"]}})}}n(33);class Ol extends Sl{constructor(t){super(t),this.isToggleable=!0,this.toggleSwitchView=this._createToggleView(),this.extendTemplate({attributes:{class:\"ck-switchbutton\"}})}render(){super.render(),this.children.add(this.toggleSwitchView)}_createToggleView(){const t=new rl;return t.setTemplate({tag:\"span\",attributes:{class:[\"ck\",\"ck-button__toggle\"]},children:[{tag:\"span\",attributes:{class:[\"ck\",\"ck-button__toggle__inner\"]}}]}),t}}function Rl({emitter:t,activator:e,callback:n,contextElements:i}){t.listenTo(document,\"mousedown\",(t,{target:o})=>{if(e()){for(const t of i)if(t.contains(o))return;n()}})}n(35),n(37);function Dl(t,e=Ml){const n=new e(t),i=new vl(t),o=new Cl(t,n,i);return n.bind(\"isEnabled\").to(o),n instanceof Ml?n.bind(\"isOn\").to(o,\"isOpen\"):n.arrowView.bind(\"isOn\").to(o,\"isOpen\"),function(t){(function(t){t.on(\"render\",()=>{Rl({emitter:t,activator:()=>t.isOpen,callback:()=>{t.isOpen=!1},contextElements:[t.element]})})})(t),function(t){t.on(\"execute\",e=>{e.source instanceof Ol||(t.isOpen=!1)})}(t),function(t){t.keystrokes.set(\"arrowdown\",(e,n)=>{t.isOpen&&(t.panelView.focus(),n())}),t.keystrokes.set(\"arrowup\",(e,n)=>{t.isOpen&&(t.panelView.focusLast(),n())})}(t)}(o),o}function Ll(t,e){const n=t.locale,i=t.listView=new El(n);i.items.bindTo(e).using(({type:t,model:e})=>{if(\"separator\"===t)return new Nl(n);if(\"button\"===t||\"switchbutton\"===t){const i=new Il(n);let o;return o=\"button\"===t?new Sl(n):new Ol(n),o.bind(...Object.keys(e)).to(e),o.delegate(\"execute\").to(i),i.children.add(o),i}}),t.panelView.children.add(i),i.items.delegate(\"execute\").to(t)}n(39);class jl extends rl{constructor(t,e){super(t);const n=this.bindTemplate,i=this.t;var o;this.options=e||{},this.set(\"ariaLabel\",i(\"bo\")),this.set(\"maxWidth\",\"auto\"),this.items=this.createCollection(),this.focusTracker=new Ec,this.keystrokes=new vc,this.set(\"class\"),this.set(\"isCompact\",!1),this.itemsView=new Vl(t),this.children=this.createCollection(),this.children.add(this.itemsView),this.focusables=this.createCollection(),this._focusCycler=new pl({focusables:this.focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:[\"arrowleft\",\"arrowup\"],focusNext:[\"arrowright\",\"arrowdown\"]}}),this.setTemplate({tag:\"div\",attributes:{class:[\"ck\",\"ck-toolbar\",n.to(\"class\"),n.if(\"isCompact\",\"ck-toolbar_compact\")],role:\"toolbar\",\"aria-label\":n.to(\"ariaLabel\"),style:{maxWidth:n.to(\"maxWidth\")}},children:this.children,on:{mousedown:(o=this,o.bindTemplate.to(t=>{t.target===o.element&&t.preventDefault()}))}}),this._behavior=this.options.shouldGroupWhenFull?new Bl(this):new zl(this)}render(){super.render();for(const t of this.items)this.focusTracker.add(t.element);this.items.on(\"add\",(t,e)=>{this.focusTracker.add(e.element)}),this.items.on(\"remove\",(t,e)=>{this.focusTracker.remove(e.element)}),this.keystrokes.listenTo(this.element),this._behavior.render(this)}destroy(){return this._behavior.destroy(),super.destroy()}focus(){this._focusCycler.focusFirst()}focusLast(){this._focusCycler.focusLast()}fillFromConfig(t,e){t.map(t=>{\"|\"==t?this.items.add(new wl):e.has(t)?this.items.add(e.create(t)):console.warn(Object(un.a)(\"toolbarview-item-unavailable: The requested toolbar item is unavailable.\"),{name:t})})}}class Vl extends rl{constructor(t){super(t),this.children=this.createCollection(),this.setTemplate({tag:\"div\",attributes:{class:[\"ck\",\"ck-toolbar__items\"]},children:this.children})}}class zl{constructor(t){const e=t.bindTemplate;t.set(\"isVertical\",!1),t.itemsView.children.bindTo(t.items).using(t=>t),t.focusables.bindTo(t.items).using(t=>t),t.extendTemplate({attributes:{class:[e.if(\"isVertical\",\"ck-toolbar_vertical\")]}})}render(){}destroy(){}}class Bl{constructor(t){this.viewChildren=t.children,this.viewFocusables=t.focusables,this.viewItemsView=t.itemsView,this.viewFocusTracker=t.focusTracker,this.viewLocale=t.locale,this.ungroupedItems=t.createCollection(),this.groupedItems=t.createCollection(),this.groupedItemsDropdown=this._createGroupedItemsDropdown(),this.resizeObserver=null,this.cachedPadding=null,t.itemsView.children.bindTo(this.ungroupedItems).using(t=>t),this.ungroupedItems.on(\"add\",this._updateFocusCycleableItems.bind(this)),this.ungroupedItems.on(\"remove\",this._updateFocusCycleableItems.bind(this)),t.children.on(\"add\",this._updateFocusCycleableItems.bind(this)),t.children.on(\"remove\",this._updateFocusCycleableItems.bind(this)),t.items.on(\"add\",(t,e,n)=>{n>this.ungroupedItems.length?this.groupedItems.add(e,n-this.ungroupedItems.length):this.ungroupedItems.add(e,n),this._updateGrouping()}),t.items.on(\"remove\",(t,e,n)=>{n>this.ungroupedItems.length?this.groupedItems.remove(e):this.ungroupedItems.remove(e),this._updateGrouping()}),t.extendTemplate({attributes:{class:[\"ck-toolbar_grouping\"]}})}render(t){this.viewElement=t.element,this._enableGroupingOnResize(),this._enableGroupingOnMaxWidthChange(t)}destroy(){this.groupedItemsDropdown.destroy(),this.resizeObserver.destroy()}_updateGrouping(){if(!this.viewElement.ownerDocument.body.contains(this.viewElement))return;let t;for(;this._areItemsOverflowing;)this._groupLastItem(),t=!0;if(!t&&this.groupedItems.length){for(;this.groupedItems.length&&!this._areItemsOverflowing;)this._ungroupFirstItem();this._areItemsOverflowing&&this._groupLastItem()}}get _areItemsOverflowing(){if(!this.ungroupedItems.length)return!1;const t=this.viewElement,e=this.viewLocale.uiLanguageDirection,n=new Zr(t.lastChild),i=new Zr(t);if(!this.cachedPadding){const n=Xo.window.getComputedStyle(t),i=\"ltr\"===e?\"paddingRight\":\"paddingLeft\";this.cachedPadding=Number.parseInt(n[i])}return\"ltr\"===e?n.right>i.right-this.cachedPadding:n.left{t&&t===e.contentRect.width||(this._updateGrouping(),t=e.contentRect.width)}),this._updateGrouping()}_enableGroupingOnMaxWidthChange(t){t.on(\"change:maxWidth\",()=>{this._updateGrouping()})}_groupLastItem(){this.groupedItems.length||(this.viewChildren.add(new wl),this.viewChildren.add(this.groupedItemsDropdown),this.viewFocusTracker.add(this.groupedItemsDropdown.element)),this.groupedItems.add(this.ungroupedItems.remove(this.ungroupedItems.last),0)}_ungroupFirstItem(){this.ungroupedItems.add(this.groupedItems.remove(this.groupedItems.first)),this.groupedItems.length||(this.viewChildren.remove(this.groupedItemsDropdown),this.viewChildren.remove(this.viewChildren.last),this.viewFocusTracker.remove(this.groupedItemsDropdown.element))}_createGroupedItemsDropdown(){const t=this.viewLocale,e=t.t,n=Dl(t);return n.class=\"ck-toolbar__grouped-dropdown\",n.panelPosition=\"ltr\"===t.uiLanguageDirection?\"sw\":\"se\",function(t,e){const n=t.locale,i=n.t,o=t.toolbarView=new jl(n);o.set(\"ariaLabel\",i(\"bk\")),t.extendTemplate({attributes:{class:[\"ck-toolbar-dropdown\"]}}),e.map(t=>o.items.add(t)),t.panelView.children.add(o),o.items.delegate(\"execute\").to(t)}(n,[]),n.buttonView.set({label:e(\"bp\"),tooltip:!0,icon:''}),n.toolbarView.items.bindTo(this.groupedItems).using(t=>t),n}_updateFocusCycleableItems(){this.viewFocusables.clear(),this.ungroupedItems.map(t=>{this.viewFocusables.add(t)}),this.groupedItems.length&&this.viewFocusables.add(this.groupedItemsDropdown)}}n(41);class Fl extends dl{constructor(t,e,n={}){super(t),this.stickyPanel=new gl(t),this.toolbar=new jl(t,{shouldGroupWhenFull:n.shouldToolbarGroupWhenFull}),this.editable=new ul(t,e)}render(){super.render(),this.stickyPanel.content.add(this.toolbar),this.top.add(this.stickyPanel),this.main.add(this.editable)}}class Ul extends xc{constructor(t,e){super(e),nn(t)&&(this.sourceElement=t),this.data.processor=new Pc(this.data.viewDocument),this.model.document.createRoot();const n=!this.config.get(\"toolbar.shouldNotGroupWhenFull\"),i=new Fl(this.locale,this.editing.view,{shouldToolbarGroupWhenFull:n});this.ui=new Vc(this,i),function(t){if(!z(t.updateSourceElement))throw new un.b(\"attachtoform-missing-elementapi-interface: Editor passed to attachToForm() must implement ElementApi.\",t);const e=t.sourceElement;if(e&&\"textarea\"===e.tagName.toLowerCase()&&e.form){let n;const i=e.form,o=()=>t.updateSourceElement();z(i.submit)&&(n=i.submit,i.submit=()=>{o(),n.apply(i)}),i.addEventListener(\"submit\",o),t.on(\"destroy\",()=>{i.removeEventListener(\"submit\",o),n&&(i.submit=n)})}}(this)}destroy(){return this.sourceElement&&this.updateSourceElement(),this.ui.destroy(),super.destroy()}static create(t,e={}){return new Promise(n=>{const i=new this(t,e);n(i.initPlugins().then(()=>i.ui.init(nn(t)?t:null)).then(()=>{if(!nn(t)&&e.initialData)throw new un.b(\"editor-create-initial-data: The config.initialData option cannot be used together with initial data passed in Editor.create().\",null);const n=e.initialData||function(t){return nn(t)?(e=t,e instanceof HTMLTextAreaElement?e.value:e.innerHTML):t;var e}(t);return i.data.init(n)}).then(()=>i.fire(\"ready\")).then(()=>i))})}}yn(Ul,Ac),yn(Ul,Cc);class Hl{constructor(t){this.editor=t,this.set(\"isEnabled\",!0),this._disableStack=new Set}forceDisabled(t){this._disableStack.add(t),1==this._disableStack.size&&(this.on(\"set:isEnabled\",ql,{priority:\"highest\"}),this.isEnabled=!1)}clearForceDisabled(t){this._disableStack.delete(t),0==this._disableStack.size&&(this.off(\"set:isEnabled\",ql),this.isEnabled=!0)}destroy(){this.stopListening()}static get isContextPlugin(){return!1}}function ql(t){t.return=!1,t.stop()}yn(Hl,Ui);class Wl{constructor(t){this.files=function(t){const e=t.files?Array.from(t.files):[],n=t.items?Array.from(t.items):[];if(e.length)return e;return n.filter(t=>\"file\"===t.kind).map(t=>t.getAsFile())}(t),this._native=t}get types(){return this._native.types}getData(t){return this._native.getData(t)}setData(t,e){this._native.setData(t,e)}}class Yl extends Nr{constructor(t){super(t);const e=this.document;function n(t,n){n.preventDefault();const i=n.dropRange?[n.dropRange]:Array.from(e.selection.getRanges()),o=new cn(e,\"clipboardInput\");e.fire(o,{dataTransfer:n.dataTransfer,targetRanges:i}),o.stop.called&&n.stopPropagation()}this.domEventType=[\"paste\",\"copy\",\"cut\",\"drop\",\"dragover\"],this.listenTo(e,\"paste\",n,{priority:\"low\"}),this.listenTo(e,\"drop\",n,{priority:\"low\"})}onDomEvent(t){const e={dataTransfer:new Wl(t.clipboardData?t.clipboardData:t.dataTransfer)};\"drop\"==t.type&&(e.dropRange=function(t,e){const n=e.target.ownerDocument,i=e.clientX,o=e.clientY;let r;n.caretRangeFromPoint&&n.caretRangeFromPoint(i,o)?r=n.caretRangeFromPoint(i,o):e.rangeParent&&(r=n.createRange(),r.setStart(e.rangeParent,e.rangeOffset),r.collapse(!0));return r?t.domConverter.domRangeToView(r):t.document.selection.getFirstRange()}(this.view,t)),this.fire(t.type,t,e)}}const $l=[\"figcaption\",\"li\"];class Gl extends Hl{static get pluginName(){return\"Clipboard\"}init(){const t=this.editor,e=t.model.document,n=t.editing.view,i=n.document;function o(n,o){const r=o.dataTransfer;o.preventDefault();const s=t.data.toView(t.model.getSelectedContent(e.selection));i.fire(\"clipboardOutput\",{dataTransfer:r,content:s,method:n.name})}this._htmlDataProcessor=new Pc(i),n.addObserver(Yl),this.listenTo(i,\"clipboardInput\",e=>{t.isReadOnly&&e.stop()},{priority:\"highest\"}),this.listenTo(i,\"clipboardInput\",(t,e)=>{const i=e.dataTransfer;let o=\"\";var r;i.getData(\"text/html\")?o=function(t){return t.replace(/(\\s+)<\\/span>/g,(t,e)=>1==e.length?\" \":e)}(i.getData(\"text/html\")):i.getData(\"text/plain\")&&((r=(r=i.getData(\"text/plain\")).replace(//g,\">\").replace(/\\n/g,\"

\").replace(/^\\s/,\" \").replace(/\\s$/,\" \").replace(/\\s\\s/g,\"  \")).indexOf(\"

\")>-1&&(r=`

${r}

`),o=r),o=this._htmlDataProcessor.toView(o),this.fire(\"inputTransformation\",{content:o,dataTransfer:i}),n.scrollToTheSelection()},{priority:\"low\"}),this.listenTo(this,\"inputTransformation\",(t,e)=>{if(!e.content.isEmpty){const t=this.editor.data,n=this.editor.model,i=t.toModel(e.content,\"$clipboardHolder\");if(0==i.childCount)return;n.insertContent(i)}},{priority:\"low\"}),this.listenTo(i,\"copy\",o,{priority:\"low\"}),this.listenTo(i,\"cut\",(e,n)=>{t.isReadOnly?n.preventDefault():o(e,n)},{priority:\"low\"}),this.listenTo(i,\"clipboardOutput\",(n,i)=>{i.content.isEmpty||(i.dataTransfer.setData(\"text/html\",this._htmlDataProcessor.toData(i.content)),i.dataTransfer.setData(\"text/plain\",function t(e){let n=\"\";if(e.is(\"text\")||e.is(\"textProxy\"))n=e.data;else if(e.is(\"img\")&&e.hasAttribute(\"alt\"))n=e.getAttribute(\"alt\");else{let i=null;for(const o of e.getChildren()){const e=t(o);i&&(i.is(\"containerElement\")||o.is(\"containerElement\"))&&($l.includes(i.name)||$l.includes(o.name)?n+=\"\\n\":n+=\"\\n\\n\"),n+=e,i=o}}return n}(i.content))),\"cut\"==i.method&&t.model.deleteContent(e.selection)},{priority:\"low\"})}}class Ql{constructor(t){this.editor=t,this.set(\"value\",void 0),this.set(\"isEnabled\",!1),this._disableStack=new Set,this.decorate(\"execute\"),this.listenTo(this.editor.model.document,\"change\",()=>{this.refresh()}),this.on(\"execute\",t=>{this.isEnabled||t.stop()},{priority:\"high\"}),this.listenTo(t,\"change:isReadOnly\",(t,e,n)=>{n?this.forceDisabled(\"readOnlyMode\"):this.clearForceDisabled(\"readOnlyMode\")})}refresh(){this.isEnabled=!0}forceDisabled(t){this._disableStack.add(t),1==this._disableStack.size&&(this.on(\"set:isEnabled\",Kl,{priority:\"highest\"}),this.isEnabled=!1)}clearForceDisabled(t){this._disableStack.delete(t),0==this._disableStack.size&&(this.off(\"set:isEnabled\",Kl),this.refresh())}execute(){}destroy(){this.stopListening()}}function Kl(t){t.return=!1,t.stop()}function*Jl(t,e){for(const n of e)n&&t.getAttributeProperties(n[0]).copyOnEnter&&(yield n)}yn(Ql,Ui);class Zl extends Ql{execute(){const t=this.editor.model,e=t.document;t.change(n=>{!function(t,e,n,i){const o=n.isCollapsed,r=n.getFirstRange(),s=r.start.parent,a=r.end.parent;if(i.isLimit(s)||i.isLimit(a))return void(o||s!=a||t.deleteContent(n));if(o){const t=Jl(e.model.schema,n.getAttributes());Xl(e,r.start),e.setSelectionAttribute(t)}else{const i=!(r.start.isAtStart&&r.end.isAtEnd),o=s==a;t.deleteContent(n,{leaveUnmerged:i}),i&&(o?Xl(e,n.focus):e.setSelection(a,0))}}(this.editor.model,n,e.selection,t.schema),this.fire(\"afterExecute\",{writer:n})})}}function Xl(t,e){t.split(e),t.setSelection(e.parent.nextSibling,0)}class td extends hr{constructor(t){super(t);const e=this.document;e.on(\"keydown\",(t,n)=>{if(this.isEnabled&&n.keyCode==go.enter){let i;e.once(\"enter\",t=>i=t,{priority:\"highest\"}),e.fire(\"enter\",new Ir(e,n.domEvent,{isSoft:n.shiftKey})),i&&i.stop.called&&t.stop()}})}observe(){}}class ed extends Hl{static get pluginName(){return\"Enter\"}init(){const t=this.editor,e=t.editing.view,n=e.document;e.addObserver(td),t.commands.add(\"enter\",new Zl(t)),this.listenTo(n,\"enter\",(n,i)=>{i.preventDefault(),i.isSoft||(t.execute(\"enter\"),e.scrollToTheSelection())},{priority:\"low\"})}}class nd extends Ql{execute(){const t=this.editor.model,e=t.document;t.change(n=>{!function(t,e,n){const i=n.isCollapsed,o=n.getFirstRange(),r=o.start.parent,s=o.end.parent,a=r==s;if(i){const i=Jl(t.schema,n.getAttributes());id(t,e,o.end),e.removeSelectionAttribute(n.getAttributeKeys()),e.setSelectionAttribute(i)}else{const i=!(o.start.isAtStart&&o.end.isAtEnd);t.deleteContent(n,{leaveUnmerged:i}),a?id(t,e,n.focus):i&&e.setSelection(s,0)}}(t,n,e.selection),this.fire(\"afterExecute\",{writer:n})})}refresh(){const t=this.editor.model,e=t.document;this.isEnabled=function(t,e){if(e.rangeCount>1)return!1;const n=e.anchor;if(!n||!t.checkChild(n,\"softBreak\"))return!1;const i=e.getFirstRange(),o=i.start.parent,r=i.end.parent;if((od(o,t)||od(r,t))&&o!==r)return!1;return!0}(t.schema,e.selection)}}function id(t,e,n){const i=e.createElement(\"softBreak\");t.insertContent(i,n),e.setSelection(i,\"after\")}function od(t,e){return!t.is(\"rootElement\")&&(e.isLimit(t)||od(t.parent,e))}class rd extends Hl{static get pluginName(){return\"ShiftEnter\"}init(){const t=this.editor,e=t.model.schema,n=t.conversion,i=t.editing.view,o=i.document;e.register(\"softBreak\",{allowWhere:\"$text\",isInline:!0}),n.for(\"upcast\").elementToElement({model:\"softBreak\",view:\"br\"}),n.for(\"downcast\").elementToElement({model:\"softBreak\",view:(t,e)=>e.createEmptyElement(\"br\")}),i.addObserver(td),t.commands.add(\"shiftEnter\",new nd(t)),this.listenTo(o,\"enter\",(e,n)=>{n.preventDefault(),n.isSoft&&(t.execute(\"shiftEnter\"),i.scrollToTheSelection())},{priority:\"low\"})}}class sd{constructor(t,e=20){this.model=t,this.size=0,this.limit=e,this.isLocked=!1,this._changeCallback=(t,e)=>{\"transparent\"!=e.type&&e!==this._batch&&this._reset(!0)},this._selectionChangeCallback=()=>{this._reset()},this.model.document.on(\"change\",this._changeCallback),this.model.document.selection.on(\"change:range\",this._selectionChangeCallback),this.model.document.selection.on(\"change:attribute\",this._selectionChangeCallback)}get batch(){return this._batch||(this._batch=this.model.createBatch()),this._batch}input(t){this.size+=t,this.size>=this.limit&&this._reset(!0)}lock(){this.isLocked=!0}unlock(){this.isLocked=!1}destroy(){this.model.document.off(\"change\",this._changeCallback),this.model.document.selection.off(\"change:range\",this._selectionChangeCallback),this.model.document.selection.off(\"change:attribute\",this._selectionChangeCallback)}_reset(t){this.isLocked&&!t||(this._batch=null,this.size=0)}}class ad extends Ql{constructor(t,e){super(t),this._buffer=new sd(t.model,e),this._batches=new WeakSet}get buffer(){return this._buffer}destroy(){super.destroy(),this._buffer.destroy()}execute(t={}){const e=this.editor.model,n=e.document,i=t.text||\"\",o=i.length,r=t.range?e.createSelection(t.range):n.selection,s=t.resultRange;e.enqueueChange(this._buffer.batch,t=>{this._buffer.lock(),e.deleteContent(r),i&&e.insertContent(t.createText(i,n.selection.getAttributes()),r),s?t.setSelection(s):r.is(\"documentSelection\")||t.setSelection(r),this._buffer.unlock(),this._buffer.input(o),this._batches.add(this._buffer.batch)})}}function cd(t){let e=null;const n=t.model,i=t.editing.view,o=t.commands.get(\"input\");function r(t){const r=n.document,a=i.document.isComposing,c=e&&e.isEqual(r.selection);e=null,o.isEnabled&&(function(t){if(t.ctrlKey)return!0;return ld.includes(t.keyCode)}(t)||r.selection.isCollapsed||a&&229===t.keyCode||!a&&229===t.keyCode&&c||s())}function s(){const t=o.buffer;t.lock(),n.enqueueChange(t.batch,()=>{n.deleteContent(n.document.selection)}),t.unlock()}uo.isAndroid?i.document.on(\"beforeinput\",(t,e)=>r(e),{priority:\"lowest\"}):i.document.on(\"keydown\",(t,e)=>r(e),{priority:\"lowest\"}),i.document.on(\"compositionstart\",(function(){const t=n.document,e=1!==t.selection.rangeCount||t.selection.getFirstRange().isFlat;if(t.selection.isCollapsed||e)return;s()}),{priority:\"lowest\"}),i.document.on(\"compositionend\",()=>{e=n.createSelection(n.document.selection)},{priority:\"lowest\"})}const ld=[po(\"arrowUp\"),po(\"arrowRight\"),po(\"arrowDown\"),po(\"arrowLeft\"),9,16,17,18,19,20,27,33,34,35,36,45,91,93,144,145,173,174,175,176,177,178,179,255];for(let t=112;t<=135;t++)ld.push(t);function dd(t){if(t.newChildren.length-t.oldChildren.length!=1)return;const e=function(t,e){const n=[];let i,o=0;return t.forEach(t=>{\"equal\"==t?(r(),o++):\"insert\"==t?(s(\"insert\")?i.values.push(e[o]):(r(),i={type:\"insert\",index:o,values:[e[o]]}),o++):s(\"delete\")?i.howMany++:(r(),i={type:\"delete\",index:o,howMany:1})}),r(),n;function r(){i&&(n.push(i),i=null)}function s(t){return i&&i.type==t}}(Wo(t.oldChildren,t.newChildren,hd),t.newChildren);if(e.length>1)return;const n=e[0];return n.values[0]&&n.values[0].is(\"text\")?n:void 0}function hd(t,e){return t&&t.is(\"text\")&&e&&e.is(\"text\")?t.data===e.data:t===e}class ud{constructor(t){this.editor=t,this.editing=this.editor.editing}handle(t,e){if(function(t){if(0==t.length)return!1;for(const e of t)if(\"children\"===e.type&&!dd(e))return!0;return!1}(t))this._handleContainerChildrenMutations(t,e);else for(const n of t)this._handleTextMutation(n,e),this._handleTextNodeInsertion(n)}_handleContainerChildrenMutations(t,e){const n=function(t){const e=t.map(t=>t.node).reduce((t,e)=>t.getCommonAncestor(e,{includeSelf:!0}));if(!e)return;return e.getAncestors({includeSelf:!0,parentFirst:!0}).find(t=>t.is(\"containerElement\")||t.is(\"rootElement\"))}(t);if(!n)return;const i=this.editor.editing.view.domConverter.mapViewToDom(n),o=new ir(this.editor.editing.view.document),r=this.editor.data.toModel(o.domToView(i)).getChild(0),s=this.editor.editing.mapper.toModelElement(n);if(!s)return;const a=Array.from(r.getChildren()),c=Array.from(s.getChildren()),l=a[a.length-1],d=c[c.length-1];l&&l.is(\"softBreak\")&&d&&!d.is(\"softBreak\")&&a.pop();const h=this.editor.model.schema;if(!fd(a,h)||!fd(c,h))return;const u=a.map(t=>t.is(\"text\")?t.data:\"@\").join(\"\").replace(/\\u00A0/g,\" \"),f=c.map(t=>t.is(\"text\")?t.data:\"@\").join(\"\").replace(/\\u00A0/g,\" \");if(f===u)return;const m=Wo(f,u),{firstChangeAt:g,insertions:p,deletions:b}=md(m);let w=null;e&&(w=this.editing.mapper.toModelRange(e.getFirstRange()));const k=u.substr(g,p),_=this.editor.model.createRange(this.editor.model.createPositionAt(s,g),this.editor.model.createPositionAt(s,g+b));this.editor.execute(\"input\",{text:k,range:_,resultRange:w})}_handleTextMutation(t,e){if(\"text\"!=t.type)return;const n=t.newText.replace(/\\u00A0/g,\" \"),i=t.oldText.replace(/\\u00A0/g,\" \");if(i===n)return;const o=Wo(i,n),{firstChangeAt:r,insertions:s,deletions:a}=md(o);let c=null;e&&(c=this.editing.mapper.toModelRange(e.getFirstRange()));const l=this.editing.view.createPositionAt(t.node,r),d=this.editing.mapper.toModelPosition(l),h=this.editor.model.createRange(d,d.getShiftedBy(a)),u=n.substr(r,s);this.editor.execute(\"input\",{text:u,range:h,resultRange:c})}_handleTextNodeInsertion(t){if(\"children\"!=t.type)return;const e=dd(t),n=this.editing.view.createPositionAt(t.node,e.index),i=this.editing.mapper.toModelPosition(n),o=e.values[0].data;this.editor.execute(\"input\",{text:o.replace(/\\u00A0/g,\" \"),range:this.editor.model.createRange(i)})}}function fd(t,e){return t.every(t=>e.isInline(t))}function md(t){let e=null,n=null;for(let i=0;i{new ud(t).handle(n,i)})}(t)}isInput(t){return this.editor.commands.get(\"input\")._batches.has(t)}}class pd extends Ql{constructor(t,e){super(t),this.direction=e,this._buffer=new sd(t.model,t.config.get(\"typing.undoStep\"))}get buffer(){return this._buffer}execute(t={}){const e=this.editor.model,n=e.document;e.enqueueChange(this._buffer.batch,i=>{this._buffer.lock();const o=i.createSelection(t.selection||n.selection),r=o.isCollapsed;if(o.isCollapsed&&e.modifySelection(o,{direction:this.direction,unit:t.unit}),this._shouldEntireContentBeReplacedWithParagraph(t.sequence||1))return void this._replaceEntireContentWithParagraph(i);if(o.isCollapsed)return;let s=0;o.getFirstRange().getMinimalFlatRanges().forEach(t=>{s+=eo(t.getWalker({singleCharacters:!0,ignoreElementEnd:!0,shallow:!0}))}),e.deleteContent(o,{doNotResetEntireContent:r,direction:this.direction}),this._buffer.input(s),i.setSelection(o),this._buffer.unlock()})}_shouldEntireContentBeReplacedWithParagraph(t){if(t>1)return!1;const e=this.editor.model,n=e.document.selection,i=e.schema.getLimitElement(n);if(!(n.isCollapsed&&n.containsEntireContent(i)))return!1;if(!e.schema.checkChild(i,\"paragraph\"))return!1;const o=i.getChild(0);return!o||\"paragraph\"!==o.name}_replaceEntireContentWithParagraph(t){const e=this.editor.model,n=e.document.selection,i=e.schema.getLimitElement(n),o=t.createElement(\"paragraph\");t.remove(t.createRangeIn(i)),t.insert(o,i),t.setSelection(o,0)}}class bd extends hr{constructor(t){super(t);const e=t.document;let n=0;function i(t,n,i){let o;e.once(\"delete\",t=>o=t,{priority:Number.POSITIVE_INFINITY}),e.fire(\"delete\",new Ir(e,n,i)),o&&o.stop.called&&t.stop()}e.on(\"keyup\",(t,e)=>{e.keyCode!=go.delete&&e.keyCode!=go.backspace||(n=0)}),e.on(\"keydown\",(t,e)=>{const o={};if(e.keyCode==go.delete)o.direction=\"forward\",o.unit=\"character\";else{if(e.keyCode!=go.backspace)return;o.direction=\"backward\",o.unit=\"codePoint\"}const r=uo.isMac?e.altKey:e.ctrlKey;o.unit=r?\"word\":o.unit,o.sequence=++n,i(t,e.domEvent,o)}),uo.isAndroid&&e.on(\"beforeinput\",(e,n)=>{if(\"deleteContentBackward\"!=n.domEvent.inputType)return;const o={unit:\"codepoint\",direction:\"backward\",sequence:1},r=n.domTarget.ownerDocument.defaultView.getSelection();r.anchorNode==r.focusNode&&r.anchorOffset+1!=r.focusOffset&&(o.selectionToRemove=t.domConverter.domSelectionToView(r)),i(e,n.domEvent,o)})}observe(){}}class wd extends Hl{static get pluginName(){return\"Delete\"}init(){const t=this.editor,e=t.editing.view,n=e.document;if(e.addObserver(bd),t.commands.add(\"forwardDelete\",new pd(t,\"forward\")),t.commands.add(\"delete\",new pd(t,\"backward\")),this.listenTo(n,\"delete\",(n,i)=>{const o={unit:i.unit,sequence:i.sequence};if(i.selectionToRemove){const e=t.model.createSelection(),n=[];for(const e of i.selectionToRemove.getRanges())n.push(t.editing.mapper.toModelRange(e));e.setTo(n),o.selection=e}t.execute(\"forward\"==i.direction?\"forwardDelete\":\"delete\",o),i.preventDefault(),e.scrollToTheSelection()}),uo.isAndroid){let t=null;this.listenTo(n,\"delete\",(e,n)=>{const i=n.domTarget.ownerDocument.defaultView.getSelection();t={anchorNode:i.anchorNode,anchorOffset:i.anchorOffset,focusNode:i.focusNode,focusOffset:i.focusOffset}},{priority:\"lowest\"}),this.listenTo(n,\"keyup\",(e,n)=>{if(t){const e=n.domTarget.ownerDocument.defaultView.getSelection();e.collapse(t.anchorNode,t.anchorOffset),e.extend(t.focusNode,t.focusOffset),t=null}})}}}class kd extends Hl{static get requires(){return[gd,wd]}static get pluginName(){return\"Typing\"}}const _d=new Map;function vd(t,e,n){let i=_d.get(t);i||(i=new Map,_d.set(t,i)),i.set(e,n)}function yd(t){return[t]}function xd(t,e,n={}){const i=function(t,e){const n=_d.get(t);return n&&n.has(e)?n.get(e):yd}(t.constructor,e.constructor);try{return i(t=t.clone(),e,n)}catch(t){throw t}}function Ad(t,e,n){t=t.slice(),e=e.slice();const i=new Cd(n.document,n.useRelations,n.forceWeakRemove);i.setOriginalOperations(t),i.setOriginalOperations(e);const o=i.originalOperations;if(0==t.length||0==e.length)return{operationsA:t,operationsB:e,originalOperations:o};const r=new WeakMap;for(const e of t)r.set(e,0);const s={nextBaseVersionA:t[t.length-1].baseVersion+1,nextBaseVersionB:e[e.length-1].baseVersion+1,originalOperationsACount:t.length,originalOperationsBCount:e.length};let a=0;for(;a{if(t.key===e.key){const i=t.range.getDifference(e.range).map(e=>new Ma(e,t.key,t.oldValue,t.newValue,0)),o=t.range.getIntersection(e.range);return o&&n.aIsStrong&&i.push(new Ma(o,e.key,e.newValue,t.newValue,0)),0==i.length?[new nc(0)]:i}return[t]}),vd(Ma,Na,(t,e)=>{if(t.range.start.hasSameParentAs(e.position)&&t.range.containsPosition(e.position)){const n=t.range._getTransformedByInsertion(e.position,e.howMany,!e.shouldReceiveAttributes).map(e=>new Ma(e,t.key,t.oldValue,t.newValue,t.baseVersion));if(e.shouldReceiveAttributes){const i=Sd(e,t.key,t.oldValue);i&&n.unshift(i)}return n}return t.range=t.range._getTransformedByInsertion(e.position,e.howMany,!1)[0],[t]}),vd(Ma,La,(t,e)=>{const n=[];t.range.start.hasSameParentAs(e.deletionPosition)&&(t.range.containsPosition(e.deletionPosition)||t.range.start.isEqual(e.deletionPosition))&&n.push(_s._createFromPositionAndShift(e.graveyardPosition,1));const i=t.range._getTransformedByMergeOperation(e);return i.isCollapsed||n.push(i),n.map(e=>new Ma(e,t.key,t.oldValue,t.newValue,t.baseVersion))}),vd(Ma,Ia,(t,e)=>function(t,e){const n=_s._createFromPositionAndShift(e.sourcePosition,e.howMany);let i=null,o=[];n.containsRange(t,!0)?i=t:t.start.hasSameParentAs(n.start)?(o=t.getDifference(n),i=t.getIntersection(n)):o=[t];const r=[];for(let t of o){t=t._getTransformedByDeletion(e.sourcePosition,e.howMany);const n=e.getMovedRangeStart(),i=t.start.hasSameParentAs(n);t=t._getTransformedByInsertion(n,e.howMany,i),r.push(...t)}i&&r.push(i._getTransformedByMove(e.sourcePosition,e.targetPosition,e.howMany,!1)[0]);return r}(t.range,e).map(e=>new Ma(e,t.key,t.oldValue,t.newValue,t.baseVersion))),vd(Ma,ja,(t,e)=>{if(t.range.end.isEqual(e.insertionPosition))return e.graveyardPosition||t.range.end.offset++,[t];if(t.range.start.hasSameParentAs(e.splitPosition)&&t.range.containsPosition(e.splitPosition)){const n=t.clone();return n.range=new _s(e.moveTargetPosition.clone(),t.range.end._getCombined(e.splitPosition,e.moveTargetPosition)),t.range.end=e.splitPosition.clone(),t.range.end.stickiness=\"toPrevious\",[t,n]}return t.range=t.range._getTransformedBySplitOperation(e),[t]}),vd(Na,Ma,(t,e)=>{const n=[t];if(t.shouldReceiveAttributes&&t.position.hasSameParentAs(e.range.start)&&e.range.containsPosition(t.position)){const i=Sd(t,e.key,e.newValue);i&&n.push(i)}return n}),vd(Na,Na,(t,e,n)=>(t.position.isEqual(e.position)&&n.aIsStrong||(t.position=t.position._getTransformedByInsertOperation(e)),[t])),vd(Na,Ia,(t,e)=>(t.position=t.position._getTransformedByMoveOperation(e),[t])),vd(Na,ja,(t,e)=>(t.position=t.position._getTransformedBySplitOperation(e),[t])),vd(Na,La,(t,e)=>(t.position=t.position._getTransformedByMergeOperation(e),[t])),vd(Oa,Na,(t,e)=>(t.oldRange&&(t.oldRange=t.oldRange._getTransformedByInsertOperation(e)[0]),t.newRange&&(t.newRange=t.newRange._getTransformedByInsertOperation(e)[0]),[t])),vd(Oa,Oa,(t,e,n)=>{if(t.name==e.name){if(!n.aIsStrong)return[new nc(0)];t.oldRange=e.newRange?e.newRange.clone():null}return[t]}),vd(Oa,La,(t,e)=>(t.oldRange&&(t.oldRange=t.oldRange._getTransformedByMergeOperation(e)),t.newRange&&(t.newRange=t.newRange._getTransformedByMergeOperation(e)),[t])),vd(Oa,Ia,(t,e,n)=>{if(t.oldRange&&(t.oldRange=_s._createFromRanges(t.oldRange._getTransformedByMoveOperation(e))),t.newRange){if(n.abRelation){const i=_s._createFromRanges(t.newRange._getTransformedByMoveOperation(e));if(\"left\"==n.abRelation.side&&e.targetPosition.isEqual(t.newRange.start))return t.newRange.start.path=n.abRelation.path,t.newRange.end=i.end,[t];if(\"right\"==n.abRelation.side&&e.targetPosition.isEqual(t.newRange.end))return t.newRange.start=i.start,t.newRange.end.path=n.abRelation.path,[t]}t.newRange=_s._createFromRanges(t.newRange._getTransformedByMoveOperation(e))}return[t]}),vd(Oa,ja,(t,e,n)=>{if(t.oldRange&&(t.oldRange=t.oldRange._getTransformedBySplitOperation(e)),t.newRange){if(n.abRelation){const i=t.newRange._getTransformedBySplitOperation(e);return t.newRange.start.isEqual(e.splitPosition)&&n.abRelation.wasStartBeforeMergedElement?t.newRange.start=ks._createAt(e.insertionPosition):t.newRange.start.isEqual(e.splitPosition)&&!n.abRelation.wasInLeftElement&&(t.newRange.start=ks._createAt(e.moveTargetPosition)),t.newRange.end.isEqual(e.splitPosition)&&n.abRelation.wasInRightElement?t.newRange.end=ks._createAt(e.moveTargetPosition):t.newRange.end.isEqual(e.splitPosition)&&n.abRelation.wasEndBeforeMergedElement?t.newRange.end=ks._createAt(e.insertionPosition):t.newRange.end=i.end,[t]}t.newRange=t.newRange._getTransformedBySplitOperation(e)}return[t]}),vd(La,Na,(t,e)=>(t.sourcePosition.hasSameParentAs(e.position)&&(t.howMany+=e.howMany),t.sourcePosition=t.sourcePosition._getTransformedByInsertOperation(e),t.targetPosition=t.targetPosition._getTransformedByInsertOperation(e),[t])),vd(La,La,(t,e,n)=>{if(t.sourcePosition.isEqual(e.sourcePosition)&&t.targetPosition.isEqual(e.targetPosition)){if(n.bWasUndone){const n=e.graveyardPosition.path.slice();return n.push(0),t.sourcePosition=new ks(e.graveyardPosition.root,n),t.howMany=0,[t]}return[new nc(0)]}if(t.sourcePosition.isEqual(e.sourcePosition)&&!t.targetPosition.isEqual(e.targetPosition)&&!n.bWasUndone&&\"splitAtSource\"!=n.abRelation){const i=\"$graveyard\"==t.targetPosition.root.rootName,o=\"$graveyard\"==e.targetPosition.root.rootName,r=i&&!o;if(o&&!i||!r&&n.aIsStrong){const n=e.targetPosition._getTransformedByMergeOperation(e),i=t.targetPosition._getTransformedByMergeOperation(e);return[new Ia(n,t.howMany,i,0)]}return[new nc(0)]}return t.sourcePosition.hasSameParentAs(e.targetPosition)&&(t.howMany+=e.howMany),t.sourcePosition=t.sourcePosition._getTransformedByMergeOperation(e),t.targetPosition=t.targetPosition._getTransformedByMergeOperation(e),t.graveyardPosition.isEqual(e.graveyardPosition)&&n.aIsStrong||(t.graveyardPosition=t.graveyardPosition._getTransformedByMergeOperation(e)),[t]}),vd(La,Ia,(t,e,n)=>{const i=_s._createFromPositionAndShift(e.sourcePosition,e.howMany);return\"remove\"==e.type&&!n.bWasUndone&&!n.forceWeakRemove&&t.deletionPosition.hasSameParentAs(e.sourcePosition)&&i.containsPosition(t.sourcePosition)?[new nc(0)]:(t.sourcePosition.hasSameParentAs(e.targetPosition)&&(t.howMany+=e.howMany),t.sourcePosition.hasSameParentAs(e.sourcePosition)&&(t.howMany-=e.howMany),t.sourcePosition=t.sourcePosition._getTransformedByMoveOperation(e),t.targetPosition=t.targetPosition._getTransformedByMoveOperation(e),t.graveyardPosition.isEqual(e.targetPosition)||(t.graveyardPosition=t.graveyardPosition._getTransformedByMoveOperation(e)),[t])}),vd(La,ja,(t,e,n)=>{if(e.graveyardPosition&&(t.graveyardPosition=t.graveyardPosition._getTransformedByDeletion(e.graveyardPosition,1),t.deletionPosition.isEqual(e.graveyardPosition)&&(t.howMany=e.howMany)),t.targetPosition.isEqual(e.splitPosition)){const i=0!=e.howMany,o=e.graveyardPosition&&t.deletionPosition.isEqual(e.graveyardPosition);if(i||o||\"mergeTargetNotMoved\"==n.abRelation)return t.sourcePosition=t.sourcePosition._getTransformedBySplitOperation(e),[t]}if(t.sourcePosition.isEqual(e.splitPosition)){if(\"mergeSourceNotMoved\"==n.abRelation)return t.howMany=0,t.targetPosition=t.targetPosition._getTransformedBySplitOperation(e),[t];if(\"mergeSameElement\"==n.abRelation||t.sourcePosition.offset>0)return t.sourcePosition=e.moveTargetPosition.clone(),t.targetPosition=t.targetPosition._getTransformedBySplitOperation(e),[t]}return t.sourcePosition.hasSameParentAs(e.splitPosition)&&(t.howMany=e.splitPosition.offset),t.sourcePosition=t.sourcePosition._getTransformedBySplitOperation(e),t.targetPosition=t.targetPosition._getTransformedBySplitOperation(e),[t]}),vd(Ia,Na,(t,e)=>{const n=_s._createFromPositionAndShift(t.sourcePosition,t.howMany)._getTransformedByInsertOperation(e,!1)[0];return t.sourcePosition=n.start,t.howMany=n.end.offset-n.start.offset,t.targetPosition.isEqual(e.position)||(t.targetPosition=t.targetPosition._getTransformedByInsertOperation(e)),[t]}),vd(Ia,Ia,(t,e,n)=>{const i=_s._createFromPositionAndShift(t.sourcePosition,t.howMany),o=_s._createFromPositionAndShift(e.sourcePosition,e.howMany);let r,s=n.aIsStrong,a=!n.aIsStrong;if(\"insertBefore\"==n.abRelation||\"insertAfter\"==n.baRelation?a=!0:\"insertAfter\"!=n.abRelation&&\"insertBefore\"!=n.baRelation||(a=!1),r=t.targetPosition.isEqual(e.targetPosition)&&a?t.targetPosition._getTransformedByDeletion(e.sourcePosition,e.howMany):t.targetPosition._getTransformedByMove(e.sourcePosition,e.targetPosition,e.howMany),Md(t,e)&&Md(e,t))return[e.getReversed()];if(i.containsPosition(e.targetPosition)&&i.containsRange(o,!0))return i.start=i.start._getTransformedByMove(e.sourcePosition,e.targetPosition,e.howMany),i.end=i.end._getTransformedByMove(e.sourcePosition,e.targetPosition,e.howMany),Ed([i],r);if(o.containsPosition(t.targetPosition)&&o.containsRange(i,!0))return i.start=i.start._getCombined(e.sourcePosition,e.getMovedRangeStart()),i.end=i.end._getCombined(e.sourcePosition,e.getMovedRangeStart()),Ed([i],r);const c=En(t.sourcePosition.getParentPath(),e.sourcePosition.getParentPath());if(\"prefix\"==c||\"extension\"==c)return i.start=i.start._getTransformedByMove(e.sourcePosition,e.targetPosition,e.howMany),i.end=i.end._getTransformedByMove(e.sourcePosition,e.targetPosition,e.howMany),Ed([i],r);\"remove\"!=t.type||\"remove\"==e.type||n.aWasUndone||n.forceWeakRemove?\"remove\"==t.type||\"remove\"!=e.type||n.bWasUndone||n.forceWeakRemove||(s=!1):s=!0;const l=[],d=i.getDifference(o);for(const t of d){t.start=t.start._getTransformedByDeletion(e.sourcePosition,e.howMany),t.end=t.end._getTransformedByDeletion(e.sourcePosition,e.howMany);const n=\"same\"==En(t.start.getParentPath(),e.getMovedRangeStart().getParentPath()),i=t._getTransformedByInsertion(e.getMovedRangeStart(),e.howMany,n);l.push(...i)}const h=i.getIntersection(o);return null!==h&&s&&(h.start=h.start._getCombined(e.sourcePosition,e.getMovedRangeStart()),h.end=h.end._getCombined(e.sourcePosition,e.getMovedRangeStart()),0===l.length?l.push(h):1==l.length?o.start.isBefore(i.start)||o.start.isEqual(i.start)?l.unshift(h):l.push(h):l.splice(1,0,h)),0===l.length?[new nc(t.baseVersion)]:Ed(l,r)}),vd(Ia,ja,(t,e,n)=>{let i=t.targetPosition.clone();t.targetPosition.isEqual(e.insertionPosition)&&e.graveyardPosition&&\"moveTargetAfter\"!=n.abRelation||(i=t.targetPosition._getTransformedBySplitOperation(e));const o=_s._createFromPositionAndShift(t.sourcePosition,t.howMany);if(o.end.isEqual(e.insertionPosition))return e.graveyardPosition||t.howMany++,t.targetPosition=i,[t];if(o.start.hasSameParentAs(e.splitPosition)&&o.containsPosition(e.splitPosition)){let t=new _s(e.splitPosition,o.end);return t=t._getTransformedBySplitOperation(e),Ed([new _s(o.start,e.splitPosition),t],i)}t.targetPosition.isEqual(e.splitPosition)&&\"insertAtSource\"==n.abRelation&&(i=e.moveTargetPosition),t.targetPosition.isEqual(e.insertionPosition)&&\"insertBetween\"==n.abRelation&&(i=t.targetPosition);const r=[o._getTransformedBySplitOperation(e)];if(e.graveyardPosition){const i=o.start.isEqual(e.graveyardPosition)||o.containsPosition(e.graveyardPosition);t.howMany>1&&i&&!n.aWasUndone&&r.push(_s._createFromPositionAndShift(e.insertionPosition,1))}return Ed(r,i)}),vd(Ia,La,(t,e,n)=>{const i=_s._createFromPositionAndShift(t.sourcePosition,t.howMany);if(e.deletionPosition.hasSameParentAs(t.sourcePosition)&&i.containsPosition(e.sourcePosition))if(\"remove\"!=t.type||n.forceWeakRemove){if(1==t.howMany)return n.bWasUndone?(t.sourcePosition=e.graveyardPosition.clone(),t.targetPosition=t.targetPosition._getTransformedByMergeOperation(e),[t]):[new nc(0)]}else if(!n.aWasUndone){const n=[];let i=e.graveyardPosition.clone(),o=e.targetPosition._getTransformedByMergeOperation(e);t.howMany>1&&(n.push(new Ia(t.sourcePosition,t.howMany-1,t.targetPosition,0)),i=i._getTransformedByMove(t.sourcePosition,t.targetPosition,t.howMany-1),o=o._getTransformedByMove(t.sourcePosition,t.targetPosition,t.howMany-1));const r=e.deletionPosition._getCombined(t.sourcePosition,t.targetPosition),s=new Ia(i,1,r,0),a=s.getMovedRangeStart().path.slice();a.push(0);const c=new ks(s.targetPosition.root,a);o=o._getTransformedByMove(i,r,1);const l=new Ia(o,e.howMany,c,0);return n.push(s),n.push(l),n}const o=_s._createFromPositionAndShift(t.sourcePosition,t.howMany)._getTransformedByMergeOperation(e);return t.sourcePosition=o.start,t.howMany=o.end.offset-o.start.offset,t.targetPosition=t.targetPosition._getTransformedByMergeOperation(e),[t]}),vd(Ra,Na,(t,e)=>(t.position=t.position._getTransformedByInsertOperation(e),[t])),vd(Ra,La,(t,e)=>t.position.isEqual(e.deletionPosition)?(t.position=e.graveyardPosition.clone(),t.position.stickiness=\"toNext\",[t]):(t.position=t.position._getTransformedByMergeOperation(e),[t])),vd(Ra,Ia,(t,e)=>(t.position=t.position._getTransformedByMoveOperation(e),[t])),vd(Ra,Ra,(t,e,n)=>{if(t.position.isEqual(e.position)){if(!n.aIsStrong)return[new nc(0)];t.oldName=e.newName}return[t]}),vd(Ra,ja,(t,e)=>{if(\"same\"==En(t.position.path,e.splitPosition.getParentPath())&&!e.graveyardPosition){const e=new Ra(t.position.getShiftedBy(1),t.oldName,t.newName,0);return[t,e]}return t.position=t.position._getTransformedBySplitOperation(e),[t]}),vd(Da,Da,(t,e,n)=>{if(t.root===e.root&&t.key===e.key){if(!n.aIsStrong||t.newValue===e.newValue)return[new nc(0)];t.oldValue=e.newValue}return[t]}),vd(ja,Na,(t,e)=>(t.splitPosition.hasSameParentAs(e.position)&&t.splitPosition.offset{if(!t.graveyardPosition&&!n.bWasUndone&&t.splitPosition.hasSameParentAs(e.sourcePosition)){const n=e.graveyardPosition.path.slice();n.push(0);const i=new ks(e.graveyardPosition.root,n),o=ja.getInsertionPosition(new ks(e.graveyardPosition.root,n)),r=new ja(i,0,null,0);return r.insertionPosition=o,t.splitPosition=t.splitPosition._getTransformedByMergeOperation(e),t.insertionPosition=ja.getInsertionPosition(t.splitPosition),t.graveyardPosition=r.insertionPosition.clone(),t.graveyardPosition.stickiness=\"toNext\",[r,t]}return t.splitPosition.hasSameParentAs(e.deletionPosition)&&!t.splitPosition.isAfter(e.deletionPosition)&&t.howMany--,t.splitPosition.hasSameParentAs(e.targetPosition)&&(t.howMany+=e.howMany),t.splitPosition=t.splitPosition._getTransformedByMergeOperation(e),t.insertionPosition=ja.getInsertionPosition(t.splitPosition),t.graveyardPosition&&(t.graveyardPosition=t.graveyardPosition._getTransformedByMergeOperation(e)),[t]}),vd(ja,Ia,(t,e,n)=>{const i=_s._createFromPositionAndShift(e.sourcePosition,e.howMany);if(t.graveyardPosition){const o=i.start.isEqual(t.graveyardPosition)||i.containsPosition(t.graveyardPosition);if(!n.bWasUndone&&o){const n=t.splitPosition._getTransformedByMoveOperation(e),i=t.graveyardPosition._getTransformedByMoveOperation(e),o=i.path.slice();o.push(0);const r=new ks(i.root,o);return[new Ia(n,t.howMany,r,0)]}t.graveyardPosition=t.graveyardPosition._getTransformedByMoveOperation(e)}if(t.splitPosition.hasSameParentAs(e.sourcePosition)&&i.containsPosition(t.splitPosition)){const n=e.howMany-(t.splitPosition.offset-e.sourcePosition.offset);return t.howMany-=n,t.splitPosition.hasSameParentAs(e.targetPosition)&&t.splitPosition.offset{if(t.splitPosition.isEqual(e.splitPosition)){if(!t.graveyardPosition&&!e.graveyardPosition)return[new nc(0)];if(t.graveyardPosition&&e.graveyardPosition&&t.graveyardPosition.isEqual(e.graveyardPosition))return[new nc(0)];if(\"splitBefore\"==n.abRelation)return t.howMany=0,t.graveyardPosition=t.graveyardPosition._getTransformedBySplitOperation(e),[t]}if(t.graveyardPosition&&e.graveyardPosition&&t.graveyardPosition.isEqual(e.graveyardPosition)){const i=\"$graveyard\"==t.splitPosition.root.rootName,o=\"$graveyard\"==e.splitPosition.root.rootName,r=i&&!o;if(o&&!i||!r&&n.aIsStrong){const n=[];return e.howMany&&n.push(new Ia(e.moveTargetPosition,e.howMany,e.splitPosition,0)),t.howMany&&n.push(new Ia(t.splitPosition,t.howMany,t.moveTargetPosition,0)),n}return[new nc(0)]}if(t.graveyardPosition&&(t.graveyardPosition=t.graveyardPosition._getTransformedBySplitOperation(e)),t.splitPosition.isEqual(e.insertionPosition)&&\"splitBefore\"==n.abRelation)return t.howMany++,[t];if(e.splitPosition.isEqual(t.insertionPosition)&&\"splitBefore\"==n.baRelation){const n=e.insertionPosition.path.slice();n.push(0);const i=new ks(e.insertionPosition.root,n);return[t,new Ia(t.insertionPosition,1,i,0)]}return t.splitPosition.hasSameParentAs(e.splitPosition)&&t.splitPosition.offset0}addBatch(t){const e=this.editor.model.document.selection,n={ranges:e.hasOwnRange?Array.from(e.getRanges()):[],isBackward:e.isBackward};this._stack.push({batch:t,selection:n}),this.refresh()}clearStack(){this._stack=[],this.refresh()}_restoreSelection(t,e,n){const i=this.editor.model,o=i.document,r=[];for(const e of t){const t=Nd(e,n).find(t=>t.start.root!=o.graveyard);t&&r.push(t)}r.length&&i.change(t=>{t.setSelection(r,{backward:e})})}_undo(t,e){const n=this.editor.model,i=n.document;this._createdBatches.add(e);const o=t.operations.slice().filter(t=>t.isDocumentOperation);o.reverse();for(const t of o){const o=t.baseVersion+1,r=Array.from(i.history.getOperations(o)),s=Ad([t.getReversed()],r,{useRelations:!0,document:this.editor.model.document,padWithNoOps:!1,forceWeakRemove:!0}).operationsA;for(const o of s)e.addOperation(o),n.applyOperation(o),i.history.setOperationAsUndone(t,o)}}}function Nd(t,e){const n=t.getTransformedByOperations(e);n.sort((t,e)=>t.start.isBefore(e.start)?-1:1);for(let t=1;te.batch==t):this._stack.length-1,n=this._stack.splice(e,1)[0],i=this.editor.model.createBatch(\"transparent\");this.editor.model.enqueueChange(i,()=>{this._undo(n.batch,i);const t=this.editor.model.document.history.getOperations(n.batch.baseVersion);this._restoreSelection(n.selection.ranges,n.selection.isBackward,t),this.fire(\"revert\",n.batch,i)}),this.refresh()}}class Rd extends Id{execute(){const t=this._stack.pop(),e=this.editor.model.createBatch(\"transparent\");this.editor.model.enqueueChange(e,()=>{const n=t.batch.operations[t.batch.operations.length-1].baseVersion+1,i=this.editor.model.document.history.getOperations(n);this._restoreSelection(t.selection.ranges,t.selection.isBackward,i),this._undo(t.batch,e)}),this.refresh()}}class Dd extends Hl{static get pluginName(){return\"UndoEditing\"}constructor(t){super(t),this._batchRegistry=new WeakSet}init(){const t=this.editor;this._undoCommand=new Od(t),this._redoCommand=new Rd(t),t.commands.add(\"undo\",this._undoCommand),t.commands.add(\"redo\",this._redoCommand),this.listenTo(t.model,\"applyOperation\",(t,e)=>{const n=e[0];if(!n.isDocumentOperation)return;const i=n.batch,o=this._redoCommand._createdBatches.has(i),r=this._undoCommand._createdBatches.has(i);this._batchRegistry.has(i)||\"transparent\"==i.type&&!o&&!r||(o?this._undoCommand.addBatch(i):r||(this._undoCommand.addBatch(i),this._redoCommand.clearStack()),this._batchRegistry.add(i))},{priority:\"highest\"}),this.listenTo(this._undoCommand,\"revert\",(t,e,n)=>{this._redoCommand.addBatch(n)}),t.keystrokes.set(\"CTRL+Z\",\"undo\"),t.keystrokes.set(\"CTRL+Y\",\"redo\"),t.keystrokes.set(\"CTRL+SHIFT+Z\",\"redo\")}}var Ld='',jd='';class Vd extends Hl{init(){const t=this.editor,e=t.locale,n=t.t,i=\"ltr\"==e.uiLanguageDirection?Ld:jd,o=\"ltr\"==e.uiLanguageDirection?jd:Ld;this._addButton(\"undo\",n(\"bh\"),\"CTRL+Z\",i),this._addButton(\"redo\",n(\"bi\"),\"CTRL+Y\",o)}_addButton(t,e,n,i){const o=this.editor;o.ui.componentFactory.add(t,r=>{const s=o.commands.get(t),a=new Sl(r);return a.set({label:e,icon:i,keystroke:n,tooltip:!0}),a.bind(\"isEnabled\").to(s,\"isEnabled\"),this.listenTo(a,\"execute\",()=>{o.execute(t),o.editing.view.focus()}),a})}}class zd extends Hl{static get requires(){return[Dd,Vd]}static get pluginName(){return\"Undo\"}}class Bd{constructor(t){this.context=t}destroy(){this.stopListening()}static get isContextPlugin(){return!0}}yn(Bd,Ui);class Fd extends Bd{static get pluginName(){return\"PendingActions\"}init(){this.set(\"hasAny\",!1),this._actions=new xn({idProperty:\"_id\"}),this._actions.delegate(\"add\",\"remove\").to(this)}add(t){if(\"string\"!=typeof t)throw new un.b(\"pendingactions-add-invalid-message: The message must be a string.\",this);const e=Object.create(Ui);return e.set(\"message\",t),this._actions.add(e),this.hasAny=!0,e}remove(t){this._actions.remove(t),this.hasAny=!!this._actions.length}get first(){return this._actions.get(0)}[Symbol.iterator](){return this._actions[Symbol.iterator]()}}class Ud{constructor(){const t=new window.FileReader;this._reader=t,this._data=void 0,this.set(\"loaded\",0),t.onprogress=t=>{this.loaded=t.loaded}}get error(){return this._reader.error}get data(){return this._data}read(t){const e=this._reader;return this.total=t.size,new Promise((n,i)=>{e.onload=()=>{const t=e.result;this._data=t,n(t)},e.onerror=()=>{i(\"error\")},e.onabort=()=>{i(\"aborted\")},this._reader.readAsDataURL(t)})}abort(){this._reader.abort()}}yn(Ud,Ui);class Hd extends Hl{static get pluginName(){return\"FileRepository\"}static get requires(){return[Fd]}init(){this.loaders=new xn,this.loaders.on(\"add\",()=>this._updatePendingAction()),this.loaders.on(\"remove\",()=>this._updatePendingAction()),this._loadersMap=new Map,this._pendingAction=null,this.set(\"uploaded\",0),this.set(\"uploadTotal\",null),this.bind(\"uploadedPercent\").to(this,\"uploaded\",this,\"uploadTotal\",(t,e)=>e?t/e*100:0)}getLoader(t){return this._loadersMap.get(t)||null}createLoader(t){if(!this.createUploadAdapter)return console.warn(Object(un.a)(\"filerepository-no-upload-adapter: Upload adapter is not defined.\")),null;const e=new qd(Promise.resolve(t),this.createUploadAdapter);return this.loaders.add(e),this._loadersMap.set(t,e),t instanceof Promise&&e.file.then(t=>{this._loadersMap.set(t,e)}).catch(()=>{}),e.on(\"change:uploaded\",()=>{let t=0;for(const e of this.loaders)t+=e.uploaded;this.uploaded=t}),e.on(\"change:uploadTotal\",()=>{let t=0;for(const e of this.loaders)e.uploadTotal&&(t+=e.uploadTotal);this.uploadTotal=t}),e}destroyLoader(t){const e=t instanceof qd?t:this.getLoader(t);e._destroy(),this.loaders.remove(e),this._loadersMap.forEach((t,n)=>{t===e&&this._loadersMap.delete(n)})}_updatePendingAction(){const t=this.editor.plugins.get(Fd);if(this.loaders.length){if(!this._pendingAction){const e=this.editor.t,n=t=>`${e(\"au\")} ${parseInt(t)}%.`;this._pendingAction=t.add(n(this.uploadedPercent)),this._pendingAction.bind(\"message\").to(this,\"uploadedPercent\",n)}}else t.remove(this._pendingAction),this._pendingAction=null}}yn(Hd,Ui);class qd{constructor(t,e){this.id=dn(),this._filePromiseWrapper=this._createFilePromiseWrapper(t),this._adapter=e(this),this._reader=new Ud,this.set(\"status\",\"idle\"),this.set(\"uploaded\",0),this.set(\"uploadTotal\",null),this.bind(\"uploadedPercent\").to(this,\"uploaded\",this,\"uploadTotal\",(t,e)=>e?t/e*100:0),this.set(\"uploadResponse\",null)}get file(){return this._filePromiseWrapper?this._filePromiseWrapper.promise.then(t=>this._filePromiseWrapper?t:null):Promise.resolve(null)}get data(){return this._reader.data}read(){if(\"idle\"!=this.status)throw new un.b(\"filerepository-read-wrong-status: You cannot call read if the status is different than idle.\",this);return this.status=\"reading\",this.file.then(t=>this._reader.read(t)).then(t=>(this.status=\"idle\",t)).catch(t=>{if(\"aborted\"===t)throw this.status=\"aborted\",\"aborted\";throw this.status=\"error\",this._reader.error?this._reader.error:t})}upload(){if(\"idle\"!=this.status)throw new un.b(\"filerepository-upload-wrong-status: You cannot call upload if the status is different than idle.\",this);return this.status=\"uploading\",this.file.then(()=>this._adapter.upload()).then(t=>(this.uploadResponse=t,this.status=\"idle\",t)).catch(t=>{if(\"aborted\"===this.status)throw\"aborted\";throw this.status=\"error\",t})}abort(){const t=this.status;this.status=\"aborted\",this._filePromiseWrapper.isFulfilled?\"reading\"==t?this._reader.abort():\"uploading\"==t&&this._adapter.abort&&this._adapter.abort():(this._filePromiseWrapper.promise.catch(()=>{}),this._filePromiseWrapper.rejecter(\"aborted\")),this._destroy()}_destroy(){this._filePromiseWrapper=void 0,this._reader=void 0,this._adapter=void 0,this.uploadResponse=void 0}_createFilePromiseWrapper(t){const e={};return e.promise=new Promise((n,i)=>{e.rejecter=i,e.isFulfilled=!1,t.then(t=>{e.isFulfilled=!0,n(t)}).catch(t=>{e.isFulfilled=!0,i(t)})}),e}}yn(qd,Ui);function Wd(){let t=function(t){t=t.toLowerCase();const e=document.cookie.split(\";\");for(const n of e){const e=n.split(\"=\");if(decodeURIComponent(e[0].trim().toLowerCase())===t)return decodeURIComponent(e[1])}return null}(\"ckCsrfToken\");var e,n;return t&&40==t.length||(t=function(t){let e=\"\";const n=new Uint8Array(t);window.crypto.getRandomValues(n);for(let t=0;t.5?i.toUpperCase():i}return e}(40),e=\"ckCsrfToken\",n=t,document.cookie=encodeURIComponent(e)+\"=\"+encodeURIComponent(n)+\";path=/\"),t}class Yd extends Hl{static get requires(){return[Hd]}static get pluginName(){return\"CKFinderUploadAdapter\"}init(){const t=this.editor.config.get(\"ckfinder.uploadUrl\");t&&(this.editor.plugins.get(Hd).createUploadAdapter=e=>new $d(e,t,this.editor.t))}}class $d{constructor(t,e,n){this.loader=t,this.url=e,this.t=n}upload(){return this.loader.file.then(t=>new Promise((e,n)=>{this._initRequest(),this._initListeners(e,n,t),this._sendRequest(t)}))}abort(){this.xhr&&this.xhr.abort()}_initRequest(){const t=this.xhr=new XMLHttpRequest;t.open(\"POST\",this.url,!0),t.responseType=\"json\"}_initListeners(t,e,n){const i=this.xhr,o=this.loader,r=(0,this.t)(\"a\")+` ${n.name}.`;i.addEventListener(\"error\",()=>e(r)),i.addEventListener(\"abort\",()=>e()),i.addEventListener(\"load\",()=>{const n=i.response;if(!n||!n.uploaded)return e(n&&n.error&&n.error.message?n.error.message:r);t({default:n.url})}),i.upload&&i.upload.addEventListener(\"progress\",t=>{t.lengthComputable&&(o.uploadTotal=t.total,o.uploaded=t.loaded)})}_sendRequest(t){const e=new FormData;e.append(\"upload\",t),e.append(\"ckCsrfToken\",Wd()),this.xhr.send(e)}}class Gd{static get pluginName(){return\"BlockAutoformatEditing\"}constructor(t,e,n){let i,o=null;\"function\"==typeof n?i=n:(o=t.commands.get(n),i=()=>{t.execute(n)}),t.model.document.on(\"change\",(n,r)=>{if(o&&!o.isEnabled)return;if(\"transparent\"==r.type)return;const s=Array.from(t.model.document.differ.getChanges()),a=s[0];if(1!=s.length||\"insert\"!==a.type||\"$text\"!=a.name||1!=a.length)return;const c=a.position.parent;if(!c.is(\"paragraph\")||1!==c.childCount)return;const l=e.exec(c.getChild(0).data);l&&t.model.enqueueChange(t=>{const e=t.createPositionAt(c,0),n=t.createPositionAt(c,l[0].length),o=new Is(e,n);!1!==i({match:l})&&t.remove(o),o.detach()})})}}function Qd(t,e){let n=t.start;return{text:Array.from(t.getItems()).reduce((t,i)=>i.is(\"text\")||i.is(\"textProxy\")?t+i.data:(n=e.createPositionAfter(i),\"\"),\"\"),range:e.createRange(n,t.end)}}class Kd{static get pluginName(){return\"InlineAutoformatEditing\"}constructor(t,e,n){let i,o,r,s;e instanceof RegExp?i=e:r=e,\"string\"==typeof n?o=n:s=n,r=r||(t=>{let e;const n=[],o=[];for(;null!==(e=i.exec(t))&&!(e&&e.length<4);){let{index:t,1:i,2:r,3:s}=e;const a=i+r+s;t+=e[0].length-a.length;const c=[t,t+i.length],l=[t+i.length+r.length,t+i.length+r.length+s.length];n.push(c),n.push(l),o.push([t+i.length,t+i.length+r.length])}return{remove:n,format:o}}),s=s||((e,n)=>{const i=t.model.schema.getValidRanges(n,o);for(const t of i)e.setAttribute(o,!0,t);e.removeSelectionAttribute(o)}),t.model.document.on(\"change\",(e,n)=>{if(\"transparent\"==n.type)return;const i=t.model,o=i.document.selection;if(!o.isCollapsed)return;const a=Array.from(i.document.differ.getChanges()),c=a[0];if(1!=a.length||\"insert\"!==c.type||\"$text\"!=c.name||1!=c.length)return;const l=o.focus,d=l.parent,{text:h,range:u}=Qd(i.createRange(i.createPositionAt(d,0),l),i),f=r(h),m=Jd(u.start,f.format,i),g=Jd(u.start,f.remove,i);m.length&&g.length&&i.enqueueChange(t=>{if(!1!==s(t,m))for(const e of g.reverse())t.remove(e)})})}}function Jd(t,e,n){return e.filter(t=>void 0!==t[0]&&void 0!==t[1]).map(e=>n.createRange(t.getShiftedBy(e[0]),t.getShiftedBy(e[1])))}function Zd(t,e){return(n,i)=>{if(!t.commands.get(e).isEnabled)return!1;const o=t.model.schema.getValidRanges(i,e);for(const t of o)n.setAttribute(e,!0,t);n.removeSelectionAttribute(e)}}class Xd extends Ql{constructor(t,e){super(t),this.attributeKey=e}refresh(){const t=this.editor.model,e=t.document;this.value=this._getValueFromFirstAllowedNode(),this.isEnabled=t.schema.checkAttributeInSelection(e.selection,this.attributeKey)}execute(t={}){const e=this.editor.model,n=e.document.selection,i=void 0===t.forceValue?!this.value:t.forceValue;e.change(t=>{if(n.isCollapsed)i?t.setSelectionAttribute(this.attributeKey,!0):t.removeSelectionAttribute(this.attributeKey);else{const o=e.schema.getValidRanges(n.getRanges(),this.attributeKey);for(const e of o)i?t.setAttribute(this.attributeKey,i,e):t.removeAttribute(this.attributeKey,e)}})}_getValueFromFirstAllowedNode(){const t=this.editor.model,e=t.schema,n=t.document.selection;if(n.isCollapsed)return n.hasAttribute(this.attributeKey);for(const t of n.getRanges())for(const n of t.getItems())if(e.checkAttribute(n,this.attributeKey))return n.hasAttribute(this.attributeKey);return!1}}class th extends Hl{static get pluginName(){return\"BoldEditing\"}init(){const t=this.editor;t.model.schema.extend(\"$text\",{allowAttributes:\"bold\"}),t.model.schema.setAttributeProperties(\"bold\",{isFormatting:!0,copyOnEnter:!0}),t.conversion.attributeToElement({model:\"bold\",view:\"strong\",upcastAlso:[\"b\",t=>{const e=t.getStyle(\"font-weight\");return e?\"bold\"==e||Number(e)>=600?{name:!0,styles:[\"font-weight\"]}:void 0:null}]}),t.commands.add(\"bold\",new Xd(t,\"bold\")),t.keystrokes.set(\"CTRL+B\",\"bold\")}}class eh extends Hl{init(){const t=this.editor,e=t.t;t.ui.componentFactory.add(\"bold\",n=>{const i=t.commands.get(\"bold\"),o=new Sl(n);return o.set({label:e(\"d\"),icon:'',keystroke:\"CTRL+B\",tooltip:!0,isToggleable:!0}),o.bind(\"isOn\",\"isEnabled\").to(i,\"value\",\"isEnabled\"),this.listenTo(o,\"execute\",()=>{t.execute(\"bold\"),t.editing.view.focus()}),o})}}class nh extends Hl{static get pluginName(){return\"ItalicEditing\"}init(){const t=this.editor;t.model.schema.extend(\"$text\",{allowAttributes:\"italic\"}),t.model.schema.setAttributeProperties(\"italic\",{isFormatting:!0,copyOnEnter:!0}),t.conversion.attributeToElement({model:\"italic\",view:\"i\",upcastAlso:[\"em\",{styles:{\"font-style\":\"italic\"}}]}),t.commands.add(\"italic\",new Xd(t,\"italic\")),t.keystrokes.set(\"CTRL+I\",\"italic\")}}class ih extends Hl{init(){const t=this.editor,e=t.t;t.ui.componentFactory.add(\"italic\",n=>{const i=t.commands.get(\"italic\"),o=new Sl(n);return o.set({label:e(\"ai\"),icon:'',keystroke:\"CTRL+I\",tooltip:!0,isToggleable:!0}),o.bind(\"isOn\",\"isEnabled\").to(i,\"value\",\"isEnabled\"),this.listenTo(o,\"execute\",()=>{t.execute(\"italic\"),t.editing.view.focus()}),o})}}function oh(t){const e=t.next();return e.done?null:e.value}class rh extends Ql{refresh(){this.value=this._getValue(),this.isEnabled=this._checkEnabled()}execute(t={}){const e=this.editor.model,n=e.schema,i=e.document.selection,o=Array.from(i.getSelectedBlocks()),r=void 0===t.forceValue?!this.value:t.forceValue;e.change(t=>{if(r){const e=o.filter(t=>sh(t)||ch(n,t));this._applyQuote(t,e)}else this._removeQuote(t,o.filter(sh))})}_getValue(){const t=oh(this.editor.model.document.selection.getSelectedBlocks());return!(!t||!sh(t))}_checkEnabled(){if(this.value)return!0;const t=this.editor.model.document.selection,e=this.editor.model.schema,n=oh(t.getSelectedBlocks());return!!n&&ch(e,n)}_removeQuote(t,e){ah(t,e).reverse().forEach(e=>{if(e.start.isAtStart&&e.end.isAtEnd)return void t.unwrap(e.start.parent);if(e.start.isAtStart){const n=t.createPositionBefore(e.start.parent);return void t.move(e,n)}e.end.isAtEnd||t.split(e.end);const n=t.createPositionAfter(e.end.parent);t.move(e,n)})}_applyQuote(t,e){const n=[];ah(t,e).reverse().forEach(e=>{let i=sh(e.start);i||(i=t.createElement(\"blockQuote\"),t.wrap(e,i)),n.push(i)}),n.reverse().reduce((e,n)=>e.nextSibling==n?(t.merge(t.createPositionAfter(e)),e):n)}}function sh(t){return\"blockQuote\"==t.parent.name?t.parent:null}function ah(t,e){let n,i=0;const o=[];for(;i{if(t.endsWith(\"blockQuote\")&&\"blockQuote\"==e.name)return!1}),t.conversion.elementToElement({model:\"blockQuote\",view:\"blockquote\"}),t.model.document.registerPostFixer(n=>{const i=t.model.document.differ.getChanges();for(const t of i)if(\"insert\"==t.type){const i=t.position.nodeAfter;if(!i)continue;if(i.is(\"blockQuote\")&&i.isEmpty)return n.remove(i),!0;if(i.is(\"blockQuote\")&&!e.checkChild(t.position,i))return n.unwrap(i),!0;if(i.is(\"element\")){const t=n.createRangeIn(i);for(const i of t.getItems())if(i.is(\"blockQuote\")&&!e.checkChild(n.createPositionBefore(i),i))return n.unwrap(i),!0}}else if(\"remove\"==t.type){const e=t.position.parent;if(e.is(\"blockQuote\")&&e.isEmpty)return n.remove(e),!0}return!1})}afterInit(){const t=this.editor.commands.get(\"blockQuote\");this.listenTo(this.editor.editing.view.document,\"enter\",(e,n)=>{const i=this.editor.model.document,o=i.selection.getLastPosition().parent;i.selection.isCollapsed&&o.isEmpty&&t.value&&(this.editor.execute(\"blockQuote\"),this.editor.editing.view.scrollToTheSelection(),n.preventDefault(),e.stop())})}}n(43);class dh extends Hl{init(){const t=this.editor,e=t.t;t.ui.componentFactory.add(\"blockQuote\",n=>{const i=t.commands.get(\"blockQuote\"),o=new Sl(n);return o.set({label:e(\"j\"),icon:'',tooltip:!0,isToggleable:!0}),o.bind(\"isOn\",\"isEnabled\").to(i,\"value\",\"isEnabled\"),this.listenTo(o,\"execute\",()=>{t.execute(\"blockQuote\"),t.editing.view.focus()}),o})}}class hh extends Hl{static get pluginName(){return\"CKFinderUI\"}init(){const t=this.editor,e=t.ui.componentFactory,n=t.t;e.add(\"ckfinder\",e=>{const i=t.commands.get(\"ckfinder\"),o=new Sl(e);return o.set({label:n(\"k\"),icon:'',tooltip:!0}),o.bind(\"isEnabled\").to(i),o.on(\"execute\",()=>{t.execute(\"ckfinder\"),t.editing.view.focus()}),o})}}class uh extends hr{observe(t){this.listenTo(t,\"load\",(t,e)=>{\"IMG\"==e.target.tagName&&this._fireEvents(e)},{useCapture:!0})}_fireEvents(t){this.isEnabled&&(this.document.fire(\"layoutChanged\"),this.document.fire(\"imageLoaded\",t))}}class fh{constructor(){this._stack=[]}add(t,e){const n=this._stack,i=n[0];this._insertDescriptor(t);const o=n[0];i===o||mh(i,o)||this.fire(\"change:top\",{oldDescriptor:i,newDescriptor:o,writer:e})}remove(t,e){const n=this._stack,i=n[0];this._removeDescriptor(t);const o=n[0];i===o||mh(i,o)||this.fire(\"change:top\",{oldDescriptor:i,newDescriptor:o,writer:e})}_insertDescriptor(t){const e=this._stack,n=e.findIndex(e=>e.id===t.id);if(mh(t,e[n]))return;n>-1&&e.splice(n,1);let i=0;for(;e[i]&&gh(e[i],t);)i++;e.splice(i,0,t)}_removeDescriptor(t){const e=this._stack,n=e.findIndex(e=>e.id===t);n>-1&&e.splice(n,1)}}function mh(t,e){return t&&e&&t.priority==e.priority&&ph(t.classes)==ph(e.classes)}function gh(t,e){return t.priority>e.priority||!(t.priorityph(e.classes)}function ph(t){return Array.isArray(t)?t.sort().join(\",\"):t}yn(fh,gn);function bh(t){return!!t.is(\"element\")&&!!t.getCustomProperty(\"widget\")}function wh(t,e,n={}){return uo.isEdge||e.setAttribute(\"contenteditable\",\"false\",t),e.addClass(\"ck-widget\",t),e.setCustomProperty(\"widget\",!0,t),t.getFillerOffset=yh,n.label&&function(t,e,n){n.setCustomProperty(\"widgetLabel\",e,t)}(t,n.label,e),n.hasSelectionHandle&&function(t,e){const n=e.createUIElement(\"div\",{class:\"ck ck-widget__selection-handle\"},(function(t){const e=this.toDomElement(t),n=new Tl;return n.set(\"content\",''),n.render(),e.appendChild(n.element),e}));e.insert(e.createPositionAt(t,0),n),e.addClass([\"ck-widget_with-selection-handle\"],t)}(t,e),function(t,e,n,i){const o=new fh;o.on(\"change:top\",(e,o)=>{o.oldDescriptor&&i(t,o.oldDescriptor,o.writer),o.newDescriptor&&n(t,o.newDescriptor,o.writer)}),e.setCustomProperty(\"addHighlight\",(t,e,n)=>o.add(e,n),t),e.setCustomProperty(\"removeHighlight\",(t,e,n)=>o.remove(e,n),t)}(t,e,(t,e,n)=>n.addClass(i(e.classes),t),(t,e,n)=>n.removeClass(i(e.classes),t)),t;function i(t){return Array.isArray(t)?t:[t]}}function kh(t){const e=t.getCustomProperty(\"widgetLabel\");return e?\"function\"==typeof e?e():e:\"\"}function _h(t,e){return e.addClass([\"ck-editor__editable\",\"ck-editor__nested-editable\"],t),uo.isEdge||(e.setAttribute(\"contenteditable\",t.isReadOnly?\"false\":\"true\",t),t.on(\"change:isReadOnly\",(n,i,o)=>{e.setAttribute(\"contenteditable\",o?\"false\":\"true\",t)})),t.on(\"change:isFocused\",(n,i,o)=>{o?e.addClass(\"ck-editor__nested-editable_focused\",t):e.removeClass(\"ck-editor__nested-editable_focused\",t)}),t}function vh(t,e){const n=t.getSelectedElement();if(n&&e.schema.isBlock(n))return e.createPositionAfter(n);const i=t.getSelectedBlocks().next().value;if(i){if(i.isEmpty)return e.createPositionAt(i,0);const n=e.createPositionAfter(i);return t.focus.isTouching(n)?n:e.createPositionBefore(i)}return t.focus}function yh(){return null}function xh(t){const e=t.getSelectedElement();return e&&function(t){return!!t.getCustomProperty(\"image\")&&bh(t)}(e)?e:null}function Ah(t){return!!t&&t.is(\"image\")}function Ch(t,e,n={}){const i=t.createElement(\"image\",n),o=vh(e.document.selection,e);e.insertContent(i,o),i.parent&&t.setSelection(i,\"on\")}function Th(t){const e=t.schema,n=t.document.selection;return function(t,e,n){const i=function(t,e){const n=vh(t,e).parent;if(n.isEmpty&&!n.is(\"$root\"))return n.parent;return n}(t,n);return e.checkChild(i,\"image\")}(n,e,t)&&!function(t,e){const n=t.getSelectedElement();return n&&e.isObject(n)}(n,e)&&function(t){return[...t.focus.getAncestors()].every(t=>!t.is(\"image\"))}(n)}function Ph(t){return Array.from(t.getChildren()).find(t=>t.is(\"img\"))}function Sh(t){return n=>{n.on(`attribute:${t}:image`,e)};function e(t,e,n){if(!n.consumable.consume(e.item,t.name))return;const i=n.writer,o=Ph(n.mapper.toViewElement(e.item));null!==e.attributeNewValue?i.setAttribute(e.attributeKey,e.attributeNewValue,o):i.removeAttribute(e.attributeKey,o)}}class Mh extends Ql{refresh(){this.isEnabled=Th(this.editor.model)}execute(t){const e=this.editor.model;e.change(n=>{const i=Array.isArray(t.source)?t.source:[t.source];for(const t of i)Ch(n,e,{src:t})})}}class Eh extends Hl{static get pluginName(){return\"ImageEditing\"}init(){const t=this.editor,e=t.model.schema,n=t.t,i=t.conversion;t.editing.view.addObserver(uh),e.register(\"image\",{isObject:!0,isBlock:!0,allowWhere:\"$block\",allowAttributes:[\"alt\",\"src\",\"srcset\"]}),i.for(\"dataDowncast\").elementToElement({model:\"image\",view:(t,e)=>Ih(e)}),i.for(\"editingDowncast\").elementToElement({model:\"image\",view:(t,e)=>{return i=Ih(e),o=e,r=n(\"aj\"),o.setCustomProperty(\"image\",!0,i),wh(i,o,{label:function(){const t=Ph(i).getAttribute(\"alt\");return t?`${t} ${r}`:r}});var i,o,r}}),i.for(\"downcast\").add(Sh(\"src\")).add(Sh(\"alt\")).add(function(){return e=>{e.on(\"attribute:srcset:image\",t)};function t(t,e,n){if(!n.consumable.consume(e.item,t.name))return;const i=n.writer,o=Ph(n.mapper.toViewElement(e.item));if(null===e.attributeNewValue){const t=e.attributeOldValue;t.data&&(i.removeAttribute(\"srcset\",o),i.removeAttribute(\"sizes\",o),t.width&&i.removeAttribute(\"width\",o))}else{const t=e.attributeNewValue;t.data&&(i.setAttribute(\"srcset\",t.data,o),i.setAttribute(\"sizes\",\"100vw\",o),t.width&&i.setAttribute(\"width\",t.width,o))}}}()),i.for(\"upcast\").elementToElement({view:{name:\"img\",attributes:{src:!0}},model:(t,e)=>e.createElement(\"image\",{src:t.getAttribute(\"src\")})}).attributeToAttribute({view:{name:\"img\",key:\"alt\"},model:\"alt\"}).attributeToAttribute({view:{name:\"img\",key:\"srcset\"},model:{key:\"srcset\",value:t=>{const e={data:t.getAttribute(\"srcset\")};return t.hasAttribute(\"width\")&&(e.width=t.getAttribute(\"width\")),e}}}).add(function(){return e=>{e.on(\"element:figure\",t)};function t(t,e,n){if(!n.consumable.test(e.viewItem,{name:!0,classes:\"image\"}))return;const i=Ph(e.viewItem);if(!i||!i.hasAttribute(\"src\")||!n.consumable.test(i,{name:!0}))return;const o=n.convertItem(i,e.modelCursor),r=oh(o.modelRange.getItems());r&&(n.convertChildren(e.viewItem,n.writer.createPositionAt(r,0)),e.modelRange=o.modelRange,e.modelCursor=o.modelCursor)}}()),t.commands.add(\"imageInsert\",new Mh(t))}}function Ih(t){const e=t.createEmptyElement(\"img\"),n=t.createContainerElement(\"figure\",{class:\"image\"});return t.insert(t.createPositionAt(n,0),e),n}function Nh(t,e,n){return n.createRange(Oh(t,e,!0,n),Oh(t,e,!1,n))}function Oh(t,e,n,i){let o=t.textNode||(n?t.nodeBefore:t.nodeAfter),r=null;for(;o&&o.getAttribute(\"linkHref\")==e;)r=o,o=n?o.previousSibling:o.nextSibling;return r?i.createPositionAt(r,n?\"before\":\"after\"):t}class Rh extends Ql{constructor(t){super(t),this.manualDecorators=new xn}restoreManualDecoratorStates(){for(const t of this.manualDecorators)t.value=this._getDecoratorStateFromModel(t.id)}refresh(){const t=this.editor.model,e=t.document;this.value=e.selection.getAttribute(\"linkHref\");for(const t of this.manualDecorators)t.value=this._getDecoratorStateFromModel(t.id);this.isEnabled=t.schema.checkAttributeInSelection(e.selection,\"linkHref\")}execute(t,e={}){const n=this.editor.model,i=n.document.selection,o=[],r=[];for(const t in e)e[t]?o.push(t):r.push(t);n.change(e=>{if(i.isCollapsed){const s=i.getFirstPosition();if(i.hasAttribute(\"linkHref\")){const a=Nh(s,i.getAttribute(\"linkHref\"),n);e.setAttribute(\"linkHref\",t,a),o.forEach(t=>{e.setAttribute(t,!0,a)}),r.forEach(t=>{e.removeAttribute(t,a)}),e.setSelection(a)}else if(\"\"!==t){const r=Ln(i.getAttributes());r.set(\"linkHref\",t),o.forEach(t=>{r.set(t,!0)});const a=e.createText(t,r);n.insertContent(a,s),e.setSelection(e.createRangeOn(a))}}else{const s=n.schema.getValidRanges(i.getRanges(),\"linkHref\");for(const n of s)e.setAttribute(\"linkHref\",t,n),o.forEach(t=>{e.setAttribute(t,!0,n)}),r.forEach(t=>{e.removeAttribute(t,n)})}})}_getDecoratorStateFromModel(t){return this.editor.model.document.selection.getAttribute(t)||!1}}class Dh extends Ql{refresh(){this.isEnabled=this.editor.model.document.selection.hasAttribute(\"linkHref\")}execute(){const t=this.editor,e=this.editor.model,n=e.document.selection,i=t.commands.get(\"link\");e.change(t=>{const o=n.isCollapsed?[Nh(n.getFirstPosition(),n.getAttribute(\"linkHref\"),e)]:n.getRanges();for(const e of o)if(t.removeAttribute(\"linkHref\",e),i)for(const n of i.manualDecorators)t.removeAttribute(n.id,e)})}}var Lh=function(t,e,n){var i=t.length;return n=void 0===n?i:n,!e&&n>=i?t:ii(t,e,n)},jh=RegExp(\"[\\\\u200d\\\\ud800-\\\\udfff\\\\u0300-\\\\u036f\\\\ufe20-\\\\ufe2f\\\\u20d0-\\\\u20ff\\\\ufe0e\\\\ufe0f]\");var Vh=function(t){return jh.test(t)};var zh=function(t){return t.split(\"\")},Bh=\"[\\\\ud800-\\\\udfff]\",Fh=\"[\\\\u0300-\\\\u036f\\\\ufe20-\\\\ufe2f\\\\u20d0-\\\\u20ff]\",Uh=\"\\\\ud83c[\\\\udffb-\\\\udfff]\",Hh=\"[^\\\\ud800-\\\\udfff]\",qh=\"(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}\",Wh=\"[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]\",Yh=\"(?:\"+Fh+\"|\"+Uh+\")\"+\"?\",$h=\"[\\\\ufe0e\\\\ufe0f]?\"+Yh+(\"(?:\\\\u200d(?:\"+[Hh,qh,Wh].join(\"|\")+\")[\\\\ufe0e\\\\ufe0f]?\"+Yh+\")*\"),Gh=\"(?:\"+[Hh+Fh+\"?\",Fh,qh,Wh,Bh].join(\"|\")+\")\",Qh=RegExp(Uh+\"(?=\"+Uh+\")|\"+Gh+$h,\"g\");var Kh=function(t){return t.match(Qh)||[]};var Jh=function(t){return Vh(t)?Kh(t):zh(t)};var Zh=function(t){return function(e){e=Zn(e);var n=Vh(e)?Jh(e):void 0,i=n?n[0]:e.charAt(0),o=n?Lh(n,1).join(\"\"):e.slice(1);return i[t]()+o}}(\"toUpperCase\");const Xh=/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205f\\u3000]/g,tu=/^(?:(?:https?|ftps?|mailto):|[^a-z]|[a-z+.-]+(?:[^a-z+.:-]|$))/i;function eu(t,e){const n=e.createAttributeElement(\"a\",{href:t},{priority:5});return e.setCustomProperty(\"link\",!0,n),n}function nu(t){return function(t){return t.replace(Xh,\"\").match(tu)}(t=String(t))?t:\"#\"}class iu{constructor(){this._definitions=new Set}get length(){return this._definitions.size}add(t){Array.isArray(t)?t.forEach(t=>this._definitions.add(t)):this._definitions.add(t)}getDispatcher(){return t=>{t.on(\"attribute:linkHref\",(t,e,n)=>{if(!n.consumable.test(e.item,\"attribute:linkHref\"))return;const i=n.writer,o=i.document.selection;for(const t of this._definitions){const r=i.createAttributeElement(\"a\",t.attributes,{priority:5});i.setCustomProperty(\"link\",!0,r),t.callback(e.attributeNewValue)?e.item.is(\"selection\")?i.wrap(o.getFirstRange(),r):i.wrap(n.mapper.toViewRange(e.range),r):i.unwrap(n.mapper.toViewRange(e.range),r)}},{priority:\"high\"})}}}class ou{constructor({id:t,label:e,attributes:n}){this.id=t,this.set(\"value\"),this.label=e,this.attributes=n}}yn(ou,Ui);class ru{constructor(t,e,n){this.model=t,this.attribute=n,this._modelSelection=t.document.selection,this._overrideUid=null,this._isNextGravityRestorationSkipped=!1,e.listenTo(this._modelSelection,\"change:range\",(t,e)=>{this._isNextGravityRestorationSkipped?this._isNextGravityRestorationSkipped=!1:this._isGravityOverridden&&(!e.directChange&&su(this._modelSelection.getFirstPosition(),n)||this._restoreGravity())})}handleForwardMovement(t,e){const n=this.attribute;if(!(this._isGravityOverridden||t.isAtStart&&this._hasSelectionAttribute))return lu(t,n)&&this._hasSelectionAttribute?(this._preventCaretMovement(e),this._removeSelectionAttribute(),!0):au(t,n)||cu(t,n)&&this._hasSelectionAttribute?(this._preventCaretMovement(e),this._overrideGravity(),!0):void 0}handleBackwardMovement(t,e){const n=this.attribute;return this._isGravityOverridden?lu(t,n)&&this._hasSelectionAttribute?(this._preventCaretMovement(e),this._restoreGravity(),this._removeSelectionAttribute(),!0):(this._preventCaretMovement(e),this._restoreGravity(),t.isAtStart&&this._removeSelectionAttribute(),!0):lu(t,n)&&!this._hasSelectionAttribute?(this._preventCaretMovement(e),this._setSelectionAttributeFromTheNodeBefore(t),!0):t.isAtEnd&&cu(t,n)?this._hasSelectionAttribute?void(du(t,n)&&(this._skipNextAutomaticGravityRestoration(),this._overrideGravity())):(this._preventCaretMovement(e),this._setSelectionAttributeFromTheNodeBefore(t),!0):t.isAtStart?this._hasSelectionAttribute?(this._removeSelectionAttribute(),this._preventCaretMovement(e),!0):void 0:void(du(t,n)&&(this._skipNextAutomaticGravityRestoration(),this._overrideGravity()))}get _isGravityOverridden(){return!!this._overrideUid}get _hasSelectionAttribute(){return this._modelSelection.hasAttribute(this.attribute)}_overrideGravity(){this._overrideUid=this.model.change(t=>t.overrideSelectionGravity())}_restoreGravity(){this.model.change(t=>{t.restoreSelectionGravity(this._overrideUid),this._overrideUid=null})}_preventCaretMovement(t){t.preventDefault()}_removeSelectionAttribute(){this.model.change(t=>{t.removeSelectionAttribute(this.attribute)})}_setSelectionAttributeFromTheNodeBefore(t){const e=this.attribute;this.model.change(n=>{n.setSelectionAttribute(this.attribute,t.nodeBefore.getAttribute(e))})}_skipNextAutomaticGravityRestoration(){this._isNextGravityRestorationSkipped=!0}}function su(t,e){return au(t,e)||cu(t,e)}function au(t,e){const{nodeBefore:n,nodeAfter:i}=t,o=!!n&&n.hasAttribute(e);return!!i&&i.hasAttribute(e)&&(!o||n.getAttribute(e)!==i.getAttribute(e))}function cu(t,e){const{nodeBefore:n,nodeAfter:i}=t,o=!!n&&n.hasAttribute(e),r=!!i&&i.hasAttribute(e);return o&&(!r||n.getAttribute(e)!==i.getAttribute(e))}function lu(t,e){const{nodeBefore:n,nodeAfter:i}=t,o=!!n&&n.hasAttribute(e);if(!!i&&i.hasAttribute(e)&&o)return i.getAttribute(e)!==n.getAttribute(e)}function du(t,e){return su(t.getShiftedBy(-1),e)}n(45);const hu=/^(https?:)?\\/\\//;class uu extends Hl{static get pluginName(){return\"LinkEditing\"}constructor(t){super(t),t.config.define(\"link\",{addTargetToExternalLinks:!1})}init(){const t=this.editor,e=t.locale;t.model.schema.extend(\"$text\",{allowAttributes:\"linkHref\"}),t.conversion.for(\"dataDowncast\").attributeToElement({model:\"linkHref\",view:eu}),t.conversion.for(\"editingDowncast\").attributeToElement({model:\"linkHref\",view:(t,e)=>eu(nu(t),e)}),t.conversion.for(\"upcast\").elementToAttribute({view:{name:\"a\",attributes:{href:!0}},model:{key:\"linkHref\",value:t=>t.getAttribute(\"href\")}}),t.commands.add(\"link\",new Rh(t)),t.commands.add(\"unlink\",new Dh(t));const n=function(t,e){const n={\"Open in a new tab\":t(\"av\"),Downloadable:t(\"aw\")};return e.forEach(t=>(t.label&&n[t.label]&&(t.label=n[t.label]),t)),e}(t.t,function(t){const e=[];if(t)for(const[n,i]of Object.entries(t)){const t=Object.assign({},i,{id:`link${Zh(n)}`});e.push(t)}return e}(t.config.get(\"link.decorators\")));this._enableAutomaticDecorators(n.filter(t=>\"automatic\"===t.mode)),this._enableManualDecorators(n.filter(t=>\"manual\"===t.mode)),function({view:t,model:e,emitter:n,attribute:i,locale:o}){const r=new ru(e,n,i),s=e.document.selection;n.listenTo(t.document,\"keydown\",(t,e)=>{if(!s.isCollapsed)return;if(e.shiftKey||e.altKey||e.ctrlKey)return;const n=e.keyCode==go.arrowright,i=e.keyCode==go.arrowleft;if(!n&&!i)return;const a=s.getFirstPosition(),c=o.contentLanguageDirection;let l;l=\"ltr\"===c&&n||\"rtl\"===c&&i?r.handleForwardMovement(a,e):r.handleBackwardMovement(a,e),l&&t.stop()},{priority:hn.get(\"high\")+1})}({view:t.editing.view,model:t.model,emitter:this,attribute:\"linkHref\",locale:e}),this._setupLinkHighlight()}_enableAutomaticDecorators(t){const e=this.editor,n=new iu;e.config.get(\"link.addTargetToExternalLinks\")&&n.add({id:\"linkIsExternal\",mode:\"automatic\",callback:t=>hu.test(t),attributes:{target:\"_blank\",rel:\"noopener noreferrer\"}}),n.add(t),n.length&&e.conversion.for(\"downcast\").add(n.getDispatcher())}_enableManualDecorators(t){if(!t.length)return;const e=this.editor,n=e.commands.get(\"link\").manualDecorators;t.forEach(t=>{e.model.schema.extend(\"$text\",{allowAttributes:t.id}),n.add(new ou(t)),e.conversion.for(\"downcast\").attributeToElement({model:t.id,view:(e,i)=>{if(e){const e=n.get(t.id).attributes,o=i.createAttributeElement(\"a\",e,{priority:5});return i.setCustomProperty(\"link\",!0,o),o}}}),e.conversion.for(\"upcast\").elementToAttribute({view:{name:\"a\",attributes:n.get(t.id).attributes},model:{key:t.id}})})}_setupLinkHighlight(){const t=this.editor,e=t.editing.view,n=new Set;e.document.registerPostFixer(e=>{const i=t.model.document.selection;let o=!1;if(i.hasAttribute(\"linkHref\")){const r=Nh(i.getFirstPosition(),i.getAttribute(\"linkHref\"),t.model),s=t.editing.mapper.toViewRange(r);for(const t of s.getItems())t.is(\"a\")&&!t.hasClass(\"ck-link_selected\")&&(e.addClass(\"ck-link_selected\",t),n.add(t),o=!0)}return o}),t.conversion.for(\"editingDowncast\").add(t=>{function i(){e.change(t=>{for(const e of n.values())t.removeClass(\"ck-link_selected\",e),n.delete(e)})}t.on(\"insert\",i,{priority:\"highest\"}),t.on(\"remove\",i,{priority:\"highest\"}),t.on(\"attribute\",i,{priority:\"highest\"}),t.on(\"selection\",i,{priority:\"highest\"})})}}class fu extends Bd{static get pluginName(){return\"Notification\"}init(){this.on(\"show:warning\",(t,e)=>{window.alert(e.message)},{priority:\"lowest\"})}showSuccess(t,e={}){this._showNotification({message:t,type:\"success\",namespace:e.namespace,title:e.title})}showInfo(t,e={}){this._showNotification({message:t,type:\"info\",namespace:e.namespace,title:e.title})}showWarning(t,e={}){this._showNotification({message:t,type:\"warning\",namespace:e.namespace,title:e.title})}_showNotification(t){const e=`show:${t.type}`+(t.namespace?`:${t.namespace}`:\"\");this.fire(e,{message:t.message,type:t.type,title:t.title||\"\"})}}class mu extends Ql{constructor(t){super(t),this.stopListening(this.editor.model.document,\"change\"),this.listenTo(this.editor.model.document,\"change\",()=>this.refresh(),{priority:\"low\"})}refresh(){const t=this.editor.commands.get(\"imageInsert\"),e=this.editor.commands.get(\"link\");this.isEnabled=t.isEnabled||e.isEnabled}execute(){const t=this.editor,e=this.editor.config.get(\"ckfinder.openerMethod\")||\"modal\";if(\"popup\"!=e&&\"modal\"!=e)throw new un.b('ckfinder-unknown-openerMethod: The openerMethod config option must by \"popup\" or \"modal\".',t);const n=this.editor.config.get(\"ckfinder.options\")||{};n.chooseFiles=!0;const i=n.onInit;n.language||(n.language=t.locale.uiLanguage),n.onInit=e=>{i&&i(e),e.on(\"files:choose\",n=>{const i=n.data.files.toArray(),o=i.filter(t=>!t.isImage()),r=i.filter(t=>t.isImage());for(const e of o)t.execute(\"link\",e.getUrl());const s=[];for(const t of r){const n=t.getUrl();s.push(n||e.request(\"file:getProxyUrl\",{file:t}))}s.length&&gu(t,s)}),e.on(\"file:choose:resizedImage\",e=>{const n=e.data.resizedUrl;if(n)gu(t,[n]);else{const e=t.plugins.get(\"Notification\"),n=t.locale.t;e.showWarning(n(\"bz\"),{title:n(\"ca\"),namespace:\"ckfinder\"})}})},window.CKFinder[e](n)}}function gu(t,e){if(t.commands.get(\"imageInsert\").isEnabled)t.execute(\"imageInsert\",{source:e});else{const e=t.plugins.get(\"Notification\"),n=t.locale.t;e.showWarning(n(\"cb\"),{title:n(\"cc\"),namespace:\"ckfinder\"})}}class pu extends Hl{static get pluginName(){return\"CKFinderEditing\"}static get requires(){return[fu,Eh,uu]}init(){const t=this.editor;t.commands.add(\"ckfinder\",new mu(t))}}const bu=/^data:(\\S*?);base64,/;class wu{constructor(t,e,n){if(!t)throw new un.b(\"fileuploader-missing-file: File must be provided as the first argument\",null);if(!e)throw new un.b(\"fileuploader-missing-token: Token must be provided as the second argument.\",null);if(!n)throw new un.b(\"fileuploader-missing-api-address: Api address must be provided as the third argument.\",null);this.file=function(t){if(\"string\"!=typeof t)return!1;const e=t.match(bu);return!(!e||!e.length)}(t)?function(t,e=512){try{const n=t.match(bu)[1],i=atob(t.replace(bu,\"\")),o=[];for(let t=0;tt(n)),this}onError(t){return this.once(\"error\",(e,n)=>t(n)),this}abort(){this.xhr.abort()}send(){return this._prepareRequest(),this._attachXHRListeners(),this._sendRequest()}_prepareRequest(){const t=new XMLHttpRequest;t.open(\"POST\",this._apiAddress),t.setRequestHeader(\"Authorization\",this._token.value),t.responseType=\"json\",this.xhr=t}_attachXHRListeners(){const t=this,e=this.xhr;function n(e){return()=>t.fire(\"error\",e)}e.addEventListener(\"error\",n(\"Network Error\")),e.addEventListener(\"abort\",n(\"Abort\")),e.upload&&e.upload.addEventListener(\"progress\",t=>{t.lengthComputable&&this.fire(\"progress\",{total:t.total,uploaded:t.loaded})}),e.addEventListener(\"load\",()=>{const t=e.status,n=e.response;if(t<200||t>299)return this.fire(\"error\",n.message||n.error)})}_sendRequest(){const t=new FormData,e=this.xhr;return t.append(\"file\",this.file),new Promise((n,i)=>{e.addEventListener(\"load\",()=>{const t=e.status,o=e.response;return t<200||t>299?o.message?i(new un.b(\"fileuploader-uploading-data-failed: Uploading file failed.\",this,{message:o.message})):i(o.error):n(o)}),e.addEventListener(\"error\",()=>i(new Error(\"Network Error\"))),e.addEventListener(\"abort\",()=>i(new Error(\"Abort\"))),e.send(t)})}}yn(wu,gn);const ku={refreshInterval:36e5,autoRefresh:!0};class _u{constructor(t,e=ku){if(!t)throw new un.b(\"token-missing-token-url: A `tokenUrl` must be provided as the first constructor argument.\",this);this.set(\"value\",e.initValue),this._refresh=\"function\"==typeof t?t:()=>{return e=t,new Promise((t,n)=>{const i=new XMLHttpRequest;i.open(\"GET\",e),i.addEventListener(\"load\",()=>{const e=i.status,o=i.response;return e<200||e>299?n(new un.b(\"token-cannot-download-new-token: Cannot download new token from the provided url.\",null)):t(o)}),i.addEventListener(\"error\",()=>n(new Error(\"Network Error\"))),i.addEventListener(\"abort\",()=>n(new Error(\"Abort\"))),i.send()});var e},this._options=Object.assign({},ku,e)}init(){return new Promise((t,e)=>{this._options.autoRefresh&&this._startRefreshing(),this.value?t(this):this._refreshToken().then(t).catch(e)})}_refreshToken(){return this._refresh().then(t=>this.set(\"value\",t)).then(()=>this)}destroy(){this._stopRefreshing()}_startRefreshing(){this._refreshInterval=setInterval(()=>this._refreshToken(),this._options.refreshInterval)}_stopRefreshing(){clearInterval(this._refreshInterval)}static create(t,e=ku){return new _u(t,e).init()}}yn(_u,Ui);var vu=_u;class yu extends Bd{static get pluginName(){return\"CloudServices\"}init(){const t=this.context.config.get(\"cloudServices\")||{};for(const e in t)this[e]=t[e];if(this.tokenUrl)return this.token=new yu.Token(this.tokenUrl),this.token.init();this.token=null}}yu.Token=vu;class xu extends Hl{static get requires(){return[Hd,yu]}init(){const t=this.editor,e=t.plugins.get(yu),n=e.token,i=e.uploadUrl;n&&(this._uploadGateway=new xu._UploadGateway(n,i),t.plugins.get(Hd).createUploadAdapter=t=>new Au(this._uploadGateway,t))}}class Au{constructor(t,e){this.uploadGateway=t,this.loader=e}upload(){return this.loader.file.then(t=>(this.fileUploader=this.uploadGateway.upload(t),this.fileUploader.on(\"progress\",(t,e)=>{this.loader.uploadTotal=e.total,this.loader.uploaded=e.uploaded}),this.fileUploader.send()))}abort(){this.fileUploader.abort()}}xu._UploadGateway=class{constructor(t,e){if(!t)throw new un.b(\"uploadgateway-missing-token: Token must be provided.\",null);if(!e)throw new un.b(\"uploadgateway-missing-api-address: Api address must be provided.\",null);this._token=t,this._apiAddress=e}upload(t){return new wu(t,this._token,this._apiAddress)}};class Cu extends Nr{constructor(t){super(t),this.domEventType=\"mousedown\"}onDomEvent(t){this.fire(t.type,t)}}n(47);const Tu=bo(\"Ctrl+A\");class Pu extends Hl{static get pluginName(){return\"Widget\"}init(){const t=this.editor.editing.view,e=t.document;this._previouslySelected=new Set,this.editor.editing.downcastDispatcher.on(\"selection\",(t,e,n)=>{this._clearPreviouslySelectedWidgets(n.writer);const i=n.writer,o=i.document.selection,r=o.getSelectedElement();let s=null;for(const t of o.getRanges())for(const e of t){const t=e.item;bh(t)&&!Su(t,s)&&(i.addClass(\"ck-widget_selected\",t),this._previouslySelected.add(t),s=t,t==r&&i.setSelection(o.getRanges(),{fake:!0,label:kh(r)}))}},{priority:\"low\"}),t.addObserver(Cu),this.listenTo(e,\"mousedown\",(...t)=>this._onMousedown(...t)),this.listenTo(e,\"keydown\",(...t)=>this._onKeydown(...t),{priority:\"high\"}),this.listenTo(e,\"delete\",(t,e)=>{this._handleDelete(\"forward\"==e.direction)&&(e.preventDefault(),t.stop())},{priority:\"high\"})}_onMousedown(t,e){const n=this.editor,i=n.editing.view,o=i.document;let r=e.target;if(function(t){for(;t;){if(t.is(\"editableElement\")&&!t.is(\"rootElement\"))return!0;if(bh(t))return!1;t=t.parent}return!1}(r)){if(uo.isSafari&&e.domEvent.detail>=3){const t=n.editing.mapper.toModelElement(r);this.editor.model.change(n=>{e.preventDefault(),n.setSelection(t,\"in\")})}return}if(!bh(r)&&(r=r.findAncestor(bh),!r))return;e.preventDefault(),o.isFocused||i.focus();const s=n.editing.mapper.toModelElement(r);this._setSelectionOverElement(s)}_onKeydown(t,e){const n=e.keyCode,i=\"ltr\"===this.editor.locale.contentLanguageDirection,o=n==go.arrowdown||n==go[i?\"arrowright\":\"arrowleft\"];let r=!1;!function(t){return t==go.arrowright||t==go.arrowleft||t==go.arrowup||t==go.arrowdown}(n)?!function(t){return po(t)==Tu}(e)?n===go.enter&&(r=this._handleEnterKey(e.shiftKey)):r=this._selectAllNestedEditableContent()||this._selectAllContent():r=this._handleArrowKeys(o),r&&(e.preventDefault(),t.stop())}_handleDelete(t){if(this.editor.isReadOnly)return;const e=this.editor.model.document.selection;if(!e.isCollapsed)return;const n=this._getObjectElementNextToSelection(t);return n?(this.editor.model.change(t=>{let i=e.anchor.parent;for(;i.isEmpty;){const e=i;i=e.parent,t.remove(e)}this._setSelectionOverElement(n)}),!0):void 0}_handleArrowKeys(t){const e=this.editor.model,n=e.schema,i=e.document.selection,o=i.getSelectedElement();if(o&&n.isObject(o)){const o=t?i.getLastPosition():i.getFirstPosition(),r=n.getNearestSelectionRange(o,t?\"forward\":\"backward\");return r&&e.change(t=>{t.setSelection(r)}),!0}if(!i.isCollapsed)return;const r=this._getObjectElementNextToSelection(t);return r&&n.isObject(r)?(this._setSelectionOverElement(r),!0):void 0}_handleEnterKey(t){const e=this.editor.model,n=e.document.selection.getSelectedElement();if(i=n,o=e.schema,i&&o.isObject(i)&&!o.isInline(i))return e.change(i=>{let o=i.createPositionAt(n,t?\"before\":\"after\");const r=i.createElement(\"paragraph\");if(e.schema.isBlock(n.parent)){const t=e.schema.findAllowedParent(o,r);o=i.split(o,t).position}i.insert(r,o),i.setSelection(r,\"in\")}),!0;var i,o}_selectAllNestedEditableContent(){const t=this.editor.model,e=t.document.selection,n=t.schema.getLimitElement(e);return e.getFirstRange().root!=n&&(t.change(t=>{t.setSelection(t.createRangeIn(n))}),!0)}_selectAllContent(){const t=this.editor.model,e=this.editor.editing,n=e.view.document.selection.getSelectedElement();if(n&&bh(n)){const i=e.mapper.toModelElement(n.parent);return t.change(t=>{t.setSelection(t.createRangeIn(i))}),!0}return!1}_setSelectionOverElement(t){this.editor.model.change(e=>{e.setSelection(e.createRangeOn(t))})}_getObjectElementNextToSelection(t){const e=this.editor.model,n=e.schema,i=e.document.selection,o=e.createSelection(i);e.modifySelection(o,{direction:t?\"forward\":\"backward\"});const r=t?o.focus.nodeBefore:o.focus.nodeAfter;return r&&n.isObject(r)?r:null}_clearPreviouslySelectedWidgets(t){for(const e of this._previouslySelected)t.removeClass(\"ck-widget_selected\",e);this._previouslySelected.clear()}}function Su(t,e){return!!e&&Array.from(t.getAncestors()).includes(e)}class Mu extends Ql{refresh(){const t=this.editor.model.document.selection.getSelectedElement();this.isEnabled=Ah(t),Ah(t)&&t.hasAttribute(\"alt\")?this.value=t.getAttribute(\"alt\"):this.value=!1}execute(t){const e=this.editor.model,n=e.document.selection.getSelectedElement();e.change(e=>{e.setAttribute(\"alt\",t.newValue,n)})}}class Eu extends Hl{static get pluginName(){return\"ImageTextAlternativeEditing\"}init(){this.editor.commands.add(\"imageTextAlternative\",new Mu(this.editor))}}n(49);class Iu extends rl{constructor(t,e){super(t);const n=`ck-input-${dn()}`,i=`ck-status-${dn()}`;this.set(\"label\"),this.set(\"value\"),this.set(\"isReadOnly\",!1),this.set(\"errorText\",null),this.set(\"infoText\",null),this.labelView=this._createLabelView(n),this.inputView=this._createInputView(e,n,i),this.statusView=this._createStatusView(i),this.bind(\"_statusText\").to(this,\"errorText\",this,\"infoText\",(t,e)=>t||e);const o=this.bindTemplate;this.setTemplate({tag:\"div\",attributes:{class:[\"ck\",\"ck-labeled-input\",o.if(\"isReadOnly\",\"ck-disabled\")]},children:[this.labelView,this.inputView,this.statusView]})}_createLabelView(t){const e=new ll(this.locale);return e.for=t,e.bind(\"text\").to(this,\"label\"),e}_createInputView(t,e,n){const i=new t(this.locale,n);return i.id=e,i.ariaDescribedById=n,i.bind(\"value\").to(this),i.bind(\"isReadOnly\").to(this),i.bind(\"hasError\").to(this,\"errorText\",t=>!!t),i.on(\"input\",()=>{this.errorText=null}),i}_createStatusView(t){const e=new rl(this.locale),n=this.bindTemplate;return e.setTemplate({tag:\"div\",attributes:{class:[\"ck\",\"ck-labeled-input__status\",n.if(\"errorText\",\"ck-labeled-input__status_error\"),n.if(\"_statusText\",\"ck-hidden\",t=>!t)],id:t,role:n.if(\"errorText\",\"alert\")},children:[{text:n.to(\"_statusText\")}]}),e}select(){this.inputView.select()}focus(){this.inputView.focus()}}n(51);class Nu extends rl{constructor(t){super(t),this.set(\"value\"),this.set(\"id\"),this.set(\"placeholder\"),this.set(\"isReadOnly\",!1),this.set(\"hasError\",!1),this.set(\"ariaDescribedById\");const e=this.bindTemplate;this.setTemplate({tag:\"input\",attributes:{type:\"text\",class:[\"ck\",\"ck-input\",\"ck-input-text\",e.if(\"hasError\",\"ck-error\")],id:e.to(\"id\"),placeholder:e.to(\"placeholder\"),readonly:e.to(\"isReadOnly\"),\"aria-invalid\":e.if(\"hasError\",!0),\"aria-describedby\":e.to(\"ariaDescribedById\")},on:{input:e.to(\"input\")}})}render(){super.render();const t=t=>{this.element.value=t||0===t?t:\"\"};t(this.value),this.on(\"change:value\",(e,n,i)=>{t(i)})}select(){this.element.select()}focus(){this.element.focus()}}function Ou({view:t}){t.listenTo(t.element,\"submit\",(e,n)=>{n.preventDefault(),t.fire(\"submit\")},{useCapture:!0})}var Ru='',Du='';n(53);class Lu extends rl{constructor(t){super(t);const e=this.locale.t;this.focusTracker=new Ec,this.keystrokes=new vc,this.labeledInput=this._createLabeledInputView(),this.saveButtonView=this._createButton(e(\"bb\"),Ru,\"ck-button-save\"),this.saveButtonView.type=\"submit\",this.cancelButtonView=this._createButton(e(\"bc\"),Du,\"ck-button-cancel\",\"cancel\"),this._focusables=new zc,this._focusCycler=new pl({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:\"shift + tab\",focusNext:\"tab\"}}),this.setTemplate({tag:\"form\",attributes:{class:[\"ck\",\"ck-text-alternative-form\"],tabindex:\"-1\"},children:[this.labeledInput,this.saveButtonView,this.cancelButtonView]})}render(){super.render(),this.keystrokes.listenTo(this.element),Ou({view:this}),[this.labeledInput,this.saveButtonView,this.cancelButtonView].forEach(t=>{this._focusables.add(t),this.focusTracker.add(t.element)})}_createButton(t,e,n,i){const o=new Sl(this.locale);return o.set({label:t,icon:e,tooltip:!0}),o.extendTemplate({attributes:{class:n}}),i&&o.delegate(\"execute\").to(this,i),o}_createLabeledInputView(){const t=this.locale.t,e=new Iu(this.locale,Nu);return e.label=t(\"cd\"),e.inputView.placeholder=t(\"cd\"),e}}n(55);const ju=fl(\"px\"),Vu=Xo.document.body;class zu extends rl{constructor(t){super(t);const e=this.bindTemplate;this.set(\"top\",0),this.set(\"left\",0),this.set(\"position\",\"arrow_nw\"),this.set(\"isVisible\",!1),this.set(\"withArrow\",!0),this.set(\"class\"),this.content=this.createCollection(),this.setTemplate({tag:\"div\",attributes:{class:[\"ck\",\"ck-balloon-panel\",e.to(\"position\",t=>`ck-balloon-panel_${t}`),e.if(\"isVisible\",\"ck-balloon-panel_visible\"),e.if(\"withArrow\",\"ck-balloon-panel_with-arrow\"),e.to(\"class\")],style:{top:e.to(\"top\",ju),left:e.to(\"left\",ju)}},children:this.content})}show(){this.isVisible=!0}hide(){this.isVisible=!1}attachTo(t){this.show();const e=zu.defaultPositions,n=Object.assign({},{element:this.element,positions:[e.southArrowNorth,e.southArrowNorthMiddleWest,e.southArrowNorthMiddleEast,e.southArrowNorthWest,e.southArrowNorthEast,e.northArrowSouth,e.northArrowSouthMiddleWest,e.northArrowSouthMiddleEast,e.northArrowSouthWest,e.northArrowSouthEast],limiter:Vu,fitInViewport:!0},t),i=zu._getOptimalPosition(n),o=parseInt(i.left),r=parseInt(i.top),s=i.name;Object.assign(this,{top:r,left:o,position:s})}pin(t){this.unpin(),this._pinWhenIsVisibleCallback=()=>{this.isVisible?this._startPinning(t):this._stopPinning()},this._startPinning(t),this.listenTo(this,\"change:isVisible\",this._pinWhenIsVisibleCallback)}unpin(){this._pinWhenIsVisibleCallback&&(this._stopPinning(),this.stopListening(this,\"change:isVisible\",this._pinWhenIsVisibleCallback),this._pinWhenIsVisibleCallback=null,this.hide())}_startPinning(t){this.attachTo(t);const e=Bu(t.target),n=t.limiter?Bu(t.limiter):Vu;this.listenTo(Xo.document,\"scroll\",(i,o)=>{const r=o.target,s=e&&r.contains(e),a=n&&r.contains(n);!s&&!a&&e&&n||this.attachTo(t)},{useCapture:!0}),this.listenTo(Xo.window,\"resize\",()=>{this.attachTo(t)})}_stopPinning(){this.stopListening(Xo.document,\"scroll\"),this.stopListening(Xo.window,\"resize\")}}function Bu(t){return nn(t)?t:Qr(t)?t.commonAncestorContainer:\"function\"==typeof t?Bu(t()):null}function Fu(t,e){return t.top-e.height-zu.arrowVerticalOffset}function Uu(t){return t.bottom+zu.arrowVerticalOffset}zu.arrowHorizontalOffset=25,zu.arrowVerticalOffset=10,zu._getOptimalPosition=yl,zu.defaultPositions={northWestArrowSouthWest:(t,e)=>({top:Fu(t,e),left:t.left-zu.arrowHorizontalOffset,name:\"arrow_sw\"}),northWestArrowSouthMiddleWest:(t,e)=>({top:Fu(t,e),left:t.left-.25*e.width-zu.arrowHorizontalOffset,name:\"arrow_smw\"}),northWestArrowSouth:(t,e)=>({top:Fu(t,e),left:t.left-e.width/2,name:\"arrow_s\"}),northWestArrowSouthMiddleEast:(t,e)=>({top:Fu(t,e),left:t.left-.75*e.width+zu.arrowHorizontalOffset,name:\"arrow_sme\"}),northWestArrowSouthEast:(t,e)=>({top:Fu(t,e),left:t.left-e.width+zu.arrowHorizontalOffset,name:\"arrow_se\"}),northArrowSouthWest:(t,e)=>({top:Fu(t,e),left:t.left+t.width/2-zu.arrowHorizontalOffset,name:\"arrow_sw\"}),northArrowSouthMiddleWest:(t,e)=>({top:Fu(t,e),left:t.left+t.width/2-.25*e.width-zu.arrowHorizontalOffset,name:\"arrow_smw\"}),northArrowSouth:(t,e)=>({top:Fu(t,e),left:t.left+t.width/2-e.width/2,name:\"arrow_s\"}),northArrowSouthMiddleEast:(t,e)=>({top:Fu(t,e),left:t.left+t.width/2-.75*e.width+zu.arrowHorizontalOffset,name:\"arrow_sme\"}),northArrowSouthEast:(t,e)=>({top:Fu(t,e),left:t.left+t.width/2-e.width+zu.arrowHorizontalOffset,name:\"arrow_se\"}),northEastArrowSouthWest:(t,e)=>({top:Fu(t,e),left:t.right-zu.arrowHorizontalOffset,name:\"arrow_sw\"}),northEastArrowSouthMiddleWest:(t,e)=>({top:Fu(t,e),left:t.right-.25*e.width-zu.arrowHorizontalOffset,name:\"arrow_smw\"}),northEastArrowSouth:(t,e)=>({top:Fu(t,e),left:t.right-e.width/2,name:\"arrow_s\"}),northEastArrowSouthMiddleEast:(t,e)=>({top:Fu(t,e),left:t.right-.75*e.width+zu.arrowHorizontalOffset,name:\"arrow_sme\"}),northEastArrowSouthEast:(t,e)=>({top:Fu(t,e),left:t.right-e.width+zu.arrowHorizontalOffset,name:\"arrow_se\"}),southWestArrowNorthWest:(t,e)=>({top:Uu(t),left:t.left-zu.arrowHorizontalOffset,name:\"arrow_nw\"}),southWestArrowNorthMiddleWest:(t,e)=>({top:Uu(t),left:t.left-.25*e.width-zu.arrowHorizontalOffset,name:\"arrow_nmw\"}),southWestArrowNorth:(t,e)=>({top:Uu(t),left:t.left-e.width/2,name:\"arrow_n\"}),southWestArrowNorthMiddleEast:(t,e)=>({top:Uu(t),left:t.left-.75*e.width+zu.arrowHorizontalOffset,name:\"arrow_nme\"}),southWestArrowNorthEast:(t,e)=>({top:Uu(t),left:t.left-e.width+zu.arrowHorizontalOffset,name:\"arrow_ne\"}),southArrowNorthWest:(t,e)=>({top:Uu(t),left:t.left+t.width/2-zu.arrowHorizontalOffset,name:\"arrow_nw\"}),southArrowNorthMiddleWest:(t,e)=>({top:Uu(t),left:t.left+t.width/2-.25*e.width-zu.arrowHorizontalOffset,name:\"arrow_nmw\"}),southArrowNorth:(t,e)=>({top:Uu(t),left:t.left+t.width/2-e.width/2,name:\"arrow_n\"}),southArrowNorthMiddleEast:(t,e)=>({top:Uu(t),left:t.left+t.width/2-.75*e.width+zu.arrowHorizontalOffset,name:\"arrow_nme\"}),southArrowNorthEast:(t,e)=>({top:Uu(t),left:t.left+t.width/2-e.width+zu.arrowHorizontalOffset,name:\"arrow_ne\"}),southEastArrowNorthWest:(t,e)=>({top:Uu(t),left:t.right-zu.arrowHorizontalOffset,name:\"arrow_nw\"}),southEastArrowNorthMiddleWest:(t,e)=>({top:Uu(t),left:t.right-.25*e.width-zu.arrowHorizontalOffset,name:\"arrow_nmw\"}),southEastArrowNorth:(t,e)=>({top:Uu(t),left:t.right-e.width/2,name:\"arrow_n\"}),southEastArrowNorthMiddleEast:(t,e)=>({top:Uu(t),left:t.right-.75*e.width+zu.arrowHorizontalOffset,name:\"arrow_nme\"}),southEastArrowNorthEast:(t,e)=>({top:Uu(t),left:t.right-e.width+zu.arrowHorizontalOffset,name:\"arrow_ne\"})};n(57),n(59);const Hu=fl(\"px\");class qu extends Hl{static get pluginName(){return\"ContextualBalloon\"}constructor(t){super(t),this.positionLimiter=()=>{const t=this.editor.editing.view,e=t.document.selection.editableElement;return e?t.domConverter.mapViewToDom(e.root):null},this.set(\"visibleView\",null),this.view=new zu(t.locale),t.ui.view.body.add(this.view),t.ui.focusTracker.add(this.view.element),this._viewToStack=new Map,this._idToStack=new Map,this.set(\"_numberOfStacks\",0),this.set(\"_singleViewMode\",!1),this._rotatorView=this._createRotatorView(),this._fakePanelsView=this._createFakePanelsView()}hasView(t){return Array.from(this._viewToStack.keys()).includes(t)}add(t){if(this.hasView(t.view))throw new un.b(\"contextualballoon-add-view-exist: Cannot add configuration of the same view twice.\",[this,t]);const e=t.stackId||\"main\";if(!this._idToStack.has(e))return this._idToStack.set(e,new Map([[t.view,t]])),this._viewToStack.set(t.view,this._idToStack.get(e)),this._numberOfStacks=this._idToStack.size,void(this._visibleStack&&!t.singleViewMode||this.showStack(e));const n=this._idToStack.get(e);t.singleViewMode&&this.showStack(e),n.set(t.view,t),this._viewToStack.set(t.view,n),n===this._visibleStack&&this._showView(t)}remove(t){if(!this.hasView(t))throw new un.b(\"contextualballoon-remove-view-not-exist: Cannot remove the configuration of a non-existent view.\",[this,t]);const e=this._viewToStack.get(t);this._singleViewMode&&this.visibleView===t&&(this._singleViewMode=!1),this.visibleView===t&&(1===e.size?this._idToStack.size>1?this._showNextStack():(this.view.hide(),this.visibleView=null,this._rotatorView.hideView()):this._showView(Array.from(e.values())[e.size-2])),1===e.size?(this._idToStack.delete(this._getStackId(e)),this._numberOfStacks=this._idToStack.size):e.delete(t),this._viewToStack.delete(t)}updatePosition(t){t&&(this._visibleStack.get(this.visibleView).position=t),this.view.pin(this._getBalloonPosition()),this._fakePanelsView.updatePosition()}showStack(t){this.visibleStack=t;const e=this._idToStack.get(t);if(!e)throw new un.b(\"contextualballoon-showstack-stack-not-exist: Cannot show a stack that does not exist.\",this);this._visibleStack!==e&&this._showView(Array.from(e.values()).pop())}get _visibleStack(){return this._viewToStack.get(this.visibleView)}_getStackId(t){return Array.from(this._idToStack.entries()).find(e=>e[1]===t)[0]}_showNextStack(){const t=Array.from(this._idToStack.values());let e=t.indexOf(this._visibleStack)+1;t[e]||(e=0),this.showStack(this._getStackId(t[e]))}_showPrevStack(){const t=Array.from(this._idToStack.values());let e=t.indexOf(this._visibleStack)-1;t[e]||(e=t.length-1),this.showStack(this._getStackId(t[e]))}_createRotatorView(){const t=new Wu(this.editor.locale),e=this.editor.locale.t;return this.view.content.add(t),t.bind(\"isNavigationVisible\").to(this,\"_numberOfStacks\",this,\"_singleViewMode\",(t,e)=>!e&&t>1),t.on(\"change:isNavigationVisible\",()=>this.updatePosition(),{priority:\"low\"}),t.bind(\"counter\").to(this,\"visibleView\",this,\"_numberOfStacks\",(t,n)=>{if(n<2)return\"\";const i=Array.from(this._idToStack.values()).indexOf(this._visibleStack)+1;return e(\"bl\",[i,n])}),t.buttonNextView.on(\"execute\",()=>{t.focusTracker.isFocused&&this.editor.editing.view.focus(),this._showNextStack()}),t.buttonPrevView.on(\"execute\",()=>{t.focusTracker.isFocused&&this.editor.editing.view.focus(),this._showPrevStack()}),t}_createFakePanelsView(){const t=new Yu(this.editor.locale,this.view);return t.bind(\"numberOfPanels\").to(this,\"_numberOfStacks\",this,\"_singleViewMode\",(t,e)=>!e&&t>=2?Math.min(t-1,2):0),t.listenTo(this.view,\"change:top\",()=>t.updatePosition()),t.listenTo(this.view,\"change:left\",()=>t.updatePosition()),this.editor.ui.view.body.add(t),t}_showView({view:t,balloonClassName:e=\"\",withArrow:n=!0,singleViewMode:i=!1}){this.view.class=e,this.view.withArrow=n,this._rotatorView.showView(t),this.visibleView=t,this.view.pin(this._getBalloonPosition()),this._fakePanelsView.updatePosition(),i&&(this._singleViewMode=!0)}_getBalloonPosition(){let t=Array.from(this._visibleStack.values()).pop().position;return t&&!t.limiter&&(t=Object.assign({},t,{limiter:this.positionLimiter})),t}}class Wu extends rl{constructor(t){super(t);const e=t.t,n=this.bindTemplate;this.set(\"isNavigationVisible\",!0),this.focusTracker=new Ec,this.buttonPrevView=this._createButtonView(e(\"bm\"),''),this.buttonNextView=this._createButtonView(e(\"bn\"),''),this.content=this.createCollection(),this.setTemplate({tag:\"div\",attributes:{class:[\"ck\",\"ck-balloon-rotator\"],\"z-index\":\"-1\"},children:[{tag:\"div\",attributes:{class:[\"ck-balloon-rotator__navigation\",n.to(\"isNavigationVisible\",t=>t?\"\":\"ck-hidden\")]},children:[this.buttonPrevView,{tag:\"span\",attributes:{class:[\"ck-balloon-rotator__counter\"]},children:[{text:n.to(\"counter\")}]},this.buttonNextView]},{tag:\"div\",attributes:{class:\"ck-balloon-rotator__content\"},children:this.content}]})}render(){super.render(),this.focusTracker.add(this.element)}showView(t){this.hideView(),this.content.add(t)}hideView(){this.content.clear()}_createButtonView(t,e){const n=new Sl(this.locale);return n.set({label:t,icon:e,tooltip:!0}),n}}class Yu extends rl{constructor(t,e){super(t);const n=this.bindTemplate;this.set(\"top\",0),this.set(\"left\",0),this.set(\"height\",0),this.set(\"width\",0),this.set(\"numberOfPanels\",0),this.content=this.createCollection(),this._balloonPanelView=e,this.setTemplate({tag:\"div\",attributes:{class:[\"ck-fake-panel\",n.to(\"numberOfPanels\",t=>t?\"\":\"ck-hidden\")],style:{top:n.to(\"top\",Hu),left:n.to(\"left\",Hu),width:n.to(\"width\",Hu),height:n.to(\"height\",Hu)}},children:this.content}),this.on(\"change:numberOfPanels\",(t,e,n,i)=>{n>i?this._addPanels(n-i):this._removePanels(i-n),this.updatePosition()})}_addPanels(t){for(;t--;){const t=new rl;t.setTemplate({tag:\"div\"}),this.content.add(t),this.registerChild(t)}}_removePanels(t){for(;t--;){const t=this.content.last;this.content.remove(t),this.deregisterChild(t),t.destroy()}}updatePosition(){if(this.numberOfPanels){const{top:t,left:e}=this._balloonPanelView,{width:n,height:i}=new Zr(this._balloonPanelView.element);Object.assign(this,{top:t,left:e,width:n,height:i})}}}function $u(t){const e=t.editing.view,n=zu.defaultPositions;return{target:e.domConverter.viewToDom(e.document.selection.getSelectedElement()),positions:[n.northArrowSouth,n.northArrowSouthWest,n.northArrowSouthEast,n.southArrowNorth,n.southArrowNorthWest,n.southArrowNorthEast]}}class Gu extends Hl{static get requires(){return[qu]}static get pluginName(){return\"ImageTextAlternativeUI\"}init(){this._createButton(),this._createForm()}destroy(){super.destroy(),this._form.destroy()}_createButton(){const t=this.editor,e=t.t;t.ui.componentFactory.add(\"imageTextAlternative\",n=>{const i=t.commands.get(\"imageTextAlternative\"),o=new Sl(n);return o.set({label:e(\"bx\"),icon:'',tooltip:!0}),o.bind(\"isEnabled\").to(i,\"isEnabled\"),this.listenTo(o,\"execute\",()=>{this._showForm()}),o})}_createForm(){const t=this.editor,e=t.editing.view.document;this._balloon=this.editor.plugins.get(\"ContextualBalloon\"),this._form=new Lu(t.locale),this._form.render(),this.listenTo(this._form,\"submit\",()=>{t.execute(\"imageTextAlternative\",{newValue:this._form.labeledInput.inputView.element.value}),this._hideForm(!0)}),this.listenTo(this._form,\"cancel\",()=>{this._hideForm(!0)}),this._form.keystrokes.set(\"Esc\",(t,e)=>{this._hideForm(!0),e()}),this.listenTo(t.ui,\"update\",()=>{xh(e.selection)?this._isVisible&&function(t){const e=t.plugins.get(\"ContextualBalloon\");if(xh(t.editing.view.document.selection)){const n=$u(t);e.updatePosition(n)}}(t):this._hideForm(!0)}),Rl({emitter:this._form,activator:()=>this._isVisible,contextElements:[this._balloon.view.element],callback:()=>this._hideForm()})}_showForm(){if(this._isVisible)return;const t=this.editor,e=t.commands.get(\"imageTextAlternative\"),n=this._form.labeledInput;this._isInBalloon||this._balloon.add({view:this._form,position:$u(t)}),n.value=n.inputView.element.value=e.value||\"\",this._form.labeledInput.select()}_hideForm(t){this._isInBalloon&&(this._form.focusTracker.isFocused&&this._form.saveButtonView.focus(),this._balloon.remove(this._form),t&&this.editor.editing.view.focus())}get _isVisible(){return this._balloon.visibleView===this._form}get _isInBalloon(){return this._balloon.hasView(this._form)}}class Qu extends Hl{static get requires(){return[Eu,Gu]}static get pluginName(){return\"ImageTextAlternative\"}}n(61);class Ku extends Hl{static get requires(){return[Eh,Pu,Qu]}static get pluginName(){return\"Image\"}}class Ju extends rl{constructor(t){super(t),this.buttonView=new Sl(t),this._fileInputView=new Zu(t),this._fileInputView.bind(\"acceptedType\").to(this),this._fileInputView.bind(\"allowMultipleFiles\").to(this),this._fileInputView.delegate(\"done\").to(this),this.setTemplate({tag:\"span\",attributes:{class:\"ck-file-dialog-button\"},children:[this.buttonView,this._fileInputView]}),this.buttonView.on(\"execute\",()=>{this._fileInputView.open()})}focus(){this.buttonView.focus()}}class Zu extends rl{constructor(t){super(t),this.set(\"acceptedType\"),this.set(\"allowMultipleFiles\",!1);const e=this.bindTemplate;this.setTemplate({tag:\"input\",attributes:{class:[\"ck-hidden\"],type:\"file\",tabindex:\"-1\",accept:e.to(\"acceptedType\"),multiple:e.to(\"allowMultipleFiles\")},on:{change:e.to(()=>{this.element&&this.element.files&&this.element.files.length&&this.fire(\"done\",this.element.files),this.element.value=\"\"})}})}open(){this.element.click()}}function Xu(t){const e=t.map(t=>t.replace(\"+\",\"\\\\+\"));return new RegExp(`^image\\\\/(${e.join(\"|\")})$`)}function tf(t){return new Promise((e,n)=>{const i=t.getAttribute(\"src\");fetch(i).then(t=>t.blob()).then(t=>{const o=function(t,e){return t.type?t.type:e.match(/data:(image\\/\\w+);base64/)?e.match(/data:(image\\/\\w+);base64/)[1].toLowerCase():\"image/jpeg\"}(t,i),r=function(t,e,n){try{return new File([t],e,{type:n})}catch(t){return null}}(t,`image.${o.replace(\"image/\",\"\")}`,o);r?e(r):n()}).catch(n)})}class ef extends Hl{init(){const t=this.editor,e=t.t;t.ui.componentFactory.add(\"imageUpload\",n=>{const i=new Ju(n),o=t.commands.get(\"imageUpload\"),r=t.config.get(\"image.upload.types\"),s=Xu(r);return i.set({acceptedType:r.map(t=>`image/${t}`).join(\",\"),allowMultipleFiles:!0}),i.buttonView.set({label:e(\"l\"),icon:'',tooltip:!0}),i.buttonView.bind(\"isEnabled\").to(o),i.on(\"done\",(e,n)=>{const i=Array.from(n).filter(t=>s.test(t.type));i.length&&t.execute(\"imageUpload\",{file:i})}),i})}}n(63),n(65),n(67);class nf extends Hl{constructor(t){super(t),this.placeholder=\"data:image/svg+xml;utf8,\"+encodeURIComponent('')}init(){this.editor.editing.downcastDispatcher.on(\"attribute:uploadStatus:image\",(...t)=>this.uploadStatusChange(...t))}uploadStatusChange(t,e,n){const i=this.editor,o=e.item,r=o.getAttribute(\"uploadId\");if(!n.consumable.consume(e.item,t.name))return;const s=i.plugins.get(Hd),a=r?e.attributeNewValue:null,c=this.placeholder,l=i.editing.mapper.toViewElement(o),d=n.writer;if(\"reading\"==a)return of(l,d),void rf(c,l,d);if(\"uploading\"==a){const t=s.loaders.get(r);return of(l,d),void(t?(sf(l,d),function(t,e,n,i){const o=function(t){const e=t.createUIElement(\"div\",{class:\"ck-progress-bar\"});return t.setCustomProperty(\"progressBar\",!0,e),e}(e);e.insert(e.createPositionAt(t,\"end\"),o),n.on(\"change:uploadedPercent\",(t,e,n)=>{i.change(t=>{t.setStyle(\"width\",n+\"%\",o)})})}(l,d,t,i.editing.view),function(t,e,n){if(n.data){const i=Ph(t);e.setAttribute(\"src\",n.data,i)}}(l,d,t)):rf(c,l,d))}\"complete\"==a&&s.loaders.get(r)&&!uo.isEdge&&function(t,e,n){const i=e.createUIElement(\"div\",{class:\"ck-image-upload-complete-icon\"});e.insert(e.createPositionAt(t,\"end\"),i),setTimeout(()=>{n.change(t=>t.remove(t.createRangeOn(i)))},3e3)}(l,d,i.editing.view),function(t,e){cf(t,e,\"progressBar\")}(l,d),sf(l,d),function(t,e){e.removeClass(\"ck-appear\",t)}(l,d)}}function of(t,e){t.hasClass(\"ck-appear\")||e.addClass(\"ck-appear\",t)}function rf(t,e,n){e.hasClass(\"ck-image-upload-placeholder\")||n.addClass(\"ck-image-upload-placeholder\",e);const i=Ph(e);i.getAttribute(\"src\")!==t&&n.setAttribute(\"src\",t,i),af(e,\"placeholder\")||n.insert(n.createPositionAfter(i),function(t){const e=t.createUIElement(\"div\",{class:\"ck-upload-placeholder-loader\"});return t.setCustomProperty(\"placeholder\",!0,e),e}(n))}function sf(t,e){t.hasClass(\"ck-image-upload-placeholder\")&&e.removeClass(\"ck-image-upload-placeholder\",t),cf(t,e,\"placeholder\")}function af(t,e){for(const n of t.getChildren())if(n.getCustomProperty(e))return n}function cf(t,e,n){const i=af(t,n);i&&e.remove(e.createRangeOn(i))}class lf{constructor(t){this.document=t}createDocumentFragment(t){return new xo(this.document,t)}createElement(t,e,n){return new Oi(this.document,t,e,n)}createText(t){return new On(this.document,t)}clone(t,e=!1){return t._clone(e)}appendChild(t,e){return e._appendChild(t)}insertChild(t,e,n){return n._insertChild(t,e)}removeChildren(t,e,n){return n._removeChildren(t,e)}remove(t){const e=t.parent;return e?this.removeChildren(e.getChildIndex(t),1,e):[]}replace(t,e){const n=t.parent;if(n){const i=n.getChildIndex(t);return this.removeChildren(i,1,n),this.insertChild(i,e,n),!0}return!1}unwrapElement(t){const e=t.parent;if(e){const n=e.getChildIndex(t);this.remove(t),this.insertChild(n,t.getChildren(),e)}}rename(t,e){const n=new Oi(this.document,t,e.getAttributes(),e.getChildren());return this.replace(e,n)?n:null}setAttribute(t,e,n){n._setAttribute(t,e)}removeAttribute(t,e){e._removeAttribute(t)}addClass(t,e){e._addClass(t)}removeClass(t,e){e._removeClass(t)}setStyle(t,e,n){y(t)&&void 0===n&&(n=e),n._setStyle(t,e)}removeStyle(t,e){e._removeStyle(t)}setCustomProperty(t,e,n){n._setCustomProperty(t,e)}removeCustomProperty(t,e){return e._removeCustomProperty(t)}createPositionAt(t,e){return Zi._createAt(t,e)}createPositionAfter(t){return Zi._createAfter(t)}createPositionBefore(t){return Zi._createBefore(t)}createRange(t,e){return new Xi(t,e)}createRangeOn(t){return Xi._createOn(t)}createRangeIn(t){return Xi._createIn(t)}createSelection(t,e,n){return new no(t,e,n)}}class df extends Ql{refresh(){this.isEnabled=Th(this.editor.model)}execute(t){const e=this.editor,n=e.model,i=e.plugins.get(Hd);n.change(e=>{const o=Array.isArray(t.file)?t.file:[t.file];for(const t of o)hf(e,n,i,t)})}}function hf(t,e,n,i){const o=n.createLoader(i);o&&Ch(t,e,{uploadId:o.id})}class uf extends Hl{static get requires(){return[Hd,fu,Gl]}static get pluginName(){return\"ImageUploadEditing\"}constructor(t){super(t),t.config.define(\"image\",{upload:{types:[\"jpeg\",\"png\",\"gif\",\"bmp\",\"webp\",\"tiff\"]}})}init(){const t=this.editor,e=t.model.document,n=t.model.schema,i=t.conversion,o=t.plugins.get(Hd),r=Xu(t.config.get(\"image.upload.types\"));n.extend(\"image\",{allowAttributes:[\"uploadId\",\"uploadStatus\"]}),t.commands.add(\"imageUpload\",new df(t)),i.for(\"upcast\").attributeToAttribute({view:{name:\"img\",key:\"uploadId\"},model:\"uploadId\"}),this.listenTo(t.editing.view.document,\"clipboardInput\",(e,n)=>{if(i=n.dataTransfer,Array.from(i.types).includes(\"text/html\")&&\"\"!==i.getData(\"text/html\"))return;var i;const o=Array.from(n.dataTransfer.files).filter(t=>!!t&&r.test(t.type)),s=n.targetRanges.map(e=>t.editing.mapper.toModelRange(e));t.model.change(n=>{n.setSelection(s),o.length&&(e.stop(),t.model.enqueueChange(\"default\",()=>{t.execute(\"imageUpload\",{file:o})}))})}),this.listenTo(t.plugins.get(Gl),\"inputTransformation\",(e,n)=>{const i=Array.from(t.editing.view.createRangeIn(n.content)).filter(t=>{return!(!(e=t.item).is(\"element\",\"img\")||!e.getAttribute(\"src\"))&&(e.getAttribute(\"src\").match(/^data:image\\/\\w+;base64,/g)||e.getAttribute(\"src\").match(/^blob:/g))&&!t.item.getAttribute(\"uploadProcessed\");var e}).map(t=>({promise:tf(t.item),imageElement:t.item}));if(!i.length)return;const r=new lf(t.editing.view.document);for(const t of i){r.setAttribute(\"uploadProcessed\",!0,t.imageElement);const e=o.createLoader(t.promise);e&&(r.setAttribute(\"src\",\"\",t.imageElement),r.setAttribute(\"uploadId\",e.id,t.imageElement))}}),t.editing.view.document.on(\"dragover\",(t,e)=>{e.preventDefault()}),e.on(\"change\",()=>{const n=e.differ.getChanges({includeChangesInGraveyard:!0});for(const e of n)if(\"insert\"==e.type&&\"$text\"!=e.name){const n=e.position.nodeAfter,i=\"$graveyard\"==e.position.root.rootName;for(const e of ff(t,n)){const t=e.getAttribute(\"uploadId\");if(!t)continue;const n=o.loaders.get(t);n&&(i?n.abort():\"idle\"==n.status&&this._readAndUpload(n,e))}}})}_readAndUpload(t,e){const n=this.editor,i=n.model,o=n.locale.t,r=n.plugins.get(Hd),s=n.plugins.get(fu);return i.enqueueChange(\"transparent\",t=>{t.setAttribute(\"uploadStatus\",\"reading\",e)}),t.read().then(()=>{const o=t.upload();if(uo.isSafari){const t=Ph(n.editing.mapper.toViewElement(e));n.editing.view.once(\"render\",()=>{if(!t.parent)return;const e=n.editing.view.domConverter.mapViewToDom(t.parent);if(!e)return;const i=e.style.display;e.style.display=\"none\",e._ckHack=e.offsetHeight,e.style.display=i})}return i.enqueueChange(\"transparent\",t=>{t.setAttribute(\"uploadStatus\",\"uploading\",e)}),o}).then(t=>{i.enqueueChange(\"transparent\",n=>{n.setAttributes({uploadStatus:\"complete\",src:t.default},e),this._parseAndSetSrcsetAttributeOnImage(t,e,n)}),a()}).catch(n=>{if(\"error\"!==t.status&&\"aborted\"!==t.status)throw n;\"error\"==t.status&&n&&s.showWarning(n,{title:o(\"am\"),namespace:\"upload\"}),a(),i.enqueueChange(\"transparent\",t=>{t.remove(e)})});function a(){i.enqueueChange(\"transparent\",t=>{t.removeAttribute(\"uploadId\",e),t.removeAttribute(\"uploadStatus\",e)}),r.destroyLoader(t)}}_parseAndSetSrcsetAttributeOnImage(t,e,n){let i=0;const o=Object.keys(t).filter(t=>{const e=parseInt(t,10);if(!isNaN(e))return i=Math.max(i,e),!0}).map(e=>`${t[e]} ${e}w`).join(\", \");\"\"!=o&&n.setAttribute(\"srcset\",{data:o,width:i},e)}}function ff(t,e){return Array.from(t.model.createRangeOn(e)).filter(t=>t.item.is(\"image\")).map(t=>t.item)}class mf extends Hl{static get pluginName(){return\"ImageUpload\"}static get requires(){return[uf,ef,nf]}}class gf extends Ql{refresh(){const t=this.editor.model,e=oh(t.document.selection.getSelectedBlocks());this.value=!!e&&e.is(\"paragraph\"),this.isEnabled=!!e&&pf(e,t.schema)}execute(t={}){const e=this.editor.model,n=e.document;e.change(i=>{const o=(t.selection||n.selection).getSelectedBlocks();for(const t of o)!t.is(\"paragraph\")&&pf(t,e.schema)&&i.rename(t,\"paragraph\")})}}function pf(t,e){return e.checkChild(t.parent,\"paragraph\")&&!e.isObject(t)}class bf extends Hl{static get pluginName(){return\"Paragraph\"}init(){const t=this.editor,e=t.model,n=t.data;t.commands.add(\"paragraph\",new gf(t)),e.schema.register(\"paragraph\",{inheritAllFrom:\"$block\"}),t.conversion.elementToElement({model:\"paragraph\",view:\"p\"}),t.conversion.for(\"upcast\").elementToElement({model:(t,e)=>bf.paragraphLikeElements.has(t.name)?t.isEmpty?null:e.createElement(\"paragraph\"):null,converterPriority:\"low\"}),n.upcastDispatcher.on(\"element\",(t,e,n)=>{n.consumable.test(e.viewItem,{name:e.viewItem.name})&&kf(e.viewItem,e.modelCursor,n.schema)&&Object.assign(e,wf(e.viewItem,e.modelCursor,n))},{priority:\"low\"}),n.upcastDispatcher.on(\"text\",(t,e,n)=>{e.modelRange||kf(e.viewItem,e.modelCursor,n.schema)&&Object.assign(e,wf(e.viewItem,e.modelCursor,n))},{priority:\"lowest\"}),e.document.registerPostFixer(t=>this._autoparagraphEmptyRoots(t)),t.data.on(\"ready\",()=>{e.enqueueChange(\"transparent\",t=>this._autoparagraphEmptyRoots(t))},{priority:\"lowest\"})}_autoparagraphEmptyRoots(t){const e=this.editor.model;for(const n of e.document.getRootNames()){const i=e.document.getRoot(n);if(i.isEmpty&&\"$graveyard\"!=i.rootName&&e.schema.checkChild(i,\"paragraph\"))return t.insertElement(\"paragraph\",i),!0}}}function wf(t,e,n){const i=n.writer.createElement(\"paragraph\");return n.writer.insert(i,e),n.convertItem(t,n.writer.createPositionAt(i,0))}function kf(t,e,n){const i=n.createContext(e);return!!n.checkChild(i,\"paragraph\")&&!!n.checkChild(i.push(\"paragraph\"),t)}bf.paragraphLikeElements=new Set([\"blockquote\",\"dd\",\"div\",\"dt\",\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"li\",\"p\",\"td\"]);class _f extends Ql{constructor(t,e){super(t),this.modelElements=e}refresh(){const t=oh(this.editor.model.document.selection.getSelectedBlocks());this.value=!!t&&this.modelElements.includes(t.name)&&t.name,this.isEnabled=!!t&&this.modelElements.some(e=>vf(t,e,this.editor.model.schema))}execute(t){const e=this.editor.model,n=e.document,i=t.value;e.change(t=>{const o=Array.from(n.selection.getSelectedBlocks()).filter(t=>vf(t,i,e.schema));for(const e of o)e.is(i)||t.rename(e,i)})}}function vf(t,e,n){return n.checkChild(t.parent,e)&&!n.isObject(t)}class yf extends Hl{static get pluginName(){return\"HeadingEditing\"}constructor(t){super(t),t.config.define(\"heading\",{options:[{model:\"paragraph\",title:\"Paragraph\",class:\"ck-heading_paragraph\"},{model:\"heading1\",view:\"h2\",title:\"Heading 1\",class:\"ck-heading_heading1\"},{model:\"heading2\",view:\"h3\",title:\"Heading 2\",class:\"ck-heading_heading2\"},{model:\"heading3\",view:\"h4\",title:\"Heading 3\",class:\"ck-heading_heading3\"}]})}static get requires(){return[bf]}init(){const t=this.editor,e=t.config.get(\"heading.options\"),n=[];for(const i of e)\"paragraph\"!==i.model&&(t.model.schema.register(i.model,{inheritAllFrom:\"$block\"}),t.conversion.elementToElement(i),n.push(i.model));this._addDefaultH1Conversion(t),t.commands.add(\"heading\",new _f(t,n))}afterInit(){const t=this.editor,e=t.commands.get(\"enter\"),n=t.config.get(\"heading.options\");e&&this.listenTo(e,\"afterExecute\",(e,i)=>{const o=t.model.document.selection.getFirstPosition().parent;n.some(t=>o.is(t.model))&&!o.is(\"paragraph\")&&0===o.childCount&&i.writer.rename(o,\"paragraph\")})}_addDefaultH1Conversion(t){t.conversion.for(\"upcast\").elementToElement({model:\"heading1\",view:\"h1\",converterPriority:hn.get(\"low\")+1})}}class xf{constructor(t,e){e&&ji(this,e),t&&this.set(t)}}yn(xf,Ui);n(11);class Af extends Hl{init(){const t=this.editor,e=t.t,n=function(t){const e=t.t,n={Paragraph:e(\"bq\"),\"Heading 1\":e(\"br\"),\"Heading 2\":e(\"bs\"),\"Heading 3\":e(\"bt\"),\"Heading 4\":e(\"bu\"),\"Heading 5\":e(\"bv\"),\"Heading 6\":e(\"bw\")};return t.config.get(\"heading.options\").map(t=>{const e=n[t.title];return e&&e!=t.title&&(t.title=e),t})}(t),i=e(\"ak\"),o=e(\"al\");t.ui.componentFactory.add(\"heading\",e=>{const r={},s=new xn,a=t.commands.get(\"heading\"),c=t.commands.get(\"paragraph\"),l=[a];for(const t of n){const e={type:\"button\",model:new xf({label:t.title,class:t.class,withText:!0})};\"paragraph\"===t.model?(e.model.bind(\"isOn\").to(c,\"value\"),e.model.set(\"commandName\",\"paragraph\"),l.push(c)):(e.model.bind(\"isOn\").to(a,\"value\",e=>e===t.model),e.model.set({commandName:\"heading\",commandValue:t.model})),s.add(e),r[t.model]=t.title}const d=Dl(e);return Ll(d,s),d.buttonView.set({isOn:!1,withText:!0,tooltip:o}),d.extendTemplate({attributes:{class:[\"ck-heading-dropdown\"]}}),d.bind(\"isEnabled\").toMany(l,\"isEnabled\",(...t)=>t.some(t=>t)),d.buttonView.bind(\"label\").to(a,\"value\",c,\"value\",(t,e)=>{const n=t||e&&\"paragraph\";return r[n]?r[n]:i}),this.listenTo(d,\"execute\",e=>{t.execute(e.source.commandName,e.source.commandValue?{value:e.source.commandValue}:void 0),t.editing.view.focus()}),d})}}function Cf(t){for(const e of t.getChildren())if(e&&e.is(\"caption\"))return e;return null}function Tf(t){const e=t.parent;return\"figcaption\"==t.name&&e&&\"figure\"==e.name&&e.hasClass(\"image\")?{name:!0}:null}class Pf extends Hl{static get pluginName(){return\"ImageCaptionEditing\"}init(){const t=this.editor,e=t.editing.view,n=t.model.schema,i=t.data,o=t.editing,r=t.t;n.register(\"caption\",{allowIn:\"image\",allowContentOf:\"$block\",isLimit:!0}),t.model.document.registerPostFixer(t=>this._insertMissingModelCaptionElement(t)),t.conversion.for(\"upcast\").elementToElement({view:Tf,model:\"caption\"});i.downcastDispatcher.on(\"insert:caption\",Sf(t=>t.createContainerElement(\"figcaption\"),!1));const s=function(t,e){return n=>{const i=n.createEditableElement(\"figcaption\");return n.setCustomProperty(\"imageCaption\",!0,i),Oc({view:t,element:i,text:e}),_h(i,n)}}(e,r(\"an\"));o.downcastDispatcher.on(\"insert:caption\",Sf(s)),o.downcastDispatcher.on(\"insert\",this._fixCaptionVisibility(t=>t.item),{priority:\"high\"}),o.downcastDispatcher.on(\"remove\",this._fixCaptionVisibility(t=>t.position.parent),{priority:\"high\"}),e.document.registerPostFixer(t=>this._updateCaptionVisibility(t))}_updateCaptionVisibility(t){const e=this.editor.editing.mapper,n=this._lastSelectedCaption;let i;const o=this.editor.model.document.selection,r=o.getSelectedElement();if(r&&r.is(\"image\")){const t=Cf(r);i=e.toViewElement(t)}const s=Mf(o.getFirstPosition().parent);if(s&&(i=e.toViewElement(s)),i)return n?(n===i||(Ef(n,t),this._lastSelectedCaption=i),If(i,t)):(this._lastSelectedCaption=i,If(i,t));if(n){const e=Ef(n,t);return this._lastSelectedCaption=null,e}return!1}_fixCaptionVisibility(t){return(e,n,i)=>{const o=Mf(t(n)),r=this.editor.editing.mapper,s=i.writer;if(o){const t=r.toViewElement(o);t&&(o.childCount?s.removeClass(\"ck-hidden\",t):s.addClass(\"ck-hidden\",t))}}}_insertMissingModelCaptionElement(t){const e=this.editor.model,n=e.document.differ.getChanges(),i=[];for(const t of n)if(\"insert\"==t.type&&\"$text\"!=t.name){const n=t.position.nodeAfter;if(n.is(\"image\")&&!Cf(n)&&i.push(n),!n.is(\"image\")&&n.childCount)for(const t of e.createRangeIn(n).getItems())t.is(\"image\")&&!Cf(t)&&i.push(t)}for(const e of i)t.appendElement(\"caption\",e);return!!i.length}}function Sf(t,e=!0){return(n,i,o)=>{const r=i.item;if((r.childCount||e)&&Ah(r.parent)){if(!o.consumable.consume(i.item,\"insert\"))return;const e=o.mapper.toViewElement(i.range.start.parent),n=t(o.writer),s=o.writer;r.childCount||s.addClass(\"ck-hidden\",n),function(t,e,n,i){const o=i.writer.createPositionAt(n,\"end\");i.writer.insert(o,t),i.mapper.bindElements(e,t)}(n,i.item,e,o)}}}function Mf(t){const e=t.getAncestors({includeSelf:!0}).find(t=>\"caption\"==t.name);return e&&e.parent&&\"image\"==e.parent.name?e:null}function Ef(t,e){return!t.childCount&&!t.hasClass(\"ck-hidden\")&&(e.addClass(\"ck-hidden\",t),!0)}function If(t,e){return!!t.hasClass(\"ck-hidden\")&&(e.removeClass(\"ck-hidden\",t),!0)}n(70);class Nf extends Ql{constructor(t,e){super(t),this.defaultStyle=!1,this.styles=e.reduce((t,e)=>(t[e.name]=e,e.isDefault&&(this.defaultStyle=e.name),t),{})}refresh(){const t=this.editor.model.document.selection.getSelectedElement();if(this.isEnabled=Ah(t),t)if(t.hasAttribute(\"imageStyle\")){const e=t.getAttribute(\"imageStyle\");this.value=!!this.styles[e]&&e}else this.value=this.defaultStyle;else this.value=!1}execute(t){const e=t.value,n=this.editor.model,i=n.document.selection.getSelectedElement();n.change(t=>{this.styles[e].isDefault?t.removeAttribute(\"imageStyle\",i):t.setAttribute(\"imageStyle\",e,i)})}}function Of(t,e){for(const n of e)if(n.name===t)return n}var Rf='',Df='',Lf='',jf='';const Vf={full:{name:\"full\",title:\"Full size image\",icon:Rf,isDefault:!0},side:{name:\"side\",title:\"Side image\",icon:jf,className:\"image-style-side\"},alignLeft:{name:\"alignLeft\",title:\"Left aligned image\",icon:Df,className:\"image-style-align-left\"},alignCenter:{name:\"alignCenter\",title:\"Centered image\",icon:Lf,className:\"image-style-align-center\"},alignRight:{name:\"alignRight\",title:\"Right aligned image\",icon:jf,className:\"image-style-align-right\"}},zf={full:Rf,left:Df,right:jf,center:Lf};function Bf(t=[]){return t.map(Ff)}function Ff(t){if(\"string\"==typeof t){const e=t;Vf[e]?t=Object.assign({},Vf[e]):(console.warn(Object(un.a)(\"image-style-not-found: There is no such image style of given name.\"),{name:e}),t={name:e})}else if(Vf[t.name]){const e=Vf[t.name],n=Object.assign({},t);for(const i in e)t.hasOwnProperty(i)||(n[i]=e[i]);t=n}return\"string\"==typeof t.icon&&zf[t.icon]&&(t.icon=zf[t.icon]),t}class Uf extends Hl{static get pluginName(){return\"ImageStyleEditing\"}init(){const t=this.editor,e=t.model.schema,n=t.data,i=t.editing;t.config.define(\"image.styles\",[\"full\",\"side\"]);const o=Bf(t.config.get(\"image.styles\"));e.extend(\"image\",{allowAttributes:\"imageStyle\"});const r=function(t){return(e,n,i)=>{if(!i.consumable.consume(n.item,e.name))return;const o=Of(n.attributeNewValue,t),r=Of(n.attributeOldValue,t),s=i.mapper.toViewElement(n.item),a=i.writer;r&&a.removeClass(r.className,s),o&&a.addClass(o.className,s)}}(o);i.downcastDispatcher.on(\"attribute:imageStyle:image\",r),n.downcastDispatcher.on(\"attribute:imageStyle:image\",r),n.upcastDispatcher.on(\"element:figure\",function(t){const e=t.filter(t=>!t.isDefault);return(t,n,i)=>{if(!n.modelRange)return;const o=n.viewItem,r=oh(n.modelRange.getItems());if(i.schema.checkAttribute(r,\"imageStyle\"))for(const t of e)i.consumable.consume(o,{classes:t.className})&&i.writer.setAttribute(\"imageStyle\",t.name,r)}}(o),{priority:\"low\"}),t.commands.add(\"imageStyle\",new Nf(t,o))}}n(72);class Hf extends Hl{static get pluginName(){return\"ImageStyleUI\"}get localizedDefaultStylesTitles(){const t=this.editor.t;return{\"Full size image\":t(\"e\"),\"Side image\":t(\"f\"),\"Left aligned image\":t(\"g\"),\"Centered image\":t(\"h\"),\"Right aligned image\":t(\"i\")}}init(){const t=function(t,e){for(const n of t)e[n.title]&&(n.title=e[n.title]);return t}(Bf(this.editor.config.get(\"image.styles\")),this.localizedDefaultStylesTitles);for(const e of t)this._createButton(e)}_createButton(t){const e=this.editor,n=`imageStyle:${t.name}`;e.ui.componentFactory.add(n,n=>{const i=e.commands.get(\"imageStyle\"),o=new Sl(n);return o.set({label:t.title,icon:t.icon,tooltip:!0,isToggleable:!0}),o.bind(\"isEnabled\").to(i,\"isEnabled\"),o.bind(\"isOn\").to(i,\"value\",e=>e===t.name),this.listenTo(o,\"execute\",()=>{e.execute(\"imageStyle\",{value:t.name}),e.editing.view.focus()}),o})}}class qf extends Hl{static get requires(){return[qu]}static get pluginName(){return\"WidgetToolbarRepository\"}init(){const t=this.editor;if(t.plugins.has(\"BalloonToolbar\")){const e=t.plugins.get(\"BalloonToolbar\");this.listenTo(e,\"show\",e=>{(function(t){const e=t.getSelectedElement();return!(!e||!bh(e))})(t.editing.view.document.selection)&&e.stop()},{priority:\"high\"})}this._toolbarDefinitions=new Map,this._balloon=this.editor.plugins.get(\"ContextualBalloon\"),this.on(\"change:isEnabled\",()=>{this._updateToolbarsVisibility()}),this.listenTo(t.ui,\"update\",()=>{this._updateToolbarsVisibility()}),this.listenTo(t.ui.focusTracker,\"change:isFocused\",()=>{this._updateToolbarsVisibility()},{priority:\"low\"})}destroy(){super.destroy();for(const t of this._toolbarDefinitions.values())t.view.destroy()}register(t,{ariaLabel:e,items:n,getRelatedElement:i,balloonClassName:o=\"ck-toolbar-container\"}){const r=this.editor,s=r.t,a=new jl(r.locale);if(a.ariaLabel=e||s(\"at\"),this._toolbarDefinitions.has(t))throw new un.b(\"widget-toolbar-duplicated: Toolbar with the given id was already added.\",this,{toolbarId:t});a.fillFromConfig(n,r.ui.componentFactory),this._toolbarDefinitions.set(t,{view:a,getRelatedElement:i,balloonClassName:o})}_updateToolbarsVisibility(){let t=0,e=null,n=null;for(const i of this._toolbarDefinitions.values()){const o=i.getRelatedElement(this.editor.editing.view.document.selection);if(this.isEnabled&&o)if(this.editor.ui.focusTracker.isFocused){const r=o.getAncestors().length;r>t&&(t=r,e=o,n=i)}else this._isToolbarVisible(i)&&this._hideToolbar(i);else this._isToolbarInBalloon(i)&&this._hideToolbar(i)}n&&this._showToolbar(n,e)}_hideToolbar(t){this._balloon.remove(t.view),this.stopListening(this._balloon,\"change:visibleView\")}_showToolbar(t,e){this._isToolbarVisible(t)?Wf(this.editor,e):this._isToolbarInBalloon(t)||(this._balloon.add({view:t.view,position:Yf(this.editor,e),balloonClassName:t.balloonClassName}),this.listenTo(this._balloon,\"change:visibleView\",()=>{for(const t of this._toolbarDefinitions.values())if(this._isToolbarVisible(t)){const e=t.getRelatedElement(this.editor.editing.view.document.selection);Wf(this.editor,e)}}))}_isToolbarVisible(t){return this._balloon.visibleView===t.view}_isToolbarInBalloon(t){return this._balloon.hasView(t.view)}}function Wf(t,e){const n=t.plugins.get(\"ContextualBalloon\"),i=Yf(t,e);n.updatePosition(i)}function Yf(t,e){const n=t.editing.view,i=zu.defaultPositions;return{target:n.domConverter.mapViewToDom(e),positions:[i.northArrowSouth,i.northArrowSouthWest,i.northArrowSouthEast,i.southArrowNorth,i.southArrowNorthWest,i.southArrowNorthEast]}}class $f extends Ql{constructor(t){super(t),this._childCommands=[]}refresh(){}execute(...t){this._getFirstEnabledCommand().execute(t)}registerChildCommand(t){this._childCommands.push(t),t.on(\"change:isEnabled\",()=>this._checkEnabled()),this._checkEnabled()}_checkEnabled(){this.isEnabled=!!this._getFirstEnabledCommand()}_getFirstEnabledCommand(){return this._childCommands.find(t=>t.isEnabled)}}class Gf extends Hl{static get pluginName(){return\"IndentEditing\"}init(){const t=this.editor;t.commands.add(\"indent\",new $f(t)),t.commands.add(\"outdent\",new $f(t))}}var Qf='',Kf='';class Jf extends Hl{static get pluginName(){return\"IndentUI\"}init(){const t=this.editor,e=t.locale,n=t.t,i=\"ltr\"==e.uiLanguageDirection?Qf:Kf,o=\"ltr\"==e.uiLanguageDirection?Kf:Qf;this._defineButton(\"indent\",n(\"ag\"),i),this._defineButton(\"outdent\",n(\"ah\"),o)}_defineButton(t,e,n){const i=this.editor;i.ui.componentFactory.add(t,o=>{const r=i.commands.get(t),s=new Sl(o);return s.set({label:e,icon:n,tooltip:!0}),s.bind(\"isOn\",\"isEnabled\").to(r,\"value\",\"isEnabled\"),this.listenTo(s,\"execute\",()=>{i.execute(t),i.editing.view.focus()}),s})}}class Zf extends Nr{constructor(t){super(t),this.domEventType=\"click\"}onDomEvent(t){this.fire(t.type,t)}}n(74);class Xf extends rl{constructor(t,e=[]){super(t);const n=t.t;this.focusTracker=new Ec,this.keystrokes=new vc,this.urlInputView=this._createUrlInput(),this.saveButtonView=this._createButton(n(\"bb\"),Ru,\"ck-button-save\"),this.saveButtonView.type=\"submit\",this.cancelButtonView=this._createButton(n(\"bc\"),Du,\"ck-button-cancel\",\"cancel\"),this._manualDecoratorSwitches=this._createManualDecoratorSwitches(e),this.children=this._createFormChildren(e),this._focusables=new zc,this._focusCycler=new pl({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:\"shift + tab\",focusNext:\"tab\"}});const i=[\"ck\",\"ck-link-form\"];e.length&&i.push(\"ck-link-form_layout-vertical\"),this.setTemplate({tag:\"form\",attributes:{class:i,tabindex:\"-1\"},children:this.children})}getDecoratorSwitchesState(){return Array.from(this._manualDecoratorSwitches).reduce((t,e)=>(t[e.name]=e.isOn,t),{})}render(){super.render(),Ou({view:this}),[this.urlInputView,...this._manualDecoratorSwitches,this.saveButtonView,this.cancelButtonView].forEach(t=>{this._focusables.add(t),this.focusTracker.add(t.element)}),this.keystrokes.listenTo(this.element)}focus(){this._focusCycler.focusFirst()}_createUrlInput(){const t=this.locale.t,e=new Iu(this.locale,Nu);return e.label=t(\"bg\"),e.inputView.placeholder=\"https://example.com\",e}_createButton(t,e,n,i){const o=new Sl(this.locale);return o.set({label:t,icon:e,tooltip:!0}),o.extendTemplate({attributes:{class:n}}),i&&o.delegate(\"execute\").to(this,i),o}_createManualDecoratorSwitches(t){const e=this.createCollection();for(const n of t){const t=new Ol(this.locale);t.set({name:n.id,label:n.label,withText:!0}),t.bind(\"isOn\").to(n,\"value\"),t.on(\"execute\",()=>{n.set(\"value\",!t.isOn)}),e.add(t)}return e}_createFormChildren(t){const e=this.createCollection();if(e.add(this.urlInputView),t.length){const t=new rl;t.setTemplate({tag:\"ul\",children:this._manualDecoratorSwitches.map(t=>({tag:\"li\",children:[t],attributes:{class:[\"ck\",\"ck-list__item\"]}})),attributes:{class:[\"ck\",\"ck-reset\",\"ck-list\"]}}),e.add(t)}return e.add(this.saveButtonView),e.add(this.cancelButtonView),e}}n(76);class tm extends rl{constructor(t){super(t);const e=t.t;this.focusTracker=new Ec,this.keystrokes=new vc,this.previewButtonView=this._createPreviewButton(),this.unlinkButtonView=this._createButton(e(\"ax\"),'',\"unlink\"),this.editButtonView=this._createButton(e(\"ay\"),'',\"edit\"),this.set(\"href\"),this._focusables=new zc,this._focusCycler=new pl({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:\"shift + tab\",focusNext:\"tab\"}}),this.setTemplate({tag:\"div\",attributes:{class:[\"ck\",\"ck-link-actions\"],tabindex:\"-1\"},children:[this.previewButtonView,this.editButtonView,this.unlinkButtonView]})}render(){super.render(),[this.previewButtonView,this.editButtonView,this.unlinkButtonView].forEach(t=>{this._focusables.add(t),this.focusTracker.add(t.element)}),this.keystrokes.listenTo(this.element)}focus(){this._focusCycler.focusFirst()}_createButton(t,e,n){const i=new Sl(this.locale);return i.set({label:t,icon:e,tooltip:!0}),i.delegate(\"execute\").to(this,n),i}_createPreviewButton(){const t=new Sl(this.locale),e=this.bindTemplate,n=this.t;return t.set({withText:!0,tooltip:n(\"az\")}),t.extendTemplate({attributes:{class:[\"ck\",\"ck-link-actions__preview\"],href:e.to(\"href\",t=>t&&nu(t)),target:\"_blank\",rel:\"noopener noreferrer\"}}),t.bind(\"label\").to(this,\"href\",t=>t||n(\"ba\")),t.bind(\"isEnabled\").to(this,\"href\",t=>!!t),t.template.tag=\"a\",t.template.eventListeners={},t}}class em extends Hl{static get requires(){return[qu]}static get pluginName(){return\"LinkUI\"}init(){const t=this.editor;t.editing.view.addObserver(Zf),this.actionsView=this._createActionsView(),this.formView=this._createFormView(),this._balloon=t.plugins.get(qu),this._createToolbarLinkButton(),this._enableUserBalloonInteractions()}destroy(){super.destroy(),this.formView.destroy()}_createActionsView(){const t=this.editor,e=new tm(t.locale),n=t.commands.get(\"link\"),i=t.commands.get(\"unlink\");return e.bind(\"href\").to(n,\"value\"),e.editButtonView.bind(\"isEnabled\").to(n),e.unlinkButtonView.bind(\"isEnabled\").to(i),this.listenTo(e,\"edit\",()=>{this._addFormView()}),this.listenTo(e,\"unlink\",()=>{t.execute(\"unlink\"),this._hideUI()}),e.keystrokes.set(\"Esc\",(t,e)=>{this._hideUI(),e()}),e.keystrokes.set(\"Ctrl+K\",(t,e)=>{this._addFormView(),e()}),e}_createFormView(){const t=this.editor,e=t.commands.get(\"link\"),n=new Xf(t.locale,e.manualDecorators);return n.urlInputView.bind(\"value\").to(e,\"value\"),n.urlInputView.bind(\"isReadOnly\").to(e,\"isEnabled\",t=>!t),n.saveButtonView.bind(\"isEnabled\").to(e),this.listenTo(n,\"submit\",()=>{t.execute(\"link\",n.urlInputView.inputView.element.value,n.getDecoratorSwitchesState()),this._closeFormView()}),this.listenTo(n,\"cancel\",()=>{this._closeFormView()}),n.keystrokes.set(\"Esc\",(t,e)=>{this._closeFormView(),e()}),n}_createToolbarLinkButton(){const t=this.editor,e=t.commands.get(\"link\"),n=t.t;t.keystrokes.set(\"Ctrl+K\",(t,e)=>{e(),this._showUI(!0)}),t.ui.componentFactory.add(\"link\",t=>{const i=new Sl(t);return i.isEnabled=!0,i.label=n(\"as\"),i.icon='',i.keystroke=\"Ctrl+K\",i.tooltip=!0,i.isToggleable=!0,i.bind(\"isEnabled\").to(e,\"isEnabled\"),i.bind(\"isOn\").to(e,\"value\",t=>!!t),this.listenTo(i,\"execute\",()=>this._showUI(!0)),i})}_enableUserBalloonInteractions(){const t=this.editor.editing.view.document;this.listenTo(t,\"click\",()=>{this._getSelectedLinkElement()&&this._showUI()}),this.editor.keystrokes.set(\"Tab\",(t,e)=>{this._areActionsVisible&&!this.actionsView.focusTracker.isFocused&&(this.actionsView.focus(),e())},{priority:\"high\"}),this.editor.keystrokes.set(\"Esc\",(t,e)=>{this._isUIVisible&&(this._hideUI(),e())}),Rl({emitter:this.formView,activator:()=>this._isUIInPanel,contextElements:[this._balloon.view.element],callback:()=>this._hideUI()})}_addActionsView(){this._areActionsInPanel||this._balloon.add({view:this.actionsView,position:this._getBalloonPositionData()})}_addFormView(){if(this._isFormInPanel)return;const t=this.editor.commands.get(\"link\");this._balloon.add({view:this.formView,position:this._getBalloonPositionData()}),this._balloon.visibleView===this.formView&&this.formView.urlInputView.select(),this.formView.urlInputView.inputView.element.value=t.value||\"\"}_closeFormView(){const t=this.editor.commands.get(\"link\");t.restoreManualDecoratorStates(),void 0!==t.value?this._removeFormView():this._hideUI()}_removeFormView(){this._isFormInPanel&&(this.formView.saveButtonView.focus(),this._balloon.remove(this.formView),this.editor.editing.view.focus())}_showUI(t=!1){this._getSelectedLinkElement()?(this._areActionsVisible?this._addFormView():this._addActionsView(),t&&this._balloon.showStack(\"main\")):(this._addActionsView(),t&&this._balloon.showStack(\"main\"),this._addFormView()),this._startUpdatingUI()}_hideUI(){if(!this._isUIInPanel)return;const t=this.editor;this.stopListening(t.ui,\"update\"),this.stopListening(this._balloon,\"change:visibleView\"),t.editing.view.focus(),this._removeFormView(),this._balloon.remove(this.actionsView)}_startUpdatingUI(){const t=this.editor,e=t.editing.view.document;let n=this._getSelectedLinkElement(),i=r();const o=()=>{const t=this._getSelectedLinkElement(),e=r();n&&!t||!n&&e!==i?this._hideUI():this._isUIVisible&&this._balloon.updatePosition(this._getBalloonPositionData()),n=t,i=e};function r(){return e.selection.focus.getAncestors().reverse().find(t=>t.is(\"element\"))}this.listenTo(t.ui,\"update\",o),this.listenTo(this._balloon,\"change:visibleView\",o)}get _isFormInPanel(){return this._balloon.hasView(this.formView)}get _areActionsInPanel(){return this._balloon.hasView(this.actionsView)}get _areActionsVisible(){return this._balloon.visibleView===this.actionsView}get _isUIInPanel(){return this._isFormInPanel||this._areActionsInPanel}get _isUIVisible(){return this._balloon.visibleView==this.formView||this._areActionsVisible}_getBalloonPositionData(){const t=this.editor.editing.view,e=t.document,n=this._getSelectedLinkElement();return{target:n?t.domConverter.mapViewToDom(n):t.domConverter.viewRangeToDom(e.selection.getFirstRange())}}_getSelectedLinkElement(){const t=this.editor.editing.view,e=t.document.selection;if(e.isCollapsed)return nm(e.getFirstPosition());{const n=e.getFirstRange().getTrimmed(),i=nm(n.start),o=nm(n.end);return i&&i==o&&t.createRangeIn(i).getTrimmed().isEqual(n)?i:null}}}function nm(t){return t.getAncestors().find(t=>{return(e=t).is(\"attributeElement\")&&!!e.getCustomProperty(\"link\");var e})}class im extends Ql{constructor(t,e){super(t),this.type=e}refresh(){this.value=this._getValue(),this.isEnabled=this._checkEnabled()}execute(){const t=this.editor.model,e=t.document,n=Array.from(e.selection.getSelectedBlocks()).filter(e=>rm(e,t.schema)),i=!0===this.value;t.change(t=>{if(i){let e=n[n.length-1].nextSibling,i=Number.POSITIVE_INFINITY,o=[];for(;e&&\"listItem\"==e.name&&0!==e.getAttribute(\"listIndent\");){const t=e.getAttribute(\"listIndent\");t=n;)r>o.getAttribute(\"listIndent\")&&(r=o.getAttribute(\"listIndent\")),o.getAttribute(\"listIndent\")==r&&t[e?\"unshift\":\"push\"](o),o=o[e?\"previousSibling\":\"nextSibling\"]}}function rm(t,e){return e.checkChild(t.parent,\"listItem\")&&!e.isObject(t)}class sm extends Ql{constructor(t,e){super(t),this._indentBy=\"forward\"==e?1:-1}refresh(){this.isEnabled=this._checkEnabled()}execute(){const t=this.editor.model,e=t.document;let n=Array.from(e.selection.getSelectedBlocks());t.change(t=>{const e=n[n.length-1];let i=e.nextSibling;for(;i&&\"listItem\"==i.name&&i.getAttribute(\"listIndent\")>e.getAttribute(\"listIndent\");)n.push(i),i=i.nextSibling;this._indentBy<0&&(n=n.reverse());for(const e of n){const n=e.getAttribute(\"listIndent\")+this._indentBy;n<0?t.rename(e,\"paragraph\"):t.setAttribute(\"listIndent\",n,e)}})}_checkEnabled(){const t=oh(this.editor.model.document.selection.getSelectedBlocks());if(!t||!t.is(\"listItem\"))return!1;if(this._indentBy>0){const e=t.getAttribute(\"listIndent\"),n=t.getAttribute(\"listType\");let i=t.previousSibling;for(;i&&i.is(\"listItem\")&&i.getAttribute(\"listIndent\")>=e;){if(i.getAttribute(\"listIndent\")==e)return i.getAttribute(\"listType\")==n;i=i.previousSibling}return!1}return!0}}function am(t,e){const n=e.mapper,i=e.writer,o=\"numbered\"==t.getAttribute(\"listType\")?\"ol\":\"ul\",r=function(t){const e=t.createContainerElement(\"li\");return e.getFillerOffset=fm,e}(i),s=i.createContainerElement(o,null);return i.insert(i.createPositionAt(s,0),r),n.bindElements(t,r),r}function cm(t,e,n,i){const o=e.parent,r=n.mapper,s=n.writer;let a=r.toViewPosition(i.createPositionBefore(t));const c=hm(t.previousSibling,{sameIndent:!0,smallerIndent:!0,listIndent:t.getAttribute(\"listIndent\")}),l=t.previousSibling;if(c&&c.getAttribute(\"listIndent\")==t.getAttribute(\"listIndent\")){const t=r.toViewElement(c);a=s.breakContainer(s.createPositionAfter(t))}else a=l&&\"listItem\"==l.name?r.toViewPosition(i.createPositionAt(l,\"end\")):r.toViewPosition(i.createPositionBefore(t));if(a=dm(a),s.insert(a,o),l&&\"listItem\"==l.name){const t=r.toViewElement(l),n=s.createRange(s.createPositionAt(t,0),a).getWalker({ignoreElementEnd:!0});for(const t of n)if(t.item.is(\"li\")){const i=s.breakContainer(s.createPositionBefore(t.item)),o=t.item.parent,r=s.createPositionAt(e,\"end\");lm(s,r.nodeBefore,r.nodeAfter),s.move(s.createRangeOn(o),r),n.position=i}}else{const n=o.nextSibling;if(n&&(n.is(\"ul\")||n.is(\"ol\"))){let i=null;for(const e of n.getChildren()){const n=r.toModelElement(e);if(!(n&&n.getAttribute(\"listIndent\")>t.getAttribute(\"listIndent\")))break;i=e}i&&(s.breakContainer(s.createPositionAfter(i)),s.move(s.createRangeOn(i.parent),s.createPositionAt(e,\"end\")))}}lm(s,o,o.nextSibling),lm(s,o.previousSibling,o)}function lm(t,e,n){return!e||!n||\"ul\"!=e.name&&\"ol\"!=e.name||e.name!=n.name||e.getAttribute(\"class\")!==n.getAttribute(\"class\")?null:t.mergeContainers(t.createPositionAfter(e))}function dm(t){return t.getLastMatchingPosition(t=>t.item.is(\"uiElement\"))}function hm(t,e){const n=!!e.sameIndent,i=!!e.smallerIndent,o=e.listIndent;let r=t;for(;r&&\"listItem\"==r.name;){const t=r.getAttribute(\"listIndent\");if(n&&o==t||i&&o>t)return r;r=r.previousSibling}return null}function um(t,e,n,i){t.ui.componentFactory.add(e,o=>{const r=t.commands.get(e),s=new Sl(o);return s.set({label:n,icon:i,tooltip:!0,isToggleable:!0}),s.bind(\"isOn\",\"isEnabled\").to(r,\"value\",\"isEnabled\"),s.on(\"execute\",()=>{t.execute(e),t.editing.view.focus()}),s})}function fm(){const t=!this.isEmpty&&(\"ul\"==this.getChild(0).name||\"ol\"==this.getChild(0).name);return this.isEmpty||t?0:Li.call(this)}function mm(t){return(e,n,i)=>{const o=i.consumable;if(!o.test(n.item,\"insert\")||!o.test(n.item,\"attribute:listType\")||!o.test(n.item,\"attribute:listIndent\"))return;o.consume(n.item,\"insert\"),o.consume(n.item,\"attribute:listType\"),o.consume(n.item,\"attribute:listIndent\");const r=n.item;cm(r,am(r,i),i,t)}}function gm(t,e,n){if(!n.consumable.consume(e.item,\"attribute:listType\"))return;const i=n.mapper.toViewElement(e.item),o=n.writer;o.breakContainer(o.createPositionBefore(i)),o.breakContainer(o.createPositionAfter(i));const r=i.parent,s=\"numbered\"==e.attributeNewValue?\"ol\":\"ul\";o.rename(s,r)}function pm(t,e,n){const i=n.mapper.toViewElement(e.item).parent,o=n.writer;lm(o,i,i.nextSibling),lm(o,i.previousSibling,i);for(const t of e.item.getChildren())n.consumable.consume(t,\"insert\")}function bm(t,e,n){if(\"listItem\"!=e.item.name){let t=n.mapper.toViewPosition(e.range.start);const i=n.writer,o=[];for(;(\"ul\"==t.parent.name||\"ol\"==t.parent.name)&&(t=i.breakContainer(t),\"li\"==t.parent.name);){const e=t,n=i.createPositionAt(t.parent,\"end\");if(!e.isEqual(n)){const t=i.remove(i.createRange(e,n));o.push(t)}t=i.createPositionAfter(t.parent)}if(o.length>0){for(let e=0;e0){const e=lm(i,n,n.nextSibling);e&&e.parent==n&&t.offset--}}lm(i,t.nodeBefore,t.nodeAfter)}}}function wm(t,e,n){const i=n.mapper.toViewPosition(e.position),o=i.nodeBefore,r=i.nodeAfter;lm(n.writer,o,r)}function km(t,e,n){if(n.consumable.consume(e.viewItem,{name:!0})){const t=n.writer,i=t.createElement(\"listItem\"),o=function(t){let e=0,n=t.parent;for(;n;){if(n.is(\"li\"))e++;else{const t=n.previousSibling;t&&t.is(\"li\")&&e++}n=n.parent}return e}(e.viewItem);t.setAttribute(\"listIndent\",o,i);const r=e.viewItem.parent&&\"ol\"==e.viewItem.parent.name?\"numbered\":\"bulleted\";t.setAttribute(\"listType\",r,i);const s=n.splitToAllowedParent(i,e.modelCursor);if(!s)return;t.insert(i,s.position);const a=function(t,e,n){const{writer:i,schema:o}=n;let r=i.createPositionAfter(t);for(const s of e)if(\"ul\"==s.name||\"ol\"==s.name)r=n.convertItem(s,r).modelCursor;else{const e=n.convertItem(s,i.createPositionAt(t,\"end\")),a=e.modelRange.start.nodeAfter;a&&a.is(\"element\")&&!o.checkChild(t,a.name)&&(t=e.modelCursor.parent.is(\"listItem\")?e.modelCursor.parent:Am(e.modelCursor),r=i.createPositionAfter(t))}return r}(i,e.viewItem.getChildren(),n);e.modelRange=t.createRange(e.modelCursor,a),s.cursorParent?e.modelCursor=t.createPositionAt(s.cursorParent,0):e.modelCursor=e.modelRange.end}}function _m(t,e,n){if(n.consumable.test(e.viewItem,{name:!0})){const t=Array.from(e.viewItem.getChildren());for(const e of t){!(e.is(\"li\")||Tm(e))&&e._remove()}}}function vm(t,e,n){if(n.consumable.test(e.viewItem,{name:!0})){if(0===e.viewItem.childCount)return;const t=[...e.viewItem.getChildren()];let n=!1,i=!0;for(const e of t)n&&!Tm(e)&&e._remove(),e.is(\"text\")?(i&&(e._data=e.data.replace(/^\\s+/,\"\")),e.nextSibling&&!Tm(e.nextSibling)||(e._data=e.data.replace(/\\s+$/,\"\"))):Tm(e)&&(n=!0),i=!1}}function ym(t){return(e,n)=>{if(n.isPhantom)return;const i=n.modelPosition.nodeBefore;if(i&&i.is(\"listItem\")){const e=n.mapper.toViewElement(i),o=e.getAncestors().find(Tm),r=t.createPositionAt(e,0).getWalker();for(const t of r){if(\"elementStart\"==t.type&&t.item.is(\"li\")){n.viewPosition=t.previousPosition;break}if(\"elementEnd\"==t.type&&t.item==o){n.viewPosition=t.nextPosition;break}}}}}function xm(t,[e,n]){let i,o=e.is(\"documentFragment\")?e.getChild(0):e;if(i=n?this.createSelection(n):this.document.selection,o&&o.is(\"listItem\")){const t=i.getFirstPosition();let e=null;if(t.parent.is(\"listItem\")?e=t.parent:t.nodeBefore&&t.nodeBefore.is(\"listItem\")&&(e=t.nodeBefore),e){const t=e.getAttribute(\"listIndent\");if(t>0)for(;o&&o.is(\"listItem\");)o._setAttribute(\"listIndent\",o.getAttribute(\"listIndent\")+t),o=o.nextSibling}}}function Am(t){const e=new bs({startPosition:t});let n;do{n=e.next()}while(!n.value.item.is(\"listItem\"));return n.value.item}function Cm(t,e,n,i,o,r){const s=hm(e.nodeBefore,{sameIndent:!0,smallerIndent:!0,listIndent:t,foo:\"b\"}),a=o.mapper,c=o.writer,l=s?s.getAttribute(\"listIndent\"):null;let d;if(s)if(l==t){const t=a.toViewElement(s).parent;d=c.createPositionAfter(t)}else{const t=r.createPositionAt(s,\"end\");d=a.toViewPosition(t)}else d=n;d=dm(d);for(const t of[...i.getChildren()])Tm(t)&&(d=c.move(c.createRangeOn(t),d).end,lm(c,t,t.nextSibling),lm(c,t.previousSibling,t))}function Tm(t){return t.is(\"ol\")||t.is(\"ul\")}class Pm extends Hl{static get pluginName(){return\"ListEditing\"}static get requires(){return[bf]}init(){const t=this.editor;t.model.schema.register(\"listItem\",{inheritAllFrom:\"$block\",allowAttributes:[\"listType\",\"listIndent\"]});const e=t.data,n=t.editing;var i;t.model.document.registerPostFixer(e=>function(t,e){const n=t.document.differ.getChanges(),i=new Map;let o=!1;for(const i of n)if(\"insert\"==i.type&&\"listItem\"==i.name)r(i.position);else if(\"insert\"==i.type&&\"listItem\"!=i.name){if(\"$text\"!=i.name){const n=i.position.nodeAfter;n.hasAttribute(\"listIndent\")&&(e.removeAttribute(\"listIndent\",n),o=!0),n.hasAttribute(\"listType\")&&(e.removeAttribute(\"listType\",n),o=!0);for(const e of Array.from(t.createRangeIn(n)).filter(t=>t.item.is(\"listItem\")))r(e.previousPosition)}r(i.position.getShiftedBy(i.length))}else\"remove\"==i.type&&\"listItem\"==i.name?r(i.position):(\"attribute\"==i.type&&\"listIndent\"==i.attributeKey||\"attribute\"==i.type&&\"listType\"==i.attributeKey)&&r(i.range.start);for(const t of i.values())s(t),a(t);return o;function r(t){const e=t.nodeBefore;if(e&&e.is(\"listItem\")){let n=e;if(i.has(n))return;for(;n.previousSibling&&n.previousSibling.is(\"listItem\");)if(n=n.previousSibling,i.has(n))return;i.set(t.nodeBefore,n)}else{const e=t.nodeAfter;e&&e.is(\"listItem\")&&i.set(e,e)}}function s(t){let n=0,i=null;for(;t&&t.is(\"listItem\");){const r=t.getAttribute(\"listIndent\");if(r>n){let s;null===i?(i=r-n,s=n):(i>r&&(i=r),s=r-i),e.setAttribute(\"listIndent\",s,t),o=!0}else i=null,n=t.getAttribute(\"listIndent\")+1;t=t.nextSibling}}function a(t){let n=[],i=null;for(;t&&t.is(\"listItem\");){const r=t.getAttribute(\"listIndent\");if(i&&i.getAttribute(\"listIndent\")>r&&(n=n.slice(0,r+1)),0!=r)if(n[r]){const i=n[r];t.getAttribute(\"listType\")!=i&&(e.setAttribute(\"listType\",i,t),o=!0)}else n[r]=t.getAttribute(\"listType\");i=t,t=t.nextSibling}}}(t.model,e)),n.mapper.registerViewToModelLength(\"li\",Sm),e.mapper.registerViewToModelLength(\"li\",Sm),n.mapper.on(\"modelToViewPosition\",ym(n.view)),n.mapper.on(\"viewToModelPosition\",(i=t.model,(t,e)=>{const n=e.viewPosition,o=n.parent,r=e.mapper;if(\"ul\"==o.name||\"ol\"==o.name){if(n.isAtEnd){const t=r.toModelElement(n.nodeBefore),o=r.getModelLength(n.nodeBefore);e.modelPosition=i.createPositionBefore(t).getShiftedBy(o)}else{const t=r.toModelElement(n.nodeAfter);e.modelPosition=i.createPositionBefore(t)}t.stop()}else if(\"li\"==o.name&&n.nodeBefore&&(\"ul\"==n.nodeBefore.name||\"ol\"==n.nodeBefore.name)){const s=r.toModelElement(o);let a=1,c=n.nodeBefore;for(;c&&Tm(c);)a+=r.getModelLength(c),c=c.previousSibling;e.modelPosition=i.createPositionBefore(s).getShiftedBy(a),t.stop()}})),e.mapper.on(\"modelToViewPosition\",ym(n.view)),t.conversion.for(\"editingDowncast\").add(e=>{e.on(\"insert\",bm,{priority:\"high\"}),e.on(\"insert:listItem\",mm(t.model)),e.on(\"attribute:listType:listItem\",gm,{priority:\"high\"}),e.on(\"attribute:listType:listItem\",pm,{priority:\"low\"}),e.on(\"attribute:listIndent:listItem\",function(t){return(e,n,i)=>{if(!i.consumable.consume(n.item,\"attribute:listIndent\"))return;const o=i.mapper.toViewElement(n.item),r=i.writer;r.breakContainer(r.createPositionBefore(o)),r.breakContainer(r.createPositionAfter(o));const s=o.parent,a=s.previousSibling,c=r.createRangeOn(s);r.remove(c),a&&a.nextSibling&&lm(r,a,a.nextSibling),Cm(n.attributeOldValue+1,n.range.start,c.start,o,i,t),cm(n.item,o,i,t);for(const t of n.item.getChildren())i.consumable.consume(t,\"insert\")}}(t.model)),e.on(\"remove:listItem\",function(t){return(e,n,i)=>{const o=i.mapper.toViewPosition(n.position).getLastMatchingPosition(t=>!t.item.is(\"li\")).nodeAfter,r=i.writer;r.breakContainer(r.createPositionBefore(o)),r.breakContainer(r.createPositionAfter(o));const s=o.parent,a=s.previousSibling,c=r.createRangeOn(s),l=r.remove(c);a&&a.nextSibling&&lm(r,a,a.nextSibling),Cm(i.mapper.toModelElement(o).getAttribute(\"listIndent\")+1,n.position,c.start,o,i,t);for(const t of r.createRangeIn(l).getItems())i.mapper.unbindViewElement(t);e.stop()}}(t.model)),e.on(\"remove\",wm,{priority:\"low\"})}),t.conversion.for(\"dataDowncast\").add(e=>{e.on(\"insert\",bm,{priority:\"high\"}),e.on(\"insert:listItem\",mm(t.model))}),t.conversion.for(\"upcast\").add(t=>{t.on(\"element:ul\",_m,{priority:\"high\"}),t.on(\"element:ol\",_m,{priority:\"high\"}),t.on(\"element:li\",vm,{priority:\"high\"}),t.on(\"element:li\",km)}),t.model.on(\"insertContent\",xm,{priority:\"high\"}),t.commands.add(\"numberedList\",new im(t,\"numbered\")),t.commands.add(\"bulletedList\",new im(t,\"bulleted\")),t.commands.add(\"indentList\",new sm(t,\"forward\")),t.commands.add(\"outdentList\",new sm(t,\"backward\"));const o=n.view.document;this.listenTo(o,\"enter\",(t,e)=>{const n=this.editor.model.document,i=n.selection.getLastPosition().parent;n.selection.isCollapsed&&\"listItem\"==i.name&&i.isEmpty&&(this.editor.execute(\"outdentList\"),e.preventDefault(),t.stop())}),this.listenTo(o,\"delete\",(t,e)=>{if(\"backward\"!==e.direction)return;const n=this.editor.model.document.selection;if(!n.isCollapsed)return;const i=n.getFirstPosition();if(!i.isAtStart)return;const o=i.parent;\"listItem\"===o.name&&(o.previousSibling&&\"listItem\"===o.previousSibling.name||(this.editor.execute(\"outdentList\"),e.preventDefault(),t.stop()))},{priority:\"high\"});const r=t=>(e,n)=>{this.editor.commands.get(t).isEnabled&&(this.editor.execute(t),n())};t.keystrokes.set(\"Tab\",r(\"indentList\")),t.keystrokes.set(\"Shift+Tab\",r(\"outdentList\"))}afterInit(){const t=this.editor.commands,e=t.get(\"indent\"),n=t.get(\"outdent\");e&&e.registerChildCommand(t.get(\"indentList\")),n&&n.registerChildCommand(t.get(\"outdentList\"))}}function Sm(t){let e=1;for(const n of t.getChildren())if(\"ul\"==n.name||\"ol\"==n.name)for(const t of n.getChildren())e+=Sm(t);return e}class Mm extends Hl{init(){const t=this.editor.t;um(this.editor,\"numberedList\",t(\"ae\"),''),um(this.editor,\"bulletedList\",t(\"af\"),'')}}function Em(t,e){return t=>{t.on(\"attribute:url:media\",n)};function n(n,i,o){if(!o.consumable.consume(i.item,n.name))return;const r=i.attributeNewValue,s=o.writer,a=o.mapper.toViewElement(i.item);s.remove(s.createRangeIn(a));const c=t.getMediaViewElement(s,r,e);s.insert(s.createPositionAt(a,0),c)}}function Im(t,e,n,i){const o=t.createContainerElement(\"figure\",{class:\"media\"});return o.getFillerOffset=Rm,t.insert(t.createPositionAt(o,0),e.getMediaViewElement(t,n,i)),o}function Nm(t){const e=t.getSelectedElement();return e&&e.is(\"media\")?e:null}function Om(t,e,n){t.change(i=>{const o=i.createElement(\"media\",{url:e});t.insertContent(o,n),i.setSelection(o,\"on\")})}function Rm(){return null}class Dm extends Ql{refresh(){const t=this.editor.model,e=t.document.selection,n=t.schema,i=e.getFirstPosition(),o=Nm(e);let r=i.parent;r!=r.root&&(r=r.parent),this.value=o?o.getAttribute(\"url\"):null,this.isEnabled=n.checkChild(r,\"media\")}execute(t){const e=this.editor.model,n=e.document.selection,i=Nm(n);if(i)e.change(e=>{e.setAttribute(\"url\",t,i)});else{const i=vh(n,e);Om(e,t,i)}}}class Lm{constructor(t,e){const n=e.providers,i=e.extraProviders||[],o=new Set(e.removeProviders),r=n.concat(i).filter(t=>{const e=t.name;return e?!o.has(e):(console.warn(Object(un.a)(\"media-embed-no-provider-name: The configured media provider has no name and cannot be used.\"),{provider:t}),!1)});this.locale=t,this.providerDefinitions=r}hasMedia(t){return!!this._getMedia(t)}getMediaViewElement(t,e,n){return this._getMedia(e).getViewElement(t,n)}_getMedia(t){if(!t)return new jm(this.locale);t=t.trim();for(const e of this.providerDefinitions){const n=e.html;let i=e.url;Array.isArray(i)||(i=[i]);for(const e of i){const i=this._getUrlMatches(t,e);if(i)return new jm(this.locale,t,i,n)}}return null}_getUrlMatches(t,e){let n=t.match(e);if(n)return n;let i=t.replace(/^https?:\\/\\//,\"\");return n=i.match(e),n||(i=i.replace(/^www\\./,\"\"),n=i.match(e),n||null)}}class jm{constructor(t,e,n,i){this.url=this._getValidUrl(e),this._t=t.t,this._match=n,this._previewRenderer=i}getViewElement(t,e){const n={};if(e.renderForEditingView||e.renderMediaPreview&&this.url&&this._previewRenderer){this.url&&(n[\"data-oembed-url\"]=this.url),e.renderForEditingView&&(n.class=\"ck-media__wrapper\");const i=this._getPreviewHtml(e);return t.createUIElement(\"div\",n,(function(t){const e=this.toDomElement(t);return e.innerHTML=i,e}))}return this.url&&(n.url=this.url),t.createEmptyElement(\"oembed\",n)}_getPreviewHtml(t){return this._previewRenderer?this._previewRenderer(this._match):this.url&&t.renderForEditingView?this._getPlaceholderHtml():\"\"}_getPlaceholderHtml(){const t=new Pl,e=new Tl;return t.text=this._t(\"Open media in new tab\"),e.content='',e.viewBox=\"0 0 64 42\",new Bc({tag:\"div\",attributes:{class:\"ck ck-reset_all ck-media__placeholder\"},children:[{tag:\"div\",attributes:{class:\"ck-media__placeholder__icon\"},children:[e]},{tag:\"a\",attributes:{class:\"ck-media__placeholder__url\",target:\"_blank\",rel:\"noopener noreferrer\",href:this.url},children:[{tag:\"span\",attributes:{class:\"ck-media__placeholder__url__text\"},children:[this.url]},t]}]}).render().outerHTML}_getValidUrl(t){return t?t.match(/^https?/)?t:\"https://\"+t:null}}n(78);class Vm extends Hl{static get pluginName(){return\"MediaEmbedEditing\"}constructor(t){super(t),t.config.define(\"mediaEmbed\",{providers:[{name:\"dailymotion\",url:/^dailymotion\\.com\\/video\\/(\\w+)/,html:t=>'
'+`
'},{name:\"spotify\",url:[/^open\\.spotify\\.com\\/(artist\\/\\w+)/,/^open\\.spotify\\.com\\/(album\\/\\w+)/,/^open\\.spotify\\.com\\/(track\\/\\w+)/],html:t=>'
'+`
'},{name:\"youtube\",url:[/^(?:m\\.)?youtube\\.com\\/watch\\?v=([\\w-]+)/,/^(?:m\\.)?youtube\\.com\\/v\\/([\\w-]+)/,/^youtube\\.com\\/embed\\/([\\w-]+)/,/^youtu\\.be\\/([\\w-]+)/],html:t=>'
'+`
'},{name:\"vimeo\",url:[/^vimeo\\.com\\/(\\d+)/,/^vimeo\\.com\\/[^/]+\\/[^/]+\\/video\\/(\\d+)/,/^vimeo\\.com\\/album\\/[^/]+\\/video\\/(\\d+)/,/^vimeo\\.com\\/channels\\/[^/]+\\/(\\d+)/,/^vimeo\\.com\\/groups\\/[^/]+\\/videos\\/(\\d+)/,/^vimeo\\.com\\/ondemand\\/[^/]+\\/(\\d+)/,/^player\\.vimeo\\.com\\/video\\/(\\d+)/],html:t=>'
'+`
'},{name:\"instagram\",url:/^instagram\\.com\\/p\\/(\\w+)/},{name:\"twitter\",url:/^twitter\\.com/},{name:\"googleMaps\",url:/^google\\.com\\/maps/},{name:\"flickr\",url:/^flickr\\.com/},{name:\"facebook\",url:/^facebook\\.com/}]}),this.registry=new Lm(t.locale,t.config.get(\"mediaEmbed\"))}init(){const t=this.editor,e=t.model.schema,n=t.t,i=t.conversion,o=t.config.get(\"mediaEmbed.previewsInData\"),r=this.registry;t.commands.add(\"mediaEmbed\",new Dm(t)),e.register(\"media\",{isObject:!0,isBlock:!0,allowWhere:\"$block\",allowAttributes:[\"url\"]}),i.for(\"dataDowncast\").elementToElement({model:\"media\",view:(t,e)=>{const n=t.getAttribute(\"url\");return Im(e,r,n,{renderMediaPreview:n&&o})}}),i.for(\"dataDowncast\").add(Em(r,{renderMediaPreview:o})),i.for(\"editingDowncast\").elementToElement({model:\"media\",view:(t,e)=>{const i=t.getAttribute(\"url\"),o=Im(e,r,i,{renderForEditingView:!0});return s=o,a=e,c=n(\"ar\"),a.setCustomProperty(\"media\",!0,s),wh(s,a,{label:c});var s,a,c}}),i.for(\"editingDowncast\").add(Em(r,{renderForEditingView:!0})),i.for(\"upcast\").elementToElement({view:{name:\"oembed\",attributes:{url:!0}},model:(t,e)=>{const n=t.getAttribute(\"url\");if(r.hasMedia(n))return e.createElement(\"media\",{url:n})}}).elementToElement({view:{name:\"div\",attributes:{\"data-oembed-url\":!0}},model:(t,e)=>{const n=t.getAttribute(\"data-oembed-url\");if(r.hasMedia(n))return e.createElement(\"media\",{url:n})}})}}const zm=/^(?:http(s)?:\\/\\/)?[\\w.-]+(?:\\.[\\w.-]+)+[\\w\\-._~:/?#[\\]@!$&'()*+,;=]+$/;class Bm extends Hl{static get requires(){return[Gl,zd]}static get pluginName(){return\"AutoMediaEmbed\"}constructor(t){super(t),this._timeoutId=null,this._positionToInsert=null}init(){const t=this.editor,e=t.model.document;this.listenTo(t.plugins.get(Gl),\"inputTransformation\",()=>{const t=e.selection.getFirstRange(),n=oc.fromPosition(t.start);n.stickiness=\"toPrevious\";const i=oc.fromPosition(t.end);i.stickiness=\"toNext\",e.once(\"change:data\",()=>{this._embedMediaBetweenPositions(n,i),n.detach(),i.detach()},{priority:\"high\"})}),t.commands.get(\"undo\").on(\"execute\",()=>{this._timeoutId&&(Xo.window.clearTimeout(this._timeoutId),this._positionToInsert.detach(),this._timeoutId=null,this._positionToInsert=null)},{priority:\"high\"})}_embedMediaBetweenPositions(t,e){const n=this.editor,i=n.plugins.get(Vm).registry,o=new Is(t,e),r=o.getWalker({ignoreElementEnd:!0});let s=\"\";for(const t of r)t.item.is(\"textProxy\")&&(s+=t.item.data);if(s=s.trim(),!s.match(zm))return;if(!i.hasMedia(s))return;n.commands.get(\"mediaEmbed\").isEnabled&&(this._positionToInsert=oc.fromPosition(t),this._timeoutId=Xo.window.setTimeout(()=>{n.model.change(t=>{let e;this._timeoutId=null,t.remove(o),\"$graveyard\"!==this._positionToInsert.root.rootName&&(e=this._positionToInsert),Om(n.model,s,e),this._positionToInsert.detach(),this._positionToInsert=null})},100))}}n(80);class Fm extends rl{constructor(t,e){super(e);const n=e.t;this.focusTracker=new Ec,this.keystrokes=new vc,this.urlInputView=this._createUrlInput(),this.saveButtonView=this._createButton(n(\"bb\"),Ru,\"ck-button-save\"),this.saveButtonView.type=\"submit\",this.cancelButtonView=this._createButton(n(\"bc\"),Du,\"ck-button-cancel\",\"cancel\"),this._focusables=new zc,this._focusCycler=new pl({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:\"shift + tab\",focusNext:\"tab\"}}),this._validators=t,this.setTemplate({tag:\"form\",attributes:{class:[\"ck\",\"ck-media-form\"],tabindex:\"-1\"},children:[this.urlInputView,this.saveButtonView,this.cancelButtonView]})}render(){super.render(),Ou({view:this}),[this.urlInputView,this.saveButtonView,this.cancelButtonView].forEach(t=>{this._focusables.add(t),this.focusTracker.add(t.element)}),this.keystrokes.listenTo(this.element);const t=t=>t.stopPropagation();this.keystrokes.set(\"arrowright\",t),this.keystrokes.set(\"arrowleft\",t),this.keystrokes.set(\"arrowup\",t),this.keystrokes.set(\"arrowdown\",t),this.listenTo(this.urlInputView.element,\"selectstart\",(t,e)=>{e.stopPropagation()},{priority:\"high\"})}focus(){this._focusCycler.focusFirst()}get url(){return this.urlInputView.inputView.element.value.trim()}set url(t){this.urlInputView.inputView.element.value=t.trim()}isValid(){this.resetFormStatus();for(const t of this._validators){const e=t(this);if(e)return this.urlInputView.errorText=e,!1}return!0}resetFormStatus(){this.urlInputView.errorText=null,this.urlInputView.infoText=this._urlInputViewInfoDefault}_createUrlInput(){const t=this.locale.t,e=new Iu(this.locale,Nu),n=e.inputView;return this._urlInputViewInfoDefault=t(\"bd\"),this._urlInputViewInfoTip=t(\"be\"),e.label=t(\"bf\"),e.infoText=this._urlInputViewInfoDefault,n.placeholder=\"https://example.com\",n.on(\"input\",()=>{e.infoText=n.element.value?this._urlInputViewInfoTip:this._urlInputViewInfoDefault}),e}_createButton(t,e,n,i){const o=new Sl(this.locale);return o.set({label:t,icon:e,tooltip:!0}),o.extendTemplate({attributes:{class:n}}),i&&o.delegate(\"execute\").to(this,i),o}}class Um extends Hl{static get requires(){return[Vm]}static get pluginName(){return\"MediaEmbedUI\"}init(){const t=this.editor,e=t.commands.get(\"mediaEmbed\"),n=t.plugins.get(Vm).registry;this.form=new Fm(function(t,e){return[e=>{if(!e.url.length)return t(\"ap\")},n=>{if(!e.hasMedia(n.url))return t(\"aq\")}]}(t.t,n),t.locale),t.ui.componentFactory.add(\"mediaEmbed\",n=>{const i=Dl(n);return this._setUpDropdown(i,this.form,e,t),this._setUpForm(this.form,i,e),i})}_setUpDropdown(t,e,n){const i=this.editor,o=i.t,r=t.buttonView;function s(){i.editing.view.focus(),t.isOpen=!1}t.bind(\"isEnabled\").to(n),t.panelView.children.add(e),r.set({label:o(\"ao\"),icon:'\\n',tooltip:!0}),r.on(\"open\",()=>{e.url=n.value||\"\",e.urlInputView.select(),e.focus()},{priority:\"low\"}),t.on(\"submit\",()=>{e.isValid()&&(i.execute(\"mediaEmbed\",e.url),s())}),t.on(\"change:isOpen\",()=>e.resetFormStatus()),t.on(\"cancel\",()=>s())}_setUpForm(t,e,n){t.delegate(\"submit\",\"cancel\").to(e),t.urlInputView.bind(\"value\").to(n,\"value\"),t.urlInputView.bind(\"isReadOnly\").to(n,\"isEnabled\",t=>!t),t.saveButtonView.bind(\"isEnabled\").to(n)}}n(82);function Hm(t,e){if(!t.childCount)return;const n=new lf(t.document),i=function(t,e){const n=e.createRangeIn(t),i=new jn({name:/^p|h\\d+$/,styles:{\"mso-list\":/.*/}}),o=[];for(const t of n)if(\"elementStart\"===t.type&&i.match(t.item)){const e=Wm(t.item);o.push({element:t.item,id:e.id,order:e.order,indent:e.indent})}return o}(t,n);if(!i.length)return;let o=null,r=1;i.forEach((t,s)=>{const a=function(t,e){if(!t)return!0;if(t.id!==e.id)return!0;const n=e.element.previousSibling;if(!n)return!0;return i=n,!(i.is(\"ol\")||i.is(\"ul\"));var i}(i[s-1],t),c=a?null:i[s-1],l=(h=t,(d=c)?h.indent-d.indent:h.indent-1);var d,h;if(a&&(o=null,r=1),!o||0!==l){const i=function(t,e){const n=new RegExp(`@list l${t.id}:level${t.indent}\\\\s*({[^}]*)`,\"gi\"),i=/mso-level-number-format:([^;]*);/gi,o=n.exec(e);let r=\"decimal\";if(o&&o[1]){const t=i.exec(o[1]);t&&t[1]&&(r=t[1].trim())}return{type:\"bullet\"!==r&&\"image\"!==r?\"ol\":\"ul\",style:r}}(t,e);if(o){if(t.indent>r){const t=o.getChild(o.childCount-1),e=t.getChild(t.childCount-1);o=qm(i,e,n),r+=1}else if(t.indent(\\s+)<\\/span>/g,(t,e)=>1===e.length?\" \":Array(e.length+1).join(\"  \").substr(0,e.length))}function Qm(t){const e=new DOMParser,n=function(t){return Gm(Gm(t)).replace(/([\\s]*?)[\\r\\n]+(\\s*<\\/span>)/g,\"$1$2\").replace(/<\\/span>/g,\"\").replace(/ <\\//g,\" <\\/o:p>/g,\" \").replace(/( |\\u00A0)<\\/o:p>/g,\"\").replace(/>(\\s*[\\r\\n]\\s*)<\")}(function(t){const e=t.match(/<\\/body>(.*?)(<\\/html>|$)/);e&&e[1]&&(t=t.slice(0,e.index)+t.slice(e.index).replace(e[1],\"\"));return t}(t=t.replace(/