{"version":3,"sources":["webpack:///./resources/js/slim.jquery.js","webpack:///./resources/js/cadastro/before.js","webpack:///./resources/js/cadastro/app.js","webpack:///./node_modules/materialize-css/dist/js/materialize.js","webpack:///(webpack)/buildin/global.js"],"names":["$","undefined","Slim","loadImage","file","callback","options","url","oUrl","img","document","createElement","onerror","onload","noRevoke","revokeObjectURL","scale","isInstanceOf","createObjectURL","_type","type","crossOrigin","src","readFile","e","target","result","urlAPI","window","URL","webkitURL","obj","Object","prototype","toString","call","transformCoordinates","getTransformedOptions","newOptions","i","width","height","aspectRatio","hasOwnProperty","crop","naturalWidth","naturalHeight","maxWidth","maxHeight","renderImageToCanvas","canvas","sourceX","sourceY","sourceWidth","sourceHeight","destX","destY","destWidth","destHeight","getContext","drawImage","hasCanvasOption","minWidth","minHeight","pixelRatio","downsamplingRatio","tmp","useCanvas","scaleUp","Math","max","scaleDown","min","left","top","right","bottom","contain","cover","style","method","FileReader","fileReader","originalHasCanvasOption","originalTransformCoordinates","originalGetTransformedOptions","orientation","ctx","styleWidth","styleHeight","translate","rotate","PI","opts","hasblobSlice","Blob","slice","webkitSlice","mozSlice","blobSlice","this","apply","arguments","metaDataParsers","jpeg","parseMetaData","that","maxMetaDataSize","data","DataView","size","error","console","log","markerBytes","markerLength","parsers","buffer","dataView","offset","maxOffset","byteLength","headLength","getUint16","length","disableImageHead","imageHead","Uint8Array","subarray","ExifMap","map","get","id","getExifThumbnail","hexData","b","getUint8","push","join","exifTagTypes","1","getValue","dataOffset","2","String","fromCharCode","ascii","3","littleEndian","4","getUint32","5","9","getInt32","10","getExifValue","tiffOffset","tagSize","values","str","c","tagType","parseExifTag","tag","exif","parseExifTags","dirOffset","tagsNumber","dirEndOffset","parseExifData","disableExif","thumbnailData","disableExifThumbnail","Thumbnail","disableExifSub","disableExifGps","snabbt","tickRequests","runningAnimations","completedAnimations","transformProperty","styles","getComputedStyle","documentElement","Array","match","OLink","arg1","arg2","arg3","elements","aggregateChainer","chainers","then","len","forEach","chainer","index","preprocessOptions","setValue","value","finish","rollback","snabbtSingleElement","clone","cloneObject","isFunction","delay","complete","hasAllDoneCallback","allDone","hasCompleteCallback","valueFeeder","matrix","easing","property","element","setupAttentionAnimation","stopAnimation","clearOphanedEndStates","currentState","currentAnimationState","start","stateFromOptions","end","animOptions","setupAnimationOptions","animation","createAnimation","updateElement","queue","unshift","queueTick","tick","time","isStopped","completed","loop","restart","pop","manual","movement","createState","createAttentionAnimation","currentAnimation","animatedElement","stop","findAnimationState","animationList","state","getCurrentState","filter","findUltimateAncestor","body","node","ancestor","parentNode","useFromPrefix","position","rotation","rotationPost","skew","scalePost","opacity","optionOrDefault","startState","endState","polyFillrAF","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","msRequestAnimationFrame","setTimeout","func","tickAnimations","splice","finishedAnimations","concat","duration","perspective","createEaser","transformOrigin","manualCallback","tweener","startTime","currentTime","stopped","started","manualValue","manualDelayFactor","createValueFeederTweener","createStateTweener","resetFrom","setReverse","updateCurrentTransform","curr","_manualValue","tweenValue","val","tween","forceUpdate","asMatrix","properties","getProperties","updateElementTransform","updateElementProperties","initialVelocity","equilibriumPosition","spring","createSpringEasing","tweenPosition","tweenRotation","tweenRotationPost","tweenScale","tweenSkew","currentMovement","equilibrium","updateMovement","startPosition","velocity","springConstant","deceleration","springDeceleration","mass","springMass","abs","EASING_FUNCS","cos","pow","easerName","easeFunction","lastValue","easer","v","assignIdentity","copyArray","a","createMatrix","Float32Array","asCSS","css","toFixed","clear","x","y","z","assignTranslate","assignedMatrixMultiplication","rotateX","radians","rad","sin","rotateY","rotateZ","assignScale","ax","ay","tan","assignSkew","res","config","m","resultState","tweenWidth","tweenHeight","tweenOpacity","dX","dY","dZ","dAX","dAY","dAZ","dBX","dBY","dBZ","dSX","dSY","dSkewX","dSkewY","dWidth","dHeight","dOpacity","oldStart","currentMatrix","reverse","option","def","cssPerspective","cssMatrix","key","object","setElementTransform","stackBlur","mul_table","shg_table","BlurStack","r","g","next","top_x","top_y","radius","isNaN","imageData","getElementById","HTMLCanvasElement","context","getImageData","Error","getImageDataFromCanvas","p","yp","yi","yw","r_sum","g_sum","b_sum","a_sum","r_out_sum","g_out_sum","b_out_sum","a_out_sum","r_in_sum","g_in_sum","b_in_sum","a_in_sum","pr","pg","pb","pa","rbs","pixels","div","widthMinus1","heightMinus1","radiusPlus1","sumFactor","stackStart","stack","stackEnd","stackIn","stackOut","mul_sum","shg_sum","processImageDataRGBA","putImageData","_createClass","defineProperties","props","descriptor","enumerable","configurable","writable","defineProperty","Constructor","protoProps","staticProps","_classCallCheck","instance","TypeError","getElementAttributes","el","attributes","attr","name","getOffsetByEvent","offsetX","layerX","offsetY","layerY","mergeOptions","base","additives","optionsToMerge","CustomEvent","event","params","bubbles","cancelable","detail","evt","createEvent","initCustomEvent","toBlob","quality","binStr","atob","toDataURL","split","arr","charCodeAt","Key","Events","create","className","addEvents","events","scope","addEventListener","removeEvents","removeEventListener","getEventOffsetLocal","local","changedTouches","pageX","pageY","getEventOffset","rect","getBoundingClientRect","pageYOffset","scrollTop","pageXOffset","scrollLeft","capitalizeFirstLetter","string","charAt","toUpperCase","last","array","limit","inArray","needle","indexOf","resetTransforms","transform","mimetypes","getExtensionByMimeType","mimetype","transformCanvas","transforms","cb","space","floor","scaleCanvas","scalar","cloneCanvas","targetWidth","ceil","targetHeight","original","cloneCanvasScaled","duplicate","setAttribute","getAttribute","clearCanvas","clearRect","JSON","parse","stringify","cloneData","input","image","output","dupe","getMimeTypeFromDataURI","dataUri","matches","substring","flattenData","server","meta","actions","_name","substr","lastIndexOf","nodeListToArray","nl","removeElement","removeChild","wrap","wrapper","nextSibling","insertBefore","appendChild","polarToCartesian","centerX","centerY","angleInDegrees","angleInRadians","percentageArc","startAngle","endAngle","arcSweep","describeArc","resizers","ratio","t","l","w","d","h","CropArea","_element","_interaction","_minWidth","_minHeight","_ratio","_rect","_space","_rectChanged","_init","lines","handler","_btn","btn","_redraw","dispatchEvent","_onStartDrag","_onDrag","_onStopDrag","contains","preventDefault","_this","cssText","set","ImageEditorButtons","ImageCropperEvents","ImageEditor","_options","_output","_input","_preview","_previewBlurred","_blurredPreview","_cropper","_previewWrapper","_currentWindowSize","_btnGroup","_this2","_wrapper","_stage","prop","label","title","innerHTML","_onClick","_onGridChange","_onGridInput","_onKeyDown","_onResize","keyCode","_confirm","_cancel","classList","_this3","innerWidth","innerHeight","clearTimeout","_resizeTimer","_reflow","currentWidth","offsetWidth","rescale","_maskOriginal","area","_this4","minSize","resize","offsetHeight","_this5","clip","reset","destination","buttonContainerHeight","clientWidth","clientHeight","round","blurCanvas","fromPosition","fromOpacity","fromScale","dirty","childNodes","_this6","children","destroy","buttonCancelClassName","buttonConfirmClassName","buttonCancelLabel","buttonConfirmLabel","buttonCancelTitle","buttonConfirmTitle","DragDropEvents","FileHopper","_accept","_dragPath","files","_this7","_onDragOver","_onDragLeave","_onDrop","areValidFiles","dataTransfer","dropEffect","items","_this8","display","Popover","_inner","_this9","_this10","firstChild","intSplit","parseInt","isWrapper","nodeName","CropType","Rect","HopperEvents","ImageEditorEvents","SlimPopover","SlimCount","SlimButtons","SlimLoaderHTML","_originalElement","_originalElementInner","_originalElementAttributes","add","_isRequired","_imageHopper","_imageEditor","_progressEnabled","_data","_resetData","_state","_drip","_hasInitialImage","_initialCrop","_isBeingDestroyed","supported","_fallback","_load","_doUpload","_doDownload","_doRemove","_doDestroy","querySelector","_getFileInput","_getInitialImage","action","selector","enabled","root","_updateState","item","err","form","ref","resetFileInput","_this11","_addState","_getInputElement","required","defaultInputName","removeAttribute","initialImageSrc","resultHTML","_isImageOnly","_mimetypes","hasAttribute","accept","types","getCommonMimeTypes","_isButtonAllowed","_isFixedRatio","parts","_scaleDropArea","_updateProgress","_onInit","_this12","onInit","progress","loader","paths","querySelectorAll","ringWidth","_this13","ring","_stopProgressLoop","_this14","repeat","parseFloat","button","edit","download","service","_removeState","_throwError","statusNoSupport","_onChange","_onCancel","_onConfirm","_onFileOver","_onFileOut","_onDropFile","_onInvalidFile","_onInvalidFileDrop","click","_this15","list","_openFileDialog","onBeforeRemove","_doEdit","drip","_getDrip","statusFileType","replace","statusFileSize","maxFileSize","_removeError","dragPath","_this16","jump","dx","dy","resource","_this17","test","extension","getFileMetaData","_onOverWeightFile","_startProgressLoop","getImageAsCanvas","_loadCanvas","intro","_getIntro","_showButtons","isDetached","ready","ratioOut","_this18","_applyTransforms","transformedImage","doUpload","_save","_this19","_onTransformCanvas","transformedData","onTransform","_this20","_getRatioSpacerElement","marginBottom","_hideEditor","_this21","images","_getInOut","outro","zIndex","_showPreview","willUpload","_toggleButton","path","_this22","allowUpload","post","onSave","_store","_upload","_storeServerResponse","onComplete","_this23","fd","FormData","append","statusNode","success","xhr","XMLHttpRequest","upload","loaded","total","open","onreadystatechange","readyState","status","text","responseText","send","statusUploadSuccess","html","statusContentLength","statusUnknownResponse","show","hide","_this24","_this25","_appendEditor","inner","_showEditor","_hideButtons","_hideStatus","_this26","_clearState","out","_getOutro","_hideResult","onRemove","_this27","_startProgress","_stopProgress","filename","blob","link","href","_this28","matchesAttributeInList","replaceChild","attribute","defaults","slim","capitalized","instances","passThrough","defaultFalse","defaultLabel","toLabel","defaultFunction","levels","level","toFunctionReference","defaultSize","trim","buttonOptions","opt","croppers","toLowerCase","find","isAttachedTo","indexOfElement","endpoint","addTojQuery","argsToArray","args","fn","each","global","jQuery","Swal","validator","addMethod","numeros","digitos","soma","pos","tamanho","digitos_iguais","cpf","Number","M","AutoInit","on","addClass","removeClass","select2","TelMaskBehavior","spOptions","onKeyPress","field","mask","keyup","cep","verify","ajax","dataType","resultadoCEP","nome","unescape","ajaxOptions","thrownError","change","getJSON","j","_get","receiver","Function","desc","getOwnPropertyDescriptor","parent","getPrototypeOf","getter","_possibleConstructorReturn","self","ReferenceError","_inherits","subClass","superClass","constructor","setPrototypeOf","__proto__","cash","frag","doc","win","ArrayProto","noop","isString","idMatch","classMatch","htmlMatch","singlet","getElementsByClassName","getElementsByTagName","parseHTML","implementation","createHTMLDocument","location","head","onReady","Init","elems","nodeType","init","collection","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","getCompareFunction","is","unique","extend","merge","first","second","isArray","isNumeric","n","isFinite","uid","Date","now","getDataCache","setData","getData","dataset","removeData","removeAttr","notWhiteMatch","getClasses","hasClass","RegExp","spacedName","remove","classes","check","removeProp","toggleClass","eq","comparator","elem","child","cache","camelRegex","whiteSpace","camelCase","letter","getPrefixedProp","ucProp","compute","removeEvent","eventName","eventCache","encode","encodeURIComponent","selectedIndex","getSelectSingle_","o","selected","getSelectMultiple_","checked","insertContent","prepend","insertAdjacentHTML","insertElement","cloneNode","prefixedProp","lower","margins","off","delegate","runOnce","originalCallback","finalCallback","registerEvent","one","trigger","initEvent","serialize","query","disabled","tagName","after","insertAfter","content","appendTo","before","empty","source","outerHTML","sibling","prependTo","textContent","docEl","offsetLeft","offsetTop","clientTop","clientLeft","offsetParent","closest","has","nextElementSibling","not","parents","prev","previousElementSibling","siblings","factory","Component","classDef","Element","ins","getInstance","$el","els","jquery","NodeList","instancesArr","Package","jQueryLoaded","version","keys","TAB","ENTER","ESC","ARROW_UP","ARROW_DOWN","tabPressed","keyDown","which","initializeJqueryWrapper","plugin","pluginName","classRef","methodOrOptions","registry","Autocomplete","Carousel","Chips","Collapsible","Datepicker","Dropdown","Materialbox","Modal","Parallax","Pushpin","ScrollSpy","FormSelect","Sidenav","Tabs","TapTarget","Timepicker","Tooltip","FloatingActionButton","objectSelectorString","guid","s4","random","escapeHash","hash","elementOrParentIsFixed","$element","$checkElements","isFixed","checkWithinContainer","container","bounding","edges","containerRect","containerBottom","scrolledX","scrolledY","checkPossibleAlignments","canAlign","spaceOnTop","spaceOnRight","spaceOnBottom","spaceOnLeft","containerAllowsOverflow","overflow","containerHeight","containerWidth","elOffsetRect","scrolledYTopEdge","scrolledYBottomEdge","getOverflowParent","parentElement","getIdFromTrigger","getDocumentScrollTop","getDocumentScrollLeft","getTime","throttle","wait","timeout","previous","later","leading","remaining","trailing","$jscomp","getGlobal","SYMBOL_PREFIX","initSymbol","Symbol","symbolCounter_","initSymbolIterator","iterator","arrayIterator","iteratorPrototype","done","iteratorFromArray","u","polyfill","$jscomp$this","anime","col","f","k","reduce","HTMLCollection","some","C","D","und","exec","I","fnc","E","getPropertyValue","J","dom","W","svg","K","V","X","L","F","sqrt","points","numberOfItems","getItem","N","getTotalLength","Y","getPointAtLength","atan2","O","pth","totalLength","rgb","hex","T","hsl","U","numbers","strings","P","aa","da","tweens","ba","to","from","A","Q","ca","elasticity","isPath","isColor","R","fa","ga","S","Z","targets","animatable","ea","animatables","animations","q","Promise","reversed","ha","currentValue","H","G","seek","began","direction","pause","paused","speed","play","B","ia","finished","autoplay","update","begin","run","SVGElement","asin","In","Out","InOut","linear","cancelAnimationFrame","running","setDashoffset","bezier","easings","timeline","anim","_defaults","accordion","onOpenStart","onOpenEnd","onCloseStart","onCloseEnd","inDuration","outDuration","_Component","M_Collapsible","$headers","_setupEventHandlers","$activeBodies","_removeEventHandlers","_handleCollapsibleClickBound","_handleCollapsibleClick","bind","_handleCollapsibleKeydownBound","_handleCollapsibleKeydown","header","$header","$collapsible","$collapsibleLi","$collapsibleLis","isActive","close","$body","paddingTop","paddingBottom","pTop","pBottom","finalHeight","scrollHeight","padding","_animateIn","_animateOut","alignment","autoFocus","constrainWidth","coverTrigger","closeOnClick","hover","onItemClick","_Component2","M_Dropdown","_dropdowns","dropdownEl","$dropdownEl","isOpen","isScrollable","isTouchMoving","focusedIndex","filterQuery","_makeDropdownFocusable","_resetFilterQueryBound","_resetFilterQuery","_handleDocumentClickBound","_handleDocumentClick","_handleDocumentTouchmoveBound","_handleDocumentTouchmove","_handleDropdownClickBound","_handleDropdownClick","_handleDropdownKeydownBound","_handleDropdownKeydown","_handleTriggerKeydownBound","_handleTriggerKeydown","_resetDropdownStyles","_handleMouseEnterBound","_handleMouseEnter","_handleMouseLeaveBound","_handleMouseLeave","_handleClickBound","_handleClick","toEl","toElement","relatedTarget","leaveToDropdownContent","leaveToActiveDropdownTrigger","$closestTrigger","$target","itemEl","focusedElement","$activatableElement","newFocusedIndex","foundNewIndex","tabIndex","_focusFocusedItem","newOptionEl","filterTimeout","focus","triggerBRect","dropdownBRect","idealHeight","idealWidth","idealXPos","idealYPos","dropdownBounds","closestOverflowParent","alignments","verticalAlignment","horizontalAlignment","oppositeAlignment","scaleX","scaleY","positionInfo","_getDropdownPosition","_placeDropdown","_setupTemporaryEventHandlers","_removeTemporaryEventHandlers","preventScrolling","dismissible","startingTop","endingTop","_Component3","M_Modal","_openingTrigger","$overlay","_nthModalOpened","_count","_handleOverlayClickBound","_handleOverlayClick","_handleModalCloseClickBound","_handleModalCloseClick","_handleTriggerClick","$trigger","modalId","modalInstance","_modalsOpen","enterAnimOptions","exitAnimOptions","insertAdjacentElement","_handleKeydownBound","_handleKeydown","_handleFocusBound","_handleFocus","_Component4","M_Materialbox","overlayActive","doneAnimating","placeholder","originalWidth","originalHeight","originInlineStyles","caption","_handleMaterialboxClickBound","_handleMaterialboxClick","ancestorsChanged","newHeight","newWidth","windowWidth","windowHeight","attrWidth","attrHeight","_updateVars","_makeAncestorsOverflowVisible","overlayOffset","$photocaption","$photoCaption","widthPercent","heightPercent","_animateImageIn","_handleWindowScrollBound","_handleWindowScroll","_handleWindowResizeBound","_handleWindowResize","_handleWindowEscapeBound","_handleWindowEscape","_animateImageOut","responsiveThreshold","_Component5","M_Parallax","_enabled","$img","_updateParallax","_setupStyles","_parallaxes","_handleImageLoadBound","_handleImageLoad","_handleScrollThrottled","_handleScroll","_handleWindowResizeThrottled","parallaxDist","parallax","parallaxInstance","onShow","swipeable","Infinity","_Component6","M_Tabs","$tabLinks","_setupActiveTabLink","_setupSwipeableTabs","_setupNormalTabs","_setTabsAndTabWidth","_createIndicator","_indicator","_teardownSwipeableTabs","_teardownNormalTabs","_handleTabClickBound","_handleTabClick","tabWidth","tabsWidth","_calcLeftPos","$activeTabLink","_calcRightPos","tab","tabLink","$oldContent","$content","prevIndex","_tabsCarousel","_animateIndicator","indicator","$tabsContent","$currContent","$tabsWrapper","activeTabIndex","fullWidth","noWrap","onCycleTo","scrollWidth","leftDelay","rightDelay","tabId","exitDelay","enterDelay","margin","transitionMovement","_Component7","M_Tooltip","isHovered","isFocused","_appendTooltipEl","tooltipEl","tooltipContentEl","_handleBlurBound","_handleBlur","isManual","_getAttributeOptions","_updateTooltipContent","_setEnterDelayTimeout","_setExitDelayTimeout","_exitDelayTimeout","_enterDelayTimeout","newCoordinates","origin","tooltip","originHeight","originWidth","tooltipHeight","tooltipWidth","targetTop","targetLeft","xMovement","yMovement","_repositionWithinScreen","newX","newY","_positionTooltip","visibility","translateX","translateY","attributeOptions","tooltipTextOption","positionOption","Waves","$$","convertStyle","Effect","ripple","docElem","box","ownerDocument","defaultView","getWindow","relativeY","relativeX","touches","rippleStyle","TouchHandler","touchup","ripples","wrapInput","elementStyle","allowEvent","allow","showEffect","srcElement","getWavesEffectElement","displayEffect","attach","displayLength","completeCallback","activationPercent","Toast","message","panning","timeRemaining","_toasts","_createContainer","toastElement","_createToast","M_Toast","_setTimer","toast","HTMLElement","_container","_this29","counterInterval","setInterval","dismiss","_this30","clearInterval","activationDistance","wasSwiped","transition","marginTop","_removeContainer","_onDragStart","_onDragMove","_onDragEnd","_draggedToast","startingXPos","_xPos","xPos","deltaX","velocityX","totalDeltaX","targetTouches","clientX","toastIndex","edge","draggable","_Component8","_this31","M_Sidenav","isDragged","lastWindowWidth","lastWindowHeight","_createOverlay","_createDragTarget","_setupClasses","_setupFixed","_sidenavs","_enableBodyScrolling","_overlay","dragTarget","overlay","_closeBound","_handleDragTargetDragBound","_handleDragTargetDrag","_handleDragTargetReleaseBound","_handleDragTargetRelease","_handleCloseDragBound","_handleCloseDrag","_handleCloseReleaseBound","_handleCloseRelease","_handleCloseTriggerClickBound","_handleCloseTriggerClick","sidenavId","sidenavInstance","_startingXpos","_time","_width","_initialScrollTop","_verticallyScrolling","currentScrollTop","_isCurrentlyFixed","_startDrag","_dragMoveUpdate","dragDirection","transformX","transformPrefix","percentOpen","_preventBodyScrolling","_animateSidenavIn","_animateOverlayIn","_this32","slideOutPercent","_animateSidenavOut","_animateOverlayOut","_this33","endPercent","_this34","scrollOffset","activeClass","getActiveElement","_Component9","_this35","M_ScrollSpy","_elements","_increment","tickId","_elementsInView","_visibleElements","throttledResize","_handleThrottledResizeBound","scrollspy","_ticks","intersections","_findElements","_enter","_i","_scrollspy","_lastTick","_exit","_this36","hits","currTop","elTop","elLeft","elRight","elBottom","onAutocomplete","minLength","sortFunction","inputString","_Component10","_this37","M_Autocomplete","count","activeIndex","oldVal","$inputField","$active","_mousedown","_setupDropdown","_removeDropdown","_handleInputBlurBound","_handleInputBlur","_handleInputKeyupAndFocusBound","_handleInputKeyupAndFocus","_handleInputKeydownBound","_handleInputKeydown","_handleInputClickBound","_handleInputClick","_handleContainerMousedownAndTouchstartBound","_handleContainerMousedownAndTouchstart","_handleContainerMouseupAndTouchendBound","_handleContainerMouseupAndTouchend","ontouchstart","_this38","dropdown","selectOption","_resetAutocomplete","_keydown","liElement","numItems","matchStart","matchEnd","beforeMatch","matchText","afterMatch","_resetCurrentElement","_this39","matchingData","entry","sort","_entry","$autocompleteOption","_highlight","_renderDropdown","recalculateDimensions","updateTextFields","$this","autofocus","validity","badInput","validate_field","hasLength","lenAttr","textareaAutoResize","$textarea","hiddenDiv","fontFamily","fontSize","lineHeight","paddingRight","paddingLeft","input_selector","formReset","M_FormSelect","$inputElement","path_input","file_names","indicators","interval","Slider","_Component11","_this40","M_Slider","$slider","$slides","_setSliderHeight","_animateCaptionIn","placeholderBase64","_setupIndicators","$indicators","_removeIndicators","_this41","_handleIntervalBound","_handleInterval","_handleIndicatorClickBound","_handleIndicatorClick","_this42","currIndex","newActiveIndex","_this43","$indicator","_this44","$caption","newIndex","$card","$cardReveal","secondaryPlaceholder","autocompleteOptions","onChipAdd","onChipSelect","onChipDelete","_Component12","_this45","M_Chips","chipsData","$chips","_setupInput","hasAutocomplete","$input","_renderChips","_setupAutocomplete","_setPlaceholder","_setupLabel","_handleChipClickBound","_handleChipClick","_handleInputFocusBound","_handleInputFocus","_handleChipsKeydown","_handleChipsKeyup","_handleChipsBlur","$chip","clickedClose","deleteChip","selectChip","autocomplete","addChip","chip","renderedChip","closeIcon","chipEl","_renderChip","_this46","$label","exists","_isValid","chipIndex","_selectedChip","chipsKeydown","currChips","selectIndex","_selectIndex","_selectIndex2","onPositionChange","_Component13","_this47","M_Pushpin","originalOffset","_pushpins","_updatePosition","_removePinClasses","_updateElements","scrolled","elIndex","hoverEnabled","toolbarEnabled","_Component14","_this48","M_FloatingActionButton","$anchor","$menu","$floatingBtns","$floatingBtnsReverse","_handleFABClickBound","_handleFABClick","_handleOpenBound","_handleCloseBound","_animateInToolbar","_animateInFAB","_animateOutToolbar","_animateOutFAB","_this49","_this50","scaleFactor","_this51","btnRect","backdrop","fabColor","btnBottom","btnLeft","btnWidth","_this52","autoClose","format","defaultDate","setDefaultDate","disableWeekends","disableDayFn","firstDay","minDate","maxDate","yearRange","minYear","maxYear","minMonth","maxMonth","startRange","endRange","isRTL","showMonthAfterYear","showDaysInNextAndPreviousMonths","showClearBtn","i18n","cancel","previousMonth","nextMonth","months","monthsShort","weekdays","weekdaysShort","weekdaysAbbrev","onSelect","onOpen","onClose","onDraw","_Component15","_this53","M_Datepicker","setHours","_setupVariables","_insertHTMLIntoDOM","_setupModal","defDate","_isDate","setDate","setInputValue","gotoDate","modal","modalEl","destroySelects","oldYearSelect","calendarEl","oldMonthSelect","clearBtn","doneBtn","cancelBtn","$modalEl","_this54","_this55","date","formats","preventOnSelect","_renderDateDisplay","draw","_setToStartOfDay","firedBy","displayDate","day","getDay","month","getMonth","getDate","yearTextEl","getFullYear","dateTextEl","newCalendar","calendars","firstVisibleDate","year","lastVisibleDate","visibleDate","setMonth","adjustCalendars","adjustCalendar","calendar","randId","days","_getDaysInMonth","row","yearOfPreviousMonth","yearOfNextMonth","daysInPreviousMonth","cells","isWeekSelected","isSelected","_compareDates","isToday","hasEvent","toDateString","isEmpty","dayNumber","monthNumber","yearNumber","isStartRange","isEndRange","isInRange","dayConfig","isDisabled","_isWeekend","renderDay","renderRow","renderTable","ariaSelected","isRowSelected","renderHead","renderBody","renderDayName","rows","refYear","monthHtml","yearHtml","isMinYear","isMaxYear","force","_y","_m","renderTitle","render","yearSelect","monthSelect","dropdownOptions","_handleYearChange","_handleMonthChange","_handleInputChangeBound","_handleInputChange","_handleCalendarClickBound","_handleCalendarClick","_finishSelectionBound","_finishSelection","_handleClearClickBound","_handleClearClick","_this56","_template","dd","ddd","dddd","mm","mmm","mmmm","yy","yyyy","prevMonth","gotoMonth","gotoYear","abbr","_isLeapYear","dialRadius","outerRadius","innerRadius","tickRadius","defaultTime","fromNow","twelveHour","vibrate","_Component16","_this57","M_Timepicker","_clockSetup","_pickerSetup","_handleClockClickStartBound","_handleClockClickStart","_handleDocumentClickMoveBound","_handleDocumentClickMove","_handleDocumentClickEndBound","_handleDocumentClickEnd","plate","spanHours","showView","spanMinutes","clockPlateBR","x0","y0","moved","clickPos","_Pos","setHand","_this58","currentView","minutesView","hours","minutes","containerEl","_this59","navigator","webkitVibrate","_canvas","hoursView","spanAmPm","footer","amOrPm","$clearBtn","confirmationBtnsContainer","$amBtn","$pmBtn","_handleAmPmClick","_buildHoursView","_buildMinutesView","_buildSVGClock","diameter","_createSVGEl","bearing","hand","bg","$tick","radian","_i2","_tick","_radian","_radius","_addLeadingZero","$btnClicked","_updateAmPmView","getHours","getMinutes","view","isHours","nextView","hideView","resetClock","toggleViewTimer","roundBy5","_this60","unit","vibrateTimer","cx1","cy1","cx2","cy2","_updateTimeFromInput","clearValue","num","createElementNS","clientY","CharacterCounter","_Component17","_this61","M_CharacterCounter","isInvalid","isValidLength","_setupCounter","_removeCounter","_handleUpdateCounterBound","updateCounter","counterEl","float","maxLength","actualLength","counterString","_validateInput","dist","shift","numVisible","_Component18","_this62","M_Carousel","hasMultipleSlides","showIndicators","pressed","dragged","itemWidth","itemHeight","dim","_autoScrollBound","_autoScroll","_trackBound","_track","_setCarouselHeight","xform","every","prefix","_scroll","_this63","_handleCarouselTapBound","_handleCarouselTap","_handleCarouselDragBound","_handleCarouselDrag","_handleCarouselReleaseBound","_handleCarouselRelease","_handleCarouselClickBound","_handleCarouselClick","_handleResize","_this64","verticalDragged","reference","_xpos","referenceY","_ypos","amplitude","frame","timestamp","ticker","delta","stopPropagation","clickedIndex","_wrap","center","_cycleTo","imageHeight","imageOnly","_this65","firstSlide","firstImage","adjustedHeight","slideHeight","elapsed","exp","_this66","scrollingTimeout","half","dir","zTranslation","tweenedOpacity","centerTweenedOpacity","lastCenter","numVisibleOffset","diff","activeIndicator","transformString","_updateItemStyle","_transformString","_transformString2","_transformString3","$currItem","oneTimeCallback","_Component19","_this67","M_TapTarget","$origin","_setup","_calculatePositioning","_handleTargetClickBound","_handleTargetClick","_handleOriginClickBound","_handleOriginClick","originEl","waveEl","contentEl","outerWidth","outerHeight","originTop","originLeft","isLeft","isRight","isTop","isBottom","isCenterX","tapTargetWidth","tapTargetHeight","tapTargetTop","tapTargetLeft","tapTargetPosition","tapTargetTextWidth","tapTargetTextHeight","tapTargetTextTop","tapTargetTextLeft","tapTargetTextPadding","tapTargetTextAlign","tapTargetWaveWidth","tapTargetWaveHeight","tapTargetWaveTop","tapTargetWaveLeft","tapTargetWrapperCssObj","tapTargetTextRight","tapTargetTextBottom","verticalAlign","_Component20","_this68","isMultiple","_keysSelected","_valueDict","_this69","_handleSelectChangeBound","_handleSelectChange","_handleOptionClickBound","_handleOptionClick","_this70","_setValueToInput","placeholderOption","_toggleEntryFromArray","_setSelectedStates","_this71","$selectOptions","optionEl","_appendOptionWithIcon","_addOptionToValueDict","selectOptions","dropdownIcon","selectedOption","select","disabledClass","optgroupClass","multipleCheckbox","liEl","spanEl","iconUrl","imgEl","notAdded","$optionLi","firstDisabled","optionIsSelected","_activateOption","newOption","selectedValues","Range","_Component21","_this72","M_Range","_setupThumb","_removeThumb","_handleRangeChangeBound","_handleRangeChange","_handleRangeMousedownTouchstartBound","_handleRangeMousedownTouchstart","_handleRangeInputMousemoveTouchmoveBound","_handleRangeInputMousemoveTouchmove","_handleRangeMouseupTouchendBound","_handleRangeMouseupTouchend","_handleRangeBlurMouseoutTouchleaveBound","_handleRangeBlurMouseoutTouchleave","thumb","_showRangeBubble","_calcRangeOffset","marginLeft","module","exports"],"mappings":"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AAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAC5D,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAC5D,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAC5D,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAC5D,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAC5D,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAC5D,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAC5D,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAC5D,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAC5D,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAC5D,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAC5D,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAC5D,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAGrDC,EAAY,CACf,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC3D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,G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","file":"/js/cadastro.js","sourcesContent":["/*\r\n * Slim v1.1.1 - Image Cropping Made Easy\r\n * Copyright (c) 2016 Rik Schennink - http://slim.pqina.nl\r\n */\r\n(function($,undefined){\r\n\r\n 'use strict';\r\n\r\n // if no jquery, stop here\r\n if (!$) {return;}\r\n\r\n // library reference\r\n var Slim = function() {\r\n\r\n/*\r\n* JavaScript Load Image\r\n* https://github.com/blueimp/JavaScript-Load-Image\r\n*\r\n* Copyright 2011, Sebastian Tschan\r\n* https://blueimp.net\r\n*\r\n* Licensed under the MIT license:\r\n* http://www.opensource.org/licenses/MIT\r\n*/\r\n\r\n/*global define, module, window, document, URL, webkitURL, FileReader */\r\n\r\n// Loads an image for a given File object.\r\n// Invokes the callback with an img or optional canvas\r\n// element (if supported by the browser) as parameter:\r\nvar loadImage = function (file, callback, options) {\r\n var img = document.createElement('img')\r\n var url\r\n var oUrl\r\n img.onerror = callback\r\n img.onload = function () {\r\n if (oUrl && !(options && options.noRevoke)) {\r\n loadImage.revokeObjectURL(oUrl)\r\n }\r\n if (callback) {\r\n callback(loadImage.scale(img, options))\r\n }\r\n }\r\n if (loadImage.isInstanceOf('Blob', file) ||\r\n // Files are also Blob instances, but some browsers\r\n // (Firefox 3.6) support the File API but not Blobs:\r\n loadImage.isInstanceOf('File', file)) {\r\n url = oUrl = loadImage.createObjectURL(file)\r\n // Store the file type for resize processing:\r\n img._type = file.type\r\n } else if (typeof file === 'string') {\r\n url = file\r\n if (options && options.crossOrigin) {\r\n img.crossOrigin = options.crossOrigin\r\n }\r\n } else {\r\n return false\r\n }\r\n if (url) {\r\n img.src = url\r\n img.crossOrigin = \"Anonymous\";\r\n return img\r\n }\r\n return loadImage.readFile(file, function (e) {\r\n var target = e.target\r\n if (target && target.result) {\r\n img.src = target.result\r\n } else {\r\n if (callback) {\r\n callback(e)\r\n }\r\n }\r\n })\r\n}\r\n// The check for URL.revokeObjectURL fixes an issue with Opera 12,\r\n// which provides URL.createObjectURL but doesn't properly implement it:\r\nvar urlAPI = (window.createObjectURL && window) ||\r\n (window.URL && URL.revokeObjectURL && URL) ||\r\n (window.webkitURL && webkitURL)\r\n\r\nloadImage.isInstanceOf = function (type, obj) {\r\n // Cross-frame instanceof check\r\n return Object.prototype.toString.call(obj) === '[object ' + type + ']'\r\n}\r\n\r\n// Transform image coordinates, allows to override e.g.\r\n// the canvas orientation based on the orientation option,\r\n// gets canvas, options passed as arguments:\r\nloadImage.transformCoordinates = function () {\r\n return\r\n}\r\n\r\n// Returns transformed options, allows to override e.g.\r\n// maxWidth, maxHeight and crop options based on the aspectRatio.\r\n// gets img, options passed as arguments:\r\nloadImage.getTransformedOptions = function (img, options) {\r\n var aspectRatio = options.aspectRatio\r\n var newOptions\r\n var i\r\n var width\r\n var height\r\n if (!aspectRatio) {\r\n return options\r\n }\r\n newOptions = {}\r\n for (i in options) {\r\n if (options.hasOwnProperty(i)) {\r\n newOptions[i] = options[i]\r\n }\r\n }\r\n newOptions.crop = true\r\n width = img.naturalWidth || img.width\r\n height = img.naturalHeight || img.height\r\n if (width / height > aspectRatio) {\r\n newOptions.maxWidth = height * aspectRatio\r\n newOptions.maxHeight = height\r\n } else {\r\n newOptions.maxWidth = width\r\n newOptions.maxHeight = width / aspectRatio\r\n }\r\n return newOptions\r\n}\r\n\r\n// Canvas render method, allows to implement a different rendering algorithm:\r\nloadImage.renderImageToCanvas = function (\r\n canvas,\r\n img,\r\n sourceX,\r\n sourceY,\r\n sourceWidth,\r\n sourceHeight,\r\n destX,\r\n destY,\r\n destWidth,\r\n destHeight\r\n) {\r\n canvas.getContext('2d').drawImage(\r\n img,\r\n sourceX,\r\n sourceY,\r\n sourceWidth,\r\n sourceHeight,\r\n destX,\r\n destY,\r\n destWidth,\r\n destHeight\r\n )\r\n return canvas\r\n}\r\n\r\n// This method is used to determine if the target image\r\n// should be a canvas element:\r\nloadImage.hasCanvasOption = function (options) {\r\n return options.canvas || options.crop || !!options.aspectRatio\r\n}\r\n\r\n// Scales and/or crops the given image (img or canvas HTML element)\r\n// using the given options.\r\n// Returns a canvas object if the browser supports canvas\r\n// and the hasCanvasOption method returns true or a canvas\r\n// object is passed as image, else the scaled image:\r\nloadImage.scale = function (img, options) {\r\n options = options || {}\r\n var canvas = document.createElement('canvas')\r\n var useCanvas = img.getContext ||\r\n (loadImage.hasCanvasOption(options) && canvas.getContext)\r\n var width = img.naturalWidth || img.width\r\n var height = img.naturalHeight || img.height\r\n var destWidth = width\r\n var destHeight = height\r\n var maxWidth\r\n var maxHeight\r\n var minWidth\r\n var minHeight\r\n var sourceWidth\r\n var sourceHeight\r\n var sourceX\r\n var sourceY\r\n var pixelRatio\r\n var downsamplingRatio\r\n var tmp\r\n function scaleUp () {\r\n var scale = Math.max(\r\n (minWidth || destWidth) / destWidth,\r\n (minHeight || destHeight) / destHeight\r\n )\r\n if (scale > 1) {\r\n destWidth *= scale\r\n destHeight *= scale\r\n }\r\n }\r\n function scaleDown () {\r\n var scale = Math.min(\r\n (maxWidth || destWidth) / destWidth,\r\n (maxHeight || destHeight) / destHeight\r\n )\r\n if (scale < 1) {\r\n destWidth *= scale\r\n destHeight *= scale\r\n }\r\n }\r\n if (useCanvas) {\r\n options = loadImage.getTransformedOptions(img, options)\r\n sourceX = options.left || 0\r\n sourceY = options.top || 0\r\n if (options.sourceWidth) {\r\n sourceWidth = options.sourceWidth\r\n if (options.right !== undefined && options.left === undefined) {\r\n sourceX = width - sourceWidth - options.right\r\n }\r\n } else {\r\n sourceWidth = width - sourceX - (options.right || 0)\r\n }\r\n if (options.sourceHeight) {\r\n sourceHeight = options.sourceHeight\r\n if (options.bottom !== undefined && options.top === undefined) {\r\n sourceY = height - sourceHeight - options.bottom\r\n }\r\n } else {\r\n sourceHeight = height - sourceY - (options.bottom || 0)\r\n }\r\n destWidth = sourceWidth\r\n destHeight = sourceHeight\r\n }\r\n maxWidth = options.maxWidth\r\n maxHeight = options.maxHeight\r\n minWidth = options.minWidth\r\n minHeight = options.minHeight\r\n if (useCanvas && maxWidth && maxHeight && options.crop) {\r\n destWidth = maxWidth\r\n destHeight = maxHeight\r\n tmp = sourceWidth / sourceHeight - maxWidth / maxHeight\r\n if (tmp < 0) {\r\n sourceHeight = maxHeight * sourceWidth / maxWidth\r\n if (options.top === undefined && options.bottom === undefined) {\r\n sourceY = (height - sourceHeight) / 2\r\n }\r\n } else if (tmp > 0) {\r\n sourceWidth = maxWidth * sourceHeight / maxHeight\r\n if (options.left === undefined && options.right === undefined) {\r\n sourceX = (width - sourceWidth) / 2\r\n }\r\n }\r\n } else {\r\n if (options.contain || options.cover) {\r\n minWidth = maxWidth = maxWidth || minWidth\r\n minHeight = maxHeight = maxHeight || minHeight\r\n }\r\n if (options.cover) {\r\n scaleDown()\r\n scaleUp()\r\n } else {\r\n scaleUp()\r\n scaleDown()\r\n }\r\n }\r\n if (useCanvas) {\r\n pixelRatio = options.pixelRatio\r\n if (pixelRatio > 1) {\r\n canvas.style.width = destWidth + 'px'\r\n canvas.style.height = destHeight + 'px'\r\n destWidth *= pixelRatio\r\n destHeight *= pixelRatio\r\n canvas.getContext('2d').scale(pixelRatio, pixelRatio)\r\n }\r\n downsamplingRatio = options.downsamplingRatio\r\n if (downsamplingRatio > 0 && downsamplingRatio < 1 &&\r\n destWidth < sourceWidth && destHeight < sourceHeight) {\r\n while (sourceWidth * downsamplingRatio > destWidth) {\r\n canvas.width = sourceWidth * downsamplingRatio\r\n canvas.height = sourceHeight * downsamplingRatio\r\n loadImage.renderImageToCanvas(\r\n canvas,\r\n img,\r\n sourceX,\r\n sourceY,\r\n sourceWidth,\r\n sourceHeight,\r\n 0,\r\n 0,\r\n canvas.width,\r\n canvas.height\r\n )\r\n sourceWidth = canvas.width\r\n sourceHeight = canvas.height\r\n img = document.createElement('canvas')\r\n img.width = sourceWidth\r\n img.height = sourceHeight\r\n loadImage.renderImageToCanvas(\r\n img,\r\n canvas,\r\n 0,\r\n 0,\r\n sourceWidth,\r\n sourceHeight,\r\n 0,\r\n 0,\r\n sourceWidth,\r\n sourceHeight\r\n )\r\n }\r\n }\r\n canvas.width = destWidth\r\n canvas.height = destHeight\r\n loadImage.transformCoordinates(\r\n canvas,\r\n options\r\n )\r\n return loadImage.renderImageToCanvas(\r\n canvas,\r\n img,\r\n sourceX,\r\n sourceY,\r\n sourceWidth,\r\n sourceHeight,\r\n 0,\r\n 0,\r\n destWidth,\r\n destHeight\r\n )\r\n }\r\n img.width = destWidth\r\n img.height = destHeight\r\n return img\r\n}\r\n\r\nloadImage.createObjectURL = function (file) {\r\n return urlAPI ? urlAPI.createObjectURL(file) : false\r\n}\r\n\r\nloadImage.revokeObjectURL = function (url) {\r\n return urlAPI ? urlAPI.revokeObjectURL(url) : false\r\n}\r\n\r\n// Loads a given File object via FileReader interface,\r\n// invokes the callback with the event object (load or error).\r\n// The result can be read via event.target.result:\r\nloadImage.readFile = function (file, callback, method) {\r\n if (window.FileReader) {\r\n var fileReader = new FileReader()\r\n fileReader.onload = fileReader.onerror = callback\r\n method = method || 'readAsDataURL'\r\n if (fileReader[method]) {\r\n fileReader[method](file)\r\n return fileReader\r\n }\r\n }\r\n return false\r\n}\r\n\r\nvar originalHasCanvasOption = loadImage.hasCanvasOption\r\nvar originalTransformCoordinates = loadImage.transformCoordinates\r\nvar originalGetTransformedOptions = loadImage.getTransformedOptions\r\n\r\n// This method is used to determine if the target image\r\n// should be a canvas element:\r\nloadImage.hasCanvasOption = function (options) {\r\n return !!options.orientation ||\r\n originalHasCanvasOption.call(loadImage, options)\r\n}\r\n\r\n// Transform image orientation based on\r\n// the given EXIF orientation option:\r\nloadImage.transformCoordinates = function (canvas, options) {\r\n originalTransformCoordinates.call(loadImage, canvas, options)\r\n var ctx = canvas.getContext('2d')\r\n var width = canvas.width\r\n var height = canvas.height\r\n var styleWidth = canvas.style.width\r\n var styleHeight = canvas.style.height\r\n var orientation = options.orientation\r\n if (!orientation || orientation > 8) {\r\n return\r\n }\r\n if (orientation > 4) {\r\n canvas.width = height\r\n canvas.height = width\r\n canvas.style.width = styleHeight\r\n canvas.style.height = styleWidth\r\n }\r\n switch (orientation) {\r\n case 2:\r\n // horizontal flip\r\n ctx.translate(width, 0)\r\n ctx.scale(-1, 1)\r\n break\r\n case 3:\r\n // 180° rotate left\r\n ctx.translate(width, height)\r\n ctx.rotate(Math.PI)\r\n break\r\n case 4:\r\n // vertical flip\r\n ctx.translate(0, height)\r\n ctx.scale(1, -1)\r\n break\r\n case 5:\r\n // vertical flip + 90 rotate right\r\n ctx.rotate(0.5 * Math.PI)\r\n ctx.scale(1, -1)\r\n break\r\n case 6:\r\n // 90° rotate right\r\n ctx.rotate(0.5 * Math.PI)\r\n ctx.translate(0, -height)\r\n break\r\n case 7:\r\n // horizontal flip + 90 rotate right\r\n ctx.rotate(0.5 * Math.PI)\r\n ctx.translate(width, -height)\r\n ctx.scale(-1, 1)\r\n break\r\n case 8:\r\n // 90° rotate left\r\n ctx.rotate(-0.5 * Math.PI)\r\n ctx.translate(-width, 0)\r\n break\r\n }\r\n}\r\n\r\n// Transforms coordinate and dimension options\r\n// based on the given orientation option:\r\nloadImage.getTransformedOptions = function (img, opts) {\r\n var options = originalGetTransformedOptions.call(loadImage, img, opts)\r\n var orientation = options.orientation\r\n var newOptions\r\n var i\r\n if (!orientation || orientation > 8 || orientation === 1) {\r\n return options\r\n }\r\n newOptions = {}\r\n for (i in options) {\r\n if (options.hasOwnProperty(i)) {\r\n newOptions[i] = options[i]\r\n }\r\n }\r\n switch (options.orientation) {\r\n case 2:\r\n // horizontal flip\r\n newOptions.left = options.right\r\n newOptions.right = options.left\r\n break\r\n case 3:\r\n // 180° rotate left\r\n newOptions.left = options.right\r\n newOptions.top = options.bottom\r\n newOptions.right = options.left\r\n newOptions.bottom = options.top\r\n break\r\n case 4:\r\n // vertical flip\r\n newOptions.top = options.bottom\r\n newOptions.bottom = options.top\r\n break\r\n case 5:\r\n // vertical flip + 90 rotate right\r\n newOptions.left = options.top\r\n newOptions.top = options.left\r\n newOptions.right = options.bottom\r\n newOptions.bottom = options.right\r\n break\r\n case 6:\r\n // 90° rotate right\r\n newOptions.left = options.top\r\n newOptions.top = options.right\r\n newOptions.right = options.bottom\r\n newOptions.bottom = options.left\r\n break\r\n case 7:\r\n // horizontal flip + 90 rotate right\r\n newOptions.left = options.bottom\r\n newOptions.top = options.right\r\n newOptions.right = options.top\r\n newOptions.bottom = options.left\r\n break\r\n case 8:\r\n // 90° rotate left\r\n newOptions.left = options.bottom\r\n newOptions.top = options.left\r\n newOptions.right = options.top\r\n newOptions.bottom = options.right\r\n break\r\n }\r\n if (options.orientation > 4) {\r\n newOptions.maxWidth = options.maxHeight\r\n newOptions.maxHeight = options.maxWidth\r\n newOptions.minWidth = options.minHeight\r\n newOptions.minHeight = options.minWidth\r\n newOptions.sourceWidth = options.sourceHeight\r\n newOptions.sourceHeight = options.sourceWidth\r\n }\r\n return newOptions\r\n}\r\n\r\nvar hasblobSlice = window.Blob && (Blob.prototype.slice ||\r\n Blob.prototype.webkitSlice || Blob.prototype.mozSlice)\r\n\r\nloadImage.blobSlice = hasblobSlice && function () {\r\n var slice = this.slice || this.webkitSlice || this.mozSlice\r\n return slice.apply(this, arguments)\r\n }\r\n\r\nloadImage.metaDataParsers = {\r\n jpeg: {\r\n 0xffe1: [] // APP1 marker\r\n }\r\n}\r\n\r\n// Parses image meta data and calls the callback with an object argument\r\n// with the following properties:\r\n// * imageHead: The complete image head as ArrayBuffer (Uint8Array for IE10)\r\n// The options arguments accepts an object and supports the following properties:\r\n// * maxMetaDataSize: Defines the maximum number of bytes to parse.\r\n// * disableImageHead: Disables creating the imageHead property.\r\nloadImage.parseMetaData = function (file, callback, options) {\r\n options = options || {}\r\n var that = this\r\n // 256 KiB should contain all EXIF/ICC/IPTC segments:\r\n var maxMetaDataSize = options.maxMetaDataSize || 262144\r\n var data = {}\r\n var noMetaData = !(window.DataView && file && file.size >= 12 &&\r\n file.type === 'image/jpeg' && loadImage.blobSlice)\r\n if (noMetaData || !loadImage.readFile(\r\n loadImage.blobSlice.call(file, 0, maxMetaDataSize),\r\n function (e) {\r\n if (e.target.error) {\r\n // FileReader error\r\n console.log(e.target.error)\r\n callback(data)\r\n return\r\n }\r\n // Note on endianness:\r\n // Since the marker and length bytes in JPEG files are always\r\n // stored in big endian order, we can leave the endian parameter\r\n // of the DataView methods undefined, defaulting to big endian.\r\n var buffer = e.target.result\r\n var dataView = new DataView(buffer)\r\n var offset = 2\r\n var maxOffset = dataView.byteLength - 4\r\n var headLength = offset\r\n var markerBytes\r\n var markerLength\r\n var parsers\r\n var i\r\n // Check for the JPEG marker (0xffd8):\r\n if (dataView.getUint16(0) === 0xffd8) {\r\n while (offset < maxOffset) {\r\n markerBytes = dataView.getUint16(offset)\r\n // Search for APPn (0xffeN) and COM (0xfffe) markers,\r\n // which contain application-specific meta-data like\r\n // Exif, ICC and IPTC data and text comments:\r\n if ((markerBytes >= 0xffe0 && markerBytes <= 0xffef) ||\r\n markerBytes === 0xfffe) {\r\n // The marker bytes (2) are always followed by\r\n // the length bytes (2), indicating the length of the\r\n // marker segment, which includes the length bytes,\r\n // but not the marker bytes, so we add 2:\r\n markerLength = dataView.getUint16(offset + 2) + 2\r\n if (offset + markerLength > dataView.byteLength) {\r\n console.log('Invalid meta data: Invalid segment size.')\r\n break\r\n }\r\n parsers = loadImage.metaDataParsers.jpeg[markerBytes]\r\n if (parsers) {\r\n for (i = 0; i < parsers.length; i += 1) {\r\n parsers[i].call(\r\n that,\r\n dataView,\r\n offset,\r\n markerLength,\r\n data,\r\n options\r\n )\r\n }\r\n }\r\n offset += markerLength\r\n headLength = offset\r\n } else {\r\n // Not an APPn or COM marker, probably safe to\r\n // assume that this is the end of the meta data\r\n break\r\n }\r\n }\r\n // Meta length must be longer than JPEG marker (2)\r\n // plus APPn marker (2), followed by length bytes (2):\r\n if (!options.disableImageHead && headLength > 6) {\r\n if (buffer.slice) {\r\n data.imageHead = buffer.slice(0, headLength)\r\n } else {\r\n // Workaround for IE10, which does not yet\r\n // support ArrayBuffer.slice:\r\n data.imageHead = new Uint8Array(buffer)\r\n .subarray(0, headLength)\r\n }\r\n }\r\n } else {\r\n console.log('Invalid JPEG file: Missing JPEG marker.')\r\n }\r\n callback(data)\r\n },\r\n 'readAsArrayBuffer'\r\n )) {\r\n callback(data)\r\n }\r\n}\r\n\r\nloadImage.ExifMap = function () {\r\n return this\r\n}\r\n\r\nloadImage.ExifMap.prototype.map = {\r\n 'Orientation': 0x0112\r\n}\r\n\r\nloadImage.ExifMap.prototype.get = function (id) {\r\n return this[id] || this[this.map[id]]\r\n}\r\n\r\nloadImage.getExifThumbnail = function (dataView, offset, length) {\r\n var hexData,\r\n i,\r\n b\r\n if (!length || offset + length > dataView.byteLength) {\r\n console.log('Invalid Exif data: Invalid thumbnail data.')\r\n return\r\n }\r\n hexData = []\r\n for (i = 0; i < length; i += 1) {\r\n b = dataView.getUint8(offset + i)\r\n hexData.push((b < 16 ? '0' : '') + b.toString(16))\r\n }\r\n return 'data:image/jpeg,%' + hexData.join('%')\r\n}\r\n\r\nloadImage.exifTagTypes = {\r\n // byte, 8-bit unsigned int:\r\n 1: {\r\n getValue: function (dataView, dataOffset) {\r\n return dataView.getUint8(dataOffset)\r\n },\r\n size: 1\r\n },\r\n // ascii, 8-bit byte:\r\n 2: {\r\n getValue: function (dataView, dataOffset) {\r\n return String.fromCharCode(dataView.getUint8(dataOffset))\r\n },\r\n size: 1,\r\n ascii: true\r\n },\r\n // short, 16 bit int:\r\n 3: {\r\n getValue: function (dataView, dataOffset, littleEndian) {\r\n return dataView.getUint16(dataOffset, littleEndian)\r\n },\r\n size: 2\r\n },\r\n // long, 32 bit int:\r\n 4: {\r\n getValue: function (dataView, dataOffset, littleEndian) {\r\n return dataView.getUint32(dataOffset, littleEndian)\r\n },\r\n size: 4\r\n },\r\n // rational = two long values, first is numerator, second is denominator:\r\n 5: {\r\n getValue: function (dataView, dataOffset, littleEndian) {\r\n return dataView.getUint32(dataOffset, littleEndian) /\r\n dataView.getUint32(dataOffset + 4, littleEndian)\r\n },\r\n size: 8\r\n },\r\n // slong, 32 bit signed int:\r\n 9: {\r\n getValue: function (dataView, dataOffset, littleEndian) {\r\n return dataView.getInt32(dataOffset, littleEndian)\r\n },\r\n size: 4\r\n },\r\n // srational, two slongs, first is numerator, second is denominator:\r\n 10: {\r\n getValue: function (dataView, dataOffset, littleEndian) {\r\n return dataView.getInt32(dataOffset, littleEndian) /\r\n dataView.getInt32(dataOffset + 4, littleEndian)\r\n },\r\n size: 8\r\n }\r\n}\r\n// undefined, 8-bit byte, value depending on field:\r\nloadImage.exifTagTypes[7] = loadImage.exifTagTypes[1]\r\n\r\nloadImage.getExifValue = function (dataView, tiffOffset, offset, type, length, littleEndian) {\r\n var tagType = loadImage.exifTagTypes[type]\r\n var tagSize\r\n var dataOffset\r\n var values\r\n var i\r\n var str\r\n var c\r\n if (!tagType) {\r\n console.log('Invalid Exif data: Invalid tag type.')\r\n return\r\n }\r\n tagSize = tagType.size * length\r\n // Determine if the value is contained in the dataOffset bytes,\r\n // or if the value at the dataOffset is a pointer to the actual data:\r\n dataOffset = tagSize > 4\r\n ? tiffOffset + dataView.getUint32(offset + 8, littleEndian)\r\n : (offset + 8)\r\n if (dataOffset + tagSize > dataView.byteLength) {\r\n console.log('Invalid Exif data: Invalid data offset.')\r\n return\r\n }\r\n if (length === 1) {\r\n return tagType.getValue(dataView, dataOffset, littleEndian)\r\n }\r\n values = []\r\n for (i = 0; i < length; i += 1) {\r\n values[i] = tagType.getValue(dataView, dataOffset + i * tagType.size, littleEndian)\r\n }\r\n if (tagType.ascii) {\r\n str = ''\r\n // Concatenate the chars:\r\n for (i = 0; i < values.length; i += 1) {\r\n c = values[i]\r\n // Ignore the terminating NULL byte(s):\r\n if (c === '\\u0000') {\r\n break\r\n }\r\n str += c\r\n }\r\n return str\r\n }\r\n return values\r\n}\r\n\r\nloadImage.parseExifTag = function (dataView, tiffOffset, offset, littleEndian, data) {\r\n var tag = dataView.getUint16(offset, littleEndian)\r\n data.exif[tag] = loadImage.getExifValue(\r\n dataView,\r\n tiffOffset,\r\n offset,\r\n dataView.getUint16(offset + 2, littleEndian), // tag type\r\n dataView.getUint32(offset + 4, littleEndian), // tag length\r\n littleEndian\r\n )\r\n}\r\n\r\nloadImage.parseExifTags = function (dataView, tiffOffset, dirOffset, littleEndian, data) {\r\n var tagsNumber,\r\n dirEndOffset,\r\n i\r\n if (dirOffset + 6 > dataView.byteLength) {\r\n console.log('Invalid Exif data: Invalid directory offset.')\r\n return\r\n }\r\n tagsNumber = dataView.getUint16(dirOffset, littleEndian)\r\n dirEndOffset = dirOffset + 2 + 12 * tagsNumber\r\n if (dirEndOffset + 4 > dataView.byteLength) {\r\n console.log('Invalid Exif data: Invalid directory size.')\r\n return\r\n }\r\n for (i = 0; i < tagsNumber; i += 1) {\r\n this.parseExifTag(\r\n dataView,\r\n tiffOffset,\r\n dirOffset + 2 + 12 * i, // tag offset\r\n littleEndian,\r\n data\r\n )\r\n }\r\n // Return the offset to the next directory:\r\n return dataView.getUint32(dirEndOffset, littleEndian)\r\n}\r\n\r\nloadImage.parseExifData = function (dataView, offset, length, data, options) {\r\n if (options.disableExif) {\r\n return\r\n }\r\n var tiffOffset = offset + 10\r\n var littleEndian\r\n var dirOffset\r\n var thumbnailData\r\n // Check for the ASCII code for \"Exif\" (0x45786966):\r\n if (dataView.getUint32(offset + 4) !== 0x45786966) {\r\n // No Exif data, might be XMP data instead\r\n return\r\n }\r\n if (tiffOffset + 8 > dataView.byteLength) {\r\n console.log('Invalid Exif data: Invalid segment size.')\r\n return\r\n }\r\n // Check for the two null bytes:\r\n if (dataView.getUint16(offset + 8) !== 0x0000) {\r\n console.log('Invalid Exif data: Missing byte alignment offset.')\r\n return\r\n }\r\n // Check the byte alignment:\r\n switch (dataView.getUint16(tiffOffset)) {\r\n case 0x4949:\r\n littleEndian = true\r\n break\r\n case 0x4D4D:\r\n littleEndian = false\r\n break\r\n default:\r\n console.log('Invalid Exif data: Invalid byte alignment marker.')\r\n return\r\n }\r\n // Check for the TIFF tag marker (0x002A):\r\n if (dataView.getUint16(tiffOffset + 2, littleEndian) !== 0x002A) {\r\n console.log('Invalid Exif data: Missing TIFF marker.')\r\n return\r\n }\r\n // Retrieve the directory offset bytes, usually 0x00000008 or 8 decimal:\r\n dirOffset = dataView.getUint32(tiffOffset + 4, littleEndian)\r\n // Create the exif object to store the tags:\r\n data.exif = new loadImage.ExifMap()\r\n // Parse the tags of the main image directory and retrieve the\r\n // offset to the next directory, usually the thumbnail directory:\r\n dirOffset = loadImage.parseExifTags(\r\n dataView,\r\n tiffOffset,\r\n tiffOffset + dirOffset,\r\n littleEndian,\r\n data\r\n )\r\n if (dirOffset && !options.disableExifThumbnail) {\r\n thumbnailData = {exif: {}}\r\n dirOffset = loadImage.parseExifTags(\r\n dataView,\r\n tiffOffset,\r\n tiffOffset + dirOffset,\r\n littleEndian,\r\n thumbnailData\r\n )\r\n // Check for JPEG Thumbnail offset:\r\n if (thumbnailData.exif[0x0201]) {\r\n data.exif.Thumbnail = loadImage.getExifThumbnail(\r\n dataView,\r\n tiffOffset + thumbnailData.exif[0x0201],\r\n thumbnailData.exif[0x0202] // Thumbnail data length\r\n )\r\n }\r\n }\r\n // Check for Exif Sub IFD Pointer:\r\n if (data.exif[0x8769] && !options.disableExifSub) {\r\n loadImage.parseExifTags(\r\n dataView,\r\n tiffOffset,\r\n tiffOffset + data.exif[0x8769], // directory offset\r\n littleEndian,\r\n data\r\n )\r\n }\r\n // Check for GPS Info IFD Pointer:\r\n if (data.exif[0x8825] && !options.disableExifGps) {\r\n loadImage.parseExifTags(\r\n dataView,\r\n tiffOffset,\r\n tiffOffset + data.exif[0x8825], // directory offset\r\n littleEndian,\r\n data\r\n )\r\n }\r\n}\r\n\r\n// Registers the Exif parser for the APP1 JPEG meta data segment:\r\nloadImage.metaDataParsers.jpeg[0xffe1].push(loadImage.parseExifData)\r\n\r\nvar snabbt = (function() {\r\n\r\n var tickRequests = [];\r\n var runningAnimations = [];\r\n var completedAnimations = [];\r\n var transformProperty = 'transform';\r\n\r\n // Find which vendor prefix to use\r\n var styles = window.getComputedStyle(document.documentElement, '');\r\n var vendorPrefix = (Array.prototype.slice\r\n .call(styles)\r\n .join('') \r\n .match(/-(moz|webkit|ms)-/) || (styles.OLink === '' && ['', 'o'])\r\n )[1];\r\n if(vendorPrefix === 'webkit')\r\n transformProperty = 'webkitTransform';\r\n\r\n /* Entry point, only function to be called by user */\r\n var snabbt = function(arg1, arg2, arg3) {\r\n\r\n var elements = arg1;\r\n\r\n // If argument is an Array or a NodeList or other list type that can be iterable.\r\n // Loop through and start one animation for each element.\r\n if(elements.length !== undefined) {\r\n var aggregateChainer = {\r\n chainers: [],\r\n then: function(opts) {\r\n return this.snabbt(opts);\r\n },\r\n snabbt: function(opts) {\r\n var len = this.chainers.length;\r\n this.chainers.forEach(function(chainer, index) {\r\n chainer.snabbt(preprocessOptions(opts, index, len));\r\n });\r\n return aggregateChainer;\r\n },\r\n setValue: function(value) {\r\n this.chainers.forEach(function(chainer) {\r\n chainer.setValue(value);\r\n });\r\n return aggregateChainer;\r\n },\r\n finish: function() {\r\n this.chainers.forEach(function(chainer) {\r\n chainer.finish();\r\n });\r\n return aggregateChainer;\r\n },\r\n rollback: function() {\r\n this.chainers.forEach(function(chainer) {\r\n chainer.rollback();\r\n });\r\n return aggregateChainer;\r\n }\r\n };\r\n\r\n for(var i=0, len=elements.length;i 1 && !animation.isStopped()) {\r\n // Loop current animation\r\n options.loop -= 1;\r\n animation.restart();\r\n queueTick(tick);\r\n } else {\r\n if(options.complete) {\r\n options.complete.call(element);\r\n }\r\n\r\n // Start next animation in queue\r\n if(queue.length) {\r\n options = queue.pop();\r\n\r\n start = stateFromOptions(options, end, true);\r\n end = stateFromOptions(options, cloneObject(end));\r\n options = setupAnimationOptions(start, end, options);\r\n\r\n animation = createAnimation(options);\r\n runningAnimations.push([element, animation]);\r\n\r\n animation.tick(time);\r\n queueTick(tick);\r\n }\r\n }\r\n }\r\n\r\n queueTick(tick);\r\n // Manual animations are not chainable, instead an animation controller object is returned\r\n // with setValue, finish and rollback methods\r\n if(options.manual)\r\n return animation;\r\n return chainer;\r\n };\r\n\r\n var setupAttentionAnimation = function(element, options) {\r\n var movement = stateFromOptions(options, createState({}));\r\n options.movement = movement;\r\n var animation = createAttentionAnimation(options);\r\n\r\n runningAnimations.push([element, animation]);\r\n function tick(time) {\r\n animation.tick(time);\r\n animation.updateElement(element);\r\n if(!animation.completed()) {\r\n queueTick(tick);\r\n } else {\r\n if(options.callback) {\r\n options.callback(element);\r\n }\r\n if(options.loop && options.loop > 1) {\r\n options.loop--;\r\n animation.restart();\r\n queueTick(tick);\r\n }\r\n }\r\n }\r\n queueTick(tick);\r\n };\r\n\r\n var stopAnimation = function(element) {\r\n for(var i= 0,len=runningAnimations.length;i delay) {\r\n started = true;\r\n currentTime = time - delay;\r\n\r\n var curr = Math.min(Math.max(0.0, currentTime - startTime), duration);\r\n easing.tick(curr / duration);\r\n this.updateCurrentTransform();\r\n if(this.completed() && manualCallback) {\r\n manualCallback();\r\n }\r\n }\r\n },\r\n\r\n getCurrentState: function() {\r\n return currentState;\r\n },\r\n\r\n setValue: function(_manualValue) {\r\n started = true;\r\n manualValue = Math.min(Math.max(_manualValue, 0.0001), 1 + manualDelayFactor);\r\n },\r\n\r\n updateCurrentTransform: function() {\r\n var tweenValue = easing.getValue();\r\n if(manual) {\r\n var val = Math.max(0.00001, manualValue - manualDelayFactor);\r\n easing.tick(val);\r\n tweenValue = easing.getValue();\r\n }\r\n tweener.tween(tweenValue);\r\n },\r\n\r\n completed: function() {\r\n if(stopped)\r\n return true;\r\n if(startTime === 0) {\r\n return false;\r\n }\r\n return easing.completed();\r\n },\r\n\r\n updateElement: function(element, forceUpdate) {\r\n if(!started && !forceUpdate)\r\n return;\r\n var matrix = tweener.asMatrix();\r\n var properties = tweener.getProperties();\r\n updateElementTransform(element, matrix, perspective);\r\n updateElementProperties(element, properties);\r\n }\r\n };\r\n };\r\n\r\n // ------------------------------\r\n // End Time animation\r\n // ------------------------------\r\n\r\n // ------------------------\r\n // -- AttentionAnimation --\r\n // ------------------------\r\n\r\n var createAttentionAnimation = function(options) {\r\n var movement = options.movement;\r\n options.initialVelocity = 0.1;\r\n options.equilibriumPosition = 0;\r\n var spring = createSpringEasing(options);\r\n var stopped = false;\r\n var tweenPosition = movement.position;\r\n var tweenRotation = movement.rotation;\r\n var tweenRotationPost = movement.rotationPost;\r\n var tweenScale = movement.scale;\r\n var tweenSkew = movement.skew;\r\n\r\n var currentMovement = createState({\r\n position: tweenPosition ? [0, 0, 0] : undefined,\r\n rotation: tweenRotation ? [0, 0, 0] : undefined,\r\n rotationPost: tweenRotationPost ? [0, 0, 0] : undefined,\r\n scale: tweenScale ? [0, 0] : undefined,\r\n skew: tweenSkew ? [0, 0] : undefined,\r\n });\r\n\r\n // Public API\r\n return {\r\n stop: function() {\r\n stopped = true;\r\n },\r\n\r\n isStopped: function(time) {\r\n return stopped;\r\n },\r\n\r\n tick: function(time) {\r\n if(stopped)\r\n return;\r\n if(spring.equilibrium)\r\n return;\r\n spring.tick();\r\n\r\n this.updateMovement();\r\n },\r\n\r\n updateMovement:function() {\r\n var value = spring.getValue();\r\n if(tweenPosition) {\r\n currentMovement.position[0] = movement.position[0] * value;\r\n currentMovement.position[1] = movement.position[1] * value;\r\n currentMovement.position[2] = movement.position[2] * value;\r\n }\r\n if(tweenRotation) {\r\n currentMovement.rotation[0] = movement.rotation[0] * value;\r\n currentMovement.rotation[1] = movement.rotation[1] * value;\r\n currentMovement.rotation[2] = movement.rotation[2] * value;\r\n }\r\n if(tweenRotationPost) {\r\n currentMovement.rotationPost[0] = movement.rotationPost[0] * value;\r\n currentMovement.rotationPost[1] = movement.rotationPost[1] * value;\r\n currentMovement.rotationPost[2] = movement.rotationPost[2] * value;\r\n }\r\n if(tweenScale) {\r\n currentMovement.scale[0] = 1 + movement.scale[0] * value;\r\n currentMovement.scale[1] = 1 + movement.scale[1] * value;\r\n }\r\n\r\n if(tweenSkew) {\r\n currentMovement.skew[0] = movement.skew[0] * value;\r\n currentMovement.skew[1] = movement.skew[1] * value;\r\n }\r\n },\r\n\r\n updateElement: function(element) {\r\n updateElementTransform(element, currentMovement.asMatrix());\r\n updateElementProperties(element, currentMovement.getProperties());\r\n },\r\n\r\n getCurrentState: function() {\r\n return currentMovement;\r\n },\r\n\r\n completed: function() {\r\n return spring.equilibrium || stopped;\r\n },\r\n\r\n restart: function() {\r\n // Restart spring\r\n spring = createSpringEasing(options);\r\n }\r\n };\r\n };\r\n\r\n\r\n /**********\r\n * Easings *\r\n ***********/\r\n\r\n var linearEasing = function(value) {\r\n return value;\r\n };\r\n\r\n var ease = function(value) {\r\n return (Math.cos(value*Math.PI + Math.PI) + 1)/2;\r\n };\r\n\r\n var easeIn = function(value) {\r\n return value*value;\r\n };\r\n\r\n var easeOut = function(value) {\r\n return -Math.pow(value - 1, 2) + 1;\r\n };\r\n\r\n var createSpringEasing = function(options) {\r\n var position = optionOrDefault(options.startPosition, 0);\r\n var equilibriumPosition = optionOrDefault(options.equilibriumPosition, 1);\r\n var velocity = optionOrDefault(options.initialVelocity, 0);\r\n var springConstant = optionOrDefault(options.springConstant, 0.8);\r\n var deceleration = optionOrDefault(options.springDeceleration, 0.9);\r\n var mass = optionOrDefault(options.springMass, 10);\r\n\r\n var equilibrium = false;\r\n\r\n // Public API\r\n return {\r\n\r\n tick: function(value) {\r\n if(value === 0.0)\r\n return;\r\n if(equilibrium)\r\n return;\r\n var springForce = -(position - equilibriumPosition) * springConstant;\r\n // f = m * a\r\n // a = f / m\r\n var a = springForce / mass;\r\n // s = v * t\r\n // t = 1 ( for now )\r\n velocity += a;\r\n position += velocity;\r\n\r\n // Deceleration\r\n velocity *= deceleration;\r\n\r\n if(Math.abs(position - equilibriumPosition) < 0.001 && Math.abs(velocity) < 0.001) {\r\n equilibrium = true;\r\n }\r\n },\r\n\r\n resetFrom: function(value) {\r\n position = value;\r\n velocity = 0;\r\n },\r\n\r\n\r\n getValue: function() {\r\n if(equilibrium)\r\n return equilibriumPosition;\r\n return position;\r\n },\r\n\r\n completed: function() {\r\n return equilibrium;\r\n }\r\n };\r\n };\r\n\r\n var EASING_FUNCS = {\r\n 'linear': linearEasing,\r\n 'ease': ease,\r\n 'easeIn': easeIn,\r\n 'easeOut': easeOut,\r\n };\r\n\r\n\r\n var createEaser = function(easerName, options) {\r\n if(easerName == 'spring') {\r\n return createSpringEasing(options);\r\n }\r\n var easeFunction = easerName;\r\n if(!isFunction(easerName)) {\r\n easeFunction = EASING_FUNCS[easerName];\r\n }\r\n\r\n var easer = easeFunction;\r\n var value = 0;\r\n var lastValue;\r\n\r\n // Public API\r\n return {\r\n tick: function(v) {\r\n value = easer(v);\r\n lastValue = v;\r\n },\r\n\r\n resetFrom: function(value) {\r\n lastValue = 0;\r\n },\r\n\r\n getValue: function() {\r\n return value;\r\n },\r\n\r\n completed: function() {\r\n if(lastValue >= 1) {\r\n return lastValue;\r\n }\r\n return false;\r\n }\r\n };\r\n };\r\n\r\n /***\r\n * Matrix related\r\n */\r\n\r\n var assignTranslate = function(matrix, x, y, z) {\r\n matrix[0] = 1;\r\n matrix[1] = 0;\r\n matrix[2] = 0;\r\n matrix[3] = 0;\r\n matrix[4] = 0;\r\n matrix[5] = 1;\r\n matrix[6] = 0;\r\n matrix[7] = 0;\r\n matrix[8] = 0;\r\n matrix[9] = 0;\r\n matrix[10] = 1;\r\n matrix[11] = 0;\r\n matrix[12] = x;\r\n matrix[13] = y;\r\n matrix[14] = z;\r\n matrix[15] = 1;\r\n };\r\n\r\n var assignRotateX = function(matrix, rad) {\r\n matrix[0] = 1;\r\n matrix[1] = 0;\r\n matrix[2] = 0;\r\n matrix[3] = 0;\r\n matrix[4] = 0;\r\n matrix[5] = Math.cos(rad);\r\n matrix[6] = -Math.sin(rad);\r\n matrix[7] = 0;\r\n matrix[8] = 0;\r\n matrix[9] = Math.sin(rad);\r\n matrix[10] = Math.cos(rad);\r\n matrix[11] = 0;\r\n matrix[12] = 0;\r\n matrix[13] = 0;\r\n matrix[14] = 0;\r\n matrix[15] = 1;\r\n };\r\n\r\n\r\n var assignRotateY = function(matrix, rad) {\r\n matrix[0] = Math.cos(rad);\r\n matrix[1] = 0;\r\n matrix[2] = Math.sin(rad);\r\n matrix[3] = 0;\r\n matrix[4] = 0;\r\n matrix[5] = 1;\r\n matrix[6] = 0;\r\n matrix[7] = 0;\r\n matrix[8] = -Math.sin(rad);\r\n matrix[9] = 0;\r\n matrix[10] = Math.cos(rad);\r\n matrix[11] = 0;\r\n matrix[12] = 0;\r\n matrix[13] = 0;\r\n matrix[14] = 0;\r\n matrix[15] = 1;\r\n };\r\n\r\n var assignRotateZ = function(matrix, rad) {\r\n matrix[0] = Math.cos(rad);\r\n matrix[1] = -Math.sin(rad);\r\n matrix[2] = 0;\r\n matrix[3] = 0;\r\n matrix[4] = Math.sin(rad);\r\n matrix[5] = Math.cos(rad);\r\n matrix[6] = 0;\r\n matrix[7] = 0;\r\n matrix[8] = 0;\r\n matrix[9] = 0;\r\n matrix[10] = 1;\r\n matrix[11] = 0;\r\n matrix[12] = 0;\r\n matrix[13] = 0;\r\n matrix[14] = 0;\r\n matrix[15] = 1;\r\n };\r\n\r\n var assignSkew = function(matrix, ax, ay) {\r\n matrix[0] = 1;\r\n matrix[1] = Math.tan(ax);\r\n matrix[2] = 0;\r\n matrix[3] = 0;\r\n matrix[4] = Math.tan(ay);\r\n matrix[5] = 1;\r\n matrix[6] = 0;\r\n matrix[7] = 0;\r\n matrix[8] = 0;\r\n matrix[9] = 0;\r\n matrix[10] = 1;\r\n matrix[11] = 0;\r\n matrix[12] = 0;\r\n matrix[13] = 0;\r\n matrix[14] = 0;\r\n matrix[15] = 1;\r\n };\r\n\r\n\r\n var assignScale = function(matrix, x, y) {\r\n matrix[0] = x;\r\n matrix[1] = 0;\r\n matrix[2] = 0;\r\n matrix[3] = 0;\r\n matrix[4] = 0;\r\n matrix[5] = y;\r\n matrix[6] = 0;\r\n matrix[7] = 0;\r\n matrix[8] = 0;\r\n matrix[9] = 0;\r\n matrix[10] = 1;\r\n matrix[11] = 0;\r\n matrix[12] = 0;\r\n matrix[13] = 0;\r\n matrix[14] = 0;\r\n matrix[15] = 1;\r\n };\r\n\r\n var assignIdentity = function(matrix) {\r\n matrix[0] = 1;\r\n matrix[1] = 0;\r\n matrix[2] = 0;\r\n matrix[3] = 0;\r\n matrix[4] = 0;\r\n matrix[5] = 1;\r\n matrix[6] = 0;\r\n matrix[7] = 0;\r\n matrix[8] = 0;\r\n matrix[9] = 0;\r\n matrix[10] = 1;\r\n matrix[11] = 0;\r\n matrix[12] = 0;\r\n matrix[13] = 0;\r\n matrix[14] = 0;\r\n matrix[15] = 1;\r\n };\r\n\r\n var copyArray = function(a, b) {\r\n b[0] = a[0];\r\n b[1] = a[1];\r\n b[2] = a[2];\r\n b[3] = a[3];\r\n b[4] = a[4];\r\n b[5] = a[5];\r\n b[6] = a[6];\r\n b[7] = a[7];\r\n b[8] = a[8];\r\n b[9] = a[9];\r\n b[10] = a[10];\r\n b[11] = a[11];\r\n b[12] = a[12];\r\n b[13] = a[13];\r\n b[14] = a[14];\r\n b[15] = a[15];\r\n };\r\n\r\n var createMatrix = function() {\r\n var data = new Float32Array(16);\r\n var a = new Float32Array(16);\r\n var b = new Float32Array(16);\r\n assignIdentity(data);\r\n\r\n return {\r\n data: data,\r\n\r\n asCSS: function() {\r\n var css = 'matrix3d(';\r\n for(var i=0;i<15;++i) {\r\n if(Math.abs(data[i]) < 0.0001)\r\n css += '0,';\r\n else\r\n css += data[i].toFixed(10) + ',';\r\n }\r\n if(Math.abs(data[15]) < 0.0001)\r\n css += '0)';\r\n else\r\n css += data[15].toFixed(10) + ')';\r\n return css;\r\n },\r\n\r\n clear: function() {\r\n assignIdentity(data);\r\n },\r\n\r\n translate: function(x, y, z) {\r\n copyArray(data, a);\r\n assignTranslate(b, x, y, z);\r\n assignedMatrixMultiplication(a, b, data);\r\n return this;\r\n },\r\n\r\n rotateX: function(radians) {\r\n copyArray(data, a);\r\n assignRotateX(b, radians);\r\n assignedMatrixMultiplication(a, b, data);\r\n return this;\r\n },\r\n\r\n rotateY: function(radians) {\r\n copyArray(data, a);\r\n assignRotateY(b, radians);\r\n assignedMatrixMultiplication(a, b, data);\r\n return this;\r\n },\r\n\r\n rotateZ: function(radians) {\r\n copyArray(data, a);\r\n assignRotateZ(b, radians);\r\n assignedMatrixMultiplication(a, b, data);\r\n return this;\r\n },\r\n\r\n scale: function(x, y) {\r\n copyArray(data, a);\r\n assignScale(b, x, y);\r\n assignedMatrixMultiplication(a, b, data);\r\n return this;\r\n },\r\n\r\n skew: function(ax, ay) {\r\n copyArray(data, a);\r\n assignSkew(b, ax, ay);\r\n assignedMatrixMultiplication(a, b, data);\r\n return this;\r\n }\r\n };\r\n };\r\n\r\n var assignedMatrixMultiplication = function(a, b, res) {\r\n // Unrolled loop\r\n res[0] = a[0] * b[0] + a[1] * b[4] + a[2] * b[8] + a[3] * b[12];\r\n res[1] = a[0] * b[1] + a[1] * b[5] + a[2] * b[9] + a[3] * b[13];\r\n res[2] = a[0] * b[2] + a[1] * b[6] + a[2] * b[10] + a[3] * b[14];\r\n res[3] = a[0] * b[3] + a[1] * b[7] + a[2] * b[11] + a[3] * b[15];\r\n\r\n res[4] = a[4] * b[0] + a[5] * b[4] + a[6] * b[8] + a[7] * b[12];\r\n res[5] = a[4] * b[1] + a[5] * b[5] + a[6] * b[9] + a[7] * b[13];\r\n res[6] = a[4] * b[2] + a[5] * b[6] + a[6] * b[10] + a[7] * b[14];\r\n res[7] = a[4] * b[3] + a[5] * b[7] + a[6] * b[11] + a[7] * b[15];\r\n\r\n res[8] = a[8] * b[0] + a[9] * b[4] + a[10] * b[8] + a[11] * b[12];\r\n res[9] = a[8] * b[1] + a[9] * b[5] + a[10] * b[9] + a[11] * b[13];\r\n res[10] = a[8] * b[2] + a[9] * b[6] + a[10] * b[10] + a[11] * b[14];\r\n res[11] = a[8] * b[3] + a[9] * b[7] + a[10] * b[11] + a[11] * b[15];\r\n\r\n res[12] = a[12] * b[0] + a[13] * b[4] + a[14] * b[8] + a[15] * b[12];\r\n res[13] = a[12] * b[1] + a[13] * b[5] + a[14] * b[9] + a[15] * b[13];\r\n res[14] = a[12] * b[2] + a[13] * b[6] + a[14] * b[10] + a[15] * b[14];\r\n res[15] = a[12] * b[3] + a[13] * b[7] + a[14] * b[11] + a[15] * b[15];\r\n\r\n return res;\r\n };\r\n\r\n var createState = function(config) {\r\n // Caching of matrix and properties so we don't have to create new ones everytime they are needed\r\n var matrix = createMatrix();\r\n var properties = {\r\n opacity: undefined,\r\n width: undefined,\r\n height: undefined\r\n };\r\n\r\n // Public API\r\n return {\r\n position: config.position,\r\n rotation: config.rotation,\r\n rotationPost: config.rotationPost,\r\n skew: config.skew,\r\n scale: config.scale,\r\n scalePost: config.scalePost,\r\n opacity: config.opacity,\r\n width: config.width,\r\n height: config.height,\r\n\r\n\r\n clone: function() {\r\n return createState({\r\n position: this.position ? this.position.slice(0) : undefined,\r\n rotation: this.rotation ? this.rotation.slice(0) : undefined,\r\n rotationPost: this.rotationPost ? this.rotationPost.slice(0) : undefined,\r\n skew: this.skew ? this.skew.slice(0) : undefined,\r\n scale: this.scale ? this.scale.slice(0) : undefined,\r\n scalePost: this.scalePost ? this.scalePost.slice(0) : undefined,\r\n height: this.height,\r\n width: this.width,\r\n opacity: this.opacity\r\n });\r\n },\r\n\r\n asMatrix: function() {\r\n var m = matrix;\r\n m.clear();\r\n\r\n if(this.transformOrigin)\r\n m.translate(-this.transformOrigin[0], -this.transformOrigin[1], -this.transformOrigin[2]);\r\n\r\n if(this.scale) {\r\n m.scale(this.scale[0], this.scale[1]);\r\n }\r\n\r\n if(this.skew) {\r\n m.skew(this.skew[0], this.skew[1]);\r\n }\r\n\r\n if(this.rotation) {\r\n m.rotateX(this.rotation[0]);\r\n m.rotateY(this.rotation[1]);\r\n m.rotateZ(this.rotation[2]);\r\n }\r\n\r\n if(this.position) {\r\n m.translate(this.position[0], this.position[1], this.position[2]);\r\n }\r\n\r\n if(this.rotationPost) {\r\n m.rotateX(this.rotationPost[0]);\r\n m.rotateY(this.rotationPost[1]);\r\n m.rotateZ(this.rotationPost[2]);\r\n }\r\n\r\n if(this.scalePost) {\r\n m.scale(this.scalePost[0], this.scalePost[1]);\r\n }\r\n\r\n if(this.transformOrigin)\r\n m.translate(this.transformOrigin[0], this.transformOrigin[1], this.transformOrigin[2]);\r\n return m;\r\n },\r\n\r\n getProperties: function() {\r\n properties.opacity = this.opacity;\r\n properties.width = this.width + 'px';\r\n properties.height = this.height + 'px';\r\n return properties;\r\n }\r\n };\r\n };\r\n // ------------------\r\n // -- StateTweener -- \r\n // -------------------\r\n\r\n var createStateTweener = function(startState, endState, resultState) {\r\n var start = startState;\r\n var end = endState;\r\n var result = resultState;\r\n \r\n var tweenPosition = end.position !== undefined;\r\n var tweenRotation = end.rotation !== undefined;\r\n var tweenRotationPost = end.rotationPost !== undefined;\r\n var tweenScale = end.scale !== undefined;\r\n var tweenSkew = end.skew !== undefined;\r\n var tweenWidth = end.width !== undefined;\r\n var tweenHeight = end.height !== undefined;\r\n var tweenOpacity = end.opacity !== undefined;\r\n\r\n // Public API\r\n return {\r\n\r\n tween: function(tweenValue) {\r\n\r\n if(tweenPosition) {\r\n var dX = (end.position[0] - start.position[0]);\r\n var dY = (end.position[1] - start.position[1]);\r\n var dZ = (end.position[2] - start.position[2]);\r\n result.position[0] = start.position[0] + tweenValue*dX;\r\n result.position[1] = start.position[1] + tweenValue*dY;\r\n result.position[2] = start.position[2] + tweenValue*dZ;\r\n }\r\n\r\n if(tweenRotation) {\r\n var dAX = (end.rotation[0] - start.rotation[0]);\r\n var dAY = (end.rotation[1] - start.rotation[1]);\r\n var dAZ = (end.rotation[2] - start.rotation[2]);\r\n result.rotation[0] = start.rotation[0] + tweenValue*dAX;\r\n result.rotation[1] = start.rotation[1] + tweenValue*dAY;\r\n result.rotation[2] = start.rotation[2] + tweenValue*dAZ;\r\n }\r\n\r\n if(tweenRotationPost) {\r\n var dBX = (end.rotationPost[0] - start.rotationPost[0]);\r\n var dBY = (end.rotationPost[1] - start.rotationPost[1]);\r\n var dBZ = (end.rotationPost[2] - start.rotationPost[2]);\r\n result.rotationPost[0] = start.rotationPost[0] + tweenValue*dBX;\r\n result.rotationPost[1] = start.rotationPost[1] + tweenValue*dBY;\r\n result.rotationPost[2] = start.rotationPost[2] + tweenValue*dBZ;\r\n }\r\n\r\n if(tweenSkew) {\r\n var dSX = (end.scale[0] - start.scale[0]);\r\n var dSY = (end.scale[1] - start.scale[1]);\r\n\r\n result.scale[0] = start.scale[0] + tweenValue*dSX;\r\n result.scale[1] = start.scale[1] + tweenValue*dSY;\r\n }\r\n\r\n if(tweenScale) {\r\n var dSkewX = (end.skew[0] - start.skew[0]);\r\n var dSkewY = (end.skew[1] - start.skew[1]);\r\n\r\n result.skew[0] = start.skew[0] + tweenValue*dSkewX;\r\n result.skew[1] = start.skew[1] + tweenValue*dSkewY;\r\n }\r\n\r\n if(tweenWidth) {\r\n var dWidth = (end.width - start.width);\r\n result.width = start.width + tweenValue*dWidth;\r\n }\r\n\r\n\r\n if(tweenHeight) {\r\n var dHeight = (end.height - start.height);\r\n result.height = start.height + tweenValue*dHeight;\r\n }\r\n\r\n if(tweenOpacity) {\r\n var dOpacity = (end.opacity - start.opacity);\r\n result.opacity = start.opacity + tweenValue*dOpacity;\r\n }\r\n\r\n },\r\n\r\n asMatrix: function() {\r\n return result.asMatrix();\r\n },\r\n\r\n getProperties: function() {\r\n return result.getProperties();\r\n },\r\n\r\n setReverse: function() {\r\n var oldStart = start;\r\n start = end;\r\n end = oldStart;\r\n }\r\n };\r\n };\r\n\r\n // ------------------------\r\n // -- ValueFeederTweener -- \r\n // ------------------------\r\n\r\n var createValueFeederTweener = function(valueFeeder, startState, endState, resultState) {\r\n var currentMatrix = valueFeeder(0, createMatrix());\r\n var start = startState;\r\n var end = endState;\r\n var result = resultState;\r\n var reverse = false;\r\n\r\n\r\n // Public API\r\n return {\r\n\r\n tween: function(tweenValue) {\r\n if(reverse)\r\n tweenValue = 1 - tweenValue;\r\n currentMatrix.clear();\r\n currentMatrix = valueFeeder(tweenValue, currentMatrix);\r\n\r\n var dWidth = (end.width - start.width);\r\n var dHeight = (end.height - start.height);\r\n var dOpacity = (end.opacity - start.opacity);\r\n\r\n if(end.width !== undefined)\r\n result.width = start.width + tweenValue*dWidth;\r\n if(end.height !== undefined)\r\n result.height = start.height + tweenValue*dHeight;\r\n if(end.opacity !== undefined)\r\n result.opacity = start.opacity + tweenValue*dOpacity;\r\n },\r\n\r\n asMatrix: function() {\r\n return currentMatrix;\r\n },\r\n\r\n getProperties: function() {\r\n return result.getProperties();\r\n },\r\n\r\n setReverse: function() {\r\n reverse = true;\r\n }\r\n\r\n };\r\n };\r\n\r\n var optionOrDefault = function(option, def) {\r\n if(typeof option == 'undefined') {\r\n return def;\r\n }\r\n return option;\r\n };\r\n\r\n var updateElementTransform = function(element, matrix, perspective) {\r\n var cssPerspective = '';\r\n if(perspective) {\r\n cssPerspective = 'perspective(' + perspective + 'px) ';\r\n }\r\n var cssMatrix = matrix.asCSS();\r\n element.style[transformProperty] = cssPerspective + cssMatrix;\r\n };\r\n\r\n var updateElementProperties = function(element, properties) {\r\n for(var key in properties) {\r\n element.style[key] = properties[key];\r\n }\r\n };\r\n\r\n var isFunction = function(object) {\r\n return (typeof object === \"function\");\r\n };\r\n\r\n var cloneObject = function(object) {\r\n if(!object)\r\n return object;\r\n var clone = {};\r\n for(var key in object) {\r\n clone[key] = object[key];\r\n }\r\n return clone;\r\n };\r\n\r\n snabbt.createMatrix = createMatrix;\r\n snabbt.setElementTransform = updateElementTransform;\r\n return snabbt;\r\n}());\r\nvar stackBlur = (function(){\r\n\r\n\tvar mul_table = [\r\n\t\t512,512,456,512,328,456,335,512,405,328,271,456,388,335,292,512,\r\n\t\t454,405,364,328,298,271,496,456,420,388,360,335,312,292,273,512,\r\n\t\t482,454,428,405,383,364,345,328,312,298,284,271,259,496,475,456,\r\n\t\t437,420,404,388,374,360,347,335,323,312,302,292,282,273,265,512,\r\n\t\t497,482,468,454,441,428,417,405,394,383,373,364,354,345,337,328,\r\n\t\t320,312,305,298,291,284,278,271,265,259,507,496,485,475,465,456,\r\n\t\t446,437,428,420,412,404,396,388,381,374,367,360,354,347,341,335,\r\n\t\t329,323,318,312,307,302,297,292,287,282,278,273,269,265,261,512,\r\n\t\t505,497,489,482,475,468,461,454,447,441,435,428,422,417,411,405,\r\n\t\t399,394,389,383,378,373,368,364,359,354,350,345,341,337,332,328,\r\n\t\t324,320,316,312,309,305,301,298,294,291,287,284,281,278,274,271,\r\n\t\t268,265,262,259,257,507,501,496,491,485,480,475,470,465,460,456,\r\n\t\t451,446,442,437,433,428,424,420,416,412,408,404,400,396,392,388,\r\n\t\t385,381,377,374,370,367,363,360,357,354,350,347,344,341,338,335,\r\n\t\t332,329,326,323,320,318,315,312,310,307,304,302,299,297,294,292,\r\n\t\t289,287,285,282,280,278,275,273,271,269,267,265,263,261,259];\r\n\r\n\r\n\tvar shg_table = [\r\n\t\t9, 11, 12, 13, 13, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 17,\r\n\t\t17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19,\r\n\t\t19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 20,\r\n\t\t20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21,\r\n\t\t21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,\r\n\t\t21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22,\r\n\t\t22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,\r\n\t\t22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23,\r\n\t\t23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,\r\n\t\t23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,\r\n\t\t23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,\r\n\t\t23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\r\n\t\t24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\r\n\t\t24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\r\n\t\t24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\r\n\t\t24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24 ];\r\n\r\n\tfunction getImageDataFromCanvas(canvas, top_x, top_y, width, height)\r\n\t{\r\n\t\tif (typeof(canvas) == 'string')\r\n\t\t\tcanvas = document.getElementById(canvas);\r\n\t\telse if (!canvas instanceof HTMLCanvasElement)\r\n\t\t\treturn;\r\n\r\n\t\tvar context = canvas.getContext('2d');\r\n\t\tvar imageData;\r\n\r\n\t\ttry {\r\n\t\t\ttry {\r\n\t\t\t\timageData = context.getImageData(top_x, top_y, width, height);\r\n\t\t\t} catch(e) {\r\n\t\t\t\tthrow new Error(\"unable to access local image data: \" + e);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t} catch(e) {\r\n\t\t\tthrow new Error(\"unable to access image data: \" + e);\r\n\t\t}\r\n\r\n\t\treturn imageData;\r\n\t}\r\n\r\n\tfunction processCanvasRGBA(canvas, top_x, top_y, width, height, radius)\r\n\t{\r\n\t\tif (isNaN(radius) || radius < 1) return;\r\n\t\tradius |= 0;\r\n\r\n\t\tvar imageData = getImageDataFromCanvas(canvas, top_x, top_y, width, height);\r\n\r\n\t\timageData = processImageDataRGBA(imageData, top_x, top_y, width, height, radius);\r\n\r\n\t\tcanvas.getContext('2d').putImageData(imageData, top_x, top_y);\r\n\t}\r\n\r\n\tfunction processImageDataRGBA(imageData, top_x, top_y, width, height, radius)\r\n\t{\r\n\t\tvar pixels = imageData.data;\r\n\r\n\t\tvar x, y, i, p, yp, yi, yw, r_sum, g_sum, b_sum, a_sum,\r\n\t\t\tr_out_sum, g_out_sum, b_out_sum, a_out_sum,\r\n\t\t\tr_in_sum, g_in_sum, b_in_sum, a_in_sum,\r\n\t\t\tpr, pg, pb, pa, rbs;\r\n\r\n\t\tvar div = radius + radius + 1;\r\n\t\tvar w4 = width << 2;\r\n\t\tvar widthMinus1 = width - 1;\r\n\t\tvar heightMinus1 = height - 1;\r\n\t\tvar radiusPlus1 = radius + 1;\r\n\t\tvar sumFactor = radiusPlus1 * (radiusPlus1 + 1) / 2;\r\n\r\n\t\tvar stackStart = new BlurStack();\r\n\t\tvar stack = stackStart;\r\n\t\tfor (i = 1; i < div; i++)\r\n\t\t{\r\n\t\t\tstack = stack.next = new BlurStack();\r\n\t\t\tif (i == radiusPlus1) var stackEnd = stack;\r\n\t\t}\r\n\t\tstack.next = stackStart;\r\n\t\tvar stackIn = null;\r\n\t\tvar stackOut = null;\r\n\r\n\t\tyw = yi = 0;\r\n\r\n\t\tvar mul_sum = mul_table[radius];\r\n\t\tvar shg_sum = shg_table[radius];\r\n\r\n\t\tfor (y = 0; y < height; y++)\r\n\t\t{\r\n\t\t\tr_in_sum = g_in_sum = b_in_sum = a_in_sum = r_sum = g_sum = b_sum = a_sum = 0;\r\n\r\n\t\t\tr_out_sum = radiusPlus1 * (pr = pixels[yi]);\r\n\t\t\tg_out_sum = radiusPlus1 * (pg = pixels[yi+1]);\r\n\t\t\tb_out_sum = radiusPlus1 * (pb = pixels[yi+2]);\r\n\t\t\ta_out_sum = radiusPlus1 * (pa = pixels[yi+3]);\r\n\r\n\t\t\tr_sum += sumFactor * pr;\r\n\t\t\tg_sum += sumFactor * pg;\r\n\t\t\tb_sum += sumFactor * pb;\r\n\t\t\ta_sum += sumFactor * pa;\r\n\r\n\t\t\tstack = stackStart;\r\n\r\n\t\t\tfor (i = 0; i < radiusPlus1; i++)\r\n\t\t\t{\r\n\t\t\t\tstack.r = pr;\r\n\t\t\t\tstack.g = pg;\r\n\t\t\t\tstack.b = pb;\r\n\t\t\t\tstack.a = pa;\r\n\t\t\t\tstack = stack.next;\r\n\t\t\t}\r\n\r\n\t\t\tfor (i = 1; i < radiusPlus1; i++)\r\n\t\t\t{\r\n\t\t\t\tp = yi + ((widthMinus1 < i ? widthMinus1 : i) << 2);\r\n\t\t\t\tr_sum += (stack.r = (pr = pixels[p])) * (rbs = radiusPlus1 - i);\r\n\t\t\t\tg_sum += (stack.g = (pg = pixels[p+1])) * rbs;\r\n\t\t\t\tb_sum += (stack.b = (pb = pixels[p+2])) * rbs;\r\n\t\t\t\ta_sum += (stack.a = (pa = pixels[p+3])) * rbs;\r\n\r\n\t\t\t\tr_in_sum += pr;\r\n\t\t\t\tg_in_sum += pg;\r\n\t\t\t\tb_in_sum += pb;\r\n\t\t\t\ta_in_sum += pa;\r\n\r\n\t\t\t\tstack = stack.next;\r\n\t\t\t}\r\n\r\n\r\n\t\t\tstackIn = stackStart;\r\n\t\t\tstackOut = stackEnd;\r\n\t\t\tfor (x = 0; x < width; x++)\r\n\t\t\t{\r\n\t\t\t\tpixels[yi+3] = pa = (a_sum * mul_sum) >> shg_sum;\r\n\t\t\t\tif (pa != 0)\r\n\t\t\t\t{\r\n\t\t\t\t\tpa = 255 / pa;\r\n\t\t\t\t\tpixels[yi] = ((r_sum * mul_sum) >> shg_sum) * pa;\r\n\t\t\t\t\tpixels[yi+1] = ((g_sum * mul_sum) >> shg_sum) * pa;\r\n\t\t\t\t\tpixels[yi+2] = ((b_sum * mul_sum) >> shg_sum) * pa;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tpixels[yi] = pixels[yi+1] = pixels[yi+2] = 0;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tr_sum -= r_out_sum;\r\n\t\t\t\tg_sum -= g_out_sum;\r\n\t\t\t\tb_sum -= b_out_sum;\r\n\t\t\t\ta_sum -= a_out_sum;\r\n\r\n\t\t\t\tr_out_sum -= stackIn.r;\r\n\t\t\t\tg_out_sum -= stackIn.g;\r\n\t\t\t\tb_out_sum -= stackIn.b;\r\n\t\t\t\ta_out_sum -= stackIn.a;\r\n\r\n\t\t\t\tp = (yw + ((p = x + radius + 1) < widthMinus1 ? p : widthMinus1)) << 2;\r\n\r\n\t\t\t\tr_in_sum += (stackIn.r = pixels[p]);\r\n\t\t\t\tg_in_sum += (stackIn.g = pixels[p+1]);\r\n\t\t\t\tb_in_sum += (stackIn.b = pixels[p+2]);\r\n\t\t\t\ta_in_sum += (stackIn.a = pixels[p+3]);\r\n\r\n\t\t\t\tr_sum += r_in_sum;\r\n\t\t\t\tg_sum += g_in_sum;\r\n\t\t\t\tb_sum += b_in_sum;\r\n\t\t\t\ta_sum += a_in_sum;\r\n\r\n\t\t\t\tstackIn = stackIn.next;\r\n\r\n\t\t\t\tr_out_sum += (pr = stackOut.r);\r\n\t\t\t\tg_out_sum += (pg = stackOut.g);\r\n\t\t\t\tb_out_sum += (pb = stackOut.b);\r\n\t\t\t\ta_out_sum += (pa = stackOut.a);\r\n\r\n\t\t\t\tr_in_sum -= pr;\r\n\t\t\t\tg_in_sum -= pg;\r\n\t\t\t\tb_in_sum -= pb;\r\n\t\t\t\ta_in_sum -= pa;\r\n\r\n\t\t\t\tstackOut = stackOut.next;\r\n\r\n\t\t\t\tyi += 4;\r\n\t\t\t}\r\n\t\t\tyw += width;\r\n\t\t}\r\n\r\n\r\n\t\tfor (x = 0; x < width; x++)\r\n\t\t{\r\n\t\t\tg_in_sum = b_in_sum = a_in_sum = r_in_sum = g_sum = b_sum = a_sum = r_sum = 0;\r\n\r\n\t\t\tyi = x << 2;\r\n\t\t\tr_out_sum = radiusPlus1 * (pr = pixels[yi]);\r\n\t\t\tg_out_sum = radiusPlus1 * (pg = pixels[yi+1]);\r\n\t\t\tb_out_sum = radiusPlus1 * (pb = pixels[yi+2]);\r\n\t\t\ta_out_sum = radiusPlus1 * (pa = pixels[yi+3]);\r\n\r\n\t\t\tr_sum += sumFactor * pr;\r\n\t\t\tg_sum += sumFactor * pg;\r\n\t\t\tb_sum += sumFactor * pb;\r\n\t\t\ta_sum += sumFactor * pa;\r\n\r\n\t\t\tstack = stackStart;\r\n\r\n\t\t\tfor (i = 0; i < radiusPlus1; i++)\r\n\t\t\t{\r\n\t\t\t\tstack.r = pr;\r\n\t\t\t\tstack.g = pg;\r\n\t\t\t\tstack.b = pb;\r\n\t\t\t\tstack.a = pa;\r\n\t\t\t\tstack = stack.next;\r\n\t\t\t}\r\n\r\n\t\t\typ = width;\r\n\r\n\t\t\tfor (i = 1; i <= radius; i++)\r\n\t\t\t{\r\n\t\t\t\tyi = (yp + x) << 2;\r\n\r\n\t\t\t\tr_sum += (stack.r = (pr = pixels[yi])) * (rbs = radiusPlus1 - i);\r\n\t\t\t\tg_sum += (stack.g = (pg = pixels[yi+1])) * rbs;\r\n\t\t\t\tb_sum += (stack.b = (pb = pixels[yi+2])) * rbs;\r\n\t\t\t\ta_sum += (stack.a = (pa = pixels[yi+3])) * rbs;\r\n\r\n\t\t\t\tr_in_sum += pr;\r\n\t\t\t\tg_in_sum += pg;\r\n\t\t\t\tb_in_sum += pb;\r\n\t\t\t\ta_in_sum += pa;\r\n\r\n\t\t\t\tstack = stack.next;\r\n\r\n\t\t\t\tif(i < heightMinus1)\r\n\t\t\t\t{\r\n\t\t\t\t\typ += width;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tyi = x;\r\n\t\t\tstackIn = stackStart;\r\n\t\t\tstackOut = stackEnd;\r\n\t\t\tfor (y = 0; y < height; y++)\r\n\t\t\t{\r\n\t\t\t\tp = yi << 2;\r\n\t\t\t\tpixels[p+3] = pa = (a_sum * mul_sum) >> shg_sum;\r\n\t\t\t\tif (pa > 0)\r\n\t\t\t\t{\r\n\t\t\t\t\tpa = 255 / pa;\r\n\t\t\t\t\tpixels[p] = ((r_sum * mul_sum) >> shg_sum) * pa;\r\n\t\t\t\t\tpixels[p+1] = ((g_sum * mul_sum) >> shg_sum) * pa;\r\n\t\t\t\t\tpixels[p+2] = ((b_sum * mul_sum) >> shg_sum) * pa;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tpixels[p] = pixels[p+1] = pixels[p+2] = 0;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tr_sum -= r_out_sum;\r\n\t\t\t\tg_sum -= g_out_sum;\r\n\t\t\t\tb_sum -= b_out_sum;\r\n\t\t\t\ta_sum -= a_out_sum;\r\n\r\n\t\t\t\tr_out_sum -= stackIn.r;\r\n\t\t\t\tg_out_sum -= stackIn.g;\r\n\t\t\t\tb_out_sum -= stackIn.b;\r\n\t\t\t\ta_out_sum -= stackIn.a;\r\n\r\n\t\t\t\tp = (x + (((p = y + radiusPlus1) < heightMinus1 ? p : heightMinus1) * width)) << 2;\r\n\r\n\t\t\t\tr_sum += (r_in_sum += (stackIn.r = pixels[p]));\r\n\t\t\t\tg_sum += (g_in_sum += (stackIn.g = pixels[p+1]));\r\n\t\t\t\tb_sum += (b_in_sum += (stackIn.b = pixels[p+2]));\r\n\t\t\t\ta_sum += (a_in_sum += (stackIn.a = pixels[p+3]));\r\n\r\n\t\t\t\tstackIn = stackIn.next;\r\n\r\n\t\t\t\tr_out_sum += (pr = stackOut.r);\r\n\t\t\t\tg_out_sum += (pg = stackOut.g);\r\n\t\t\t\tb_out_sum += (pb = stackOut.b);\r\n\t\t\t\ta_out_sum += (pa = stackOut.a);\r\n\r\n\t\t\t\tr_in_sum -= pr;\r\n\t\t\t\tg_in_sum -= pg;\r\n\t\t\t\tb_in_sum -= pb;\r\n\t\t\t\ta_in_sum -= pa;\r\n\r\n\t\t\t\tstackOut = stackOut.next;\r\n\r\n\t\t\t\tyi += width;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn imageData;\r\n\t}\r\n\r\n\tfunction BlurStack()\r\n\t{\r\n\t\tthis.r = 0;\r\n\t\tthis.g = 0;\r\n\t\tthis.b = 0;\r\n\t\tthis.a = 0;\r\n\t\tthis.next = null;\r\n\t}\r\n\r\n\treturn processCanvasRGBA;\r\n\r\n}());\r\n\r\n// custom event polyfill for IE10\r\n'use strict';\r\n\r\nvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\r\n\r\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\r\n\r\n(function () {\r\n function CustomEvent(event, params) {\r\n params = params || { bubbles: false, cancelable: false, detail: undefined };\r\n var evt = document.createEvent('CustomEvent');\r\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\r\n return evt;\r\n }\r\n CustomEvent.prototype = window.CustomEvent.prototype;\r\n window.CustomEvent = CustomEvent;\r\n})();\r\n\r\n// canvas to blob polyfill\r\n// https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toBlob#Polyfill\r\nif (!HTMLCanvasElement.prototype.toBlob) {\r\n Object.defineProperty(HTMLCanvasElement.prototype, 'toBlob', {\r\n value: function value(callback, type, quality) {\r\n\r\n var binStr = atob(this.toDataURL(type, quality).split(',')[1]),\r\n len = binStr.length,\r\n arr = new Uint8Array(len);\r\n\r\n for (var i = 0; i < len; i++) {\r\n arr[i] = binStr.charCodeAt(i);\r\n }\r\n\r\n callback(new Blob([arr], { type: type || 'image/png' }));\r\n }\r\n });\r\n}\r\n\r\nfunction getElementAttributes(el) {\r\n return Array.prototype.slice.call(el.attributes).map(function (attr) {\r\n return { 'name': attr.name, 'value': attr.value };\r\n });\r\n}\r\n\r\n// helper method\r\nfunction getOffsetByEvent(e) {\r\n return {\r\n x: typeof e.offsetX === 'undefined' ? e.layerX : e.offsetX,\r\n y: typeof e.offsetY === 'undefined' ? e.layerY : e.offsetY\r\n };\r\n}\r\n\r\n// merge two objects together\r\nfunction mergeOptions(base, additives) {\r\n\r\n var key;\r\n var options = {};\r\n var optionsToMerge = additives || {};\r\n\r\n for (key in base) {\r\n if (!base.hasOwnProperty(key)) {\r\n continue;\r\n }\r\n options[key] = typeof optionsToMerge[key] === 'undefined' ? base[key] : optionsToMerge[key];\r\n }\r\n\r\n return options;\r\n}\r\n\r\n// keys\r\nvar Key = {\r\n ESC: 27,\r\n RETURN: 13\r\n};\r\n\r\n// pointer events\r\nvar Events = {\r\n DOWN: ['touchstart', 'pointerdown', 'mousedown'],\r\n MOVE: ['touchmove', 'pointermove', 'mousemove'],\r\n UP: ['touchend', 'touchcancel', 'pointerup', 'mouseup']\r\n};\r\n\r\n// shortcuts\r\nfunction create(name, className) {\r\n var node = document.createElement(name);\r\n if (className) {\r\n node.className = className;\r\n }\r\n return node;\r\n}\r\n\r\n// events\r\nfunction addEvents(obj, events, scope) {\r\n events.forEach(function (event) {\r\n obj.addEventListener(event, scope, false);\r\n });\r\n}\r\n\r\nfunction removeEvents(obj, events, scope) {\r\n events.forEach(function (event) {\r\n obj.removeEventListener(event, scope, false);\r\n });\r\n}\r\n\r\nfunction getEventOffset(e) {\r\n\r\n var event = e.changedTouches ? e.changedTouches[0] : e;\r\n\r\n // no event found, quit!\r\n if (!event) {\r\n return;\r\n }\r\n\r\n // get offset from events\r\n return {\r\n x: event.pageX,\r\n y: event.pageY\r\n };\r\n}\r\n\r\nfunction getEventOffsetLocal(e, local) {\r\n\r\n var offset = getEventOffset(e);\r\n var rect = local.getBoundingClientRect();\r\n var top = window.pageYOffset || document.documentElement.scrollTop;\r\n var left = window.pageXOffset || document.documentElement.scrollLeft;\r\n\r\n return {\r\n x: offset.x - rect.left - left,\r\n y: offset.y - rect.top - top\r\n };\r\n}\r\n\r\nfunction capitalizeFirstLetter(string) {\r\n return string.charAt(0).toUpperCase() + string.slice(1);\r\n}\r\n\r\nfunction last(array) {\r\n return array[array.length - 1];\r\n}\r\n\r\nfunction limit(value, min, max) {\r\n return Math.max(min, Math.min(max, value));\r\n}\r\n\r\nfunction cloneRect(rect) {\r\n return {\r\n x: rect.x,\r\n y: rect.y,\r\n width: rect.width,\r\n height: rect.height\r\n };\r\n}\r\n\r\nfunction inArray(needle, arr) {\r\n return arr.indexOf(needle) !== -1;\r\n}\r\n\r\nfunction getExtensionFromFileName(fileName) {\r\n return fileName.split('.').pop().toLowerCase();\r\n}\r\n\r\nfunction urlToImage(url) {\r\n var img = new Image();\r\n img.crossOrigin = \"Anonymous\";\r\n img.src = url;\r\n \r\n return img;\r\n}\r\n\r\nfunction imageToData(img) {\r\n var canvas;\r\n var ctx;\r\n var dataURL;\r\n\r\n canvas = document.createElement('canvas');\r\n canvas.width = img.naturalWidth;\r\n canvas.height = img.naturalHeight;\r\n ctx = canvas.getContext('2d');\r\n ctx.drawImage(img, 0, 0);\r\n dataURL = canvas.toDataURL();\r\n return dataURL;\r\n}\r\n\r\nfunction send(url, data, progress, success, err) {\r\n\r\n var xhr = new XMLHttpRequest();\r\n\r\n if (progress) {\r\n xhr.upload.addEventListener('progress', function (e) {\r\n progress(e.loaded, e.total);\r\n });\r\n }\r\n\r\n xhr.open('POST', url, true);\r\n\r\n xhr.onreadystatechange = function () {\r\n\r\n if (xhr.readyState === 4 && xhr.status === 200) {\r\n\r\n var text = xhr.responseText;\r\n\r\n // if no data returned from server assume success\r\n if (!text.length) {\r\n success();\r\n return;\r\n }\r\n\r\n // catch possible PHP content length problem\r\n if (text.indexOf('Content-Length') !== -1) {\r\n err('file-too-big');\r\n return;\r\n }\r\n\r\n // if data returned it should be in suggested JSON format\r\n var obj = null;\r\n try {\r\n obj = JSON.parse(xhr.responseText);\r\n } catch (e) {}\r\n\r\n success(obj || text);\r\n } else if (xhr.readyState === 4) {\r\n err('fail');\r\n }\r\n };\r\n\r\n xhr.send(data);\r\n}\r\n\r\nfunction resetTransforms(element) {\r\n element.style.transform = '';\r\n}\r\n\r\nfunction revealElement(element, duration) {\r\n snabbt(element, {\r\n fromOpacity: 0,\r\n opacity: 1,\r\n duration: duration,\r\n complete: function complete() {\r\n resetTransforms(this);\r\n }\r\n });\r\n}\r\n\r\nfunction bytesToMegaBytes(b) {\r\n return b / 1000000;\r\n}\r\n\r\nfunction megaBytesToBytes(mb) {\r\n return mb * 1000000;\r\n}\r\n\r\nvar mimetypes = {\r\n 'jpeg': 'image/jpeg',\r\n 'jpg': 'image/jpeg',\r\n 'jpe': 'image/jpeg',\r\n 'png': 'image/png',\r\n 'gif': 'image/gif',\r\n 'bmp': 'image/bmp'\r\n};\r\n\r\nfunction getCommonMimeTypes() {\r\n var types = [];\r\n var type = undefined;\r\n var mimetype = undefined;\r\n for (type in mimetypes) {\r\n mimetype = mimetypes[type];\r\n if (types.indexOf(mimetype) == -1) {\r\n types.push(mimetype);\r\n }\r\n }\r\n return types;\r\n}\r\n\r\nfunction getExtensionByMimeType(mimetype) {\r\n var type = undefined;\r\n for (type in mimetypes) {\r\n if (mimetypes[type] === mimetype) {\r\n return type;\r\n }\r\n }\r\n return mimetype;\r\n}\r\n\r\nfunction getFileMimeType(extension) {\r\n return mimetypes[extension] || 'unknown';\r\n}\r\n\r\nfunction getFileMetaData(file) {\r\n\r\n if (typeof file === 'string') {\r\n\r\n // test if is data uri\r\n if (/^data:image/.test(file)) {\r\n return {\r\n name: 'unknown',\r\n type: getMimeTypeFromDataURI(file),\r\n size: null\r\n };\r\n }\r\n\r\n // is url\r\n return {\r\n name: file.split('/').pop(),\r\n type: getFileMimeType(file.split('.').pop()),\r\n size: null\r\n };\r\n }\r\n\r\n return {\r\n name: file.name,\r\n type: file.type,\r\n size: file.size\r\n };\r\n}\r\n\r\nfunction getImage(src) {\r\n\r\n return loadImage(src);\r\n}\r\n\r\nfunction getImageAsCanvas(src, callback) {\r\n\r\n loadImage.parseMetaData(src, function (meta) {\r\n\r\n var options = {\r\n canvas: true,\r\n crossOrigin: true\r\n };\r\n\r\n if (meta.exif) {\r\n options.orientation = meta.exif.get('Orientation');\r\n }\r\n\r\n loadImage(src, function (res) {\r\n\r\n if (res.type === 'error') {\r\n callback();\r\n return;\r\n }\r\n\r\n callback(res, meta);\r\n }, options);\r\n });\r\n}\r\n\r\nfunction getAutoCropRect(width, height, ratioOut) {\r\n\r\n var x,\r\n y,\r\n w,\r\n h,\r\n ratioIn = height / width;\r\n\r\n // if input is portrait and required is landscape\r\n // width is portrait width, height is width times outputRatio\r\n if (ratioIn < ratioOut) {\r\n h = height;\r\n w = h / ratioOut;\r\n x = (width - w) * .5;\r\n y = 0;\r\n }\r\n\r\n // if input is landscape and required is portrait\r\n // height is landscape height, width is height divided by outputRatio\r\n else {\r\n w = width;\r\n h = w * ratioOut;\r\n x = 0;\r\n y = (height - h) * .5;\r\n }\r\n\r\n return {\r\n x: x,\r\n y: y,\r\n height: h,\r\n width: w\r\n };\r\n}\r\n\r\nfunction cropImage(src, callback, rect) {\r\n\r\n if ('toDataURL' in src) {\r\n src = src.toDataURL();\r\n }\r\n\r\n loadImage(src, function (image) {\r\n callback(image);\r\n }, {\r\n canvas: true,\r\n left: rect.x,\r\n top: rect.y,\r\n sourceWidth: rect.width,\r\n sourceHeight: rect.height\r\n });\r\n}\r\n\r\nfunction transformCanvas(canvas, transforms, cb) {\r\n if (transforms === undefined) transforms = {};\r\n\r\n var result = create('canvas');\r\n\r\n var space = {\r\n width: canvas.width,\r\n height: canvas.height\r\n };\r\n\r\n var crop = transforms.crop;\r\n var size = transforms.size;\r\n\r\n // do crop transforms\r\n if (crop) {\r\n\r\n result.width = crop.width;\r\n result.height = crop.height;\r\n\r\n // limit crop to size of canvas else safari might return transparant image\r\n crop = roundRect(crop);\r\n if (crop.y + crop.height > space.height) {\r\n crop.y = Math.max(0, space.height - crop.height);\r\n }\r\n if (crop.x + crop.width > space.width) {\r\n crop.x = Math.max(0, space.width - crop.width);\r\n }\r\n\r\n var ctx = result.getContext('2d');\r\n ctx.drawImage(canvas, crop.x, crop.y, crop.width, crop.height, 0, 0, crop.width, crop.height);\r\n }\r\n\r\n // do size transforms\r\n if (size) {\r\n\r\n // pick smallest scalar\r\n scaleCanvas(result, Math.min(size.width / result.width, size.height / result.height));\r\n }\r\n\r\n cb(result);\r\n}\r\n\r\nfunction cropCanvas(canvas, callback, rect) {\r\n\r\n var result = create('canvas');\r\n result.width = rect.width;\r\n result.height = rect.height;\r\n var ctx = result.getContext('2d');\r\n ctx.drawImage(canvas, rect.x, rect.y, rect.width, rect.height, 0, 0, rect.width, rect.height);\r\n\r\n callback(result);\r\n}\r\n\r\nfunction scaleCanvas(canvas, scalar) {\r\n\r\n // if not scaling down, bail out\r\n if (scalar >= 1) {\r\n return;\r\n }\r\n\r\n var c = cloneCanvas(canvas);\r\n var ctx;\r\n var width = canvas.width;\r\n var height = canvas.height;\r\n var targetWidth = Math.ceil(canvas.width * scalar);\r\n var targetHeight = Math.ceil(canvas.height * scalar);\r\n\r\n // scale down in steps\r\n while (width > targetWidth) {\r\n\r\n width *= .5;\r\n height *= .5;\r\n\r\n if (width < targetWidth) {\r\n // skip to final draw\r\n break;\r\n }\r\n\r\n c = create('canvas');\r\n c.width = width;\r\n c.height = height;\r\n ctx = c.getContext('2d');\r\n ctx.drawImage(canvas, 0, 0, width, height);\r\n }\r\n\r\n // draw final result back to original canvas\r\n canvas.width = targetWidth;\r\n canvas.height = targetHeight;\r\n ctx = canvas.getContext('2d');\r\n ctx.drawImage(c, 0, 0, targetWidth, targetHeight);\r\n}\r\n\r\nfunction cloneCanvas(original) {\r\n return cloneCanvasScaled(original, 1);\r\n}\r\n\r\nfunction cloneCanvasScaled(original, scalar) {\r\n\r\n if (!original) {\r\n return null;\r\n }\r\n\r\n var duplicate = document.createElement('canvas');\r\n duplicate.setAttribute('data-file', original.getAttribute('data-file'));\r\n var ctx = duplicate.getContext('2d');\r\n duplicate.width = original.width;\r\n duplicate.height = original.height;\r\n ctx.drawImage(original, 0, 0);\r\n if (scalar > 0 && scalar != 1) {\r\n scaleCanvas(duplicate, scalar);\r\n }\r\n return duplicate;\r\n}\r\n\r\nfunction canvasHasDimensions(canvas) {\r\n return canvas.width && canvas.height;\r\n}\r\n\r\nfunction copyCanvas(original, destination) {\r\n\r\n var ctx = destination.getContext('2d');\r\n if (canvasHasDimensions(destination)) {\r\n ctx.drawImage(original, 0, 0, destination.width, destination.height);\r\n } else {\r\n destination.width = original.width;\r\n destination.height = original.height;\r\n ctx.drawImage(original, 0, 0);\r\n }\r\n}\r\n\r\nfunction clearCanvas(canvas) {\r\n var ctx = canvas.getContext('2d');\r\n ctx.clearRect(0, 0, canvas.width, canvas.height);\r\n}\r\n\r\nfunction blurCanvas(canvas) {\r\n stackBlur(canvas, 0, 0, canvas.width, canvas.height, 3);\r\n}\r\n\r\nfunction rotateCanvas(original) {\r\n\r\n var canvas = document.createElement('canvas');\r\n var ctx = canvas.getContext('2d');\r\n var widthHalf = original.width * .5;\r\n var heightHalf = original.height * .5;\r\n\r\n canvas.width = original.height;\r\n canvas.height = original.width;\r\n\r\n clearCanvas(canvas);\r\n\r\n ctx.translate(heightHalf, widthHalf);\r\n ctx.rotate(90 * Math.PI / 180);\r\n ctx.drawImage(original, -widthHalf, -heightHalf);\r\n\r\n return canvas;\r\n}\r\n\r\nfunction scaleRect(rect, scalar) {\r\n return {\r\n x: rect.x * scalar,\r\n y: rect.y * scalar,\r\n width: rect.width * scalar,\r\n height: rect.height * scalar\r\n };\r\n}\r\n\r\nfunction roundRect(rect) {\r\n return {\r\n x: Math.floor(rect.x),\r\n y: Math.floor(rect.y),\r\n width: Math.floor(rect.width),\r\n height: Math.floor(rect.height)\r\n };\r\n}\r\n\r\nfunction resetFileInput(input) {\r\n\r\n // no value, no need to reset\r\n if (!input || input.value === '') {\r\n return;\r\n }\r\n\r\n try {\r\n // for modern browsers\r\n input.value = '';\r\n } catch (err) {}\r\n\r\n // for IE10\r\n if (input.value) {\r\n\r\n // quickly append input to temp form and reset form\r\n var form = document.createElement('form');\r\n var parentNode = input.parentNode;\r\n var ref = input.nextSibling;\r\n form.appendChild(input);\r\n form.reset();\r\n\r\n // re-inject input where it originally was\r\n if (ref) {\r\n parentNode.insertBefore(input, ref);\r\n } else {\r\n parentNode.appendChild(input);\r\n }\r\n }\r\n}\r\n\r\nfunction limit(value, min, max) {\r\n return Math.min(Math.max(value, min), max);\r\n}\r\n\r\nfunction clone(obj) {\r\n if (!obj) {\r\n return obj;\r\n }\r\n return JSON.parse(JSON.stringify(obj));\r\n}\r\n\r\nfunction cloneData(obj) {\r\n\r\n var input = cloneCanvas(obj.input.image);\r\n var output = cloneCanvas(obj.output.image);\r\n var dupe = clone(obj);\r\n dupe.input.image = input;\r\n dupe.output.image = output;\r\n return dupe;\r\n}\r\n\r\nfunction getMimeTypeFromDataURI(dataUri) {\r\n if (!dataUri) {\r\n return null;\r\n }\r\n var matches = dataUri.match(/^.+;/);\r\n if (matches.length) {\r\n return matches[0].substring(5, matches[0].length - 1);\r\n }\r\n return null;\r\n}\r\n\r\nfunction flattenData(obj) {\r\n var props = arguments.length <= 1 || arguments[1] === undefined ? [] : arguments[1];\r\n\r\n var type = null;\r\n\r\n var data = {\r\n server: clone(obj.server),\r\n meta: clone(obj.meta),\r\n input: {\r\n name: obj.input.name,\r\n type: obj.input.type,\r\n size: obj.input.size,\r\n width: obj.input.width,\r\n height: obj.input.height\r\n },\r\n output: {\r\n width: obj.output.width,\r\n height: obj.output.height\r\n }\r\n };\r\n\r\n if (inArray('input', props)) {\r\n data.input.image = obj.input.image.toDataURL(obj.input.type, 1.0);\r\n }\r\n\r\n if (inArray('output', props)) {\r\n data.output.image = obj.output.image.toDataURL(obj.input.type, 1.0);\r\n }\r\n\r\n if (inArray('actions', props)) {\r\n data.actions = clone(obj.actions);\r\n }\r\n\r\n // correct extension and type if was converted to .png (could happen on older browser)\r\n type = getMimeTypeFromDataURI(data.output.image || data.input.image);\r\n if (type === 'image/png') {\r\n var _name = data.input.name;\r\n data.input.name = _name.substr(0, _name.lastIndexOf('.')) + '.png';\r\n data.input.type = type;\r\n }\r\n\r\n return data;\r\n}\r\n\r\nfunction toggleDisplayBySelector(selector, enabled, root) {\r\n var node = root.querySelector(selector);\r\n if (!node) {\r\n return;\r\n }\r\n node.style.display = enabled ? '' : 'none';\r\n}\r\n\r\nfunction getAttributeAsInt(element, attr) {\r\n return parseInt(element.getAttribute(attr), 10);\r\n}\r\n\r\nfunction nodeListToArray(nl) {\r\n return Array.prototype.slice.call(nl);\r\n}\r\n\r\nfunction removeElement(el) {\r\n el.parentNode.removeChild(el);\r\n}\r\n\r\nfunction wrap(element) {\r\n var wrapper = create('div');\r\n if (element.parentNode) {\r\n if (element.nextSibling) {\r\n element.parentNode.insertBefore(wrapper, element.nextSibling);\r\n } else {\r\n element.parentNode.appendChild(wrapper);\r\n }\r\n }\r\n wrapper.appendChild(element);\r\n return wrapper;\r\n}\r\n\r\nfunction polarToCartesian(centerX, centerY, radius, angleInDegrees) {\r\n var angleInRadians = (angleInDegrees - 90) * Math.PI / 180.0;\r\n\r\n return {\r\n x: centerX + radius * Math.cos(angleInRadians),\r\n y: centerY + radius * Math.sin(angleInRadians)\r\n };\r\n}\r\n\r\nfunction describeArc(x, y, radius, startAngle, endAngle) {\r\n\r\n var start = polarToCartesian(x, y, radius, endAngle);\r\n var end = polarToCartesian(x, y, radius, startAngle);\r\n\r\n var arcSweep = endAngle - startAngle <= 180 ? '0' : '1';\r\n\r\n var d = ['M', start.x, start.y, 'A', radius, radius, 0, arcSweep, 0, end.x, end.y].join(' ');\r\n\r\n return d;\r\n}\r\n\r\nfunction percentageArc(x, y, radius, p) {\r\n return describeArc(x, y, radius, 0, p * 360);\r\n}\r\nvar resizers = {\r\n 'n': function n(rect, offset, space, ratio) {\r\n\r\n var t, r, b, l, w, h, p, d;\r\n\r\n // bottom is fixed\r\n b = rect.y + rect.height;\r\n\r\n // intended top\r\n t = limit(offset.y, 0, b);\r\n\r\n // if is too small vertically\r\n if (b - t < space.min.height) {\r\n t = b - space.min.height;\r\n }\r\n\r\n // if should scale by ratio, pick width by ratio of new height\r\n w = ratio ? (b - t) / ratio : rect.width;\r\n\r\n // check if has fallen below min width or height\r\n if (w < space.min.width) {\r\n w = space.min.width;\r\n t = b - w * ratio;\r\n }\r\n\r\n // add half to left and half to right edge\r\n p = (w - rect.width) * .5;\r\n l = rect.x - p;\r\n r = rect.x + rect.width + p;\r\n\r\n // check if any of the edges has moved out of the available space, if so,\r\n // set max size of rectangle from original position\r\n if (l < 0 || r > space.width) {\r\n\r\n // smallest distance to edge of space\r\n d = Math.min(rect.x, space.width - (rect.x + rect.width));\r\n\r\n // new left and right offsets\r\n l = rect.x - d;\r\n r = rect.x + rect.width + d;\r\n\r\n // resulting width\r\n w = r - l;\r\n\r\n // resulting height based on ratio\r\n h = w * ratio;\r\n\r\n // new top position\r\n t = b - h;\r\n }\r\n\r\n return {\r\n x: l,\r\n y: t,\r\n width: r - l,\r\n height: b - t\r\n };\r\n },\r\n 's': function s(rect, offset, space, ratio) {\r\n\r\n var t, r, b, l, w, h, p, d;\r\n\r\n // top is fixed\r\n t = rect.y;\r\n\r\n // intended bottom\r\n b = limit(offset.y, t, space.height);\r\n\r\n // if is too small vertically\r\n if (b - t < space.min.height) {\r\n b = t + space.min.height;\r\n }\r\n\r\n // if should scale by ratio, pick width by ratio of new height\r\n w = ratio ? (b - t) / ratio : rect.width;\r\n\r\n // check if has fallen below min width or height\r\n if (w < space.min.width) {\r\n w = space.min.width;\r\n b = t + w * ratio;\r\n }\r\n\r\n // add half to left and half to right edge\r\n p = (w - rect.width) * .5;\r\n l = rect.x - p;\r\n r = rect.x + rect.width + p;\r\n\r\n // check if any of the edges has moved out of the available space, if so,\r\n // set max size of rectangle from original position\r\n if (l < 0 || r > space.width) {\r\n\r\n // smallest distance to edge of space\r\n d = Math.min(rect.x, space.width - (rect.x + rect.width));\r\n\r\n // new left and right offsets\r\n l = rect.x - d;\r\n r = rect.x + rect.width + d;\r\n\r\n // resulting width\r\n w = r - l;\r\n\r\n // resulting height based on ratio\r\n h = w * ratio;\r\n\r\n // new bottom position\r\n b = t + h;\r\n }\r\n\r\n return {\r\n x: l,\r\n y: t,\r\n width: r - l,\r\n height: b - t\r\n };\r\n },\r\n 'e': function e(rect, offset, space, ratio) {\r\n\r\n var t, r, b, l, w, h, p, d;\r\n\r\n // left is fixed\r\n l = rect.x;\r\n\r\n // intended right edge\r\n r = limit(offset.x, l, space.width);\r\n\r\n // if is too small vertically\r\n if (r - l < space.min.width) {\r\n r = l + space.min.width;\r\n }\r\n\r\n // if should scale by ratio, pick height by ratio of new width\r\n h = ratio ? (r - l) * ratio : rect.height;\r\n\r\n // check if has fallen below min width or height\r\n if (h < space.min.height) {\r\n h = space.min.height;\r\n r = l + h / ratio;\r\n }\r\n\r\n // add half to top and bottom\r\n p = (h - rect.height) * .5;\r\n t = rect.y - p;\r\n b = rect.y + rect.height + p;\r\n\r\n // check if any of the edges has moved out of the available space, if so,\r\n // set max size of rectangle from original position\r\n if (t < 0 || b > space.height) {\r\n\r\n // smallest distance to edge of space\r\n d = Math.min(rect.y, space.height - (rect.y + rect.height));\r\n\r\n // new top and bottom offsets\r\n t = rect.y - d;\r\n b = rect.y + rect.height + d;\r\n\r\n // resulting height\r\n h = b - t;\r\n\r\n // resulting width based on ratio\r\n w = h / ratio;\r\n\r\n // new right position\r\n r = l + w;\r\n }\r\n\r\n return {\r\n x: l,\r\n y: t,\r\n width: r - l,\r\n height: b - t\r\n };\r\n },\r\n 'w': function w(rect, offset, space, ratio) {\r\n\r\n var t, r, b, l, w, h, p, d;\r\n\r\n // right is fixed\r\n r = rect.x + rect.width;\r\n\r\n // intended left edge\r\n l = limit(offset.x, 0, r);\r\n\r\n // if is too small vertically\r\n if (r - l < space.min.width) {\r\n l = r - space.min.width;\r\n }\r\n\r\n // if should scale by ratio, pick height by ratio of new width\r\n h = ratio ? (r - l) * ratio : rect.height;\r\n\r\n // check if has fallen below min width or height\r\n if (h < space.min.height) {\r\n h = space.min.height;\r\n l = r - h / ratio;\r\n }\r\n\r\n // add half to top and bottom\r\n p = (h - rect.height) * .5;\r\n t = rect.y - p;\r\n b = rect.y + rect.height + p;\r\n\r\n // check if any of the edges has moved out of the available space, if so,\r\n // set max size of rectangle from original position\r\n if (t < 0 || b > space.height) {\r\n\r\n // smallest distance to edge of space\r\n d = Math.min(rect.y, space.height - (rect.y + rect.height));\r\n\r\n // new top and bottom offsets\r\n t = rect.y - d;\r\n b = rect.y + rect.height + d;\r\n\r\n // resulting height\r\n h = b - t;\r\n\r\n // resulting width based on ratio\r\n w = h / ratio;\r\n\r\n // new right position\r\n l = r - w;\r\n }\r\n\r\n return {\r\n x: l,\r\n y: t,\r\n width: r - l,\r\n height: b - t\r\n };\r\n },\r\n 'ne': function ne(rect, offset, space, ratio) {\r\n\r\n var t, r, b, l, w, h, d;\r\n\r\n // left and bottom are fixed\r\n l = rect.x;\r\n b = rect.y + rect.height;\r\n\r\n // intended right edge\r\n r = limit(offset.x, l, space.width);\r\n\r\n // if is too small vertically\r\n if (r - l < space.min.width) {\r\n r = l + space.min.width;\r\n }\r\n\r\n // if should scale by ratio, pick height by ratio of new width\r\n h = ratio ? (r - l) * ratio : limit(b - offset.y, space.min.height, b);\r\n\r\n // check if has fallen below min width or height\r\n if (h < space.min.height) {\r\n h = space.min.height;\r\n r = l + h / ratio;\r\n }\r\n\r\n // add height difference with original height to top\r\n t = rect.y - (h - rect.height);\r\n\r\n // check if any of the edges has moved out of the available space, if so,\r\n // set max size of rectangle from original position\r\n if (t < 0 || b > space.height) {\r\n\r\n // smallest distance to edge of space\r\n d = Math.min(rect.y, space.height - (rect.y + rect.height));\r\n\r\n // new top and bottom offsets\r\n t = rect.y - d;\r\n\r\n // resulting height\r\n h = b - t;\r\n\r\n // resulting width based on ratio\r\n w = h / ratio;\r\n\r\n // new right position\r\n r = l + w;\r\n }\r\n\r\n return {\r\n x: l,\r\n y: t,\r\n width: r - l,\r\n height: b - t\r\n };\r\n },\r\n 'se': function se(rect, offset, space, ratio) {\r\n\r\n var t, r, b, l, w, h, d;\r\n\r\n // left and top are fixed\r\n l = rect.x;\r\n t = rect.y;\r\n\r\n // intended right edge\r\n r = limit(offset.x, l, space.width);\r\n\r\n // if is too small vertically\r\n if (r - l < space.min.width) {\r\n r = l + space.min.width;\r\n }\r\n\r\n // if should scale by ratio, pick height by ratio of new width\r\n h = ratio ? (r - l) * ratio : limit(offset.y - rect.y, space.min.height, space.height - t);\r\n\r\n // check if has fallen below min width or height\r\n if (h < space.min.height) {\r\n h = space.min.height;\r\n r = l + h / ratio;\r\n }\r\n\r\n // add height difference with original height to bottom\r\n b = rect.y + rect.height + (h - rect.height);\r\n\r\n // check if any of the edges has moved out of the available space, if so,\r\n // set max size of rectangle from original position\r\n if (t < 0 || b > space.height) {\r\n\r\n // smallest distance to edge of space\r\n d = Math.min(rect.y, space.height - (rect.y + rect.height));\r\n\r\n // new bottom offset\r\n b = rect.y + rect.height + d;\r\n\r\n // resulting height\r\n h = b - t;\r\n\r\n // resulting width based on ratio\r\n w = h / ratio;\r\n\r\n // new right position\r\n r = l + w;\r\n }\r\n\r\n return {\r\n x: l,\r\n y: t,\r\n width: r - l,\r\n height: b - t\r\n };\r\n },\r\n 'sw': function sw(rect, offset, space, ratio) {\r\n\r\n var t, r, b, l, w, h, d;\r\n\r\n // right and top are fixed\r\n r = rect.x + rect.width;\r\n t = rect.y;\r\n\r\n // intended left edge\r\n l = limit(offset.x, 0, r);\r\n\r\n // if is too small vertically\r\n if (r - l < space.min.width) {\r\n l = r - space.min.width;\r\n }\r\n\r\n // if should scale by ratio, pick height by ratio of new width\r\n h = ratio ? (r - l) * ratio : limit(offset.y - rect.y, space.min.height, space.height - t);\r\n\r\n // check if has fallen below min width or height\r\n if (h < space.min.height) {\r\n h = space.min.height;\r\n l = r - h / ratio;\r\n }\r\n\r\n // add height difference with original height to bottom\r\n b = rect.y + rect.height + (h - rect.height);\r\n\r\n // check if any of the edges has moved out of the available space, if so,\r\n // set max size of rectangle from original position\r\n if (t < 0 || b > space.height) {\r\n\r\n // smallest distance to edge of space\r\n d = Math.min(rect.y, space.height - (rect.y + rect.height));\r\n\r\n // new bottom offset\r\n b = rect.y + rect.height + d;\r\n\r\n // resulting height\r\n h = b - t;\r\n\r\n // resulting width based on ratio\r\n w = h / ratio;\r\n\r\n // new left position\r\n l = r - w;\r\n }\r\n\r\n return {\r\n x: l,\r\n y: t,\r\n width: r - l,\r\n height: b - t\r\n };\r\n },\r\n 'nw': function nw(rect, offset, space, ratio) {\r\n\r\n var t, r, b, l, w, h, d;\r\n\r\n // right and bottom are fixed\r\n r = rect.x + rect.width;\r\n b = rect.y + rect.height;\r\n\r\n // intended left edge\r\n l = limit(offset.x, 0, r);\r\n\r\n // if is too small vertically\r\n if (r - l < space.min.width) {\r\n l = r - space.min.width;\r\n }\r\n\r\n // if should scale by ratio, pick height by ratio of new width\r\n h = ratio ? (r - l) * ratio : limit(b - offset.y, space.min.height, b);\r\n\r\n // check if has fallen below min width or height\r\n if (h < space.min.height) {\r\n h = space.min.height;\r\n l = r - h / ratio;\r\n }\r\n\r\n // add height difference with original height to bottom\r\n t = rect.y - (h - rect.height);\r\n\r\n // check if any of the edges has moved out of the available space, if so,\r\n // set max size of rectangle from original position\r\n if (t < 0 || b > space.height) {\r\n\r\n // smallest distance to edge of space\r\n d = Math.min(rect.y, space.height - (rect.y + rect.height));\r\n\r\n // new bottom offset\r\n t = rect.y - d;\r\n\r\n // resulting height\r\n h = b - t;\r\n\r\n // resulting width based on ratio\r\n w = h / ratio;\r\n\r\n // new left position\r\n l = r - w;\r\n }\r\n\r\n return {\r\n x: l,\r\n y: t,\r\n width: r - l,\r\n height: b - t\r\n };\r\n }\r\n\r\n};\r\n\r\n/**\r\n * CropArea\r\n */\r\n\r\nvar CropArea = (function () {\r\n function CropArea() {\r\n var element = arguments.length <= 0 || arguments[0] === undefined ? document.createElement('div') : arguments[0];\r\n\r\n _classCallCheck(this, CropArea);\r\n\r\n this._element = element;\r\n\r\n this._interaction = null;\r\n\r\n this._minWidth = 0;\r\n this._minHeight = 0;\r\n\r\n this._ratio = null;\r\n\r\n this._rect = {\r\n x: 0,\r\n y: 0,\r\n width: 0,\r\n height: 0\r\n };\r\n\r\n this._space = {\r\n width: 0,\r\n height: 0\r\n };\r\n\r\n this._rectChanged = false;\r\n\r\n this._init();\r\n }\r\n\r\n /**\r\n * ImageEditor\r\n * @param element\r\n * @param options\r\n * @constructor\r\n */\r\n\r\n _createClass(CropArea, [{\r\n key: '_init',\r\n value: function _init() {\r\n\r\n this._element.className = 'slim-crop-area';\r\n\r\n // lines\r\n var lines = create('div', 'grid');\r\n this._element.appendChild(lines);\r\n\r\n // corner & edge resize buttons\r\n for (var handler in resizers) {\r\n if (!resizers.hasOwnProperty(handler)) {\r\n continue;\r\n }\r\n var _btn = create('button', handler);\r\n this._element.appendChild(_btn);\r\n }\r\n var btn = create('button', 'c');\r\n this._element.appendChild(btn);\r\n\r\n addEvents(document, Events.DOWN, this);\r\n }\r\n }, {\r\n key: 'reset',\r\n value: function reset() {\r\n\r\n this._interaction = null;\r\n\r\n this._rect = {\r\n x: 0,\r\n y: 0,\r\n width: 0,\r\n height: 0\r\n };\r\n\r\n this._rectChanged = true;\r\n\r\n this._redraw();\r\n\r\n this._element.dispatchEvent(new CustomEvent('change'));\r\n }\r\n }, {\r\n key: 'rescale',\r\n value: function rescale(scale) {\r\n\r\n // no rescale\r\n if (scale === 1) {\r\n return;\r\n }\r\n\r\n this._interaction = null;\r\n\r\n this._rectChanged = true;\r\n\r\n this._rect.x *= scale;\r\n this._rect.y *= scale;\r\n this._rect.width *= scale;\r\n this._rect.height *= scale;\r\n\r\n this._redraw();\r\n\r\n this._element.dispatchEvent(new CustomEvent('change'));\r\n }\r\n }, {\r\n key: 'limit',\r\n value: function limit(width, height) {\r\n this._space = {\r\n width: width,\r\n height: height\r\n };\r\n }\r\n }, {\r\n key: 'resize',\r\n value: function resize(x, y, width, height) {\r\n\r\n this._interaction = null;\r\n\r\n this._rect = {\r\n x: x,\r\n y: y,\r\n width: limit(width, 0, this._space.width),\r\n height: limit(height, 0, this._space.height)\r\n };\r\n\r\n this._rectChanged = true;\r\n\r\n this._redraw();\r\n\r\n this._element.dispatchEvent(new CustomEvent('change'));\r\n }\r\n }, {\r\n key: 'handleEvent',\r\n value: function handleEvent(e) {\r\n\r\n switch (e.type) {\r\n\r\n case 'touchstart':\r\n case 'pointerdown':\r\n case 'mousedown':\r\n {\r\n this._onStartDrag(e);\r\n }\r\n break;\r\n case 'touchmove':\r\n case 'pointermove':\r\n case 'mousemove':\r\n {\r\n this._onDrag(e);\r\n }\r\n break;\r\n case 'touchend':\r\n case 'touchcancel':\r\n case 'pointerup':\r\n case 'mouseup':\r\n {\r\n this._onStopDrag(e);\r\n }\r\n\r\n }\r\n }\r\n }, {\r\n key: '_onStartDrag',\r\n value: function _onStartDrag(e) {\r\n\r\n // is not my event?\r\n if (!this._element.contains(e.target)) {\r\n return;\r\n }\r\n\r\n e.preventDefault();\r\n\r\n // listen to drag related events\r\n addEvents(document, Events.MOVE, this);\r\n addEvents(document, Events.UP, this);\r\n\r\n // now interacting with control\r\n this._interaction = {\r\n type: e.target.className,\r\n offset: getEventOffsetLocal(e, this._element)\r\n };\r\n\r\n // now dragging\r\n this._element.setAttribute('data-dragging', 'true');\r\n\r\n // start the redraw update loop\r\n this._redraw();\r\n }\r\n }, {\r\n key: '_onDrag',\r\n value: function _onDrag(e) {\r\n\r\n e.preventDefault();\r\n\r\n // get local offset for this event\r\n var offset = getEventOffsetLocal(e, this._element.parentNode);\r\n var type = this._interaction.type;\r\n\r\n // drag\r\n if (type === 'c') {\r\n\r\n this._rect.x = limit(offset.x - this._interaction.offset.x, 0, this._space.width - this._rect.width);\r\n this._rect.y = limit(offset.y - this._interaction.offset.y, 0, this._space.height - this._rect.height);\r\n }\r\n // resize\r\n else if (resizers[type]) {\r\n\r\n this._rect = resizers[type](this._rect, offset, {\r\n x: 0,\r\n y: 0,\r\n width: this._space.width,\r\n height: this._space.height,\r\n min: {\r\n width: this._minWidth,\r\n height: this._minHeight\r\n }\r\n }, this._ratio);\r\n }\r\n\r\n this._rectChanged = true;\r\n\r\n // dispatch\r\n this._element.dispatchEvent(new CustomEvent('input'));\r\n }\r\n }, {\r\n key: '_onStopDrag',\r\n value: function _onStopDrag(e) {\r\n\r\n e.preventDefault();\r\n\r\n // stop listening to drag related events\r\n removeEvents(document, Events.MOVE, this);\r\n removeEvents(document, Events.UP, this);\r\n\r\n // no longer interacting, so no need to redraw\r\n this._interaction = null;\r\n\r\n // now dragging\r\n this._element.setAttribute('data-dragging', 'false');\r\n\r\n // fire change event\r\n this._element.dispatchEvent(new CustomEvent('change'));\r\n }\r\n }, {\r\n key: '_redraw',\r\n value: function _redraw() {\r\n var _this = this;\r\n\r\n if (this._rectChanged) {\r\n\r\n this._element.style.cssText = '\\n left:' + this._rect.x + 'px;\\n top:' + this._rect.y + 'px;\\n width:' + this._rect.width + 'px;\\n height:' + this._rect.height + 'px;\\n ';\r\n\r\n this._rectChanged = false;\r\n }\r\n\r\n // if no longer interacting with crop area stop here\r\n if (!this._interaction) {\r\n return;\r\n }\r\n\r\n // redraw\r\n requestAnimationFrame(function () {\r\n return _this._redraw();\r\n });\r\n }\r\n }, {\r\n key: 'destroy',\r\n value: function destroy() {\r\n\r\n this._interaction = false;\r\n this._rectChanged = false;\r\n\r\n removeEvents(document, Events.DOWN, this);\r\n removeEvents(document, Events.MOVE, this);\r\n removeEvents(document, Events.UP, this);\r\n\r\n removeElement(this._element);\r\n }\r\n }, {\r\n key: 'element',\r\n get: function get() {\r\n return this._element;\r\n }\r\n }, {\r\n key: 'area',\r\n get: function get() {\r\n return this._rect;\r\n }\r\n }, {\r\n key: 'dirty',\r\n get: function get() {\r\n return this._rect.x !== 0 || this._rect.y !== 0 || this._rect.width !== 0 || this._rect.height !== 0;\r\n }\r\n }, {\r\n key: 'minWidth',\r\n set: function set(value) {\r\n this._minWidth = value;\r\n }\r\n }, {\r\n key: 'minHeight',\r\n set: function set(value) {\r\n this._minHeight = value;\r\n }\r\n }, {\r\n key: 'ratio',\r\n set: function set(value) {\r\n this._ratio = value;\r\n }\r\n }]);\r\n\r\n return CropArea;\r\n})();\r\n\r\nvar ImageEditorButtons = ['cancel', 'confirm'];\r\n\r\nvar ImageCropperEvents = ['input', 'change'];\r\n\r\nvar ImageEditor = (function () {\r\n function ImageEditor() {\r\n var element = arguments.length <= 0 || arguments[0] === undefined ? document.createElement('div') : arguments[0];\r\n var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\r\n\r\n _classCallCheck(this, ImageEditor);\r\n\r\n this._element = element;\r\n this._options = mergeOptions(ImageEditor.options(), options);\r\n\r\n this._ratio = null;\r\n this._output = null;\r\n\r\n this._input = null;\r\n\r\n this._preview = null;\r\n this._previewBlurred = null;\r\n this._blurredPreview = false;\r\n\r\n this._cropper = null;\r\n this._previewWrapper = null;\r\n this._currentWindowSize = {};\r\n\r\n this._btnGroup = null;\r\n\r\n this._init();\r\n }\r\n\r\n /**\r\n * FileHopper\r\n * @param element\r\n * @param options\r\n * @constructor\r\n */\r\n\r\n _createClass(ImageEditor, [{\r\n key: '_init',\r\n value: function _init() {\r\n var _this2 = this;\r\n\r\n this._element.className = 'slim-image-editor';\r\n\r\n // wrapper\r\n this._wrapper = create('div', 'slim-wrapper');\r\n\r\n // photo crop mark container\r\n this._stage = create('div', 'slim-stage');\r\n this._wrapper.appendChild(this._stage);\r\n\r\n // create crop marks\r\n this._cropper = new CropArea();\r\n ImageCropperEvents.forEach(function (e) {\r\n _this2._cropper.element.addEventListener(e, _this2);\r\n });\r\n this._stage.appendChild(this._cropper.element);\r\n\r\n // canvas ghost\r\n this._previewWrapper = create('div', 'slim-image-editor-preview slim-crop-preview');\r\n this._previewBlurred = create('canvas', 'slim-crop-blur');\r\n this._previewWrapper.appendChild(this._previewBlurred);\r\n this._wrapper.appendChild(this._previewWrapper);\r\n\r\n this._preview = create('img', 'slim-crop');\r\n this._previewWrapper.appendChild(this._preview);\r\n\r\n // buttons\r\n this._btnGroup = create('div', 'slim-btn-group');\r\n ImageEditorButtons.forEach(function (c) {\r\n var prop = capitalizeFirstLetter(c);\r\n var label = _this2._options['button' + prop + 'Label'];\r\n var title = _this2._options['button' + prop + 'Title'];\r\n var className = _this2._options['button' + prop + 'ClassName'];\r\n var btn = create('button', 'slim-image-editor-btn slim-btn-' + c + (className ? ' ' + className : ''));\r\n btn.innerHTML = label;\r\n btn.title = title || label;\r\n btn.type = 'button';\r\n btn.setAttribute('data-action', c);\r\n btn.addEventListener('click', _this2);\r\n _this2._btnGroup.appendChild(btn);\r\n });\r\n\r\n this._element.appendChild(this._wrapper);\r\n this._element.appendChild(this._btnGroup);\r\n }\r\n }, {\r\n key: 'handleEvent',\r\n value: function handleEvent(e) {\r\n\r\n switch (e.type) {\r\n case 'click':\r\n this._onClick(e);\r\n break;\r\n case 'change':\r\n this._onGridChange(e);\r\n break;\r\n case 'input':\r\n this._onGridInput(e);\r\n break;\r\n case 'keydown':\r\n this._onKeyDown(e);\r\n break;\r\n case 'resize':\r\n this._onResize(e);\r\n break;\r\n }\r\n }\r\n }, {\r\n key: '_onKeyDown',\r\n value: function _onKeyDown(e) {\r\n\r\n switch (e.keyCode) {\r\n case Key.RETURN:\r\n {\r\n this._confirm();\r\n break;\r\n }\r\n case Key.ESC:\r\n {\r\n this._cancel();\r\n break;\r\n }\r\n }\r\n }\r\n }, {\r\n key: '_onClick',\r\n value: function _onClick(e) {\r\n\r\n if (e.target.classList.contains('slim-btn-cancel')) {\r\n this._cancel();\r\n }\r\n\r\n if (e.target.classList.contains('slim-btn-confirm')) {\r\n this._confirm();\r\n }\r\n }\r\n }, {\r\n key: '_onResize',\r\n value: function _onResize() {\r\n var _this3 = this;\r\n\r\n // remember window size\r\n this._currentWindowSize = {\r\n width: window.innerWidth,\r\n height: window.innerHeight\r\n };\r\n\r\n // now let's resize\r\n clearTimeout(this._resizeTimer);\r\n this._resizeTimer = setTimeout(function () {\r\n\r\n requestAnimationFrame(function () {\r\n\r\n _this3._reflow();\r\n });\r\n }, 10);\r\n }\r\n }, {\r\n key: '_reflow',\r\n value: function _reflow() {\r\n\r\n // width before scale change\r\n var currentWidth = this._wrapper.offsetWidth;\r\n\r\n // let's redraw the image area\r\n this._redraw();\r\n\r\n // now let's rescale the cropper\r\n this._cropper.rescale(this._wrapper.offsetWidth / currentWidth);\r\n }\r\n }, {\r\n key: '_onGridInput',\r\n value: function _onGridInput() {\r\n\r\n this._maskOriginal();\r\n }\r\n }, {\r\n key: '_onGridChange',\r\n value: function _onGridChange() {\r\n\r\n this._maskOriginal();\r\n }\r\n }, {\r\n key: '_cancel',\r\n value: function _cancel() {\r\n\r\n this._element.dispatchEvent(new CustomEvent('cancel'));\r\n }\r\n }, {\r\n key: '_confirm',\r\n value: function _confirm() {\r\n\r\n this._element.dispatchEvent(new CustomEvent('confirm', {\r\n detail: {\r\n crop: scaleRect(this._cropper.area, this._input.width / this._preview.width)\r\n }\r\n }));\r\n }\r\n }, {\r\n key: 'open',\r\n value: function open(image, ratio, crop, callback) {\r\n var _this4 = this;\r\n\r\n // store original width of input element for later use reference\r\n if (this._input && this._input.getAttribute('data-file') == image.getAttribute('data-file')) {\r\n callback();\r\n return;\r\n }\r\n\r\n // we'll always have to blur the preview of a newly opened image\r\n this._blurredPreview = false;\r\n\r\n // set as new input image\r\n this._input = image;\r\n this._preview.onload = function () {\r\n\r\n // redraw view (for first time)\r\n _this4._redraw();\r\n\r\n // wait till redrawn and then setup initial cropper\r\n requestAnimationFrame(function () {\r\n\r\n var ratio = _this4.ratio;\r\n\r\n _this4._cropper.minWidth = _this4._options.minSize.width * _this4.scalar;\r\n _this4._cropper.minHeight = _this4._options.minSize.height * _this4.scalar;\r\n _this4._cropper.ratio = ratio;\r\n\r\n var rect = _this4._stage.getBoundingClientRect();\r\n _this4._cropper.limit(rect.width, rect.height);\r\n _this4._cropper.resize(crop.x * _this4.scalar, crop.y * _this4.scalar, crop.width * _this4.scalar, crop.height * _this4.scalar);\r\n\r\n // done\r\n callback();\r\n\r\n // fade in\r\n _this4._element.style.opacity = '';\r\n });\r\n };\r\n\r\n // preview\r\n var scalar = Math.min(this._element.offsetWidth / this._input.width, this._element.offsetHeight / this._input.height);\r\n this._preview.src = cloneCanvasScaled(this._input, scalar).toDataURL();\r\n\r\n // hide editor\r\n this._element.style.opacity = '0';\r\n\r\n // set ratio\r\n this._ratio = ratio;\r\n }\r\n }, {\r\n key: '_maskOriginal',\r\n value: function _maskOriginal() {\r\n var _this5 = this;\r\n\r\n // get cropper area\r\n var rect = this._cropper.area;\r\n\r\n // update on next frame (so it's in sync with crop area redraw)\r\n requestAnimationFrame(function () {\r\n\r\n // show only crop area of original image\r\n _this5._preview.style.clip = 'rect(' + rect.y + 'px,' + (rect.x + rect.width) + 'px,' + (rect.y + rect.height) + 'px,' + rect.x + 'px)';\r\n });\r\n }\r\n }, {\r\n key: '_reset',\r\n value: function _reset() {\r\n\r\n this._blurredPreview = false;\r\n\r\n // remove preview image\r\n this._preview.src = '';\r\n\r\n // clear canvas\r\n clearCanvas(this._previewBlurred);\r\n\r\n // reset grid\r\n this._cropper.reset();\r\n }\r\n }, {\r\n key: '_redraw',\r\n value: function _redraw() {\r\n\r\n // image ratio\r\n var ratio = this._input.height / this._input.width;\r\n\r\n // determine rounded size\r\n var buttonContainerHeight = this._btnGroup.offsetHeight;\r\n var maxWidth = this._element.clientWidth;\r\n var maxHeight = this._element.clientHeight - buttonContainerHeight;\r\n\r\n var width = maxWidth;\r\n var height = width * ratio;\r\n\r\n if (height > maxHeight) {\r\n height = maxHeight;\r\n width = height / ratio;\r\n }\r\n\r\n width = Math.round(width);\r\n height = Math.round(height);\r\n\r\n // rescale editor and blurred view\r\n this._previewBlurred.style.cssText = this._wrapper.style.cssText = '\\n width:' + width + 'px;\\n height:' + height + 'px;\\n ';\r\n\r\n // set image size based on container dimensions\r\n this._preview.width = width;\r\n this._preview.height = height;\r\n\r\n // scale and blur the blurry preview\r\n if (!this._blurredPreview) {\r\n\r\n this._previewBlurred.width = 300;\r\n this._previewBlurred.height = this._previewBlurred.width * ratio;\r\n\r\n copyCanvas(this._input, this._previewBlurred);\r\n\r\n blurCanvas(this._previewBlurred, 3);\r\n\r\n this._blurredPreview = true;\r\n }\r\n }\r\n }, {\r\n key: 'show',\r\n value: function show() {\r\n var callback = arguments.length <= 0 || arguments[0] === undefined ? function () {} : arguments[0];\r\n\r\n if (this._currentWindowSize.width !== window.innerWidth || this._currentWindowSize.height !== window.innerHeight) {\r\n this._reflow();\r\n }\r\n\r\n // listen to keydown so we can close or confirm with RETURN / ESC\r\n document.addEventListener('keydown', this);\r\n\r\n // when window is scaled we want to resize the editor\r\n window.addEventListener('resize', this);\r\n\r\n // fade in preview\r\n snabbt(this._previewWrapper, {\r\n fromPosition: [0, 0, 0],\r\n position: [0, 0, 0],\r\n fromOpacity: 0,\r\n opacity: .9999, // fixes IE render bug\r\n fromScale: [.98, .98],\r\n scale: [1, 1],\r\n easing: 'spring',\r\n springConstant: .3,\r\n springDeceleration: .85,\r\n delay: 450,\r\n complete: function complete() {\r\n resetTransforms(this);\r\n }\r\n });\r\n\r\n if (this._cropper.dirty) {\r\n\r\n // now show slicer\r\n snabbt(this._stage, {\r\n fromPosition: [0, 0, 0],\r\n position: [0, 0, 0],\r\n fromOpacity: 0,\r\n opacity: 1,\r\n duration: 250,\r\n delay: 550,\r\n complete: function complete() {\r\n resetTransforms(this);\r\n callback();\r\n }\r\n });\r\n } else {\r\n\r\n // now show slicer\r\n snabbt(this._stage, {\r\n fromPosition: [0, 0, 0],\r\n position: [0, 0, 0],\r\n fromOpacity: 0,\r\n opacity: 1,\r\n duration: 250,\r\n delay: 1000,\r\n complete: function complete() {\r\n resetTransforms(this);\r\n }\r\n });\r\n }\r\n\r\n // now show cancel\r\n snabbt(this._btnGroup.childNodes, {\r\n fromScale: [.9, .9],\r\n scale: [1, 1],\r\n fromOpacity: 0,\r\n opacity: 1,\r\n delay: function delay(i) {\r\n return 1000 + i * 100;\r\n },\r\n easing: 'spring',\r\n springConstant: .3,\r\n springDeceleration: .85,\r\n complete: function complete() {\r\n resetTransforms(this);\r\n }\r\n });\r\n }\r\n }, {\r\n key: 'hide',\r\n value: function hide() {\r\n var callback = arguments.length <= 0 || arguments[0] === undefined ? function () {} : arguments[0];\r\n\r\n // no more need to listen to keydown\r\n document.removeEventListener('keydown', this);\r\n\r\n // no more need to resize editor when window is scaled\r\n window.removeEventListener('resize', this);\r\n\r\n // fade out buttons\r\n snabbt(this._btnGroup.childNodes, {\r\n fromOpacity: 1,\r\n opacity: 0,\r\n duration: 350\r\n });\r\n\r\n snabbt([this._stage, this._previewWrapper], {\r\n fromPosition: [0, 0, 0],\r\n position: [0, -250, 0],\r\n fromOpacity: 1,\r\n opacity: 0,\r\n easing: 'spring',\r\n springConstant: .3,\r\n springDeceleration: .75,\r\n delay: 250,\r\n allDone: function allDone() {\r\n\r\n callback();\r\n }\r\n });\r\n }\r\n }, {\r\n key: 'destroy',\r\n value: function destroy() {\r\n var _this6 = this;\r\n\r\n nodeListToArray(this._btnGroup.children).forEach(function (btn) {\r\n btn.removeEventListener('click', _this6);\r\n });\r\n\r\n ImageCropperEvents.forEach(function (e) {\r\n _this6._cropper.element.removeEventListener(e, _this6);\r\n });\r\n\r\n this._cropper.destroy();\r\n\r\n removeElement(this._element);\r\n }\r\n }, {\r\n key: 'element',\r\n get: function get() {\r\n return this._element;\r\n }\r\n }, {\r\n key: 'ratio',\r\n get: function get() {\r\n if (this._ratio === 'input') {\r\n return this._input.height / this._input.width;\r\n }\r\n return this._ratio;\r\n }\r\n }, {\r\n key: 'offset',\r\n get: function get() {\r\n return this._element.getBoundingClientRect();\r\n }\r\n }, {\r\n key: 'original',\r\n get: function get() {\r\n return this._input;\r\n }\r\n }, {\r\n key: 'scalar',\r\n get: function get() {\r\n return this._preview.width / this._input.width;\r\n }\r\n }], [{\r\n key: 'options',\r\n value: function options() {\r\n\r\n return {\r\n buttonCancelClassName: null,\r\n buttonConfirmClassName: null,\r\n buttonCancelLabel: 'Cancel',\r\n buttonConfirmLabel: 'Confirm',\r\n buttonCancelTitle: null,\r\n buttonConfirmTitle: null,\r\n minSize: {\r\n width: 0,\r\n height: 0\r\n }\r\n };\r\n }\r\n }]);\r\n\r\n return ImageEditor;\r\n})();\r\n\r\nvar DragDropEvents = ['dragover', 'dragleave', 'drop'];\r\n\r\nvar FileHopper = (function () {\r\n function FileHopper() {\r\n var element = arguments.length <= 0 || arguments[0] === undefined ? document.createElement('div') : arguments[0];\r\n\r\n _classCallCheck(this, FileHopper);\r\n\r\n this._element = element;\r\n this._accept = [];\r\n\r\n this._dragPath = null;\r\n\r\n this._init();\r\n }\r\n\r\n /**\r\n * Popover\r\n */\r\n\r\n // public properties\r\n\r\n _createClass(FileHopper, [{\r\n key: 'areValidFiles',\r\n value: function areValidFiles(files) {\r\n\r\n if (this._accept.length && files) {\r\n return this._accept.indexOf(files[0].type) != -1;\r\n }\r\n return true;\r\n }\r\n\r\n // public methods\r\n }, {\r\n key: 'reset',\r\n value: function reset() {\r\n this._element.files = null;\r\n }\r\n\r\n // private\r\n }, {\r\n key: '_init',\r\n value: function _init() {\r\n var _this7 = this;\r\n\r\n this._element.className = 'slim-file-hopper';\r\n\r\n DragDropEvents.forEach(function (e) {\r\n _this7._element.addEventListener(e, _this7);\r\n });\r\n }\r\n\r\n // the input has changed\r\n }, {\r\n key: 'handleEvent',\r\n value: function handleEvent(e) {\r\n\r\n switch (e.type) {\r\n case 'dragover':\r\n this._onDragOver(e);\r\n break;\r\n case 'dragleave':\r\n this._onDragLeave(e);\r\n break;\r\n case 'drop':\r\n this._onDrop(e);\r\n break;\r\n }\r\n }\r\n }, {\r\n key: '_onDrop',\r\n value: function _onDrop(e) {\r\n\r\n // prevents browser from opening image\r\n e.preventDefault();\r\n\r\n // test type in older browsers\r\n if (!this.areValidFiles(e.dataTransfer.files)) {\r\n\r\n // invalid files, stop here\r\n this._element.dispatchEvent(new CustomEvent('file-invalid-drop'));\r\n\r\n // no longer hovering\r\n this._dragPath = null;\r\n return;\r\n }\r\n\r\n // store dropped files on element files property, so can be accessed by same function as file input handler\r\n this._element.files = e.dataTransfer.files;\r\n\r\n // file has been dropped\r\n this._element.dispatchEvent(new CustomEvent('file-drop', {\r\n detail: getOffsetByEvent(e)\r\n }));\r\n\r\n // file list has changed, let's notify others\r\n this._element.dispatchEvent(new CustomEvent('change'));\r\n\r\n // no longer hovering\r\n this._dragPath = null;\r\n }\r\n }, {\r\n key: '_onDragOver',\r\n value: function _onDragOver(e) {\r\n\r\n // prevents browser from opening image\r\n e.preventDefault();\r\n\r\n e.dataTransfer.dropEffect = 'copy';\r\n\r\n if (!this.areValidFiles(e.dataTransfer.items)) {\r\n\r\n // indicate drop mode to user\r\n e.dataTransfer.dropEffect = 'none';\r\n\r\n // invalid files, stop here\r\n this._element.dispatchEvent(new CustomEvent('file-invalid'));\r\n return;\r\n }\r\n\r\n // now hovering file over the area\r\n if (!this._dragPath) {\r\n this._dragPath = [];\r\n }\r\n\r\n // push location\r\n this._dragPath.push(getOffsetByEvent(e));\r\n\r\n // file is hovering over element\r\n this._element.dispatchEvent(new CustomEvent('file-over', {\r\n detail: {\r\n x: last(this._dragPath).x,\r\n y: last(this._dragPath).y\r\n }\r\n }));\r\n }\r\n }, {\r\n key: '_onDragLeave',\r\n value: function _onDragLeave(e) {\r\n\r\n // user has dragged file out of element area\r\n this._element.dispatchEvent(new CustomEvent('file-out', {\r\n detail: getOffsetByEvent(e)\r\n }));\r\n\r\n // now longer hovering file\r\n this._dragPath = null;\r\n }\r\n }, {\r\n key: 'destroy',\r\n value: function destroy() {\r\n var _this8 = this;\r\n\r\n DragDropEvents.forEach(function (e) {\r\n _this8._element.removeEventListener(e, _this8);\r\n });\r\n\r\n removeElement(this._element);\r\n }\r\n }, {\r\n key: 'element',\r\n get: function get() {\r\n return this._element;\r\n }\r\n }, {\r\n key: 'dragPath',\r\n get: function get() {\r\n return this._dragPath;\r\n }\r\n }, {\r\n key: 'enabled',\r\n get: function get() {\r\n return this._element.style.display === '';\r\n },\r\n set: function set(value) {\r\n this._element.style.display = value ? '' : 'none';\r\n }\r\n }, {\r\n key: 'accept',\r\n set: function set(mimetypes) {\r\n this._accept = mimetypes;\r\n },\r\n get: function get() {\r\n return this._accept;\r\n }\r\n }]);\r\n\r\n return FileHopper;\r\n})();\r\n\r\nvar Popover = (function () {\r\n function Popover() {\r\n _classCallCheck(this, Popover);\r\n\r\n this._element = null;\r\n this._inner = null;\r\n\r\n this._init();\r\n }\r\n\r\n /**\r\n * Slim API\r\n */\r\n\r\n _createClass(Popover, [{\r\n key: '_init',\r\n value: function _init() {\r\n\r\n this._element = create('div', 'slim-popover');\r\n this._element.setAttribute('data-state', 'off');\r\n document.body.appendChild(this._element);\r\n }\r\n }, {\r\n key: 'show',\r\n value: function show() {\r\n var _this9 = this;\r\n\r\n var callback = arguments.length <= 0 || arguments[0] === undefined ? function () {} : arguments[0];\r\n\r\n // turn on\r\n this._element.setAttribute('data-state', 'on');\r\n\r\n // show and animate in\r\n snabbt(this._element, {\r\n fromOpacity: 0,\r\n opacity: 1,\r\n duration: 350,\r\n complete: function complete() {\r\n\r\n // clean up transforms\r\n resetTransforms(_this9._element);\r\n\r\n // ready!\r\n callback();\r\n }\r\n });\r\n }\r\n }, {\r\n key: 'hide',\r\n value: function hide() {\r\n var _this10 = this;\r\n\r\n var callback = arguments.length <= 0 || arguments[0] === undefined ? function () {} : arguments[0];\r\n\r\n // animate out and hide\r\n snabbt(this._element, {\r\n fromOpacity: 1,\r\n opacity: 0,\r\n duration: 500,\r\n complete: function complete() {\r\n\r\n // clean up transforms\r\n resetTransforms(_this10._element);\r\n\r\n // hide the editor\r\n _this10._element.setAttribute('data-state', 'off');\r\n\r\n // ready!\r\n callback();\r\n }\r\n });\r\n }\r\n }, {\r\n key: 'destroy',\r\n value: function destroy() {\r\n if (!this._element.parentNode) {\r\n return;\r\n }\r\n this._element.parentNode.removeChild(this._element);\r\n }\r\n }, {\r\n key: 'inner',\r\n set: function set(element) {\r\n\r\n this._inner = element;\r\n if (this._element.firstChild) {\r\n this._element.removeChild(this._element.firstChild);\r\n }\r\n this._element.appendChild(this._inner);\r\n }\r\n }]);\r\n\r\n return Popover;\r\n})();\r\n\r\nfunction intSplit(v, c) {\r\n return v.split(c).map(function (v) {\r\n return parseInt(v, 10);\r\n });\r\n}\r\n\r\nfunction isWrapper(element) {\r\n return element.nodeName == 'DIV';\r\n}\r\n\r\nvar CropType = {\r\n AUTO: 'auto',\r\n INITIAL: 'initial',\r\n MANUAL: 'manual'\r\n};\r\n\r\nvar Rect = ['x', 'y', 'width', 'height'];\r\n\r\nvar HopperEvents = ['file-invalid-drop', 'file-invalid', 'file-drop', 'file-over', 'file-out', 'click'];\r\n\r\nvar ImageEditorEvents = ['cancel', 'confirm'];\r\n\r\nvar SlimPopover = null;\r\nvar SlimCount = 0;\r\n\r\nvar SlimButtons = ['remove', 'edit', 'download', 'upload'];\r\n\r\nvar SlimType = {\r\n IMG: 'img',\r\n INPUT: 'input'\r\n};\r\n\r\nvar SlimLoaderHTML = '\\n
\\n \\n \\n \\n \\n
\\n';\r\n\r\nvar SlimUploadStatusHTML = '\\n
\\n';\r\n\r\nvar Slim = (function () {\r\n function Slim(element) {\r\n var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\r\n\r\n _classCallCheck(this, Slim);\r\n\r\n // create popover element if not already created\r\n if (!SlimPopover) {\r\n SlimPopover = new Popover();\r\n }\r\n\r\n // we create a new counter, we use this counter to determine if we need to clean up the popover\r\n SlimCount++;\r\n\r\n // the options to use\r\n this._options = mergeOptions(Slim.options(), options);\r\n\r\n // reference to original element so we can restore original situation\r\n this._originalElement = element;\r\n this._originalElementInner = element.innerHTML;\r\n this._originalElementAttributes = getElementAttributes(element);\r\n\r\n // should be file input, image or slim wrapper, if not wrapper, wrap\r\n if (!isWrapper(element)) {\r\n\r\n this._element = wrap(element);\r\n this._element.className = element.className;\r\n element.className = '';\r\n\r\n // ratio is used for CSS so let's set default attribute\r\n this._element.setAttribute('data-ratio', this._options.ratio);\r\n } else {\r\n this._element = element;\r\n }\r\n this._element.classList.add('slim');\r\n this._element.setAttribute('data-state', 'init');\r\n\r\n // the source element (can either be an input or an img)\r\n this._input = null;\r\n\r\n // the output element (hidden input that contains the resulting json object)\r\n this._output = null;\r\n\r\n // current image ratio\r\n this._ratio = null;\r\n\r\n // was required field\r\n this._isRequired = false;\r\n\r\n // components\r\n this._imageHopper = null;\r\n this._imageEditor = null;\r\n\r\n // progress path\r\n this._progressEnabled = true;\r\n\r\n // resulting data\r\n this._data = {};\r\n this._resetData();\r\n\r\n // editor state\r\n this._state = [];\r\n\r\n // the circle below the mouse hover point\r\n this._drip = null;\r\n\r\n // had initial image\r\n this._hasInitialImage = false;\r\n\r\n // initial crop\r\n this._initialCrop = this._options.crop;\r\n\r\n // set to true when destroy method is called, used to halt any timeouts or async processes\r\n this._isBeingDestroyed = false;\r\n\r\n // let's go!\r\n if (Slim.supported) {\r\n this._init();\r\n } else {\r\n this._fallback();\r\n }\r\n }\r\n\r\n /**\r\n * Slim Static Methods\r\n */\r\n\r\n _createClass(Slim, [{\r\n key: 'isAttachedTo',\r\n\r\n // methods\r\n // Test if this Slim object has been bound to the given element\r\n value: function isAttachedTo(element) {\r\n return this._element === element || this._originalElement === element;\r\n }\r\n }, {\r\n key: 'isDetached',\r\n value: function isDetached() {\r\n return this._element.parentNode === null;\r\n }\r\n }, {\r\n key: 'load',\r\n value: function load(src, options, callback) {\r\n if (options === undefined) options = {};\r\n\r\n if (typeof options == 'function') {\r\n callback = options;\r\n } else {\r\n\r\n // store in options\r\n this._options.crop = options.crop;\r\n\r\n // set initial crop\r\n this._initialCrop = this._options.crop;\r\n }\r\n\r\n this._load(src, callback);\r\n }\r\n }, {\r\n key: 'upload',\r\n value: function upload(callback) {\r\n this._doUpload(callback);\r\n }\r\n }, {\r\n key: 'download',\r\n value: function download() {\r\n this._doDownload();\r\n }\r\n }, {\r\n key: 'remove',\r\n value: function remove() {\r\n return this._doRemove();\r\n }\r\n }, {\r\n key: 'destroy',\r\n value: function destroy() {\r\n this._doDestroy();\r\n }\r\n\r\n /**\r\n * State Related\r\n */\r\n }, {\r\n key: '_getFileInput',\r\n value: function _getFileInput() {\r\n return this._element.querySelector('input[type=file]');\r\n }\r\n }, {\r\n key: '_getInitialImage',\r\n value: function _getInitialImage() {\r\n return this._element.querySelector('img');\r\n }\r\n }, {\r\n key: '_getInputElement',\r\n value: function _getInputElement() {\r\n return this._getFileInput() || this._getInitialImage();\r\n }\r\n }, {\r\n key: '_getRatioSpacerElement',\r\n value: function _getRatioSpacerElement() {\r\n return this._element.children[0];\r\n }\r\n }, {\r\n key: '_isImageOnly',\r\n value: function _isImageOnly() {\r\n return this._input.nodeName !== 'INPUT';\r\n }\r\n }, {\r\n key: '_isFixedRatio',\r\n value: function _isFixedRatio() {\r\n return this._options.ratio.indexOf(':') !== -1;\r\n }\r\n }, {\r\n key: '_toggleButton',\r\n value: function _toggleButton(action, state) {\r\n toggleDisplayBySelector('.slim-btn[data-action=\"' + action + '\"]', state, this._element);\r\n }\r\n }, {\r\n key: '_clearState',\r\n value: function _clearState() {\r\n this._state = [];\r\n this._updateState();\r\n }\r\n }, {\r\n key: '_removeState',\r\n value: function _removeState(state) {\r\n this._state = this._state.filter(function (item) {\r\n return item !== state;\r\n });\r\n this._updateState();\r\n }\r\n }, {\r\n key: '_addState',\r\n value: function _addState(state) {\r\n if (inArray(state, this._state)) {\r\n return;\r\n }\r\n this._state.push(state);\r\n this._updateState();\r\n }\r\n }, {\r\n key: '_updateState',\r\n value: function _updateState() {\r\n this._element.setAttribute('data-state', this._state.join(','));\r\n }\r\n }, {\r\n key: '_resetData',\r\n value: function _resetData() {\r\n\r\n // resets data object\r\n this._data = {\r\n server: null,\r\n meta: null,\r\n input: {\r\n image: null,\r\n name: null,\r\n type: null,\r\n width: 0,\r\n height: 0\r\n },\r\n output: {\r\n image: null,\r\n width: 0,\r\n height: 0\r\n },\r\n actions: {\r\n crop: null,\r\n size: null\r\n }\r\n };\r\n\r\n // resets hidden input clone\r\n if (this._output) {\r\n this._output.value = '';\r\n }\r\n\r\n // should reset file input\r\n resetFileInput(this._getFileInput());\r\n }\r\n\r\n /**\r\n * Initialisation\r\n */\r\n }, {\r\n key: '_init',\r\n value: function _init() {\r\n var _this11 = this;\r\n\r\n // cropper root is not file input\r\n this._addState('empty');\r\n\r\n // get input element\r\n this._input = this._getInputElement();\r\n\r\n // if no input supplied we'll automatically create one\r\n if (!this._input) {\r\n this._input = create('input');\r\n this._input.type = 'file';\r\n this._element.appendChild(this._input);\r\n }\r\n\r\n // get required state of input element\r\n this._isRequired = this._input.required === true;\r\n\r\n // set or create output field\r\n this._output = this._element.querySelector('input[type=hidden]');\r\n\r\n // if no output element defined we'll create one automagically\r\n if (!this._output) {\r\n this._output = create('input');\r\n this._output.type = 'hidden';\r\n this._output.name = this._input.name || this._options.defaultInputName;\r\n this._element.appendChild(this._output);\r\n }\r\n\r\n // prevent the original file input field from posting (value will be duplicated to output field)\r\n this._input.removeAttribute('name');\r\n\r\n // create drop area\r\n var area = create('div', 'slim-area');\r\n\r\n // test if contains initial image\r\n var initialImage = this._getInitialImage();\r\n var initialImageSrc = (initialImage || {}).src;\r\n if (initialImageSrc) {\r\n this._hasInitialImage = true;\r\n } else {\r\n this._initialCrop = null;\r\n }\r\n\r\n var resultHTML = '\\n
\\n \\n
';\r\n\r\n // add drop overlay\r\n if (this._isImageOnly()) {\r\n area.innerHTML = '\\n ' + SlimLoaderHTML + '\\n ' + SlimUploadStatusHTML + '\\n ' + resultHTML + '\\n ';\r\n } else {\r\n\r\n // set common image mime type to the accept attribute\r\n var _mimetypes = undefined;\r\n if (!this._input.hasAttribute('accept')) {\r\n _mimetypes = getCommonMimeTypes();\r\n this._input.setAttribute('accept', _mimetypes.join(','));\r\n } else {\r\n _mimetypes = this._input.accept.split(',').filter(function (mimetype) {\r\n return mimetype.length > 0;\r\n });\r\n }\r\n\r\n // setup hopper\r\n this._imageHopper = new FileHopper();\r\n this._imageHopper.accept = _mimetypes;\r\n this._element.appendChild(this._imageHopper.element);\r\n HopperEvents.forEach(function (e) {\r\n _this11._imageHopper.element.addEventListener(e, _this11);\r\n });\r\n\r\n // render area\r\n area.innerHTML = '\\n ' + SlimLoaderHTML + '\\n ' + SlimUploadStatusHTML + '\\n
\\n
' + (this._options.label || '') + '
\\n ' + resultHTML + '\\n ';\r\n\r\n // start listening for events so we can load image on file input change\r\n this._input.addEventListener('change', this);\r\n }\r\n\r\n // add area node\r\n this._element.appendChild(area);\r\n\r\n // add button group\r\n this._btnGroup = create('div', 'slim-btn-group');\r\n this._btnGroup.style.display = 'none';\r\n this._element.appendChild(this._btnGroup);\r\n SlimButtons.filter(function (c) {\r\n return _this11._isButtonAllowed(c);\r\n }).forEach(function (c) {\r\n var prop = capitalizeFirstLetter(c);\r\n var label = _this11._options['button' + prop + 'Label'];\r\n var title = _this11._options['button' + prop + 'Title'] || label;\r\n var className = _this11._options['button' + prop + 'ClassName'];\r\n var btn = create('button', 'slim-btn slim-btn-' + c + (className ? ' ' + className : ''));\r\n btn.innerHTML = label;\r\n btn.title = title;\r\n btn.type = 'button';\r\n btn.addEventListener('click', _this11);\r\n btn.setAttribute('data-action', c);\r\n _this11._btnGroup.appendChild(btn);\r\n });\r\n\r\n // add ratio padding\r\n if (this._isFixedRatio()) {\r\n var parts = intSplit(this._options.ratio, ':');\r\n this._ratio = parts[1] / parts[0];\r\n this._scaleDropArea(this._ratio);\r\n }\r\n\r\n // setup loader\r\n this._updateProgress(.5);\r\n\r\n // preload source\r\n if (initialImageSrc) {\r\n\r\n this._load(initialImageSrc, function () {\r\n\r\n // done loading initial image\r\n _this11._onInit();\r\n });\r\n } else {\r\n this._onInit();\r\n }\r\n }\r\n }, {\r\n key: '_onInit',\r\n value: function _onInit() {\r\n var _this12 = this;\r\n\r\n // done inintialising now, else is only called after image load\r\n // we call this async so the constructor of Slim has returned before the onInit is called, allowing clean immidiate destroy\r\n setTimeout(function () {\r\n _this12._options.onInit(_this12);\r\n }, 0);\r\n }\r\n }, {\r\n key: '_updateProgress',\r\n value: function _updateProgress(progress) {\r\n\r\n if (!this._progressEnabled) {\r\n return;\r\n }\r\n\r\n var loader = this._element.querySelector('.slim-loader');\r\n if (!loader) {\r\n return;\r\n }\r\n var rect = loader.getBoundingClientRect();\r\n var paths = loader.querySelectorAll('path');\r\n var ringWidth = parseInt(paths[0].getAttribute('stroke-width'), 10);\r\n\r\n paths[0].setAttribute('d', percentageArc(rect.width * .5, rect.height * .5, rect.width * .5 - ringWidth, .9999));\r\n\r\n paths[1].setAttribute('d', percentageArc(rect.width * .5, rect.height * .5, rect.width * .5 - ringWidth, progress));\r\n }\r\n }, {\r\n key: '_startProgress',\r\n value: function _startProgress() {\r\n var _this13 = this;\r\n\r\n this._progressEnabled = false;\r\n\r\n var loader = this._element.querySelector('.slim-loader');\r\n if (!loader) {\r\n return;\r\n }\r\n var ring = loader.children[0];\r\n\r\n this._stopProgressLoop(function () {\r\n\r\n loader.removeAttribute('style');\r\n ring.removeAttribute('style');\r\n\r\n _this13._progressEnabled = true;\r\n\r\n _this13._updateProgress(0);\r\n\r\n _this13._progressEnabled = false;\r\n\r\n snabbt(ring, {\r\n\r\n fromOpacity: 0,\r\n opacity: 1,\r\n duration: 250,\r\n complete: function complete() {\r\n _this13._progressEnabled = true;\r\n }\r\n });\r\n });\r\n }\r\n }, {\r\n key: '_stopProgress',\r\n value: function _stopProgress() {\r\n var _this14 = this;\r\n\r\n var loader = this._element.querySelector('.slim-loader');\r\n if (!loader) {\r\n return;\r\n }\r\n var ring = loader.children[0];\r\n\r\n this._updateProgress(1);\r\n\r\n snabbt(ring, {\r\n fromOpacity: 1,\r\n opacity: 0,\r\n duration: 250,\r\n complete: function complete() {\r\n\r\n loader.removeAttribute('style');\r\n ring.removeAttribute('style');\r\n\r\n _this14._updateProgress(.5);\r\n\r\n _this14._progressEnabled = false;\r\n }\r\n });\r\n }\r\n }, {\r\n key: '_startProgressLoop',\r\n value: function _startProgressLoop() {\r\n\r\n // start loading animation\r\n var loader = this._element.querySelector('.slim-loader');\r\n if (!loader) {\r\n return;\r\n }\r\n var ring = loader.children[0];\r\n loader.removeAttribute('style');\r\n ring.removeAttribute('style');\r\n\r\n // set infinite load state\r\n this._updateProgress(.5);\r\n\r\n // repeat!\r\n var repeat = 1000;\r\n\r\n snabbt(loader, {\r\n rotation: [0, 0, -(Math.PI * 2) * repeat],\r\n easing: 'linear',\r\n duration: repeat * 1000\r\n });\r\n\r\n snabbt(ring, {\r\n fromOpacity: 0,\r\n opacity: 1,\r\n duration: 250\r\n });\r\n }\r\n }, {\r\n key: '_stopProgressLoop',\r\n value: function _stopProgressLoop(callback) {\r\n\r\n var loader = this._element.querySelector('.slim-loader');\r\n if (!loader) {\r\n return;\r\n }\r\n var ring = loader.children[0];\r\n\r\n snabbt(ring, {\r\n fromOpacity: parseFloat(ring.style.opacity),\r\n opacity: 0,\r\n duration: 250,\r\n complete: function complete() {\r\n snabbt(loader, 'stop');\r\n if (callback) {\r\n callback();\r\n }\r\n }\r\n });\r\n }\r\n }, {\r\n key: '_isButtonAllowed',\r\n value: function _isButtonAllowed(button) {\r\n\r\n if (button === 'edit') {\r\n return this._options.edit;\r\n }\r\n\r\n if (button === 'download') {\r\n return this._options.download;\r\n }\r\n\r\n if (button === 'upload') {\r\n\r\n // if no service defined upload button makes no sense\r\n if (!this._options.service) {\r\n return false;\r\n }\r\n\r\n // if push mode is set, no need for upload button\r\n if (this._options.push) {\r\n return false;\r\n }\r\n\r\n // set upload button\r\n return true;\r\n }\r\n\r\n if (button === 'remove') {\r\n return !this._isImageOnly();\r\n }\r\n\r\n return true;\r\n }\r\n }, {\r\n key: '_fallback',\r\n value: function _fallback() {\r\n\r\n this._removeState('init');\r\n\r\n // create status area\r\n var area = create('div', 'slim-area');\r\n area.innerHTML = '\\n
' + (this._options.label || '') + '
\\n ';\r\n this._element.appendChild(area);\r\n\r\n this._throwError(this._options.statusNoSupport);\r\n }\r\n\r\n /**\r\n * Event routing\r\n */\r\n }, {\r\n key: 'handleEvent',\r\n value: function handleEvent(e) {\r\n\r\n switch (e.type) {\r\n case 'click':\r\n this._onClick(e);\r\n break;\r\n case 'change':\r\n this._onChange(e);\r\n break;\r\n case 'cancel':\r\n this._onCancel(e);\r\n break;\r\n case 'confirm':\r\n this._onConfirm(e);\r\n break;\r\n case 'file-over':\r\n this._onFileOver(e);\r\n break;\r\n case 'file-out':\r\n this._onFileOut(e);\r\n break;\r\n case 'file-drop':\r\n this._onDropFile(e);\r\n break;\r\n case 'file-invalid':\r\n this._onInvalidFile(e);\r\n break;\r\n case 'file-invalid-drop':\r\n this._onInvalidFileDrop(e);\r\n break;\r\n }\r\n }\r\n }, {\r\n key: '_getIntro',\r\n value: function _getIntro() {\r\n return this._element.querySelector('.slim-result .in');\r\n }\r\n }, {\r\n key: '_getOutro',\r\n value: function _getOutro() {\r\n return this._element.querySelector('.slim-result .out');\r\n }\r\n }, {\r\n key: '_getInOut',\r\n value: function _getInOut() {\r\n return this._element.querySelectorAll('.slim-result img');\r\n }\r\n }, {\r\n key: '_getDrip',\r\n value: function _getDrip() {\r\n if (!this._drip) {\r\n this._drip = this._element.querySelector('.slim-drip > span');\r\n }\r\n return this._drip;\r\n }\r\n\r\n // errors\r\n }, {\r\n key: '_throwError',\r\n value: function _throwError(error) {\r\n\r\n this._addState('error');\r\n\r\n this._element.querySelector('.slim-label').style.display = 'none';\r\n\r\n var node = this._element.querySelector('.slim-error');\r\n if (!node) {\r\n node = create('div', 'slim-error');\r\n this._element.querySelector('.slim-status').appendChild(node);\r\n }\r\n\r\n node.innerHTML = error;\r\n }\r\n }, {\r\n key: '_removeError',\r\n value: function _removeError() {\r\n\r\n this._removeState('error');\r\n this._element.querySelector('.slim-label').style.display = '';\r\n\r\n var error = this._element.querySelector('.slim-error');\r\n if (error) {\r\n error.parentNode.removeChild(error);\r\n }\r\n }\r\n }, {\r\n key: '_openFileDialog',\r\n value: function _openFileDialog() {\r\n this._input.click();\r\n }\r\n\r\n // drop area clicked\r\n }, {\r\n key: '_onClick',\r\n value: function _onClick(e) {\r\n var _this15 = this;\r\n\r\n var list = e.target.classList;\r\n var target = e.target;\r\n\r\n // no preview, so possible to drop file\r\n if (list.contains('slim-file-hopper')) {\r\n this._openFileDialog();\r\n return;\r\n }\r\n\r\n // decide what button was clicked\r\n switch (target.getAttribute('data-action')) {\r\n case 'remove':\r\n this._options.onBeforeRemove(this, function () {\r\n _this15._doRemove();\r\n });\r\n break;\r\n case 'edit':\r\n this._doEdit();\r\n break;\r\n case 'download':\r\n this._doDownload();\r\n break;\r\n case 'upload':\r\n this._doUpload();\r\n break;\r\n }\r\n }\r\n }, {\r\n key: '_onInvalidFileDrop',\r\n value: function _onInvalidFileDrop() {\r\n\r\n this._onInvalidFile();\r\n\r\n this._removeState('file-over');\r\n\r\n // animate out drip\r\n var drip = this._getDrip();\r\n snabbt(drip.firstChild, {\r\n fromScale: [.5, .5],\r\n scale: [0, 0],\r\n fromOpacity: .5,\r\n opacity: 0,\r\n duration: 150,\r\n complete: function complete() {\r\n\r\n // clean up transforms\r\n resetTransforms(drip.firstChild);\r\n }\r\n });\r\n }\r\n }, {\r\n key: '_onInvalidFile',\r\n value: function _onInvalidFile() {\r\n\r\n var types = this._imageHopper.accept.map(getExtensionByMimeType);\r\n var error = this._options.statusFileType.replace('$0', types.join(', '));\r\n this._throwError(error);\r\n }\r\n }, {\r\n key: '_onOverWeightFile',\r\n value: function _onOverWeightFile() {\r\n\r\n var error = this._options.statusFileSize.replace('$0', this._options.maxFileSize);\r\n this._throwError(error);\r\n }\r\n }, {\r\n key: '_onFileOver',\r\n value: function _onFileOver(e) {\r\n\r\n this._addState('file-over');\r\n this._removeError();\r\n\r\n // animations\r\n var drip = this._getDrip();\r\n\r\n // move around drip\r\n var matrix = snabbt.createMatrix();\r\n matrix.translate(e.detail.x, e.detail.y, 0);\r\n snabbt.setElementTransform(drip, matrix);\r\n\r\n // on first entry fade in blob\r\n if (this._imageHopper.dragPath.length == 1) {\r\n\r\n // show\r\n drip.style.opacity = 1;\r\n\r\n // animate in\r\n snabbt(drip.firstChild, {\r\n fromOpacity: 0,\r\n opacity: .5,\r\n fromScale: [0, 0],\r\n scale: [.5, .5],\r\n duration: 150\r\n });\r\n }\r\n }\r\n }, {\r\n key: '_onFileOut',\r\n value: function _onFileOut(e) {\r\n\r\n this._removeState('file-over');\r\n this._removeState('file-invalid');\r\n this._removeError();\r\n\r\n // move to last position\r\n var drip = this._getDrip();\r\n var matrix = snabbt.createMatrix();\r\n matrix.translate(e.detail.x, e.detail.y, 0);\r\n snabbt.setElementTransform(drip, matrix);\r\n\r\n // animate out\r\n snabbt(drip.firstChild, {\r\n fromScale: [.5, .5],\r\n scale: [0, 0],\r\n fromOpacity: .5,\r\n opacity: 0,\r\n duration: 150,\r\n complete: function complete() {\r\n\r\n // clean up transforms\r\n resetTransforms(drip.firstChild);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * When a file was literally dropped on the drop area\r\n * @param e\r\n * @private\r\n */\r\n }, {\r\n key: '_onDropFile',\r\n value: function _onDropFile(e) {\r\n var _this16 = this;\r\n\r\n this._removeState('file-over');\r\n\r\n // get drip node reference and set to last position\r\n var drip = this._getDrip();\r\n var matrix = snabbt.createMatrix();\r\n matrix.translate(e.detail.x, e.detail.y, 0);\r\n snabbt.setElementTransform(drip, matrix);\r\n\r\n // get element minimum 10 entries distant from the last entry so we can calculate velocity of movement\r\n var l = this._imageHopper.dragPath.length;\r\n var jump = this._imageHopper.dragPath[l - Math.min(10, l)];\r\n\r\n // velocity\r\n var dx = e.detail.x - jump.x;\r\n var dy = e.detail.y - jump.y;\r\n\r\n snabbt(drip, {\r\n fromPosition: [e.detail.x, e.detail.y, 0],\r\n position: [e.detail.x + dx, e.detail.y + dy, 0],\r\n duration: 200\r\n });\r\n\r\n // animate out drip\r\n snabbt(drip.firstChild, {\r\n\r\n fromScale: [.5, .5],\r\n scale: [2, 2],\r\n fromOpacity: 1,\r\n opacity: 0,\r\n duration: 200,\r\n\r\n complete: function complete() {\r\n\r\n // clean up transforms\r\n resetTransforms(drip.firstChild);\r\n\r\n // load dropped resource\r\n _this16._load(e.target.files[0]);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * When a file has been selected after a click on the drop area\r\n * @param e\r\n * @private\r\n */\r\n }, {\r\n key: '_onChange',\r\n value: function _onChange(e) {\r\n\r\n this._load(e.target.files[0]);\r\n }\r\n\r\n /**\r\n * Loads a resource (blocking operation)\r\n * @param resource\r\n * @param callback(err)\r\n * @private\r\n */\r\n }, {\r\n key: '_load',\r\n value: function _load(resource, callback) {\r\n var _this17 = this;\r\n\r\n // stop here\r\n if (this._isBeingDestroyed) {\r\n return;\r\n }\r\n\r\n // meta data\r\n var file = getFileMetaData(resource);\r\n\r\n // test if too big\r\n if (file.size && this._options.maxFileSize && bytesToMegaBytes(file.size) > this._options.maxFileSize) {\r\n this._onOverWeightFile();\r\n if (callback) {\r\n callback('file-too-big');\r\n }\r\n return;\r\n }\r\n\r\n // no longer empty\r\n this._removeState('empty');\r\n\r\n // can't drop any other image\r\n if (this._imageHopper) {\r\n this._imageHopper.enabled = false;\r\n }\r\n\r\n // continue\r\n this._data.input.name = file.name;\r\n this._data.input.type = file.type;\r\n this._data.input.size = file.size;\r\n\r\n // start loading indicator\r\n this._startProgressLoop();\r\n this._addState('busy');\r\n\r\n // fetch resource\r\n getImageAsCanvas(resource, function (image, meta) {\r\n\r\n // if no image, something went wrong\r\n if (!image) {\r\n\r\n _this17._removeState('busy');\r\n _this17._stopProgressLoop();\r\n\r\n _this17._resetData();\r\n\r\n if (callback) {\r\n callback('file-not-found');\r\n }\r\n\r\n return;\r\n }\r\n\r\n // store file name, used to compare canvas data later on\r\n image.setAttribute('data-file', file.name);\r\n\r\n // load the image\r\n _this17._loadCanvas(image, function () {\r\n\r\n var intro = _this17._getIntro();\r\n\r\n // setup base animation\r\n var animation = {\r\n fromScale: [1.25, 1.25],\r\n scale: [1, 1],\r\n fromOpacity: 0,\r\n opacity: 1,\r\n complete: function complete() {\r\n\r\n resetTransforms(intro);\r\n\r\n intro.style.opacity = 1;\r\n\r\n _this17._showButtons();\r\n\r\n _this17._stopProgressLoop();\r\n _this17._removeState('busy');\r\n _this17._addState('preview');\r\n\r\n if (callback) {\r\n callback(null, _this17.data);\r\n }\r\n }\r\n\r\n };\r\n\r\n // if not attached to DOM, don't animate\r\n if (_this17.isDetached()) {\r\n animation.duration = 1;\r\n } else {\r\n animation.easing = 'spring';\r\n animation.springConstant = .3;\r\n animation.springDeceleration = .7;\r\n }\r\n\r\n // reveal loaded image\r\n snabbt(intro, animation);\r\n });\r\n });\r\n }\r\n }, {\r\n key: '_loadCanvas',\r\n value: function _loadCanvas(image, ready) {\r\n var _this18 = this;\r\n\r\n // halt here if cropper is currently being destroyed\r\n if (this._isBeingDestroyed) {\r\n return;\r\n }\r\n\r\n // scales the drop area\r\n // if is 'input' or 'free' parameter\r\n if (!this._isFixedRatio()) {\r\n this._ratio = image.height / image.width;\r\n this._scaleDropArea(this._ratio);\r\n }\r\n\r\n // store raw data\r\n this._data.input.image = image;\r\n this._data.input.width = image.width;\r\n this._data.input.height = image.height;\r\n\r\n if (this._initialCrop) {\r\n\r\n // use initial supplied crop rectangle\r\n this._data.actions.crop = clone(this._initialCrop);\r\n this._data.actions.crop.type = CropType.INITIAL;\r\n\r\n // clear initial crop, it's no longer useful\r\n this._initialCrop = null;\r\n } else {\r\n // get automagical crop rectangle\r\n this._data.actions.crop = getAutoCropRect(image.width, image.height, this._ratio);\r\n this._data.actions.crop.type = CropType.AUTO;\r\n }\r\n\r\n // if max size set\r\n if (this._options.size) {\r\n this._data.actions.size = {\r\n width: this._options.size.width,\r\n height: this._options.size.height\r\n };\r\n }\r\n\r\n // do initial auto transform\r\n this._applyTransforms(image, function (transformedImage) {\r\n\r\n var intro = _this18._getIntro();\r\n var scalar = intro.offsetWidth / transformedImage.width;\r\n\r\n // store data, if has preview image this prevents initial load from pushing\r\n var doUpload = false;\r\n\r\n // can only do auto upload when service is defined and push is enabled...\r\n if (_this18._options.service && _this18._options.push) {\r\n\r\n // ...and is not transformation of initial image\r\n if (!_this18._hasInitialImage) {\r\n doUpload = true;\r\n }\r\n }\r\n\r\n _this18._save(function () {}, doUpload);\r\n\r\n // show intro animation\r\n intro.src = cloneCanvasScaled(transformedImage, scalar).toDataURL();\r\n intro.onload = function () {\r\n\r\n intro.onload = null;\r\n\r\n // bail out if we've been cleaned up\r\n if (_this18._isBeingDestroyed) {\r\n return;\r\n }\r\n\r\n if (ready) {\r\n ready();\r\n }\r\n };\r\n });\r\n }\r\n }, {\r\n key: '_applyTransforms',\r\n value: function _applyTransforms(image, ready) {\r\n var _this19 = this;\r\n\r\n transformCanvas(image, this._data.actions, function (transformedImage) {\r\n\r\n _this19._data.output.width = transformedImage.width;\r\n _this19._data.output.height = transformedImage.height;\r\n _this19._data.output.image = transformedImage;\r\n\r\n _this19._onTransformCanvas(_this19._data, function (transformedData) {\r\n\r\n _this19._data = transformedData;\r\n\r\n ready(_this19._data.output.image);\r\n });\r\n });\r\n }\r\n }, {\r\n key: '_onTransformCanvas',\r\n value: function _onTransformCanvas(data, ready) {\r\n\r\n this._options.onTransform(cloneData(data), ready);\r\n }\r\n\r\n /**\r\n * Creates the editor nodes\r\n * @private\r\n */\r\n }, {\r\n key: '_appendEditor',\r\n value: function _appendEditor() {\r\n var _this20 = this;\r\n\r\n // we already have an editor\r\n if (this._imageEditor) {\r\n return;\r\n }\r\n\r\n // add editor\r\n this._imageEditor = new ImageEditor(create('div'), {\r\n minSize: this._options.minSize,\r\n\r\n buttonConfirmClassName: 'slim-btn-confirm',\r\n buttonCancelClassName: 'slim-btn-cancel',\r\n\r\n buttonConfirmLabel: this._options.buttonConfirmLabel,\r\n buttonCancelLabel: this._options.buttonCancelLabel,\r\n\r\n buttonConfirmTitle: this._options.buttonConfirmTitle,\r\n buttonCancelTitle: this._options.buttonCancelTitle\r\n\r\n });\r\n\r\n // listen to events\r\n ImageEditorEvents.forEach(function (e) {\r\n _this20._imageEditor.element.addEventListener(e, _this20);\r\n });\r\n }\r\n }, {\r\n key: '_scaleDropArea',\r\n value: function _scaleDropArea(ratio) {\r\n var node = this._getRatioSpacerElement();\r\n node.style.marginBottom = ratio * 100 + '%';\r\n this._element.setAttribute('data-ratio', '1:' + ratio);\r\n }\r\n\r\n /**\r\n * Data Layer\r\n * @private\r\n */\r\n // image editor closed\r\n }, {\r\n key: '_onCancel',\r\n value: function _onCancel(e) {\r\n\r\n this._removeState('editor');\r\n\r\n this._showButtons();\r\n\r\n this._hideEditor();\r\n }\r\n\r\n // user confirmed changes\r\n }, {\r\n key: '_onConfirm',\r\n value: function _onConfirm(e) {\r\n var _this21 = this;\r\n\r\n this._removeState('editor');\r\n\r\n this._startProgressLoop();\r\n this._addState('busy');\r\n\r\n // clear data\r\n this._output.value = '';\r\n\r\n // apply new action object to this._data\r\n this._data.actions.crop = e.detail.crop;\r\n this._data.actions.crop.type = CropType.MANUAL;\r\n\r\n // do transforms\r\n this._applyTransforms(this._data.input.image, function (transformedImage) {\r\n\r\n // set new image result\r\n var images = _this21._getInOut();\r\n var intro = images[0].className === 'out' ? images[0] : images[1];\r\n var outro = intro === images[0] ? images[1] : images[0];\r\n\r\n intro.className = 'in';\r\n intro.style.opacity = '0';\r\n intro.style.zIndex = '2';\r\n outro.className = 'out';\r\n outro.style.zIndex = '1';\r\n\r\n // new image get's\r\n intro.src = cloneCanvasScaled(transformedImage, intro.offsetWidth / transformedImage.width).toDataURL();\r\n intro.onload = function () {\r\n\r\n intro.onload = null;\r\n\r\n // scale the dropzone\r\n if (_this21._options.ratio === 'free') {\r\n _this21._ratio = intro.naturalHeight / intro.naturalWidth;\r\n _this21._scaleDropArea(_this21._ratio);\r\n }\r\n\r\n // close the editor\r\n _this21._hideEditor();\r\n\r\n // wait a tiny bit so animations sync up nicely\r\n setTimeout(function () {\r\n\r\n // show the preview\r\n _this21._showPreview(intro, function () {\r\n\r\n // if\r\n // - service set\r\n // - and we are pushing\r\n // we will upload\r\n var willUpload = _this21._options.service && _this21._options.push;\r\n\r\n // save the data\r\n _this21._save(function (err, res) {\r\n\r\n // done!\r\n _this21._toggleButton('upload', true);\r\n\r\n _this21._stopProgressLoop();\r\n _this21._removeState('busy');\r\n\r\n _this21._showButtons();\r\n\r\n // if server returns a path, use server path for new image\r\n if (!res || !res.path) {\r\n return;\r\n }\r\n intro.src = res.path;\r\n }, willUpload);\r\n });\r\n }, 250);\r\n };\r\n });\r\n }\r\n }, {\r\n key: '_save',\r\n value: function _save() {\r\n var _this22 = this;\r\n\r\n var callback = arguments.length <= 0 || arguments[0] === undefined ? function () {} : arguments[0];\r\n var allowUpload = arguments.length <= 1 || arguments[1] === undefined ? true : arguments[1];\r\n\r\n // flatten data also turns canvas into data uri's\r\n var data = flattenData(this._data, this._options.post);\r\n\r\n // decide if we need to\r\n // - A. Upload the data\r\n // - B. Store the data in an output field\r\n\r\n // user has final option to alter data\r\n this._options.onSave(data, function (data) {\r\n\r\n // if output field defined and no service store for sync submit\r\n if (_this22._output && !_this22._options.service) {\r\n _this22._store(data);\r\n }\r\n\r\n // is remote service defined up async\r\n if (_this22._options.service && allowUpload) {\r\n _this22._upload(data, function (err, res) {\r\n\r\n // store response\r\n if (!err) {\r\n _this22._storeServerResponse(res);\r\n }\r\n\r\n // upload returned\r\n _this22._options.onComplete(err, res);\r\n\r\n // woo\r\n callback(err, res);\r\n });\r\n }\r\n\r\n // if no service, we're done here\r\n if (!_this22._options.service || !allowUpload) {\r\n callback();\r\n }\r\n });\r\n }\r\n\r\n // stores active file information in hidden output field\r\n }, {\r\n key: '_storeServerResponse',\r\n value: function _storeServerResponse(data) {\r\n\r\n // remove required flag\r\n if (this._isRequired) {\r\n this._input.required = false;\r\n }\r\n\r\n // store data returned from server\r\n this._data.server = data;\r\n\r\n // sync with output value\r\n this._output.value = typeof data === 'object' ? JSON.stringify(this._data.server) : data;\r\n }\r\n\r\n // stores data in output field\r\n }, {\r\n key: '_store',\r\n value: function _store(data) {\r\n\r\n if (this._isRequired) {\r\n this._input.required = false;\r\n }\r\n\r\n this._output.value = JSON.stringify(data);\r\n }\r\n\r\n // uploads given data to server\r\n }, {\r\n key: '_upload',\r\n value: function _upload(data, callback) {\r\n var _this23 = this;\r\n\r\n var fd = new FormData();\r\n fd.append(this._output.name, JSON.stringify(data));\r\n\r\n var statusNode = this._element.querySelector('.slim-upload-status');\r\n\r\n send(this._options.service,\r\n\r\n // data\r\n fd,\r\n\r\n // progress\r\n function (loaded, total) {\r\n\r\n _this23._updateProgress(loaded / total);\r\n },\r\n\r\n // success\r\n function (obj) {\r\n\r\n setTimeout(function () {\r\n\r\n statusNode.innerHTML = _this23._options.statusUploadSuccess;\r\n statusNode.setAttribute('data-state', 'success');\r\n statusNode.style.opacity = 1;\r\n\r\n // hide status update after 2 seconds\r\n setTimeout(function () {\r\n statusNode.style.opacity = 0;\r\n }, 2000);\r\n }, 250);\r\n\r\n callback(null, obj);\r\n },\r\n\r\n // error\r\n function (status) {\r\n\r\n var html = '';\r\n if (status === 'file-too-big') {\r\n html = _this23._options.statusContentLength;\r\n } else {\r\n html = _this23._options.statusUnknownResponse;\r\n }\r\n\r\n // when an error occurs the status update is not automatically hidden\r\n setTimeout(function () {\r\n\r\n statusNode.innerHTML = html;\r\n statusNode.setAttribute('data-state', 'error');\r\n statusNode.style.opacity = 1;\r\n }, 250);\r\n\r\n callback(status);\r\n });\r\n }\r\n }, {\r\n key: '_showEditor',\r\n value: function _showEditor() {\r\n\r\n SlimPopover.show();\r\n\r\n this._imageEditor.show();\r\n }\r\n }, {\r\n key: '_hideEditor',\r\n value: function _hideEditor() {\r\n\r\n this._imageEditor.hide();\r\n\r\n setTimeout(function () {\r\n\r\n SlimPopover.hide();\r\n }, 250);\r\n }\r\n\r\n /**\r\n * Animations\r\n */\r\n }, {\r\n key: '_showPreview',\r\n value: function _showPreview(intro, callback) {\r\n\r\n snabbt(intro, {\r\n\r\n fromPosition: [0, 50, 0],\r\n position: [0, 0, 0],\r\n\r\n fromScale: [1.5, 1.5],\r\n scale: [1, 1],\r\n\r\n fromOpacity: 0,\r\n opacity: 1,\r\n\r\n easing: 'spring',\r\n springConstant: .3,\r\n springDeceleration: .7,\r\n\r\n complete: function complete() {\r\n\r\n resetTransforms(intro);\r\n\r\n if (callback) {\r\n callback();\r\n }\r\n }\r\n\r\n });\r\n }\r\n }, {\r\n key: '_hideResult',\r\n value: function _hideResult(callback) {\r\n\r\n var intro = this._getIntro();\r\n if (!intro) {\r\n return;\r\n }\r\n\r\n snabbt(intro, {\r\n\r\n fromScale: [1, 1],\r\n scale: [.5, .5],\r\n\r\n fromOpacity: 1,\r\n opacity: 0,\r\n\r\n easing: 'spring',\r\n springConstant: .3,\r\n springDeceleration: .75,\r\n\r\n complete: function complete() {\r\n resetTransforms(intro);\r\n\r\n if (callback) {\r\n callback();\r\n }\r\n }\r\n\r\n });\r\n }\r\n }, {\r\n key: '_showButtons',\r\n value: function _showButtons(callback) {\r\n\r\n this._btnGroup.style.display = '';\r\n\r\n // setup animation\r\n var animation = {\r\n fromScale: [.5, .5],\r\n scale: [1, 1],\r\n fromPosition: [0, 10, 0],\r\n position: [0, 0, 0],\r\n fromOpacity: 0,\r\n opacity: 1,\r\n complete: function complete() {\r\n resetTransforms(this);\r\n },\r\n allDone: function allDone() {\r\n if (callback) {\r\n callback();\r\n }\r\n }\r\n };\r\n\r\n // don't animate when detached\r\n if (this.isDetached()) {\r\n animation.duration = 1;\r\n } else {\r\n animation.delay = function (i) {\r\n return 250 + i * 50;\r\n };\r\n animation.easing = 'spring';\r\n animation.springConstant = .3;\r\n animation.springDeceleration = .85;\r\n }\r\n\r\n snabbt(this._btnGroup.childNodes, animation);\r\n }\r\n }, {\r\n key: '_hideButtons',\r\n value: function _hideButtons(callback) {\r\n var _this24 = this;\r\n\r\n var animation = {\r\n fromScale: [1, 1],\r\n scale: [.85, .85],\r\n fromOpacity: 1,\r\n opacity: 0,\r\n allDone: function allDone() {\r\n _this24._btnGroup.style.display = 'none';\r\n if (callback) {\r\n callback();\r\n }\r\n }\r\n };\r\n\r\n // don't animate when detached\r\n if (this.isDetached()) {\r\n animation.duration = 1;\r\n } else {\r\n animation.easing = 'spring';\r\n animation.springConstant = .3;\r\n animation.springDeceleration = .75;\r\n }\r\n\r\n // go hide the buttons\r\n snabbt(this._btnGroup.childNodes, animation);\r\n }\r\n }, {\r\n key: '_hideStatus',\r\n value: function _hideStatus() {\r\n\r\n var statusNode = this._element.querySelector('.slim-upload-status');\r\n statusNode.style.opacity = 0;\r\n }\r\n }, {\r\n key: '_doEdit',\r\n value: function _doEdit() {\r\n var _this25 = this;\r\n\r\n // if no input data available, can't edit anything\r\n if (!this._data.input.image) {\r\n return;\r\n }\r\n\r\n // now in editor mode\r\n this._addState('editor');\r\n\r\n // create editor (if not already created)\r\n if (!this._imageEditor) {\r\n this._appendEditor();\r\n }\r\n\r\n // append to popover\r\n SlimPopover.inner = this._imageEditor.element;\r\n\r\n // read the data\r\n this._imageEditor.open(\r\n\r\n // send copy of canvas to the editor\r\n cloneCanvas(this._data.input.image),\r\n\r\n // determine ratio\r\n this._options.ratio === 'free' ? null : this._ratio,\r\n\r\n // the initial crop to show\r\n this._data.actions.crop,\r\n\r\n // handle editor load\r\n function () {\r\n\r\n _this25._showEditor();\r\n\r\n _this25._hideButtons();\r\n\r\n _this25._hideStatus();\r\n });\r\n }\r\n }, {\r\n key: '_doRemove',\r\n value: function _doRemove() {\r\n var _this26 = this;\r\n\r\n // cannot remove when is only one image\r\n if (this._isImageOnly()) {\r\n return;\r\n }\r\n\r\n this._clearState();\r\n this._addState('empty');\r\n\r\n this._hasInitialImage = false;\r\n this._imageHopper.enabled = true;\r\n\r\n if (this._isRequired) {\r\n this._input.required = true;\r\n }\r\n\r\n var out = this._getOutro();\r\n if (out) {\r\n out.style.opacity = '0';\r\n }\r\n\r\n // get public available clone of data\r\n var data = this.data;\r\n\r\n // now reset all data\r\n this._resetData();\r\n\r\n setTimeout(function () {\r\n\r\n if (_this26._isBeingDestroyed) {\r\n return;\r\n }\r\n\r\n _this26._hideButtons(function () {\r\n\r\n _this26._toggleButton('upload', true);\r\n });\r\n\r\n _this26._hideStatus();\r\n\r\n _this26._hideResult();\r\n\r\n _this26._options.onRemove(_this26, data);\r\n }, this.isDetached() ? 0 : 250);\r\n\r\n return data;\r\n }\r\n }, {\r\n key: '_doUpload',\r\n value: function _doUpload(callback) {\r\n var _this27 = this;\r\n\r\n // if no input data available, can't upload anything\r\n if (!this._data.input.image) {\r\n return;\r\n }\r\n\r\n this._addState('upload');\r\n this._startProgress();\r\n\r\n this._hideButtons(function () {\r\n\r\n // block upload button\r\n _this27._toggleButton('upload', false);\r\n\r\n _this27._save(function (err, res) {\r\n\r\n _this27._removeState('upload');\r\n _this27._stopProgress();\r\n\r\n if (callback) {\r\n callback(err, res);\r\n }\r\n\r\n if (err) {\r\n _this27._toggleButton('upload', true);\r\n }\r\n\r\n _this27._showButtons();\r\n });\r\n });\r\n }\r\n }, {\r\n key: '_doDownload',\r\n value: function _doDownload() {\r\n\r\n var image = this._data.output.image;\r\n if (!image) {\r\n return;\r\n }\r\n\r\n var filename = this._data.input.name;\r\n var mimetype = this._data.input.type;\r\n\r\n image.toBlob(function (blob) {\r\n\r\n var link = create('a');\r\n link.download = filename;\r\n link.href = URL.createObjectURL(blob);\r\n link.click();\r\n }, mimetype);\r\n }\r\n }, {\r\n key: '_doDestroy',\r\n value: function _doDestroy() {\r\n var _this28 = this;\r\n\r\n // set destroy flag to halt any running functionality\r\n this._isBeingDestroyed = true;\r\n\r\n // this removes the image hopper if it's attached\r\n if (this._imageHopper) {\r\n HopperEvents.forEach(function (e) {\r\n _this28._imageHopper.element.removeEventListener(e, _this28);\r\n });\r\n this._imageHopper.destroy();\r\n }\r\n\r\n // this block removes the image editor\r\n if (this._imageEditor) {\r\n ImageEditorEvents.forEach(function (e) {\r\n _this28._imageEditor.element.removeEventListener(e, _this28);\r\n });\r\n this._imageEditor.destroy();\r\n }\r\n\r\n // remove button event listeners\r\n nodeListToArray(this._btnGroup.children).forEach(function (btn) {\r\n btn.removeEventListener('click', _this28);\r\n });\r\n\r\n // stop listening to input\r\n this._input.removeEventListener('change', this);\r\n\r\n // detect if was wrapped, if so, remove wrapping (needs to have parent node)\r\n if (this._element !== this._originalElement && this._element.parentNode) {\r\n this._element.parentNode.replaceChild(this._originalElement, this._element);\r\n }\r\n\r\n // restore HTML of original element\r\n this._originalElement.innerHTML = this._originalElementInner;\r\n\r\n // get current attributes and remove all, then add original attributes\r\n function matchesAttributeInList(a, attributes) {\r\n return attributes.filter(function (attr) {\r\n return a.name === attr.name && a.value === attr.value;\r\n }).length !== 0;\r\n }\r\n\r\n var attributes = getElementAttributes(this._originalElement);\r\n attributes.forEach(function (attribute) {\r\n\r\n // if attribute is contained in original element attribute list and is the same, don't remove\r\n if (matchesAttributeInList(attribute, _this28._originalElementAttributes)) {\r\n return;\r\n }\r\n\r\n // else remove\r\n _this28._originalElement.removeAttribute(attribute.name);\r\n });\r\n\r\n this._originalElementAttributes.forEach(function (attribute) {\r\n\r\n // attribute was never removed\r\n if (matchesAttributeInList(attribute, attributes)) {\r\n return;\r\n }\r\n\r\n // add attribute\r\n _this28._originalElement.setAttribute(attribute.name, attribute.value);\r\n });\r\n\r\n // now destroyed this counter so the total Slim count can be lowered\r\n SlimCount = Math.max(0, SlimCount - 1);\r\n\r\n // if slim count has reached 0 it's time to clean up the popover\r\n if (SlimPopover && SlimCount === 0) {\r\n SlimPopover.destroy();\r\n SlimPopover = null;\r\n }\r\n }\r\n }, {\r\n key: 'data',\r\n\r\n /**\r\n * Public API\r\n */\r\n\r\n // properties\r\n get: function get() {\r\n return cloneData(this._data);\r\n }\r\n }], [{\r\n key: 'options',\r\n value: function options() {\r\n\r\n var defaults = {\r\n\r\n // edit button is enabled by default\r\n edit: true,\r\n\r\n // ratio of crop by default is the same as input image ratio\r\n ratio: 'free',\r\n\r\n // dimensions to resize the resulting image to\r\n size: null,\r\n\r\n // initial crop settings for example: {x:0, y:0, width:100, height:100}\r\n crop: null,\r\n\r\n // post these values\r\n post: ['output', 'actions'],\r\n\r\n // call this service to submit cropped data\r\n service: null,\r\n\r\n // when service is set, and this is set to true, Soon will auto upload all crops (also auto crops)\r\n push: false,\r\n\r\n // default fallback name for field\r\n defaultInputName: 'slim[]',\r\n\r\n // minimum size of cropped area object with width and height property\r\n minSize: {\r\n width: 100,\r\n height: 100\r\n },\r\n\r\n // maximum file size in MB to upload\r\n maxFileSize: null,\r\n\r\n // render download link\r\n download: false,\r\n\r\n // label HTML to show inside drop area\r\n label: '

Drop your image here

',\r\n\r\n // error messages\r\n statusFileType: '

Invalid file type, expects: $0.

',\r\n statusFileSize: '

File is too big, maximum file size: $0 MB.

',\r\n statusNoSupport: '

Your browser does not support image cropping.

',\r\n statusContentLength: ' The file is probably too big',\r\n statusUnknownResponse: ' An unknown error occurred',\r\n statusUploadSuccess: ' Saved',\r\n\r\n // callback methods\r\n onInit: function onInit(slim) {},\r\n onTransform: function onTransform(data, cb) {\r\n cb(data);\r\n },\r\n onSave: function onSave(data, cb) {\r\n cb(data);\r\n },\r\n onComplete: function onComplete(err, res) {},\r\n onBeforeRemove: function onBeforeRemove(slim, cb) {\r\n cb();\r\n },\r\n onRemove: function onRemove(slim, data) {}\r\n\r\n };\r\n\r\n // add default button labels\r\n SlimButtons.concat(ImageEditorButtons).forEach(function (btn) {\r\n var capitalized = capitalizeFirstLetter(btn);\r\n defaults['button' + capitalized + 'ClassName'] = null;\r\n defaults['button' + capitalized + 'Label'] = capitalized;\r\n defaults['button' + capitalized + 'Title'] = null;\r\n });\r\n\r\n return defaults;\r\n }\r\n }]);\r\n\r\n return Slim;\r\n})();\r\n\r\n(function () {\r\n\r\n var instances = [];\r\n\r\n var indexOfElement = function indexOfElement(element) {\r\n var i = 0;\r\n var l = instances.length;\r\n for (; i < l; i++) {\r\n if (instances[i].isAttachedTo(element)) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n };\r\n\r\n function getData(el, attribute) {\r\n return el.getAttribute('data-' + attribute);\r\n }\r\n\r\n function toAttribute(property) {\r\n return property.replace(/([a-z](?=[A-Z]))/g, '$1-').toLowerCase();\r\n }\r\n\r\n function clone(value) {\r\n if (typeof value === 'object') {\r\n return JSON.parse(JSON.stringify(value));\r\n }\r\n return value;\r\n }\r\n\r\n function toLabel(v) {\r\n // if value set, use as label\r\n if (v) {\r\n return '

' + v + '

';\r\n }\r\n\r\n // else use default text\r\n return null;\r\n }\r\n\r\n function toFunctionReference(name) {\r\n var ref = window;\r\n var levels = name.split('.');\r\n levels.forEach(function (level, index) {\r\n ref = ref[levels[index]];\r\n });\r\n return ref;\r\n }\r\n\r\n var passThrough = function passThrough(e, v) {\r\n return v;\r\n };\r\n var defaultFalse = function defaultFalse(e, v) {\r\n return v === 'true';\r\n };\r\n var defaultTrue = function defaultTrue(e, v) {\r\n return v ? v === 'true' : true;\r\n };\r\n var defaultLabel = function defaultLabel(e, v) {\r\n return toLabel(v);\r\n };\r\n var defaultFunction = function defaultFunction(e, v) {\r\n return v ? toFunctionReference(v) : null;\r\n };\r\n var defaultSize = function defaultSize(e, v) {\r\n if (!v) {\r\n return null;\r\n }\r\n var parts = intSplit(v, ',');\r\n return { width: parts[0], height: parts[1] };\r\n };\r\n\r\n var toRect = function toRect(e, v) {\r\n if (!v) {\r\n return null;\r\n }\r\n var obj = {};\r\n v.split(',').map(function (p) {\r\n return parseInt(p, 10);\r\n }).forEach(function (v, i) {\r\n obj[Rect[i]] = v;\r\n });\r\n return obj;\r\n };\r\n\r\n var defaults = {\r\n\r\n // is user allowed to download the cropped image?\r\n 'download': defaultFalse,\r\n\r\n // is user allowed to edit the cropped image?\r\n 'edit': defaultTrue,\r\n\r\n // minimum crop size in pixels of original image\r\n 'minSize': defaultSize,\r\n\r\n // the final size of the output image\r\n 'size': defaultSize,\r\n\r\n // url to post to\r\n 'service': function service(e, v) {\r\n return typeof v === 'undefined' ? null : v;\r\n },\r\n\r\n // set auto push mode\r\n 'push': defaultFalse,\r\n\r\n // set crop rect\r\n 'crop': toRect,\r\n\r\n // what to post\r\n 'post': function post(e, v) {\r\n if (!v) {\r\n return null;\r\n }\r\n return v.split(',').map(function (item) {\r\n return item.trim();\r\n });\r\n },\r\n\r\n // default input name\r\n 'defaultInputName': passThrough,\r\n\r\n // the ratio of the crop\r\n 'ratio': function ratio(e, v) {\r\n if (!v) {\r\n return null;\r\n }\r\n return v;\r\n },\r\n\r\n // maximum file size\r\n 'maxFileSize': function maxFileSize(e, v) {\r\n if (!v) {\r\n return null;\r\n }\r\n return parseFloat(v);\r\n },\r\n\r\n // default labels\r\n 'label': defaultLabel\r\n\r\n };\r\n\r\n // labels\r\n ['FileSize', 'FileType', 'NoSupport'].forEach(function (status) {\r\n defaults['status' + status] = defaultLabel;\r\n });\r\n\r\n // status\r\n ['ContentLength', 'UnknownResponse', 'UploadSuccess'].forEach(function (status) {\r\n defaults['status' + status] = passThrough;\r\n });\r\n\r\n // the events to bind to\r\n ['Init', 'Transform', 'Save', 'Complete', 'BeforeRemove', 'Remove'].forEach(function (cb) {\r\n defaults['on' + cb] = defaultFunction;\r\n });\r\n\r\n // button defaults\r\n var buttonOptions = ['ClassName', 'Label', 'Title'];\r\n SlimButtons.concat(ImageEditorButtons).forEach(function (btn) {\r\n var capitalized = capitalizeFirstLetter(btn);\r\n buttonOptions.forEach(function (opt) {\r\n defaults['button' + capitalized + opt] = passThrough;\r\n });\r\n });\r\n\r\n Slim.supported = (function () {\r\n\r\n return typeof window.FileReader !== 'undefined';\r\n })();\r\n\r\n Slim.parse = function (context) {\r\n\r\n var elements;\r\n var element;\r\n var i;\r\n var options;\r\n var value;\r\n var prop;\r\n var croppers = [];\r\n\r\n // find all crop elements and bind Crop behavior\r\n elements = context.querySelectorAll('.slim:not([data-state])');\r\n i = elements.length;\r\n\r\n while (i--) {\r\n\r\n element = elements[i];\r\n options = {};\r\n\r\n for (prop in defaults) {\r\n if (!defaults.hasOwnProperty(prop)) {\r\n continue;\r\n }\r\n value = defaults[prop](element, getData(element, toAttribute(prop)));\r\n options[prop] = value === null ? clone(Slim.options()[prop]) : value;\r\n }\r\n\r\n croppers.push(Slim.create(element, options));\r\n }\r\n\r\n return croppers;\r\n };\r\n\r\n Slim.find = function (element) {\r\n var result = instances.filter(function (instance) {\r\n return instance.isAttachedTo(element);\r\n });\r\n return result ? result[0] : null;\r\n };\r\n\r\n Slim.create = function (element, options) {\r\n\r\n // if already in array, can't create another slim\r\n if (Slim.find(element)) {\r\n return;\r\n }\r\n\r\n // instance\r\n var slim = new Slim(element, options);\r\n\r\n // add new slim\r\n instances.push(slim);\r\n\r\n // return the slim instance\r\n return slim;\r\n };\r\n\r\n Slim.destroy = function (element) {\r\n\r\n var index = indexOfElement(element);\r\n\r\n if (index < 0) {\r\n return false;\r\n }\r\n\r\n instances[index].destroy();\r\n instances[index] = null;\r\n instances.splice(index, 1);\r\n return true;\r\n };\r\n})();\r\n return Slim;\r\n}();\r\n\r\n // constants\r\n var scope = 'slim';\r\n\r\n // helper methods\r\n function argsToArray(args) {\r\n return Array.prototype.slice.call(args);\r\n }\r\n \r\n function capitalizeFirstLetter(string) {\r\n return string.charAt(0).toUpperCase() + string.slice(1);\r\n }\r\n\r\n function addTojQuery(endpoint) {\r\n $.fn[scope + (endpoint === 'create' ? '' : capitalizeFirstLetter(endpoint))] = function() {\r\n var args = argsToArray(arguments);\r\n return this.each(function(){\r\n Slim[endpoint].apply(Slim[endpoint],[this].concat(args));\r\n })\r\n }\r\n }\r\n\r\n // transfer endpoints\r\n for (var endpoint in Slim) {\r\n if (!Slim.hasOwnProperty(endpoint)) {continue;}\r\n addTojQuery(endpoint);\r\n }\r\n\r\n}(window.jQuery));","import Swal from 'sweetalert2';\r\nimport jQuery from 'jquery';\r\nimport 'jquery-mask-plugin';\r\nimport 'select2';\r\nimport 'materialize-css';\r\nimport 'jquery-validation';\r\n\r\nglobal.$ = global.jQuery = jQuery;\r\n\r\nwindow.Swal = Swal;\r\n\r\njQuery.validator.addMethod(\"cnpj\", function (value, element) {\r\n\r\n var numeros, digitos, soma, i, resultado, pos, tamanho, digitos_iguais;\r\n if (value.length == 0) {\r\n return false;\r\n }\r\n\r\n value = value.replace(/\\D+/g, '');\r\n digitos_iguais = 1;\r\n\r\n for (i = 0; i < value.length - 1; i++)\r\n if (value.charAt(i) != value.charAt(i + 1)) {\r\n digitos_iguais = 0;\r\n break;\r\n }\r\n if (digitos_iguais)\r\n return false;\r\n\r\n tamanho = value.length - 2;\r\n numeros = value.substring(0, tamanho);\r\n digitos = value.substring(tamanho);\r\n soma = 0;\r\n pos = tamanho - 7;\r\n for (i = tamanho; i >= 1; i--) {\r\n soma += numeros.charAt(tamanho - i) * pos--;\r\n if (pos < 2)\r\n pos = 9;\r\n }\r\n resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;\r\n if (resultado != digitos.charAt(0)) {\r\n return false;\r\n }\r\n tamanho = tamanho + 1;\r\n numeros = value.substring(0, tamanho);\r\n soma = 0;\r\n pos = tamanho - 7;\r\n for (i = tamanho; i >= 1; i--) {\r\n soma += numeros.charAt(tamanho - i) * pos--;\r\n if (pos < 2)\r\n pos = 9;\r\n }\r\n\r\n resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;\r\n\r\n return (resultado == digitos.charAt(1));\r\n})\r\n\r\njQuery.validator.addMethod(\"cpf\", function (value, element) {\r\n value = jQuery.trim(value);\r\n\r\n value = value.replace('.', '');\r\n value = value.replace('.', '');\r\n var cpf = value.replace('-', '');\r\n while (cpf.length < 11) cpf = \"0\" + cpf;\r\n var expReg = /^0+$|^1+$|^2+$|^3+$|^4+$|^5+$|^6+$|^7+$|^8+$|^9+$/;\r\n var a = [];\r\n var b = new Number;\r\n var c = 11;\r\n var x,y;\r\n for (var i = 0; i < 11; i++) {\r\n a[i] = cpf.charAt(i);\r\n if (i < 9) b += (a[i] * --c);\r\n }\r\n if ((x = b % 11) < 2) { a[9] = 0 } else { a[9] = 11 - x }\r\n b = 0;\r\n c = 11;\r\n for (y = 0; y < 10; y++) b += (a[y] * c--);\r\n if ((x = b % 11) < 2) { a[10] = 0; } else { a[10] = 11 - x; }\r\n if ((cpf.charAt(9) != a[9]) || (cpf.charAt(10) != a[10]) || cpf.match(expReg)) return false;\r\n return true;\r\n}, \"Informe um CPF válido.\"); // Mensagem padrão\r\n\r\n\r\n\r\n","import '../slim.jquery';\r\n\r\n$(document).ready(function($){\r\n\r\n var url = $('base').attr('href');\r\n\r\n M.AutoInit();\r\n\r\n $(window).on(\"scroll\", function() {\r\n 100 < $(window).scrollTop() ? $(\"header\").addClass(\"menu-fixed\") : $(\"header\").removeClass(\"menu-fixed\")\r\n })\r\n\r\n $('.select2').select2();\r\n\r\n var TelMaskBehavior = function (val) {\r\n return val.replace(/\\D/g, '').length === 11 ? '(00) 00000-0000' : '(00) 0000-00009';\r\n },\r\n spOptions = {\r\n onKeyPress: function(val, e, field, options) {\r\n field.mask(TelMaskBehavior.apply({}, arguments), options);\r\n }\r\n };\r\n \r\n\r\n $('#cep').mask('00000-000');\r\n $('#cnpj').mask('00.000.000/0000-00');\r\n $('#cpf').mask('000.000.000-00');\r\n $('#telefone').mask(TelMaskBehavior, spOptions);\r\n $('#telefone_imobiliaria').mask(TelMaskBehavior, spOptions);\r\n $('#telefone_gestor').mask(TelMaskBehavior, spOptions);\r\n\r\n $('.user-image').slim({\r\n ratio: '1:1',\r\n minSize: {\r\n width: 400,\r\n height: 400,\r\n },\r\n download: false,\r\n label: 'image
Imagem perfil',\r\n buttonConfirmLabel: 'Ok',\r\n });\r\n\r\n $('.imobiliaria-image').slim({\r\n ratio: '1:1',\r\n minSize: {\r\n width: 400,\r\n height: 400,\r\n },\r\n download: false,\r\n label: 'image
Imagem imobiliária',\r\n buttonConfirmLabel: 'Ok',\r\n });\r\n\r\n \r\n /* BUSCA DE ENDERECO POR CEP */\r\n $('#cep').keyup(function() {\r\n var cep = $(this).val().replace(/[^\\d]+/g,'');\r\n if(cep.length == 8){\r\n var verify = $.trim(cep);\r\n $.ajax({\r\n url: url+\"/getCep/\"+verify,\r\n dataType: 'json',\r\n type: 'GET',\r\n success: function(resultadoCEP) {\r\n\r\n if(resultadoCEP.status){\r\n $(\"#estado_imobiliaria\").val(resultadoCEP['estado_id']).select2();\r\n resultadoCEP['cidades'].forEach(function(e, i){\r\n $('select#cidade_imobiliaria').append($('';\r\n for (var i = 0; i < j.length; i++) {\r\n options += '';\r\n }\r\n $('select[name=\"cidade_id\"]').html(options);\r\n });\r\n } \r\n });\r\n });\r\n \r\n if( $('#estado option:selected').val()) {\r\n var val = $('#estado option:selected').val();\r\n $.getJSON(url+'/getCidades/'+ val, function(j){\r\n var options = '';\r\n for (var i = 0; i < j.length; i++) {\r\n options += '';\r\n }\r\n $('#cidade').html(options);\r\n });\r\n }\r\n\r\n //Estados e cidades Imobiliaria\r\n $(function(){\r\n $('#estado_imobiliaria').change(function(){\r\n if( $(this).val() ) {\r\n $.getJSON(url+'/getCidades/'+$(this).val(), function(j){\r\n var options = '';\r\n for (var i = 0; i < j.length; i++) {\r\n options += '';\r\n }\r\n $('#cidade_imobiliaria').html(options);\r\n });\r\n } \r\n });\r\n });\r\n \r\n if( $('#estado_imobiliaria option:selected').val()) {\r\n var val = $('#estado_imobiliaria option:selected').val();\r\n $.getJSON(url+'/getCidades/'+ val, function(j){\r\n var options = '';\r\n for (var i = 0; i < j.length; i++) {\r\n options += '';\r\n }\r\n $('#cidade_imobiliaria').html(options);\r\n });\r\n }\r\n\r\n\r\n});","/*!\n * Materialize v1.0.0 (http://materializecss.com)\n * Copyright 2014-2017 Materialize\n * MIT License (https://raw.githubusercontent.com/Dogfalo/materialize/master/LICENSE)\n */\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/*! cash-dom 1.3.5, https://github.com/kenwheeler/cash @license MIT */\n(function (factory) {\n window.cash = factory();\n})(function () {\n var doc = document,\n win = window,\n ArrayProto = Array.prototype,\n slice = ArrayProto.slice,\n filter = ArrayProto.filter,\n push = ArrayProto.push;\n\n var noop = function () {},\n isFunction = function (item) {\n // @see https://crbug.com/568448\n return typeof item === typeof noop && item.call;\n },\n isString = function (item) {\n return typeof item === typeof \"\";\n };\n\n var idMatch = /^#[\\w-]*$/,\n classMatch = /^\\.[\\w-]*$/,\n htmlMatch = /<.+>/,\n singlet = /^\\w+$/;\n\n function find(selector, context) {\n context = context || doc;\n var elems = classMatch.test(selector) ? context.getElementsByClassName(selector.slice(1)) : singlet.test(selector) ? context.getElementsByTagName(selector) : context.querySelectorAll(selector);\n return elems;\n }\n\n var frag;\n function parseHTML(str) {\n if (!frag) {\n frag = doc.implementation.createHTMLDocument(null);\n var base = frag.createElement(\"base\");\n base.href = doc.location.href;\n frag.head.appendChild(base);\n }\n\n frag.body.innerHTML = str;\n\n return frag.body.childNodes;\n }\n\n function onReady(fn) {\n if (doc.readyState !== \"loading\") {\n fn();\n } else {\n doc.addEventListener(\"DOMContentLoaded\", fn);\n }\n }\n\n function Init(selector, context) {\n if (!selector) {\n return this;\n }\n\n // If already a cash collection, don't do any further processing\n if (selector.cash && selector !== win) {\n return selector;\n }\n\n var elems = selector,\n i = 0,\n length;\n\n if (isString(selector)) {\n elems = idMatch.test(selector) ?\n // If an ID use the faster getElementById check\n doc.getElementById(selector.slice(1)) : htmlMatch.test(selector) ?\n // If HTML, parse it into real elements\n parseHTML(selector) :\n // else use `find`\n find(selector, context);\n\n // If function, use as shortcut for DOM ready\n } else if (isFunction(selector)) {\n onReady(selector);return this;\n }\n\n if (!elems) {\n return this;\n }\n\n // If a single DOM element is passed in or received via ID, return the single element\n if (elems.nodeType || elems === win) {\n this[0] = elems;\n this.length = 1;\n } else {\n // Treat like an array and loop through each item.\n length = this.length = elems.length;\n for (; i < length; i++) {\n this[i] = elems[i];\n }\n }\n\n return this;\n }\n\n function cash(selector, context) {\n return new Init(selector, context);\n }\n\n var fn = cash.fn = cash.prototype = Init.prototype = { // jshint ignore:line\n cash: true,\n length: 0,\n push: push,\n splice: ArrayProto.splice,\n map: ArrayProto.map,\n init: Init\n };\n\n Object.defineProperty(fn, \"constructor\", { value: cash });\n\n cash.parseHTML = parseHTML;\n cash.noop = noop;\n cash.isFunction = isFunction;\n cash.isString = isString;\n\n cash.extend = fn.extend = function (target) {\n target = target || {};\n\n var args = slice.call(arguments),\n length = args.length,\n i = 1;\n\n if (args.length === 1) {\n target = this;\n i = 0;\n }\n\n for (; i < length; i++) {\n if (!args[i]) {\n continue;\n }\n for (var key in args[i]) {\n if (args[i].hasOwnProperty(key)) {\n target[key] = args[i][key];\n }\n }\n }\n\n return target;\n };\n\n function each(collection, callback) {\n var l = collection.length,\n i = 0;\n\n for (; i < l; i++) {\n if (callback.call(collection[i], collection[i], i, collection) === false) {\n break;\n }\n }\n }\n\n function matches(el, selector) {\n var m = el && (el.matches || el.webkitMatchesSelector || el.mozMatchesSelector || el.msMatchesSelector || el.oMatchesSelector);\n return !!m && m.call(el, selector);\n }\n\n function getCompareFunction(selector) {\n return (\n /* Use browser's `matches` function if string */\n isString(selector) ? matches :\n /* Match a cash element */\n selector.cash ? function (el) {\n return selector.is(el);\n } :\n /* Direct comparison */\n function (el, selector) {\n return el === selector;\n }\n );\n }\n\n function unique(collection) {\n return cash(slice.call(collection).filter(function (item, index, self) {\n return self.indexOf(item) === index;\n }));\n }\n\n cash.extend({\n merge: function (first, second) {\n var len = +second.length,\n i = first.length,\n j = 0;\n\n for (; j < len; i++, j++) {\n first[i] = second[j];\n }\n\n first.length = i;\n return first;\n },\n\n each: each,\n matches: matches,\n unique: unique,\n isArray: Array.isArray,\n isNumeric: function (n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n }\n\n });\n\n var uid = cash.uid = \"_cash\" + Date.now();\n\n function getDataCache(node) {\n return node[uid] = node[uid] || {};\n }\n\n function setData(node, key, value) {\n return getDataCache(node)[key] = value;\n }\n\n function getData(node, key) {\n var c = getDataCache(node);\n if (c[key] === undefined) {\n c[key] = node.dataset ? node.dataset[key] : cash(node).attr(\"data-\" + key);\n }\n return c[key];\n }\n\n function removeData(node, key) {\n var c = getDataCache(node);\n if (c) {\n delete c[key];\n } else if (node.dataset) {\n delete node.dataset[key];\n } else {\n cash(node).removeAttr(\"data-\" + name);\n }\n }\n\n fn.extend({\n data: function (name, value) {\n if (isString(name)) {\n return value === undefined ? getData(this[0], name) : this.each(function (v) {\n return setData(v, name, value);\n });\n }\n\n for (var key in name) {\n this.data(key, name[key]);\n }\n\n return this;\n },\n\n removeData: function (key) {\n return this.each(function (v) {\n return removeData(v, key);\n });\n }\n\n });\n\n var notWhiteMatch = /\\S+/g;\n\n function getClasses(c) {\n return isString(c) && c.match(notWhiteMatch);\n }\n\n function hasClass(v, c) {\n return v.classList ? v.classList.contains(c) : new RegExp(\"(^| )\" + c + \"( |$)\", \"gi\").test(v.className);\n }\n\n function addClass(v, c, spacedName) {\n if (v.classList) {\n v.classList.add(c);\n } else if (spacedName.indexOf(\" \" + c + \" \")) {\n v.className += \" \" + c;\n }\n }\n\n function removeClass(v, c) {\n if (v.classList) {\n v.classList.remove(c);\n } else {\n v.className = v.className.replace(c, \"\");\n }\n }\n\n fn.extend({\n addClass: function (c) {\n var classes = getClasses(c);\n\n return classes ? this.each(function (v) {\n var spacedName = \" \" + v.className + \" \";\n each(classes, function (c) {\n addClass(v, c, spacedName);\n });\n }) : this;\n },\n\n attr: function (name, value) {\n if (!name) {\n return undefined;\n }\n\n if (isString(name)) {\n if (value === undefined) {\n return this[0] ? this[0].getAttribute ? this[0].getAttribute(name) : this[0][name] : undefined;\n }\n\n return this.each(function (v) {\n if (v.setAttribute) {\n v.setAttribute(name, value);\n } else {\n v[name] = value;\n }\n });\n }\n\n for (var key in name) {\n this.attr(key, name[key]);\n }\n\n return this;\n },\n\n hasClass: function (c) {\n var check = false,\n classes = getClasses(c);\n if (classes && classes.length) {\n this.each(function (v) {\n check = hasClass(v, classes[0]);\n return !check;\n });\n }\n return check;\n },\n\n prop: function (name, value) {\n if (isString(name)) {\n return value === undefined ? this[0][name] : this.each(function (v) {\n v[name] = value;\n });\n }\n\n for (var key in name) {\n this.prop(key, name[key]);\n }\n\n return this;\n },\n\n removeAttr: function (name) {\n return this.each(function (v) {\n if (v.removeAttribute) {\n v.removeAttribute(name);\n } else {\n delete v[name];\n }\n });\n },\n\n removeClass: function (c) {\n if (!arguments.length) {\n return this.attr(\"class\", \"\");\n }\n var classes = getClasses(c);\n return classes ? this.each(function (v) {\n each(classes, function (c) {\n removeClass(v, c);\n });\n }) : this;\n },\n\n removeProp: function (name) {\n return this.each(function (v) {\n delete v[name];\n });\n },\n\n toggleClass: function (c, state) {\n if (state !== undefined) {\n return this[state ? \"addClass\" : \"removeClass\"](c);\n }\n var classes = getClasses(c);\n return classes ? this.each(function (v) {\n var spacedName = \" \" + v.className + \" \";\n each(classes, function (c) {\n if (hasClass(v, c)) {\n removeClass(v, c);\n } else {\n addClass(v, c, spacedName);\n }\n });\n }) : this;\n } });\n\n fn.extend({\n add: function (selector, context) {\n return unique(cash.merge(this, cash(selector, context)));\n },\n\n each: function (callback) {\n each(this, callback);\n return this;\n },\n\n eq: function (index) {\n return cash(this.get(index));\n },\n\n filter: function (selector) {\n if (!selector) {\n return this;\n }\n\n var comparator = isFunction(selector) ? selector : getCompareFunction(selector);\n\n return cash(filter.call(this, function (e) {\n return comparator(e, selector);\n }));\n },\n\n first: function () {\n return this.eq(0);\n },\n\n get: function (index) {\n if (index === undefined) {\n return slice.call(this);\n }\n return index < 0 ? this[index + this.length] : this[index];\n },\n\n index: function (elem) {\n var child = elem ? cash(elem)[0] : this[0],\n collection = elem ? this : cash(child).parent().children();\n return slice.call(collection).indexOf(child);\n },\n\n last: function () {\n return this.eq(-1);\n }\n\n });\n\n var camelCase = function () {\n var camelRegex = /(?:^\\w|[A-Z]|\\b\\w)/g,\n whiteSpace = /[\\s-_]+/g;\n return function (str) {\n return str.replace(camelRegex, function (letter, index) {\n return letter[index === 0 ? \"toLowerCase\" : \"toUpperCase\"]();\n }).replace(whiteSpace, \"\");\n };\n }();\n\n var getPrefixedProp = function () {\n var cache = {},\n doc = document,\n div = doc.createElement(\"div\"),\n style = div.style;\n\n return function (prop) {\n prop = camelCase(prop);\n if (cache[prop]) {\n return cache[prop];\n }\n\n var ucProp = prop.charAt(0).toUpperCase() + prop.slice(1),\n prefixes = [\"webkit\", \"moz\", \"ms\", \"o\"],\n props = (prop + \" \" + prefixes.join(ucProp + \" \") + ucProp).split(\" \");\n\n each(props, function (p) {\n if (p in style) {\n cache[p] = prop = cache[prop] = p;\n return false;\n }\n });\n\n return cache[prop];\n };\n }();\n\n cash.prefixedProp = getPrefixedProp;\n cash.camelCase = camelCase;\n\n fn.extend({\n css: function (prop, value) {\n if (isString(prop)) {\n prop = getPrefixedProp(prop);\n return arguments.length > 1 ? this.each(function (v) {\n return v.style[prop] = value;\n }) : win.getComputedStyle(this[0])[prop];\n }\n\n for (var key in prop) {\n this.css(key, prop[key]);\n }\n\n return this;\n }\n\n });\n\n function compute(el, prop) {\n return parseInt(win.getComputedStyle(el[0], null)[prop], 10) || 0;\n }\n\n each([\"Width\", \"Height\"], function (v) {\n var lower = v.toLowerCase();\n\n fn[lower] = function () {\n return this[0].getBoundingClientRect()[lower];\n };\n\n fn[\"inner\" + v] = function () {\n return this[0][\"client\" + v];\n };\n\n fn[\"outer\" + v] = function (margins) {\n return this[0][\"offset\" + v] + (margins ? compute(this, \"margin\" + (v === \"Width\" ? \"Left\" : \"Top\")) + compute(this, \"margin\" + (v === \"Width\" ? \"Right\" : \"Bottom\")) : 0);\n };\n });\n\n function registerEvent(node, eventName, callback) {\n var eventCache = getData(node, \"_cashEvents\") || setData(node, \"_cashEvents\", {});\n eventCache[eventName] = eventCache[eventName] || [];\n eventCache[eventName].push(callback);\n node.addEventListener(eventName, callback);\n }\n\n function removeEvent(node, eventName, callback) {\n var events = getData(node, \"_cashEvents\"),\n eventCache = events && events[eventName],\n index;\n\n if (!eventCache) {\n return;\n }\n\n if (callback) {\n node.removeEventListener(eventName, callback);\n index = eventCache.indexOf(callback);\n if (index >= 0) {\n eventCache.splice(index, 1);\n }\n } else {\n each(eventCache, function (event) {\n node.removeEventListener(eventName, event);\n });\n eventCache = [];\n }\n }\n\n fn.extend({\n off: function (eventName, callback) {\n return this.each(function (v) {\n return removeEvent(v, eventName, callback);\n });\n },\n\n on: function (eventName, delegate, callback, runOnce) {\n // jshint ignore:line\n var originalCallback;\n if (!isString(eventName)) {\n for (var key in eventName) {\n this.on(key, delegate, eventName[key]);\n }\n return this;\n }\n\n if (isFunction(delegate)) {\n callback = delegate;\n delegate = null;\n }\n\n if (eventName === \"ready\") {\n onReady(callback);\n return this;\n }\n\n if (delegate) {\n originalCallback = callback;\n callback = function (e) {\n var t = e.target;\n while (!matches(t, delegate)) {\n if (t === this || t === null) {\n return t = false;\n }\n\n t = t.parentNode;\n }\n\n if (t) {\n originalCallback.call(t, e);\n }\n };\n }\n\n return this.each(function (v) {\n var finalCallback = callback;\n if (runOnce) {\n finalCallback = function () {\n callback.apply(this, arguments);\n removeEvent(v, eventName, finalCallback);\n };\n }\n registerEvent(v, eventName, finalCallback);\n });\n },\n\n one: function (eventName, delegate, callback) {\n return this.on(eventName, delegate, callback, true);\n },\n\n ready: onReady,\n\n /**\n * Modified\n * Triggers browser event\n * @param String eventName\n * @param Object data - Add properties to event object\n */\n trigger: function (eventName, data) {\n if (document.createEvent) {\n var evt = document.createEvent('HTMLEvents');\n evt.initEvent(eventName, true, false);\n evt = this.extend(evt, data);\n return this.each(function (v) {\n return v.dispatchEvent(evt);\n });\n }\n }\n\n });\n\n function encode(name, value) {\n return \"&\" + encodeURIComponent(name) + \"=\" + encodeURIComponent(value).replace(/%20/g, \"+\");\n }\n\n function getSelectMultiple_(el) {\n var values = [];\n each(el.options, function (o) {\n if (o.selected) {\n values.push(o.value);\n }\n });\n return values.length ? values : null;\n }\n\n function getSelectSingle_(el) {\n var selectedIndex = el.selectedIndex;\n return selectedIndex >= 0 ? el.options[selectedIndex].value : null;\n }\n\n function getValue(el) {\n var type = el.type;\n if (!type) {\n return null;\n }\n switch (type.toLowerCase()) {\n case \"select-one\":\n return getSelectSingle_(el);\n case \"select-multiple\":\n return getSelectMultiple_(el);\n case \"radio\":\n return el.checked ? el.value : null;\n case \"checkbox\":\n return el.checked ? el.value : null;\n default:\n return el.value ? el.value : null;\n }\n }\n\n fn.extend({\n serialize: function () {\n var query = \"\";\n\n each(this[0].elements || this, function (el) {\n if (el.disabled || el.tagName === \"FIELDSET\") {\n return;\n }\n var name = el.name;\n switch (el.type.toLowerCase()) {\n case \"file\":\n case \"reset\":\n case \"submit\":\n case \"button\":\n break;\n case \"select-multiple\":\n var values = getValue(el);\n if (values !== null) {\n each(values, function (value) {\n query += encode(name, value);\n });\n }\n break;\n default:\n var value = getValue(el);\n if (value !== null) {\n query += encode(name, value);\n }\n }\n });\n\n return query.substr(1);\n },\n\n val: function (value) {\n if (value === undefined) {\n return getValue(this[0]);\n }\n\n return this.each(function (v) {\n return v.value = value;\n });\n }\n\n });\n\n function insertElement(el, child, prepend) {\n if (prepend) {\n var first = el.childNodes[0];\n el.insertBefore(child, first);\n } else {\n el.appendChild(child);\n }\n }\n\n function insertContent(parent, child, prepend) {\n var str = isString(child);\n\n if (!str && child.length) {\n each(child, function (v) {\n return insertContent(parent, v, prepend);\n });\n return;\n }\n\n each(parent, str ? function (v) {\n return v.insertAdjacentHTML(prepend ? \"afterbegin\" : \"beforeend\", child);\n } : function (v, i) {\n return insertElement(v, i === 0 ? child : child.cloneNode(true), prepend);\n });\n }\n\n fn.extend({\n after: function (selector) {\n cash(selector).insertAfter(this);\n return this;\n },\n\n append: function (content) {\n insertContent(this, content);\n return this;\n },\n\n appendTo: function (parent) {\n insertContent(cash(parent), this);\n return this;\n },\n\n before: function (selector) {\n cash(selector).insertBefore(this);\n return this;\n },\n\n clone: function () {\n return cash(this.map(function (v) {\n return v.cloneNode(true);\n }));\n },\n\n empty: function () {\n this.html(\"\");\n return this;\n },\n\n html: function (content) {\n if (content === undefined) {\n return this[0].innerHTML;\n }\n var source = content.nodeType ? content[0].outerHTML : content;\n return this.each(function (v) {\n return v.innerHTML = source;\n });\n },\n\n insertAfter: function (selector) {\n var _this = this;\n\n cash(selector).each(function (el, i) {\n var parent = el.parentNode,\n sibling = el.nextSibling;\n _this.each(function (v) {\n parent.insertBefore(i === 0 ? v : v.cloneNode(true), sibling);\n });\n });\n\n return this;\n },\n\n insertBefore: function (selector) {\n var _this2 = this;\n cash(selector).each(function (el, i) {\n var parent = el.parentNode;\n _this2.each(function (v) {\n parent.insertBefore(i === 0 ? v : v.cloneNode(true), el);\n });\n });\n return this;\n },\n\n prepend: function (content) {\n insertContent(this, content, true);\n return this;\n },\n\n prependTo: function (parent) {\n insertContent(cash(parent), this, true);\n return this;\n },\n\n remove: function () {\n return this.each(function (v) {\n if (!!v.parentNode) {\n return v.parentNode.removeChild(v);\n }\n });\n },\n\n text: function (content) {\n if (content === undefined) {\n return this[0].textContent;\n }\n return this.each(function (v) {\n return v.textContent = content;\n });\n }\n\n });\n\n var docEl = doc.documentElement;\n\n fn.extend({\n position: function () {\n var el = this[0];\n return {\n left: el.offsetLeft,\n top: el.offsetTop\n };\n },\n\n offset: function () {\n var rect = this[0].getBoundingClientRect();\n return {\n top: rect.top + win.pageYOffset - docEl.clientTop,\n left: rect.left + win.pageXOffset - docEl.clientLeft\n };\n },\n\n offsetParent: function () {\n return cash(this[0].offsetParent);\n }\n\n });\n\n fn.extend({\n children: function (selector) {\n var elems = [];\n this.each(function (el) {\n push.apply(elems, el.children);\n });\n elems = unique(elems);\n\n return !selector ? elems : elems.filter(function (v) {\n return matches(v, selector);\n });\n },\n\n closest: function (selector) {\n if (!selector || this.length < 1) {\n return cash();\n }\n if (this.is(selector)) {\n return this.filter(selector);\n }\n return this.parent().closest(selector);\n },\n\n is: function (selector) {\n if (!selector) {\n return false;\n }\n\n var match = false,\n comparator = getCompareFunction(selector);\n\n this.each(function (el) {\n match = comparator(el, selector);\n return !match;\n });\n\n return match;\n },\n\n find: function (selector) {\n if (!selector || selector.nodeType) {\n return cash(selector && this.has(selector).length ? selector : null);\n }\n\n var elems = [];\n this.each(function (el) {\n push.apply(elems, find(selector, el));\n });\n\n return unique(elems);\n },\n\n has: function (selector) {\n var comparator = isString(selector) ? function (el) {\n return find(selector, el).length !== 0;\n } : function (el) {\n return el.contains(selector);\n };\n\n return this.filter(comparator);\n },\n\n next: function () {\n return cash(this[0].nextElementSibling);\n },\n\n not: function (selector) {\n if (!selector) {\n return this;\n }\n\n var comparator = getCompareFunction(selector);\n\n return this.filter(function (el) {\n return !comparator(el, selector);\n });\n },\n\n parent: function () {\n var result = [];\n\n this.each(function (item) {\n if (item && item.parentNode) {\n result.push(item.parentNode);\n }\n });\n\n return unique(result);\n },\n\n parents: function (selector) {\n var last,\n result = [];\n\n this.each(function (item) {\n last = item;\n\n while (last && last.parentNode && last !== doc.body.parentNode) {\n last = last.parentNode;\n\n if (!selector || selector && matches(last, selector)) {\n result.push(last);\n }\n }\n });\n\n return unique(result);\n },\n\n prev: function () {\n return cash(this[0].previousElementSibling);\n },\n\n siblings: function (selector) {\n var collection = this.parent().children(selector),\n el = this[0];\n\n return collection.filter(function (i) {\n return i !== el;\n });\n }\n\n });\n\n return cash;\n});\n;\nvar Component = function () {\n /**\n * Generic constructor for all components\n * @constructor\n * @param {Element} el\n * @param {Object} options\n */\n function Component(classDef, el, options) {\n _classCallCheck(this, Component);\n\n // Display error if el is valid HTML Element\n if (!(el instanceof Element)) {\n console.error(Error(el + ' is not an HTML Element'));\n }\n\n // If exists, destroy and reinitialize in child\n var ins = classDef.getInstance(el);\n if (!!ins) {\n ins.destroy();\n }\n\n this.el = el;\n this.$el = cash(el);\n }\n\n /**\n * Initializes components\n * @param {class} classDef\n * @param {Element | NodeList | jQuery} els\n * @param {Object} options\n */\n\n\n _createClass(Component, null, [{\n key: \"init\",\n value: function init(classDef, els, options) {\n var instances = null;\n if (els instanceof Element) {\n instances = new classDef(els, options);\n } else if (!!els && (els.jquery || els.cash || els instanceof NodeList)) {\n var instancesArr = [];\n for (var i = 0; i < els.length; i++) {\n instancesArr.push(new classDef(els[i], options));\n }\n instances = instancesArr;\n }\n\n return instances;\n }\n }]);\n\n return Component;\n}();\n\n; // Required for Meteor package, the use of window prevents export by Meteor\n(function (window) {\n if (window.Package) {\n M = {};\n } else {\n window.M = {};\n }\n\n // Check for jQuery\n M.jQueryLoaded = !!window.jQuery;\n})(window);\n\n// AMD\nif (typeof define === 'function' && define.amd) {\n define('M', [], function () {\n return M;\n });\n\n // Common JS\n} else if (typeof exports !== 'undefined' && !exports.nodeType) {\n if (typeof module !== 'undefined' && !module.nodeType && module.exports) {\n exports = module.exports = M;\n }\n exports.default = M;\n}\n\nM.version = '1.0.0';\n\nM.keys = {\n TAB: 9,\n ENTER: 13,\n ESC: 27,\n ARROW_UP: 38,\n ARROW_DOWN: 40\n};\n\n/**\n * TabPress Keydown handler\n */\nM.tabPressed = false;\nM.keyDown = false;\nvar docHandleKeydown = function (e) {\n M.keyDown = true;\n if (e.which === M.keys.TAB || e.which === M.keys.ARROW_DOWN || e.which === M.keys.ARROW_UP) {\n M.tabPressed = true;\n }\n};\nvar docHandleKeyup = function (e) {\n M.keyDown = false;\n if (e.which === M.keys.TAB || e.which === M.keys.ARROW_DOWN || e.which === M.keys.ARROW_UP) {\n M.tabPressed = false;\n }\n};\nvar docHandleFocus = function (e) {\n if (M.keyDown) {\n document.body.classList.add('keyboard-focused');\n }\n};\nvar docHandleBlur = function (e) {\n document.body.classList.remove('keyboard-focused');\n};\ndocument.addEventListener('keydown', docHandleKeydown, true);\ndocument.addEventListener('keyup', docHandleKeyup, true);\ndocument.addEventListener('focus', docHandleFocus, true);\ndocument.addEventListener('blur', docHandleBlur, true);\n\n/**\n * Initialize jQuery wrapper for plugin\n * @param {Class} plugin javascript class\n * @param {string} pluginName jQuery plugin name\n * @param {string} classRef Class reference name\n */\nM.initializeJqueryWrapper = function (plugin, pluginName, classRef) {\n jQuery.fn[pluginName] = function (methodOrOptions) {\n // Call plugin method if valid method name is passed in\n if (plugin.prototype[methodOrOptions]) {\n var params = Array.prototype.slice.call(arguments, 1);\n\n // Getter methods\n if (methodOrOptions.slice(0, 3) === 'get') {\n var instance = this.first()[0][classRef];\n return instance[methodOrOptions].apply(instance, params);\n }\n\n // Void methods\n return this.each(function () {\n var instance = this[classRef];\n instance[methodOrOptions].apply(instance, params);\n });\n\n // Initialize plugin if options or no argument is passed in\n } else if (typeof methodOrOptions === 'object' || !methodOrOptions) {\n plugin.init(this, arguments[0]);\n return this;\n }\n\n // Return error if an unrecognized method name is passed in\n jQuery.error(\"Method \" + methodOrOptions + \" does not exist on jQuery.\" + pluginName);\n };\n};\n\n/**\n * Automatically initialize components\n * @param {Element} context DOM Element to search within for components\n */\nM.AutoInit = function (context) {\n // Use document.body if no context is given\n var root = !!context ? context : document.body;\n\n var registry = {\n Autocomplete: root.querySelectorAll('.autocomplete:not(.no-autoinit)'),\n Carousel: root.querySelectorAll('.carousel:not(.no-autoinit)'),\n Chips: root.querySelectorAll('.chips:not(.no-autoinit)'),\n Collapsible: root.querySelectorAll('.collapsible:not(.no-autoinit)'),\n Datepicker: root.querySelectorAll('.datepicker:not(.no-autoinit)'),\n Dropdown: root.querySelectorAll('.dropdown-trigger:not(.no-autoinit)'),\n Materialbox: root.querySelectorAll('.materialboxed:not(.no-autoinit)'),\n Modal: root.querySelectorAll('.modal:not(.no-autoinit)'),\n Parallax: root.querySelectorAll('.parallax:not(.no-autoinit)'),\n Pushpin: root.querySelectorAll('.pushpin:not(.no-autoinit)'),\n ScrollSpy: root.querySelectorAll('.scrollspy:not(.no-autoinit)'),\n FormSelect: root.querySelectorAll('select:not(.no-autoinit)'),\n Sidenav: root.querySelectorAll('.sidenav:not(.no-autoinit)'),\n Tabs: root.querySelectorAll('.tabs:not(.no-autoinit)'),\n TapTarget: root.querySelectorAll('.tap-target:not(.no-autoinit)'),\n Timepicker: root.querySelectorAll('.timepicker:not(.no-autoinit)'),\n Tooltip: root.querySelectorAll('.tooltipped:not(.no-autoinit)'),\n FloatingActionButton: root.querySelectorAll('.fixed-action-btn:not(.no-autoinit)')\n };\n\n for (var pluginName in registry) {\n var plugin = M[pluginName];\n plugin.init(registry[pluginName]);\n }\n};\n\n/**\n * Generate approximated selector string for a jQuery object\n * @param {jQuery} obj jQuery object to be parsed\n * @returns {string}\n */\nM.objectSelectorString = function (obj) {\n var tagStr = obj.prop('tagName') || '';\n var idStr = obj.attr('id') || '';\n var classStr = obj.attr('class') || '';\n return (tagStr + idStr + classStr).replace(/\\s/g, '');\n};\n\n// Unique Random ID\nM.guid = function () {\n function s4() {\n return Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1);\n }\n return function () {\n return s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4();\n };\n}();\n\n/**\n * Escapes hash from special characters\n * @param {string} hash String returned from this.hash\n * @returns {string}\n */\nM.escapeHash = function (hash) {\n return hash.replace(/(:|\\.|\\[|\\]|,|=|\\/)/g, '\\\\$1');\n};\n\nM.elementOrParentIsFixed = function (element) {\n var $element = $(element);\n var $checkElements = $element.add($element.parents());\n var isFixed = false;\n $checkElements.each(function () {\n if ($(this).css('position') === 'fixed') {\n isFixed = true;\n return false;\n }\n });\n return isFixed;\n};\n\n/**\n * @typedef {Object} Edges\n * @property {Boolean} top If the top edge was exceeded\n * @property {Boolean} right If the right edge was exceeded\n * @property {Boolean} bottom If the bottom edge was exceeded\n * @property {Boolean} left If the left edge was exceeded\n */\n\n/**\n * @typedef {Object} Bounding\n * @property {Number} left left offset coordinate\n * @property {Number} top top offset coordinate\n * @property {Number} width\n * @property {Number} height\n */\n\n/**\n * Escapes hash from special characters\n * @param {Element} container Container element that acts as the boundary\n * @param {Bounding} bounding element bounding that is being checked\n * @param {Number} offset offset from edge that counts as exceeding\n * @returns {Edges}\n */\nM.checkWithinContainer = function (container, bounding, offset) {\n var edges = {\n top: false,\n right: false,\n bottom: false,\n left: false\n };\n\n var containerRect = container.getBoundingClientRect();\n // If body element is smaller than viewport, use viewport height instead.\n var containerBottom = container === document.body ? Math.max(containerRect.bottom, window.innerHeight) : containerRect.bottom;\n\n var scrollLeft = container.scrollLeft;\n var scrollTop = container.scrollTop;\n\n var scrolledX = bounding.left - scrollLeft;\n var scrolledY = bounding.top - scrollTop;\n\n // Check for container and viewport for each edge\n if (scrolledX < containerRect.left + offset || scrolledX < offset) {\n edges.left = true;\n }\n\n if (scrolledX + bounding.width > containerRect.right - offset || scrolledX + bounding.width > window.innerWidth - offset) {\n edges.right = true;\n }\n\n if (scrolledY < containerRect.top + offset || scrolledY < offset) {\n edges.top = true;\n }\n\n if (scrolledY + bounding.height > containerBottom - offset || scrolledY + bounding.height > window.innerHeight - offset) {\n edges.bottom = true;\n }\n\n return edges;\n};\n\nM.checkPossibleAlignments = function (el, container, bounding, offset) {\n var canAlign = {\n top: true,\n right: true,\n bottom: true,\n left: true,\n spaceOnTop: null,\n spaceOnRight: null,\n spaceOnBottom: null,\n spaceOnLeft: null\n };\n\n var containerAllowsOverflow = getComputedStyle(container).overflow === 'visible';\n var containerRect = container.getBoundingClientRect();\n var containerHeight = Math.min(containerRect.height, window.innerHeight);\n var containerWidth = Math.min(containerRect.width, window.innerWidth);\n var elOffsetRect = el.getBoundingClientRect();\n\n var scrollLeft = container.scrollLeft;\n var scrollTop = container.scrollTop;\n\n var scrolledX = bounding.left - scrollLeft;\n var scrolledYTopEdge = bounding.top - scrollTop;\n var scrolledYBottomEdge = bounding.top + elOffsetRect.height - scrollTop;\n\n // Check for container and viewport for left\n canAlign.spaceOnRight = !containerAllowsOverflow ? containerWidth - (scrolledX + bounding.width) : window.innerWidth - (elOffsetRect.left + bounding.width);\n if (canAlign.spaceOnRight < 0) {\n canAlign.left = false;\n }\n\n // Check for container and viewport for Right\n canAlign.spaceOnLeft = !containerAllowsOverflow ? scrolledX - bounding.width + elOffsetRect.width : elOffsetRect.right - bounding.width;\n if (canAlign.spaceOnLeft < 0) {\n canAlign.right = false;\n }\n\n // Check for container and viewport for Top\n canAlign.spaceOnBottom = !containerAllowsOverflow ? containerHeight - (scrolledYTopEdge + bounding.height + offset) : window.innerHeight - (elOffsetRect.top + bounding.height + offset);\n if (canAlign.spaceOnBottom < 0) {\n canAlign.top = false;\n }\n\n // Check for container and viewport for Bottom\n canAlign.spaceOnTop = !containerAllowsOverflow ? scrolledYBottomEdge - (bounding.height - offset) : elOffsetRect.bottom - (bounding.height + offset);\n if (canAlign.spaceOnTop < 0) {\n canAlign.bottom = false;\n }\n\n return canAlign;\n};\n\nM.getOverflowParent = function (element) {\n if (element == null) {\n return null;\n }\n\n if (element === document.body || getComputedStyle(element).overflow !== 'visible') {\n return element;\n }\n\n return M.getOverflowParent(element.parentElement);\n};\n\n/**\n * Gets id of component from a trigger\n * @param {Element} trigger trigger\n * @returns {string}\n */\nM.getIdFromTrigger = function (trigger) {\n var id = trigger.getAttribute('data-target');\n if (!id) {\n id = trigger.getAttribute('href');\n if (id) {\n id = id.slice(1);\n } else {\n id = '';\n }\n }\n return id;\n};\n\n/**\n * Multi browser support for document scroll top\n * @returns {Number}\n */\nM.getDocumentScrollTop = function () {\n return window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;\n};\n\n/**\n * Multi browser support for document scroll left\n * @returns {Number}\n */\nM.getDocumentScrollLeft = function () {\n return window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0;\n};\n\n/**\n * @typedef {Object} Edges\n * @property {Boolean} top If the top edge was exceeded\n * @property {Boolean} right If the right edge was exceeded\n * @property {Boolean} bottom If the bottom edge was exceeded\n * @property {Boolean} left If the left edge was exceeded\n */\n\n/**\n * @typedef {Object} Bounding\n * @property {Number} left left offset coordinate\n * @property {Number} top top offset coordinate\n * @property {Number} width\n * @property {Number} height\n */\n\n/**\n * Get time in ms\n * @license https://raw.github.com/jashkenas/underscore/master/LICENSE\n * @type {function}\n * @return {number}\n */\nvar getTime = Date.now || function () {\n return new Date().getTime();\n};\n\n/**\n * Returns a function, that, when invoked, will only be triggered at most once\n * during a given window of time. Normally, the throttled function will run\n * as much as it can, without ever going more than once per `wait` duration;\n * but if you'd like to disable the execution on the leading edge, pass\n * `{leading: false}`. To disable execution on the trailing edge, ditto.\n * @license https://raw.github.com/jashkenas/underscore/master/LICENSE\n * @param {function} func\n * @param {number} wait\n * @param {Object=} options\n * @returns {Function}\n */\nM.throttle = function (func, wait, options) {\n var context = void 0,\n args = void 0,\n result = void 0;\n var timeout = null;\n var previous = 0;\n options || (options = {});\n var later = function () {\n previous = options.leading === false ? 0 : getTime();\n timeout = null;\n result = func.apply(context, args);\n context = args = null;\n };\n return function () {\n var now = getTime();\n if (!previous && options.leading === false) previous = now;\n var remaining = wait - (now - previous);\n context = this;\n args = arguments;\n if (remaining <= 0) {\n clearTimeout(timeout);\n timeout = null;\n previous = now;\n result = func.apply(context, args);\n context = args = null;\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n};\n; /*\n v2.2.0\n 2017 Julian Garnier\n Released under the MIT license\n */\nvar $jscomp = { scope: {} };$jscomp.defineProperty = \"function\" == typeof Object.defineProperties ? Object.defineProperty : function (e, r, p) {\n if (p.get || p.set) throw new TypeError(\"ES3 does not support getters and setters.\");e != Array.prototype && e != Object.prototype && (e[r] = p.value);\n};$jscomp.getGlobal = function (e) {\n return \"undefined\" != typeof window && window === e ? e : \"undefined\" != typeof global && null != global ? global : e;\n};$jscomp.global = $jscomp.getGlobal(this);$jscomp.SYMBOL_PREFIX = \"jscomp_symbol_\";\n$jscomp.initSymbol = function () {\n $jscomp.initSymbol = function () {};$jscomp.global.Symbol || ($jscomp.global.Symbol = $jscomp.Symbol);\n};$jscomp.symbolCounter_ = 0;$jscomp.Symbol = function (e) {\n return $jscomp.SYMBOL_PREFIX + (e || \"\") + $jscomp.symbolCounter_++;\n};\n$jscomp.initSymbolIterator = function () {\n $jscomp.initSymbol();var e = $jscomp.global.Symbol.iterator;e || (e = $jscomp.global.Symbol.iterator = $jscomp.global.Symbol(\"iterator\"));\"function\" != typeof Array.prototype[e] && $jscomp.defineProperty(Array.prototype, e, { configurable: !0, writable: !0, value: function () {\n return $jscomp.arrayIterator(this);\n } });$jscomp.initSymbolIterator = function () {};\n};$jscomp.arrayIterator = function (e) {\n var r = 0;return $jscomp.iteratorPrototype(function () {\n return r < e.length ? { done: !1, value: e[r++] } : { done: !0 };\n });\n};\n$jscomp.iteratorPrototype = function (e) {\n $jscomp.initSymbolIterator();e = { next: e };e[$jscomp.global.Symbol.iterator] = function () {\n return this;\n };return e;\n};$jscomp.array = $jscomp.array || {};$jscomp.iteratorFromArray = function (e, r) {\n $jscomp.initSymbolIterator();e instanceof String && (e += \"\");var p = 0,\n m = { next: function () {\n if (p < e.length) {\n var u = p++;return { value: r(u, e[u]), done: !1 };\n }m.next = function () {\n return { done: !0, value: void 0 };\n };return m.next();\n } };m[Symbol.iterator] = function () {\n return m;\n };return m;\n};\n$jscomp.polyfill = function (e, r, p, m) {\n if (r) {\n p = $jscomp.global;e = e.split(\".\");for (m = 0; m < e.length - 1; m++) {\n var u = e[m];u in p || (p[u] = {});p = p[u];\n }e = e[e.length - 1];m = p[e];r = r(m);r != m && null != r && $jscomp.defineProperty(p, e, { configurable: !0, writable: !0, value: r });\n }\n};$jscomp.polyfill(\"Array.prototype.keys\", function (e) {\n return e ? e : function () {\n return $jscomp.iteratorFromArray(this, function (e) {\n return e;\n });\n };\n}, \"es6-impl\", \"es3\");var $jscomp$this = this;\n(function (r) {\n M.anime = r();\n})(function () {\n function e(a) {\n if (!h.col(a)) try {\n return document.querySelectorAll(a);\n } catch (c) {}\n }function r(a, c) {\n for (var d = a.length, b = 2 <= arguments.length ? arguments[1] : void 0, f = [], n = 0; n < d; n++) {\n if (n in a) {\n var k = a[n];c.call(b, k, n, a) && f.push(k);\n }\n }return f;\n }function p(a) {\n return a.reduce(function (a, d) {\n return a.concat(h.arr(d) ? p(d) : d);\n }, []);\n }function m(a) {\n if (h.arr(a)) return a;\n h.str(a) && (a = e(a) || a);return a instanceof NodeList || a instanceof HTMLCollection ? [].slice.call(a) : [a];\n }function u(a, c) {\n return a.some(function (a) {\n return a === c;\n });\n }function C(a) {\n var c = {},\n d;for (d in a) {\n c[d] = a[d];\n }return c;\n }function D(a, c) {\n var d = C(a),\n b;for (b in a) {\n d[b] = c.hasOwnProperty(b) ? c[b] : a[b];\n }return d;\n }function z(a, c) {\n var d = C(a),\n b;for (b in c) {\n d[b] = h.und(a[b]) ? c[b] : a[b];\n }return d;\n }function T(a) {\n a = a.replace(/^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i, function (a, c, d, k) {\n return c + c + d + d + k + k;\n });var c = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(a);\n a = parseInt(c[1], 16);var d = parseInt(c[2], 16),\n c = parseInt(c[3], 16);return \"rgba(\" + a + \",\" + d + \",\" + c + \",1)\";\n }function U(a) {\n function c(a, c, b) {\n 0 > b && (b += 1);1 < b && --b;return b < 1 / 6 ? a + 6 * (c - a) * b : .5 > b ? c : b < 2 / 3 ? a + (c - a) * (2 / 3 - b) * 6 : a;\n }var d = /hsl\\((\\d+),\\s*([\\d.]+)%,\\s*([\\d.]+)%\\)/g.exec(a) || /hsla\\((\\d+),\\s*([\\d.]+)%,\\s*([\\d.]+)%,\\s*([\\d.]+)\\)/g.exec(a);a = parseInt(d[1]) / 360;var b = parseInt(d[2]) / 100,\n f = parseInt(d[3]) / 100,\n d = d[4] || 1;if (0 == b) f = b = a = f;else {\n var n = .5 > f ? f * (1 + b) : f + b - f * b,\n k = 2 * f - n,\n f = c(k, n, a + 1 / 3),\n b = c(k, n, a);a = c(k, n, a - 1 / 3);\n }return \"rgba(\" + 255 * f + \",\" + 255 * b + \",\" + 255 * a + \",\" + d + \")\";\n }function y(a) {\n if (a = /([\\+\\-]?[0-9#\\.]+)(%|px|pt|em|rem|in|cm|mm|ex|ch|pc|vw|vh|vmin|vmax|deg|rad|turn)?$/.exec(a)) return a[2];\n }function V(a) {\n if (-1 < a.indexOf(\"translate\") || \"perspective\" === a) return \"px\";if (-1 < a.indexOf(\"rotate\") || -1 < a.indexOf(\"skew\")) return \"deg\";\n }function I(a, c) {\n return h.fnc(a) ? a(c.target, c.id, c.total) : a;\n }function E(a, c) {\n if (c in a.style) return getComputedStyle(a).getPropertyValue(c.replace(/([a-z])([A-Z])/g, \"$1-$2\").toLowerCase()) || \"0\";\n }function J(a, c) {\n if (h.dom(a) && u(W, c)) return \"transform\";if (h.dom(a) && (a.getAttribute(c) || h.svg(a) && a[c])) return \"attribute\";if (h.dom(a) && \"transform\" !== c && E(a, c)) return \"css\";if (null != a[c]) return \"object\";\n }function X(a, c) {\n var d = V(c),\n d = -1 < c.indexOf(\"scale\") ? 1 : 0 + d;a = a.style.transform;if (!a) return d;for (var b = [], f = [], n = [], k = /(\\w+)\\((.+?)\\)/g; b = k.exec(a);) {\n f.push(b[1]), n.push(b[2]);\n }a = r(n, function (a, b) {\n return f[b] === c;\n });return a.length ? a[0] : d;\n }function K(a, c) {\n switch (J(a, c)) {case \"transform\":\n return X(a, c);case \"css\":\n return E(a, c);case \"attribute\":\n return a.getAttribute(c);}return a[c] || 0;\n }function L(a, c) {\n var d = /^(\\*=|\\+=|-=)/.exec(a);if (!d) return a;var b = y(a) || 0;c = parseFloat(c);a = parseFloat(a.replace(d[0], \"\"));switch (d[0][0]) {case \"+\":\n return c + a + b;case \"-\":\n return c - a + b;case \"*\":\n return c * a + b;}\n }function F(a, c) {\n return Math.sqrt(Math.pow(c.x - a.x, 2) + Math.pow(c.y - a.y, 2));\n }function M(a) {\n a = a.points;for (var c = 0, d, b = 0; b < a.numberOfItems; b++) {\n var f = a.getItem(b);0 < b && (c += F(d, f));d = f;\n }return c;\n }function N(a) {\n if (a.getTotalLength) return a.getTotalLength();switch (a.tagName.toLowerCase()) {case \"circle\":\n return 2 * Math.PI * a.getAttribute(\"r\");case \"rect\":\n return 2 * a.getAttribute(\"width\") + 2 * a.getAttribute(\"height\");case \"line\":\n return F({ x: a.getAttribute(\"x1\"), y: a.getAttribute(\"y1\") }, { x: a.getAttribute(\"x2\"), y: a.getAttribute(\"y2\") });case \"polyline\":\n return M(a);case \"polygon\":\n var c = a.points;return M(a) + F(c.getItem(c.numberOfItems - 1), c.getItem(0));}\n }function Y(a, c) {\n function d(b) {\n b = void 0 === b ? 0 : b;return a.el.getPointAtLength(1 <= c + b ? c + b : 0);\n }var b = d(),\n f = d(-1),\n n = d(1);switch (a.property) {case \"x\":\n return b.x;case \"y\":\n return b.y;\n case \"angle\":\n return 180 * Math.atan2(n.y - f.y, n.x - f.x) / Math.PI;}\n }function O(a, c) {\n var d = /-?\\d*\\.?\\d+/g,\n b;b = h.pth(a) ? a.totalLength : a;if (h.col(b)) {\n if (h.rgb(b)) {\n var f = /rgb\\((\\d+,\\s*[\\d]+,\\s*[\\d]+)\\)/g.exec(b);b = f ? \"rgba(\" + f[1] + \",1)\" : b;\n } else b = h.hex(b) ? T(b) : h.hsl(b) ? U(b) : void 0;\n } else f = (f = y(b)) ? b.substr(0, b.length - f.length) : b, b = c && !/\\s/g.test(b) ? f + c : f;b += \"\";return { original: b, numbers: b.match(d) ? b.match(d).map(Number) : [0], strings: h.str(a) || c ? b.split(d) : [] };\n }function P(a) {\n a = a ? p(h.arr(a) ? a.map(m) : m(a)) : [];return r(a, function (a, d, b) {\n return b.indexOf(a) === d;\n });\n }function Z(a) {\n var c = P(a);return c.map(function (a, b) {\n return { target: a, id: b, total: c.length };\n });\n }function aa(a, c) {\n var d = C(c);if (h.arr(a)) {\n var b = a.length;2 !== b || h.obj(a[0]) ? h.fnc(c.duration) || (d.duration = c.duration / b) : a = { value: a };\n }return m(a).map(function (a, b) {\n b = b ? 0 : c.delay;a = h.obj(a) && !h.pth(a) ? a : { value: a };h.und(a.delay) && (a.delay = b);return a;\n }).map(function (a) {\n return z(a, d);\n });\n }function ba(a, c) {\n var d = {},\n b;for (b in a) {\n var f = I(a[b], c);h.arr(f) && (f = f.map(function (a) {\n return I(a, c);\n }), 1 === f.length && (f = f[0]));d[b] = f;\n }d.duration = parseFloat(d.duration);d.delay = parseFloat(d.delay);return d;\n }function ca(a) {\n return h.arr(a) ? A.apply(this, a) : Q[a];\n }function da(a, c) {\n var d;return a.tweens.map(function (b) {\n b = ba(b, c);var f = b.value,\n e = K(c.target, a.name),\n k = d ? d.to.original : e,\n k = h.arr(f) ? f[0] : k,\n w = L(h.arr(f) ? f[1] : f, k),\n e = y(w) || y(k) || y(e);b.from = O(k, e);b.to = O(w, e);b.start = d ? d.end : a.offset;b.end = b.start + b.delay + b.duration;b.easing = ca(b.easing);b.elasticity = (1E3 - Math.min(Math.max(b.elasticity, 1), 999)) / 1E3;b.isPath = h.pth(f);b.isColor = h.col(b.from.original);b.isColor && (b.round = 1);return d = b;\n });\n }function ea(a, c) {\n return r(p(a.map(function (a) {\n return c.map(function (b) {\n var c = J(a.target, b.name);if (c) {\n var d = da(b, a);b = { type: c, property: b.name, animatable: a, tweens: d, duration: d[d.length - 1].end, delay: d[0].delay };\n } else b = void 0;return b;\n });\n })), function (a) {\n return !h.und(a);\n });\n }function R(a, c, d, b) {\n var f = \"delay\" === a;return c.length ? (f ? Math.min : Math.max).apply(Math, c.map(function (b) {\n return b[a];\n })) : f ? b.delay : d.offset + b.delay + b.duration;\n }function fa(a) {\n var c = D(ga, a),\n d = D(S, a),\n b = Z(a.targets),\n f = [],\n e = z(c, d),\n k;for (k in a) {\n e.hasOwnProperty(k) || \"targets\" === k || f.push({ name: k, offset: e.offset, tweens: aa(a[k], d) });\n }a = ea(b, f);return z(c, { children: [], animatables: b, animations: a, duration: R(\"duration\", a, c, d), delay: R(\"delay\", a, c, d) });\n }function q(a) {\n function c() {\n return window.Promise && new Promise(function (a) {\n return p = a;\n });\n }function d(a) {\n return g.reversed ? g.duration - a : a;\n }function b(a) {\n for (var b = 0, c = {}, d = g.animations, f = d.length; b < f;) {\n var e = d[b],\n k = e.animatable,\n h = e.tweens,\n n = h.length - 1,\n l = h[n];n && (l = r(h, function (b) {\n return a < b.end;\n })[0] || l);for (var h = Math.min(Math.max(a - l.start - l.delay, 0), l.duration) / l.duration, w = isNaN(h) ? 1 : l.easing(h, l.elasticity), h = l.to.strings, p = l.round, n = [], m = void 0, m = l.to.numbers.length, t = 0; t < m; t++) {\n var x = void 0,\n x = l.to.numbers[t],\n q = l.from.numbers[t],\n x = l.isPath ? Y(l.value, w * x) : q + w * (x - q);p && (l.isColor && 2 < t || (x = Math.round(x * p) / p));n.push(x);\n }if (l = h.length) for (m = h[0], w = 0; w < l; w++) {\n p = h[w + 1], t = n[w], isNaN(t) || (m = p ? m + (t + p) : m + (t + \" \"));\n } else m = n[0];ha[e.type](k.target, e.property, m, c, k.id);e.currentValue = m;b++;\n }if (b = Object.keys(c).length) for (d = 0; d < b; d++) {\n H || (H = E(document.body, \"transform\") ? \"transform\" : \"-webkit-transform\"), g.animatables[d].target.style[H] = c[d].join(\" \");\n }g.currentTime = a;g.progress = a / g.duration * 100;\n }function f(a) {\n if (g[a]) g[a](g);\n }function e() {\n g.remaining && !0 !== g.remaining && g.remaining--;\n }function k(a) {\n var k = g.duration,\n n = g.offset,\n w = n + g.delay,\n r = g.currentTime,\n x = g.reversed,\n q = d(a);if (g.children.length) {\n var u = g.children,\n v = u.length;\n if (q >= g.currentTime) for (var G = 0; G < v; G++) {\n u[G].seek(q);\n } else for (; v--;) {\n u[v].seek(q);\n }\n }if (q >= w || !k) g.began || (g.began = !0, f(\"begin\")), f(\"run\");if (q > n && q < k) b(q);else if (q <= n && 0 !== r && (b(0), x && e()), q >= k && r !== k || !k) b(k), x || e();f(\"update\");a >= k && (g.remaining ? (t = h, \"alternate\" === g.direction && (g.reversed = !g.reversed)) : (g.pause(), g.completed || (g.completed = !0, f(\"complete\"), \"Promise\" in window && (p(), m = c()))), l = 0);\n }a = void 0 === a ? {} : a;var h,\n t,\n l = 0,\n p = null,\n m = c(),\n g = fa(a);g.reset = function () {\n var a = g.direction,\n c = g.loop;g.currentTime = 0;g.progress = 0;g.paused = !0;g.began = !1;g.completed = !1;g.reversed = \"reverse\" === a;g.remaining = \"alternate\" === a && 1 === c ? 2 : c;b(0);for (a = g.children.length; a--;) {\n g.children[a].reset();\n }\n };g.tick = function (a) {\n h = a;t || (t = h);k((l + h - t) * q.speed);\n };g.seek = function (a) {\n k(d(a));\n };g.pause = function () {\n var a = v.indexOf(g);-1 < a && v.splice(a, 1);g.paused = !0;\n };g.play = function () {\n g.paused && (g.paused = !1, t = 0, l = d(g.currentTime), v.push(g), B || ia());\n };g.reverse = function () {\n g.reversed = !g.reversed;t = 0;l = d(g.currentTime);\n };g.restart = function () {\n g.pause();\n g.reset();g.play();\n };g.finished = m;g.reset();g.autoplay && g.play();return g;\n }var ga = { update: void 0, begin: void 0, run: void 0, complete: void 0, loop: 1, direction: \"normal\", autoplay: !0, offset: 0 },\n S = { duration: 1E3, delay: 0, easing: \"easeOutElastic\", elasticity: 500, round: 0 },\n W = \"translateX translateY translateZ rotate rotateX rotateY rotateZ scale scaleX scaleY scaleZ skewX skewY perspective\".split(\" \"),\n H,\n h = { arr: function (a) {\n return Array.isArray(a);\n }, obj: function (a) {\n return -1 < Object.prototype.toString.call(a).indexOf(\"Object\");\n },\n pth: function (a) {\n return h.obj(a) && a.hasOwnProperty(\"totalLength\");\n }, svg: function (a) {\n return a instanceof SVGElement;\n }, dom: function (a) {\n return a.nodeType || h.svg(a);\n }, str: function (a) {\n return \"string\" === typeof a;\n }, fnc: function (a) {\n return \"function\" === typeof a;\n }, und: function (a) {\n return \"undefined\" === typeof a;\n }, hex: function (a) {\n return (/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(a)\n );\n }, rgb: function (a) {\n return (/^rgb/.test(a)\n );\n }, hsl: function (a) {\n return (/^hsl/.test(a)\n );\n }, col: function (a) {\n return h.hex(a) || h.rgb(a) || h.hsl(a);\n } },\n A = function () {\n function a(a, d, b) {\n return (((1 - 3 * b + 3 * d) * a + (3 * b - 6 * d)) * a + 3 * d) * a;\n }return function (c, d, b, f) {\n if (0 <= c && 1 >= c && 0 <= b && 1 >= b) {\n var e = new Float32Array(11);if (c !== d || b !== f) for (var k = 0; 11 > k; ++k) {\n e[k] = a(.1 * k, c, b);\n }return function (k) {\n if (c === d && b === f) return k;if (0 === k) return 0;if (1 === k) return 1;for (var h = 0, l = 1; 10 !== l && e[l] <= k; ++l) {\n h += .1;\n }--l;var l = h + (k - e[l]) / (e[l + 1] - e[l]) * .1,\n n = 3 * (1 - 3 * b + 3 * c) * l * l + 2 * (3 * b - 6 * c) * l + 3 * c;if (.001 <= n) {\n for (h = 0; 4 > h; ++h) {\n n = 3 * (1 - 3 * b + 3 * c) * l * l + 2 * (3 * b - 6 * c) * l + 3 * c;if (0 === n) break;var m = a(l, c, b) - k,\n l = l - m / n;\n }k = l;\n } else if (0 === n) k = l;else {\n var l = h,\n h = h + .1,\n g = 0;do {\n m = l + (h - l) / 2, n = a(m, c, b) - k, 0 < n ? h = m : l = m;\n } while (1e-7 < Math.abs(n) && 10 > ++g);k = m;\n }return a(k, d, f);\n };\n }\n };\n }(),\n Q = function () {\n function a(a, b) {\n return 0 === a || 1 === a ? a : -Math.pow(2, 10 * (a - 1)) * Math.sin(2 * (a - 1 - b / (2 * Math.PI) * Math.asin(1)) * Math.PI / b);\n }var c = \"Quad Cubic Quart Quint Sine Expo Circ Back Elastic\".split(\" \"),\n d = { In: [[.55, .085, .68, .53], [.55, .055, .675, .19], [.895, .03, .685, .22], [.755, .05, .855, .06], [.47, 0, .745, .715], [.95, .05, .795, .035], [.6, .04, .98, .335], [.6, -.28, .735, .045], a], Out: [[.25, .46, .45, .94], [.215, .61, .355, 1], [.165, .84, .44, 1], [.23, 1, .32, 1], [.39, .575, .565, 1], [.19, 1, .22, 1], [.075, .82, .165, 1], [.175, .885, .32, 1.275], function (b, c) {\n return 1 - a(1 - b, c);\n }], InOut: [[.455, .03, .515, .955], [.645, .045, .355, 1], [.77, 0, .175, 1], [.86, 0, .07, 1], [.445, .05, .55, .95], [1, 0, 0, 1], [.785, .135, .15, .86], [.68, -.55, .265, 1.55], function (b, c) {\n return .5 > b ? a(2 * b, c) / 2 : 1 - a(-2 * b + 2, c) / 2;\n }] },\n b = { linear: A(.25, .25, .75, .75) },\n f = {},\n e;for (e in d) {\n f.type = e, d[f.type].forEach(function (a) {\n return function (d, f) {\n b[\"ease\" + a.type + c[f]] = h.fnc(d) ? d : A.apply($jscomp$this, d);\n };\n }(f)), f = { type: f.type };\n }return b;\n }(),\n ha = { css: function (a, c, d) {\n return a.style[c] = d;\n }, attribute: function (a, c, d) {\n return a.setAttribute(c, d);\n }, object: function (a, c, d) {\n return a[c] = d;\n }, transform: function (a, c, d, b, f) {\n b[f] || (b[f] = []);b[f].push(c + \"(\" + d + \")\");\n } },\n v = [],\n B = 0,\n ia = function () {\n function a() {\n B = requestAnimationFrame(c);\n }function c(c) {\n var b = v.length;if (b) {\n for (var d = 0; d < b;) {\n v[d] && v[d].tick(c), d++;\n }a();\n } else cancelAnimationFrame(B), B = 0;\n }return a;\n }();q.version = \"2.2.0\";q.speed = 1;q.running = v;q.remove = function (a) {\n a = P(a);for (var c = v.length; c--;) {\n for (var d = v[c], b = d.animations, f = b.length; f--;) {\n u(a, b[f].animatable.target) && (b.splice(f, 1), b.length || d.pause());\n }\n }\n };q.getValue = K;q.path = function (a, c) {\n var d = h.str(a) ? e(a)[0] : a,\n b = c || 100;return function (a) {\n return { el: d, property: a, totalLength: N(d) * (b / 100) };\n };\n };q.setDashoffset = function (a) {\n var c = N(a);a.setAttribute(\"stroke-dasharray\", c);return c;\n };q.bezier = A;q.easings = Q;q.timeline = function (a) {\n var c = q(a);c.pause();c.duration = 0;c.add = function (d) {\n c.children.forEach(function (a) {\n a.began = !0;a.completed = !0;\n });m(d).forEach(function (b) {\n var d = z(b, D(S, a || {}));d.targets = d.targets || a.targets;b = c.duration;var e = d.offset;d.autoplay = !1;d.direction = c.direction;d.offset = h.und(e) ? b : L(e, b);c.began = !0;c.completed = !0;c.seek(d.offset);d = q(d);d.began = !0;d.completed = !0;d.duration > b && (c.duration = d.duration);c.children.push(d);\n });c.seek(0);c.reset();c.autoplay && c.restart();return c;\n };return c;\n };q.random = function (a, c) {\n return Math.floor(Math.random() * (c - a + 1)) + a;\n };return q;\n});\n;(function ($, anim) {\n 'use strict';\n\n var _defaults = {\n accordion: true,\n onOpenStart: undefined,\n onOpenEnd: undefined,\n onCloseStart: undefined,\n onCloseEnd: undefined,\n inDuration: 300,\n outDuration: 300\n };\n\n /**\n * @class\n *\n */\n\n var Collapsible = function (_Component) {\n _inherits(Collapsible, _Component);\n\n /**\n * Construct Collapsible instance\n * @constructor\n * @param {Element} el\n * @param {Object} options\n */\n function Collapsible(el, options) {\n _classCallCheck(this, Collapsible);\n\n var _this3 = _possibleConstructorReturn(this, (Collapsible.__proto__ || Object.getPrototypeOf(Collapsible)).call(this, Collapsible, el, options));\n\n _this3.el.M_Collapsible = _this3;\n\n /**\n * Options for the collapsible\n * @member Collapsible#options\n * @prop {Boolean} [accordion=false] - Type of the collapsible\n * @prop {Function} onOpenStart - Callback function called before collapsible is opened\n * @prop {Function} onOpenEnd - Callback function called after collapsible is opened\n * @prop {Function} onCloseStart - Callback function called before collapsible is closed\n * @prop {Function} onCloseEnd - Callback function called after collapsible is closed\n * @prop {Number} inDuration - Transition in duration in milliseconds.\n * @prop {Number} outDuration - Transition duration in milliseconds.\n */\n _this3.options = $.extend({}, Collapsible.defaults, options);\n\n // Setup tab indices\n _this3.$headers = _this3.$el.children('li').children('.collapsible-header');\n _this3.$headers.attr('tabindex', 0);\n\n _this3._setupEventHandlers();\n\n // Open first active\n var $activeBodies = _this3.$el.children('li.active').children('.collapsible-body');\n if (_this3.options.accordion) {\n // Handle Accordion\n $activeBodies.first().css('display', 'block');\n } else {\n // Handle Expandables\n $activeBodies.css('display', 'block');\n }\n return _this3;\n }\n\n _createClass(Collapsible, [{\n key: \"destroy\",\n\n\n /**\n * Teardown component\n */\n value: function destroy() {\n this._removeEventHandlers();\n this.el.M_Collapsible = undefined;\n }\n\n /**\n * Setup Event Handlers\n */\n\n }, {\n key: \"_setupEventHandlers\",\n value: function _setupEventHandlers() {\n var _this4 = this;\n\n this._handleCollapsibleClickBound = this._handleCollapsibleClick.bind(this);\n this._handleCollapsibleKeydownBound = this._handleCollapsibleKeydown.bind(this);\n this.el.addEventListener('click', this._handleCollapsibleClickBound);\n this.$headers.each(function (header) {\n header.addEventListener('keydown', _this4._handleCollapsibleKeydownBound);\n });\n }\n\n /**\n * Remove Event Handlers\n */\n\n }, {\n key: \"_removeEventHandlers\",\n value: function _removeEventHandlers() {\n var _this5 = this;\n\n this.el.removeEventListener('click', this._handleCollapsibleClickBound);\n this.$headers.each(function (header) {\n header.removeEventListener('keydown', _this5._handleCollapsibleKeydownBound);\n });\n }\n\n /**\n * Handle Collapsible Click\n * @param {Event} e\n */\n\n }, {\n key: \"_handleCollapsibleClick\",\n value: function _handleCollapsibleClick(e) {\n var $header = $(e.target).closest('.collapsible-header');\n if (e.target && $header.length) {\n var $collapsible = $header.closest('.collapsible');\n if ($collapsible[0] === this.el) {\n var $collapsibleLi = $header.closest('li');\n var $collapsibleLis = $collapsible.children('li');\n var isActive = $collapsibleLi[0].classList.contains('active');\n var index = $collapsibleLis.index($collapsibleLi);\n\n if (isActive) {\n this.close(index);\n } else {\n this.open(index);\n }\n }\n }\n }\n\n /**\n * Handle Collapsible Keydown\n * @param {Event} e\n */\n\n }, {\n key: \"_handleCollapsibleKeydown\",\n value: function _handleCollapsibleKeydown(e) {\n if (e.keyCode === 13) {\n this._handleCollapsibleClickBound(e);\n }\n }\n\n /**\n * Animate in collapsible slide\n * @param {Number} index - 0th index of slide\n */\n\n }, {\n key: \"_animateIn\",\n value: function _animateIn(index) {\n var _this6 = this;\n\n var $collapsibleLi = this.$el.children('li').eq(index);\n if ($collapsibleLi.length) {\n var $body = $collapsibleLi.children('.collapsible-body');\n\n anim.remove($body[0]);\n $body.css({\n display: 'block',\n overflow: 'hidden',\n height: 0,\n paddingTop: '',\n paddingBottom: ''\n });\n\n var pTop = $body.css('padding-top');\n var pBottom = $body.css('padding-bottom');\n var finalHeight = $body[0].scrollHeight;\n $body.css({\n paddingTop: 0,\n paddingBottom: 0\n });\n\n anim({\n targets: $body[0],\n height: finalHeight,\n paddingTop: pTop,\n paddingBottom: pBottom,\n duration: this.options.inDuration,\n easing: 'easeInOutCubic',\n complete: function (anim) {\n $body.css({\n overflow: '',\n paddingTop: '',\n paddingBottom: '',\n height: ''\n });\n\n // onOpenEnd callback\n if (typeof _this6.options.onOpenEnd === 'function') {\n _this6.options.onOpenEnd.call(_this6, $collapsibleLi[0]);\n }\n }\n });\n }\n }\n\n /**\n * Animate out collapsible slide\n * @param {Number} index - 0th index of slide to open\n */\n\n }, {\n key: \"_animateOut\",\n value: function _animateOut(index) {\n var _this7 = this;\n\n var $collapsibleLi = this.$el.children('li').eq(index);\n if ($collapsibleLi.length) {\n var $body = $collapsibleLi.children('.collapsible-body');\n anim.remove($body[0]);\n $body.css('overflow', 'hidden');\n anim({\n targets: $body[0],\n height: 0,\n paddingTop: 0,\n paddingBottom: 0,\n duration: this.options.outDuration,\n easing: 'easeInOutCubic',\n complete: function () {\n $body.css({\n height: '',\n overflow: '',\n padding: '',\n display: ''\n });\n\n // onCloseEnd callback\n if (typeof _this7.options.onCloseEnd === 'function') {\n _this7.options.onCloseEnd.call(_this7, $collapsibleLi[0]);\n }\n }\n });\n }\n }\n\n /**\n * Open Collapsible\n * @param {Number} index - 0th index of slide\n */\n\n }, {\n key: \"open\",\n value: function open(index) {\n var _this8 = this;\n\n var $collapsibleLi = this.$el.children('li').eq(index);\n if ($collapsibleLi.length && !$collapsibleLi[0].classList.contains('active')) {\n // onOpenStart callback\n if (typeof this.options.onOpenStart === 'function') {\n this.options.onOpenStart.call(this, $collapsibleLi[0]);\n }\n\n // Handle accordion behavior\n if (this.options.accordion) {\n var $collapsibleLis = this.$el.children('li');\n var $activeLis = this.$el.children('li.active');\n $activeLis.each(function (el) {\n var index = $collapsibleLis.index($(el));\n _this8.close(index);\n });\n }\n\n // Animate in\n $collapsibleLi[0].classList.add('active');\n this._animateIn(index);\n }\n }\n\n /**\n * Close Collapsible\n * @param {Number} index - 0th index of slide\n */\n\n }, {\n key: \"close\",\n value: function close(index) {\n var $collapsibleLi = this.$el.children('li').eq(index);\n if ($collapsibleLi.length && $collapsibleLi[0].classList.contains('active')) {\n // onCloseStart callback\n if (typeof this.options.onCloseStart === 'function') {\n this.options.onCloseStart.call(this, $collapsibleLi[0]);\n }\n\n // Animate out\n $collapsibleLi[0].classList.remove('active');\n this._animateOut(index);\n }\n }\n }], [{\n key: \"init\",\n value: function init(els, options) {\n return _get(Collapsible.__proto__ || Object.getPrototypeOf(Collapsible), \"init\", this).call(this, this, els, options);\n }\n\n /**\n * Get Instance\n */\n\n }, {\n key: \"getInstance\",\n value: function getInstance(el) {\n var domElem = !!el.jquery ? el[0] : el;\n return domElem.M_Collapsible;\n }\n }, {\n key: \"defaults\",\n get: function () {\n return _defaults;\n }\n }]);\n\n return Collapsible;\n }(Component);\n\n M.Collapsible = Collapsible;\n\n if (M.jQueryLoaded) {\n M.initializeJqueryWrapper(Collapsible, 'collapsible', 'M_Collapsible');\n }\n})(cash, M.anime);\n;(function ($, anim) {\n 'use strict';\n\n var _defaults = {\n alignment: 'left',\n autoFocus: true,\n constrainWidth: true,\n container: null,\n coverTrigger: true,\n closeOnClick: true,\n hover: false,\n inDuration: 150,\n outDuration: 250,\n onOpenStart: null,\n onOpenEnd: null,\n onCloseStart: null,\n onCloseEnd: null,\n onItemClick: null\n };\n\n /**\n * @class\n */\n\n var Dropdown = function (_Component2) {\n _inherits(Dropdown, _Component2);\n\n function Dropdown(el, options) {\n _classCallCheck(this, Dropdown);\n\n var _this9 = _possibleConstructorReturn(this, (Dropdown.__proto__ || Object.getPrototypeOf(Dropdown)).call(this, Dropdown, el, options));\n\n _this9.el.M_Dropdown = _this9;\n Dropdown._dropdowns.push(_this9);\n\n _this9.id = M.getIdFromTrigger(el);\n _this9.dropdownEl = document.getElementById(_this9.id);\n _this9.$dropdownEl = $(_this9.dropdownEl);\n\n /**\n * Options for the dropdown\n * @member Dropdown#options\n * @prop {String} [alignment='left'] - Edge which the dropdown is aligned to\n * @prop {Boolean} [autoFocus=true] - Automatically focus dropdown el for keyboard\n * @prop {Boolean} [constrainWidth=true] - Constrain width to width of the button\n * @prop {Element} container - Container element to attach dropdown to (optional)\n * @prop {Boolean} [coverTrigger=true] - Place dropdown over trigger\n * @prop {Boolean} [closeOnClick=true] - Close on click of dropdown item\n * @prop {Boolean} [hover=false] - Open dropdown on hover\n * @prop {Number} [inDuration=150] - Duration of open animation in ms\n * @prop {Number} [outDuration=250] - Duration of close animation in ms\n * @prop {Function} onOpenStart - Function called when dropdown starts opening\n * @prop {Function} onOpenEnd - Function called when dropdown finishes opening\n * @prop {Function} onCloseStart - Function called when dropdown starts closing\n * @prop {Function} onCloseEnd - Function called when dropdown finishes closing\n */\n _this9.options = $.extend({}, Dropdown.defaults, options);\n\n /**\n * Describes open/close state of dropdown\n * @type {Boolean}\n */\n _this9.isOpen = false;\n\n /**\n * Describes if dropdown content is scrollable\n * @type {Boolean}\n */\n _this9.isScrollable = false;\n\n /**\n * Describes if touch moving on dropdown content\n * @type {Boolean}\n */\n _this9.isTouchMoving = false;\n\n _this9.focusedIndex = -1;\n _this9.filterQuery = [];\n\n // Move dropdown-content after dropdown-trigger\n if (!!_this9.options.container) {\n $(_this9.options.container).append(_this9.dropdownEl);\n } else {\n _this9.$el.after(_this9.dropdownEl);\n }\n\n _this9._makeDropdownFocusable();\n _this9._resetFilterQueryBound = _this9._resetFilterQuery.bind(_this9);\n _this9._handleDocumentClickBound = _this9._handleDocumentClick.bind(_this9);\n _this9._handleDocumentTouchmoveBound = _this9._handleDocumentTouchmove.bind(_this9);\n _this9._handleDropdownClickBound = _this9._handleDropdownClick.bind(_this9);\n _this9._handleDropdownKeydownBound = _this9._handleDropdownKeydown.bind(_this9);\n _this9._handleTriggerKeydownBound = _this9._handleTriggerKeydown.bind(_this9);\n _this9._setupEventHandlers();\n return _this9;\n }\n\n _createClass(Dropdown, [{\n key: \"destroy\",\n\n\n /**\n * Teardown component\n */\n value: function destroy() {\n this._resetDropdownStyles();\n this._removeEventHandlers();\n Dropdown._dropdowns.splice(Dropdown._dropdowns.indexOf(this), 1);\n this.el.M_Dropdown = undefined;\n }\n\n /**\n * Setup Event Handlers\n */\n\n }, {\n key: \"_setupEventHandlers\",\n value: function _setupEventHandlers() {\n // Trigger keydown handler\n this.el.addEventListener('keydown', this._handleTriggerKeydownBound);\n\n // Item click handler\n this.dropdownEl.addEventListener('click', this._handleDropdownClickBound);\n\n // Hover event handlers\n if (this.options.hover) {\n this._handleMouseEnterBound = this._handleMouseEnter.bind(this);\n this.el.addEventListener('mouseenter', this._handleMouseEnterBound);\n this._handleMouseLeaveBound = this._handleMouseLeave.bind(this);\n this.el.addEventListener('mouseleave', this._handleMouseLeaveBound);\n this.dropdownEl.addEventListener('mouseleave', this._handleMouseLeaveBound);\n\n // Click event handlers\n } else {\n this._handleClickBound = this._handleClick.bind(this);\n this.el.addEventListener('click', this._handleClickBound);\n }\n }\n\n /**\n * Remove Event Handlers\n */\n\n }, {\n key: \"_removeEventHandlers\",\n value: function _removeEventHandlers() {\n this.el.removeEventListener('keydown', this._handleTriggerKeydownBound);\n this.dropdownEl.removeEventListener('click', this._handleDropdownClickBound);\n\n if (this.options.hover) {\n this.el.removeEventListener('mouseenter', this._handleMouseEnterBound);\n this.el.removeEventListener('mouseleave', this._handleMouseLeaveBound);\n this.dropdownEl.removeEventListener('mouseleave', this._handleMouseLeaveBound);\n } else {\n this.el.removeEventListener('click', this._handleClickBound);\n }\n }\n }, {\n key: \"_setupTemporaryEventHandlers\",\n value: function _setupTemporaryEventHandlers() {\n // Use capture phase event handler to prevent click\n document.body.addEventListener('click', this._handleDocumentClickBound, true);\n document.body.addEventListener('touchend', this._handleDocumentClickBound);\n document.body.addEventListener('touchmove', this._handleDocumentTouchmoveBound);\n this.dropdownEl.addEventListener('keydown', this._handleDropdownKeydownBound);\n }\n }, {\n key: \"_removeTemporaryEventHandlers\",\n value: function _removeTemporaryEventHandlers() {\n // Use capture phase event handler to prevent click\n document.body.removeEventListener('click', this._handleDocumentClickBound, true);\n document.body.removeEventListener('touchend', this._handleDocumentClickBound);\n document.body.removeEventListener('touchmove', this._handleDocumentTouchmoveBound);\n this.dropdownEl.removeEventListener('keydown', this._handleDropdownKeydownBound);\n }\n }, {\n key: \"_handleClick\",\n value: function _handleClick(e) {\n e.preventDefault();\n this.open();\n }\n }, {\n key: \"_handleMouseEnter\",\n value: function _handleMouseEnter() {\n this.open();\n }\n }, {\n key: \"_handleMouseLeave\",\n value: function _handleMouseLeave(e) {\n var toEl = e.toElement || e.relatedTarget;\n var leaveToDropdownContent = !!$(toEl).closest('.dropdown-content').length;\n var leaveToActiveDropdownTrigger = false;\n\n var $closestTrigger = $(toEl).closest('.dropdown-trigger');\n if ($closestTrigger.length && !!$closestTrigger[0].M_Dropdown && $closestTrigger[0].M_Dropdown.isOpen) {\n leaveToActiveDropdownTrigger = true;\n }\n\n // Close hover dropdown if mouse did not leave to either active dropdown-trigger or dropdown-content\n if (!leaveToActiveDropdownTrigger && !leaveToDropdownContent) {\n this.close();\n }\n }\n }, {\n key: \"_handleDocumentClick\",\n value: function _handleDocumentClick(e) {\n var _this10 = this;\n\n var $target = $(e.target);\n if (this.options.closeOnClick && $target.closest('.dropdown-content').length && !this.isTouchMoving) {\n // isTouchMoving to check if scrolling on mobile.\n setTimeout(function () {\n _this10.close();\n }, 0);\n } else if ($target.closest('.dropdown-trigger').length || !$target.closest('.dropdown-content').length) {\n setTimeout(function () {\n _this10.close();\n }, 0);\n }\n this.isTouchMoving = false;\n }\n }, {\n key: \"_handleTriggerKeydown\",\n value: function _handleTriggerKeydown(e) {\n // ARROW DOWN OR ENTER WHEN SELECT IS CLOSED - open Dropdown\n if ((e.which === M.keys.ARROW_DOWN || e.which === M.keys.ENTER) && !this.isOpen) {\n e.preventDefault();\n this.open();\n }\n }\n\n /**\n * Handle Document Touchmove\n * @param {Event} e\n */\n\n }, {\n key: \"_handleDocumentTouchmove\",\n value: function _handleDocumentTouchmove(e) {\n var $target = $(e.target);\n if ($target.closest('.dropdown-content').length) {\n this.isTouchMoving = true;\n }\n }\n\n /**\n * Handle Dropdown Click\n * @param {Event} e\n */\n\n }, {\n key: \"_handleDropdownClick\",\n value: function _handleDropdownClick(e) {\n // onItemClick callback\n if (typeof this.options.onItemClick === 'function') {\n var itemEl = $(e.target).closest('li')[0];\n this.options.onItemClick.call(this, itemEl);\n }\n }\n\n /**\n * Handle Dropdown Keydown\n * @param {Event} e\n */\n\n }, {\n key: \"_handleDropdownKeydown\",\n value: function _handleDropdownKeydown(e) {\n if (e.which === M.keys.TAB) {\n e.preventDefault();\n this.close();\n\n // Navigate down dropdown list\n } else if ((e.which === M.keys.ARROW_DOWN || e.which === M.keys.ARROW_UP) && this.isOpen) {\n e.preventDefault();\n var direction = e.which === M.keys.ARROW_DOWN ? 1 : -1;\n var newFocusedIndex = this.focusedIndex;\n var foundNewIndex = false;\n do {\n newFocusedIndex = newFocusedIndex + direction;\n\n if (!!this.dropdownEl.children[newFocusedIndex] && this.dropdownEl.children[newFocusedIndex].tabIndex !== -1) {\n foundNewIndex = true;\n break;\n }\n } while (newFocusedIndex < this.dropdownEl.children.length && newFocusedIndex >= 0);\n\n if (foundNewIndex) {\n this.focusedIndex = newFocusedIndex;\n this._focusFocusedItem();\n }\n\n // ENTER selects choice on focused item\n } else if (e.which === M.keys.ENTER && this.isOpen) {\n // Search for and \") + '';\n }\n }, {\n key: \"renderRow\",\n value: function renderRow(days, isRTL, isRowSelected) {\n return '' + (isRTL ? days.reverse() : days).join('') + '';\n }\n }, {\n key: \"renderTable\",\n value: function renderTable(opts, data, randId) {\n return '
' + this.renderHead(opts) + this.renderBody(data) + '
';\n }\n }, {\n key: \"renderHead\",\n value: function renderHead(opts) {\n var i = void 0,\n arr = [];\n for (i = 0; i < 7; i++) {\n arr.push(\"\" + this.renderDayName(opts, i, true) + \"\");\n }\n return '' + (opts.isRTL ? arr.reverse() : arr).join('') + '';\n }\n }, {\n key: \"renderBody\",\n value: function renderBody(rows) {\n return '' + rows.join('') + '';\n }\n }, {\n key: \"renderTitle\",\n value: function renderTitle(instance, c, year, month, refYear, randId) {\n var i = void 0,\n j = void 0,\n arr = void 0,\n opts = this.options,\n isMinYear = year === opts.minYear,\n isMaxYear = year === opts.maxYear,\n html = '
',\n monthHtml = void 0,\n yearHtml = void 0,\n prev = true,\n next = true;\n\n for (arr = [], i = 0; i < 12; i++) {\n arr.push('');\n }\n\n monthHtml = '';\n\n if ($.isArray(opts.yearRange)) {\n i = opts.yearRange[0];\n j = opts.yearRange[1] + 1;\n } else {\n i = year - opts.yearRange;\n j = 1 + year + opts.yearRange;\n }\n\n for (arr = []; i < j && i <= opts.maxYear; i++) {\n if (i >= opts.minYear) {\n arr.push(\"\");\n }\n }\n\n yearHtml = \"\";\n\n var leftArrow = '';\n html += \"\";\n\n html += '
';\n if (opts.showMonthAfterYear) {\n html += yearHtml + monthHtml;\n } else {\n html += monthHtml + yearHtml;\n }\n html += '
';\n\n if (isMinYear && (month === 0 || opts.minMonth >= month)) {\n prev = false;\n }\n\n if (isMaxYear && (month === 11 || opts.maxMonth <= month)) {\n next = false;\n }\n\n var rightArrow = '';\n html += \"\";\n\n return html += '
';\n }\n\n /**\n * refresh the HTML\n */\n\n }, {\n key: \"draw\",\n value: function draw(force) {\n if (!this.isOpen && !force) {\n return;\n }\n var opts = this.options,\n minYear = opts.minYear,\n maxYear = opts.maxYear,\n minMonth = opts.minMonth,\n maxMonth = opts.maxMonth,\n html = '',\n randId = void 0;\n\n if (this._y <= minYear) {\n this._y = minYear;\n if (!isNaN(minMonth) && this._m < minMonth) {\n this._m = minMonth;\n }\n }\n if (this._y >= maxYear) {\n this._y = maxYear;\n if (!isNaN(maxMonth) && this._m > maxMonth) {\n this._m = maxMonth;\n }\n }\n\n randId = 'datepicker-title-' + Math.random().toString(36).replace(/[^a-z]+/g, '').substr(0, 2);\n\n for (var c = 0; c < 1; c++) {\n this._renderDateDisplay();\n html += this.renderTitle(this, c, this.calendars[c].year, this.calendars[c].month, this.calendars[0].year, randId) + this.render(this.calendars[c].year, this.calendars[c].month, randId);\n }\n\n this.destroySelects();\n\n this.calendarEl.innerHTML = html;\n\n // Init Materialize Select\n var yearSelect = this.calendarEl.querySelector('.orig-select-year');\n var monthSelect = this.calendarEl.querySelector('.orig-select-month');\n M.FormSelect.init(yearSelect, {\n classes: 'select-year',\n dropdownOptions: { container: document.body, constrainWidth: false }\n });\n M.FormSelect.init(monthSelect, {\n classes: 'select-month',\n dropdownOptions: { container: document.body, constrainWidth: false }\n });\n\n // Add change handlers for select\n yearSelect.addEventListener('change', this._handleYearChange.bind(this));\n monthSelect.addEventListener('change', this._handleMonthChange.bind(this));\n\n if (typeof this.options.onDraw === 'function') {\n this.options.onDraw(this);\n }\n }\n\n /**\n * Setup Event Handlers\n */\n\n }, {\n key: \"_setupEventHandlers\",\n value: function _setupEventHandlers() {\n this._handleInputKeydownBound = this._handleInputKeydown.bind(this);\n this._handleInputClickBound = this._handleInputClick.bind(this);\n this._handleInputChangeBound = this._handleInputChange.bind(this);\n this._handleCalendarClickBound = this._handleCalendarClick.bind(this);\n this._finishSelectionBound = this._finishSelection.bind(this);\n this._handleMonthChange = this._handleMonthChange.bind(this);\n this._closeBound = this.close.bind(this);\n\n this.el.addEventListener('click', this._handleInputClickBound);\n this.el.addEventListener('keydown', this._handleInputKeydownBound);\n this.el.addEventListener('change', this._handleInputChangeBound);\n this.calendarEl.addEventListener('click', this._handleCalendarClickBound);\n this.doneBtn.addEventListener('click', this._finishSelectionBound);\n this.cancelBtn.addEventListener('click', this._closeBound);\n\n if (this.options.showClearBtn) {\n this._handleClearClickBound = this._handleClearClick.bind(this);\n this.clearBtn.addEventListener('click', this._handleClearClickBound);\n }\n }\n }, {\n key: \"_setupVariables\",\n value: function _setupVariables() {\n var _this56 = this;\n\n this.$modalEl = $(Datepicker._template);\n this.modalEl = this.$modalEl[0];\n\n this.calendarEl = this.modalEl.querySelector('.datepicker-calendar');\n\n this.yearTextEl = this.modalEl.querySelector('.year-text');\n this.dateTextEl = this.modalEl.querySelector('.date-text');\n if (this.options.showClearBtn) {\n this.clearBtn = this.modalEl.querySelector('.datepicker-clear');\n }\n this.doneBtn = this.modalEl.querySelector('.datepicker-done');\n this.cancelBtn = this.modalEl.querySelector('.datepicker-cancel');\n\n this.formats = {\n d: function () {\n return _this56.date.getDate();\n },\n dd: function () {\n var d = _this56.date.getDate();\n return (d < 10 ? '0' : '') + d;\n },\n ddd: function () {\n return _this56.options.i18n.weekdaysShort[_this56.date.getDay()];\n },\n dddd: function () {\n return _this56.options.i18n.weekdays[_this56.date.getDay()];\n },\n m: function () {\n return _this56.date.getMonth() + 1;\n },\n mm: function () {\n var m = _this56.date.getMonth() + 1;\n return (m < 10 ? '0' : '') + m;\n },\n mmm: function () {\n return _this56.options.i18n.monthsShort[_this56.date.getMonth()];\n },\n mmmm: function () {\n return _this56.options.i18n.months[_this56.date.getMonth()];\n },\n yy: function () {\n return ('' + _this56.date.getFullYear()).slice(2);\n },\n yyyy: function () {\n return _this56.date.getFullYear();\n }\n };\n }\n\n /**\n * Remove Event Handlers\n */\n\n }, {\n key: \"_removeEventHandlers\",\n value: function _removeEventHandlers() {\n this.el.removeEventListener('click', this._handleInputClickBound);\n this.el.removeEventListener('keydown', this._handleInputKeydownBound);\n this.el.removeEventListener('change', this._handleInputChangeBound);\n this.calendarEl.removeEventListener('click', this._handleCalendarClickBound);\n }\n }, {\n key: \"_handleInputClick\",\n value: function _handleInputClick() {\n this.open();\n }\n }, {\n key: \"_handleInputKeydown\",\n value: function _handleInputKeydown(e) {\n if (e.which === M.keys.ENTER) {\n e.preventDefault();\n this.open();\n }\n }\n }, {\n key: \"_handleCalendarClick\",\n value: function _handleCalendarClick(e) {\n if (!this.isOpen) {\n return;\n }\n\n var $target = $(e.target);\n if (!$target.hasClass('is-disabled')) {\n if ($target.hasClass('datepicker-day-button') && !$target.hasClass('is-empty') && !$target.parent().hasClass('is-disabled')) {\n this.setDate(new Date(e.target.getAttribute('data-year'), e.target.getAttribute('data-month'), e.target.getAttribute('data-day')));\n if (this.options.autoClose) {\n this._finishSelection();\n }\n } else if ($target.closest('.month-prev').length) {\n this.prevMonth();\n } else if ($target.closest('.month-next').length) {\n this.nextMonth();\n }\n }\n }\n }, {\n key: \"_handleClearClick\",\n value: function _handleClearClick() {\n this.date = null;\n this.setInputValue();\n this.close();\n }\n }, {\n key: \"_handleMonthChange\",\n value: function _handleMonthChange(e) {\n this.gotoMonth(e.target.value);\n }\n }, {\n key: \"_handleYearChange\",\n value: function _handleYearChange(e) {\n this.gotoYear(e.target.value);\n }\n\n /**\n * change view to a specific month (zero-index, e.g. 0: January)\n */\n\n }, {\n key: \"gotoMonth\",\n value: function gotoMonth(month) {\n if (!isNaN(month)) {\n this.calendars[0].month = parseInt(month, 10);\n this.adjustCalendars();\n }\n }\n\n /**\n * change view to a specific full year (e.g. \"2012\")\n */\n\n }, {\n key: \"gotoYear\",\n value: function gotoYear(year) {\n if (!isNaN(year)) {\n this.calendars[0].year = parseInt(year, 10);\n this.adjustCalendars();\n }\n }\n }, {\n key: \"_handleInputChange\",\n value: function _handleInputChange(e) {\n var date = void 0;\n\n // Prevent change event from being fired when triggered by the plugin\n if (e.firedBy === this) {\n return;\n }\n if (this.options.parse) {\n date = this.options.parse(this.el.value, this.options.format);\n } else {\n date = new Date(Date.parse(this.el.value));\n }\n\n if (Datepicker._isDate(date)) {\n this.setDate(date);\n }\n }\n }, {\n key: \"renderDayName\",\n value: function renderDayName(opts, day, abbr) {\n day += opts.firstDay;\n while (day >= 7) {\n day -= 7;\n }\n return abbr ? opts.i18n.weekdaysAbbrev[day] : opts.i18n.weekdays[day];\n }\n\n /**\n * Set input value to the selected date and close Datepicker\n */\n\n }, {\n key: \"_finishSelection\",\n value: function _finishSelection() {\n this.setInputValue();\n this.close();\n }\n\n /**\n * Open Datepicker\n */\n\n }, {\n key: \"open\",\n value: function open() {\n if (this.isOpen) {\n return;\n }\n\n this.isOpen = true;\n if (typeof this.options.onOpen === 'function') {\n this.options.onOpen.call(this);\n }\n this.draw();\n this.modal.open();\n return this;\n }\n\n /**\n * Close Datepicker\n */\n\n }, {\n key: \"close\",\n value: function close() {\n if (!this.isOpen) {\n return;\n }\n\n this.isOpen = false;\n if (typeof this.options.onClose === 'function') {\n this.options.onClose.call(this);\n }\n this.modal.close();\n return this;\n }\n }], [{\n key: \"init\",\n value: function init(els, options) {\n return _get(Datepicker.__proto__ || Object.getPrototypeOf(Datepicker), \"init\", this).call(this, this, els, options);\n }\n }, {\n key: \"_isDate\",\n value: function _isDate(obj) {\n return (/Date/.test(Object.prototype.toString.call(obj)) && !isNaN(obj.getTime())\n );\n }\n }, {\n key: \"_isWeekend\",\n value: function _isWeekend(date) {\n var day = date.getDay();\n return day === 0 || day === 6;\n }\n }, {\n key: \"_setToStartOfDay\",\n value: function _setToStartOfDay(date) {\n if (Datepicker._isDate(date)) date.setHours(0, 0, 0, 0);\n }\n }, {\n key: \"_getDaysInMonth\",\n value: function _getDaysInMonth(year, month) {\n return [31, Datepicker._isLeapYear(year) ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month];\n }\n }, {\n key: \"_isLeapYear\",\n value: function _isLeapYear(year) {\n // solution by Matti Virkkunen: http://stackoverflow.com/a/4881951\n return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;\n }\n }, {\n key: \"_compareDates\",\n value: function _compareDates(a, b) {\n // weak date comparison (use setToStartOfDay(date) to ensure correct result)\n return a.getTime() === b.getTime();\n }\n }, {\n key: \"_setToStartOfDay\",\n value: function _setToStartOfDay(date) {\n if (Datepicker._isDate(date)) date.setHours(0, 0, 0, 0);\n }\n\n /**\n * Get Instance\n */\n\n }, {\n key: \"getInstance\",\n value: function getInstance(el) {\n var domElem = !!el.jquery ? el[0] : el;\n return domElem.M_Datepicker;\n }\n }, {\n key: \"defaults\",\n get: function () {\n return _defaults;\n }\n }]);\n\n return Datepicker;\n }(Component);\n\n Datepicker._template = ['
', '
', '
', '', '', '
', '
', '
', '
', '', '
', '', '', '
', '
', '
', '
', '
'].join('');\n\n M.Datepicker = Datepicker;\n\n if (M.jQueryLoaded) {\n M.initializeJqueryWrapper(Datepicker, 'datepicker', 'M_Datepicker');\n }\n})(cash);\n;(function ($) {\n 'use strict';\n\n var _defaults = {\n dialRadius: 135,\n outerRadius: 105,\n innerRadius: 70,\n tickRadius: 20,\n duration: 350,\n container: null,\n defaultTime: 'now', // default time, 'now' or '13:14' e.g.\n fromNow: 0, // Millisecond offset from the defaultTime\n showClearBtn: false,\n\n // internationalization\n i18n: {\n cancel: 'Cancel',\n clear: 'Clear',\n done: 'Ok'\n },\n\n autoClose: false, // auto close when minute is selected\n twelveHour: true, // change to 12 hour AM/PM clock from 24 hour\n vibrate: true, // vibrate the device when dragging clock hand\n\n // Callbacks\n onOpenStart: null,\n onOpenEnd: null,\n onCloseStart: null,\n onCloseEnd: null,\n onSelect: null\n };\n\n /**\n * @class\n *\n */\n\n var Timepicker = function (_Component16) {\n _inherits(Timepicker, _Component16);\n\n function Timepicker(el, options) {\n _classCallCheck(this, Timepicker);\n\n var _this57 = _possibleConstructorReturn(this, (Timepicker.__proto__ || Object.getPrototypeOf(Timepicker)).call(this, Timepicker, el, options));\n\n _this57.el.M_Timepicker = _this57;\n\n _this57.options = $.extend({}, Timepicker.defaults, options);\n\n _this57.id = M.guid();\n _this57._insertHTMLIntoDOM();\n _this57._setupModal();\n _this57._setupVariables();\n _this57._setupEventHandlers();\n\n _this57._clockSetup();\n _this57._pickerSetup();\n return _this57;\n }\n\n _createClass(Timepicker, [{\n key: \"destroy\",\n\n\n /**\n * Teardown component\n */\n value: function destroy() {\n this._removeEventHandlers();\n this.modal.destroy();\n $(this.modalEl).remove();\n this.el.M_Timepicker = undefined;\n }\n\n /**\n * Setup Event Handlers\n */\n\n }, {\n key: \"_setupEventHandlers\",\n value: function _setupEventHandlers() {\n this._handleInputKeydownBound = this._handleInputKeydown.bind(this);\n this._handleInputClickBound = this._handleInputClick.bind(this);\n this._handleClockClickStartBound = this._handleClockClickStart.bind(this);\n this._handleDocumentClickMoveBound = this._handleDocumentClickMove.bind(this);\n this._handleDocumentClickEndBound = this._handleDocumentClickEnd.bind(this);\n\n this.el.addEventListener('click', this._handleInputClickBound);\n this.el.addEventListener('keydown', this._handleInputKeydownBound);\n this.plate.addEventListener('mousedown', this._handleClockClickStartBound);\n this.plate.addEventListener('touchstart', this._handleClockClickStartBound);\n\n $(this.spanHours).on('click', this.showView.bind(this, 'hours'));\n $(this.spanMinutes).on('click', this.showView.bind(this, 'minutes'));\n }\n }, {\n key: \"_removeEventHandlers\",\n value: function _removeEventHandlers() {\n this.el.removeEventListener('click', this._handleInputClickBound);\n this.el.removeEventListener('keydown', this._handleInputKeydownBound);\n }\n }, {\n key: \"_handleInputClick\",\n value: function _handleInputClick() {\n this.open();\n }\n }, {\n key: \"_handleInputKeydown\",\n value: function _handleInputKeydown(e) {\n if (e.which === M.keys.ENTER) {\n e.preventDefault();\n this.open();\n }\n }\n }, {\n key: \"_handleClockClickStart\",\n value: function _handleClockClickStart(e) {\n e.preventDefault();\n var clockPlateBR = this.plate.getBoundingClientRect();\n var offset = { x: clockPlateBR.left, y: clockPlateBR.top };\n\n this.x0 = offset.x + this.options.dialRadius;\n this.y0 = offset.y + this.options.dialRadius;\n this.moved = false;\n var clickPos = Timepicker._Pos(e);\n this.dx = clickPos.x - this.x0;\n this.dy = clickPos.y - this.y0;\n\n // Set clock hands\n this.setHand(this.dx, this.dy, false);\n\n // Mousemove on document\n document.addEventListener('mousemove', this._handleDocumentClickMoveBound);\n document.addEventListener('touchmove', this._handleDocumentClickMoveBound);\n\n // Mouseup on document\n document.addEventListener('mouseup', this._handleDocumentClickEndBound);\n document.addEventListener('touchend', this._handleDocumentClickEndBound);\n }\n }, {\n key: \"_handleDocumentClickMove\",\n value: function _handleDocumentClickMove(e) {\n e.preventDefault();\n var clickPos = Timepicker._Pos(e);\n var x = clickPos.x - this.x0;\n var y = clickPos.y - this.y0;\n this.moved = true;\n this.setHand(x, y, false, true);\n }\n }, {\n key: \"_handleDocumentClickEnd\",\n value: function _handleDocumentClickEnd(e) {\n var _this58 = this;\n\n e.preventDefault();\n document.removeEventListener('mouseup', this._handleDocumentClickEndBound);\n document.removeEventListener('touchend', this._handleDocumentClickEndBound);\n var clickPos = Timepicker._Pos(e);\n var x = clickPos.x - this.x0;\n var y = clickPos.y - this.y0;\n if (this.moved && x === this.dx && y === this.dy) {\n this.setHand(x, y);\n }\n\n if (this.currentView === 'hours') {\n this.showView('minutes', this.options.duration / 2);\n } else if (this.options.autoClose) {\n $(this.minutesView).addClass('timepicker-dial-out');\n setTimeout(function () {\n _this58.done();\n }, this.options.duration / 2);\n }\n\n if (typeof this.options.onSelect === 'function') {\n this.options.onSelect.call(this, this.hours, this.minutes);\n }\n\n // Unbind mousemove event\n document.removeEventListener('mousemove', this._handleDocumentClickMoveBound);\n document.removeEventListener('touchmove', this._handleDocumentClickMoveBound);\n }\n }, {\n key: \"_insertHTMLIntoDOM\",\n value: function _insertHTMLIntoDOM() {\n this.$modalEl = $(Timepicker._template);\n this.modalEl = this.$modalEl[0];\n this.modalEl.id = 'modal-' + this.id;\n\n // Append popover to input by default\n var containerEl = document.querySelector(this.options.container);\n if (this.options.container && !!containerEl) {\n this.$modalEl.appendTo(containerEl);\n } else {\n this.$modalEl.insertBefore(this.el);\n }\n }\n }, {\n key: \"_setupModal\",\n value: function _setupModal() {\n var _this59 = this;\n\n this.modal = M.Modal.init(this.modalEl, {\n onOpenStart: this.options.onOpenStart,\n onOpenEnd: this.options.onOpenEnd,\n onCloseStart: this.options.onCloseStart,\n onCloseEnd: function () {\n if (typeof _this59.options.onCloseEnd === 'function') {\n _this59.options.onCloseEnd.call(_this59);\n }\n _this59.isOpen = false;\n }\n });\n }\n }, {\n key: \"_setupVariables\",\n value: function _setupVariables() {\n this.currentView = 'hours';\n this.vibrate = navigator.vibrate ? 'vibrate' : navigator.webkitVibrate ? 'webkitVibrate' : null;\n\n this._canvas = this.modalEl.querySelector('.timepicker-canvas');\n this.plate = this.modalEl.querySelector('.timepicker-plate');\n\n this.hoursView = this.modalEl.querySelector('.timepicker-hours');\n this.minutesView = this.modalEl.querySelector('.timepicker-minutes');\n this.spanHours = this.modalEl.querySelector('.timepicker-span-hours');\n this.spanMinutes = this.modalEl.querySelector('.timepicker-span-minutes');\n this.spanAmPm = this.modalEl.querySelector('.timepicker-span-am-pm');\n this.footer = this.modalEl.querySelector('.timepicker-footer');\n this.amOrPm = 'PM';\n }\n }, {\n key: \"_pickerSetup\",\n value: function _pickerSetup() {\n var $clearBtn = $(\"\").appendTo(this.footer).on('click', this.clear.bind(this));\n if (this.options.showClearBtn) {\n $clearBtn.css({ visibility: '' });\n }\n\n var confirmationBtnsContainer = $('
');\n $('').appendTo(confirmationBtnsContainer).on('click', this.close.bind(this));\n $('').appendTo(confirmationBtnsContainer).on('click', this.done.bind(this));\n confirmationBtnsContainer.appendTo(this.footer);\n }\n }, {\n key: \"_clockSetup\",\n value: function _clockSetup() {\n if (this.options.twelveHour) {\n this.$amBtn = $('
AM
');\n this.$pmBtn = $('
PM
');\n this.$amBtn.on('click', this._handleAmPmClick.bind(this)).appendTo(this.spanAmPm);\n this.$pmBtn.on('click', this._handleAmPmClick.bind(this)).appendTo(this.spanAmPm);\n }\n\n this._buildHoursView();\n this._buildMinutesView();\n this._buildSVGClock();\n }\n }, {\n key: \"_buildSVGClock\",\n value: function _buildSVGClock() {\n // Draw clock hands and others\n var dialRadius = this.options.dialRadius;\n var tickRadius = this.options.tickRadius;\n var diameter = dialRadius * 2;\n\n var svg = Timepicker._createSVGEl('svg');\n svg.setAttribute('class', 'timepicker-svg');\n svg.setAttribute('width', diameter);\n svg.setAttribute('height', diameter);\n var g = Timepicker._createSVGEl('g');\n g.setAttribute('transform', 'translate(' + dialRadius + ',' + dialRadius + ')');\n var bearing = Timepicker._createSVGEl('circle');\n bearing.setAttribute('class', 'timepicker-canvas-bearing');\n bearing.setAttribute('cx', 0);\n bearing.setAttribute('cy', 0);\n bearing.setAttribute('r', 4);\n var hand = Timepicker._createSVGEl('line');\n hand.setAttribute('x1', 0);\n hand.setAttribute('y1', 0);\n var bg = Timepicker._createSVGEl('circle');\n bg.setAttribute('class', 'timepicker-canvas-bg');\n bg.setAttribute('r', tickRadius);\n g.appendChild(hand);\n g.appendChild(bg);\n g.appendChild(bearing);\n svg.appendChild(g);\n this._canvas.appendChild(svg);\n\n this.hand = hand;\n this.bg = bg;\n this.bearing = bearing;\n this.g = g;\n }\n }, {\n key: \"_buildHoursView\",\n value: function _buildHoursView() {\n var $tick = $('
');\n // Hours view\n if (this.options.twelveHour) {\n for (var i = 1; i < 13; i += 1) {\n var tick = $tick.clone();\n var radian = i / 6 * Math.PI;\n var radius = this.options.outerRadius;\n tick.css({\n left: this.options.dialRadius + Math.sin(radian) * radius - this.options.tickRadius + 'px',\n top: this.options.dialRadius - Math.cos(radian) * radius - this.options.tickRadius + 'px'\n });\n tick.html(i === 0 ? '00' : i);\n this.hoursView.appendChild(tick[0]);\n // tick.on(mousedownEvent, mousedown);\n }\n } else {\n for (var _i2 = 0; _i2 < 24; _i2 += 1) {\n var _tick = $tick.clone();\n var _radian = _i2 / 6 * Math.PI;\n var inner = _i2 > 0 && _i2 < 13;\n var _radius = inner ? this.options.innerRadius : this.options.outerRadius;\n _tick.css({\n left: this.options.dialRadius + Math.sin(_radian) * _radius - this.options.tickRadius + 'px',\n top: this.options.dialRadius - Math.cos(_radian) * _radius - this.options.tickRadius + 'px'\n });\n _tick.html(_i2 === 0 ? '00' : _i2);\n this.hoursView.appendChild(_tick[0]);\n // tick.on(mousedownEvent, mousedown);\n }\n }\n }\n }, {\n key: \"_buildMinutesView\",\n value: function _buildMinutesView() {\n var $tick = $('
');\n // Minutes view\n for (var i = 0; i < 60; i += 5) {\n var tick = $tick.clone();\n var radian = i / 30 * Math.PI;\n tick.css({\n left: this.options.dialRadius + Math.sin(radian) * this.options.outerRadius - this.options.tickRadius + 'px',\n top: this.options.dialRadius - Math.cos(radian) * this.options.outerRadius - this.options.tickRadius + 'px'\n });\n tick.html(Timepicker._addLeadingZero(i));\n this.minutesView.appendChild(tick[0]);\n }\n }\n }, {\n key: \"_handleAmPmClick\",\n value: function _handleAmPmClick(e) {\n var $btnClicked = $(e.target);\n this.amOrPm = $btnClicked.hasClass('am-btn') ? 'AM' : 'PM';\n this._updateAmPmView();\n }\n }, {\n key: \"_updateAmPmView\",\n value: function _updateAmPmView() {\n if (this.options.twelveHour) {\n this.$amBtn.toggleClass('text-primary', this.amOrPm === 'AM');\n this.$pmBtn.toggleClass('text-primary', this.amOrPm === 'PM');\n }\n }\n }, {\n key: \"_updateTimeFromInput\",\n value: function _updateTimeFromInput() {\n // Get the time\n var value = ((this.el.value || this.options.defaultTime || '') + '').split(':');\n if (this.options.twelveHour && !(typeof value[1] === 'undefined')) {\n if (value[1].toUpperCase().indexOf('AM') > 0) {\n this.amOrPm = 'AM';\n } else {\n this.amOrPm = 'PM';\n }\n value[1] = value[1].replace('AM', '').replace('PM', '');\n }\n if (value[0] === 'now') {\n var now = new Date(+new Date() + this.options.fromNow);\n value = [now.getHours(), now.getMinutes()];\n if (this.options.twelveHour) {\n this.amOrPm = value[0] >= 12 && value[0] < 24 ? 'PM' : 'AM';\n }\n }\n this.hours = +value[0] || 0;\n this.minutes = +value[1] || 0;\n this.spanHours.innerHTML = this.hours;\n this.spanMinutes.innerHTML = Timepicker._addLeadingZero(this.minutes);\n\n this._updateAmPmView();\n }\n }, {\n key: \"showView\",\n value: function showView(view, delay) {\n if (view === 'minutes' && $(this.hoursView).css('visibility') === 'visible') {\n // raiseCallback(this.options.beforeHourSelect);\n }\n var isHours = view === 'hours',\n nextView = isHours ? this.hoursView : this.minutesView,\n hideView = isHours ? this.minutesView : this.hoursView;\n this.currentView = view;\n\n $(this.spanHours).toggleClass('text-primary', isHours);\n $(this.spanMinutes).toggleClass('text-primary', !isHours);\n\n // Transition view\n hideView.classList.add('timepicker-dial-out');\n $(nextView).css('visibility', 'visible').removeClass('timepicker-dial-out');\n\n // Reset clock hand\n this.resetClock(delay);\n\n // After transitions ended\n clearTimeout(this.toggleViewTimer);\n this.toggleViewTimer = setTimeout(function () {\n $(hideView).css('visibility', 'hidden');\n }, this.options.duration);\n }\n }, {\n key: \"resetClock\",\n value: function resetClock(delay) {\n var view = this.currentView,\n value = this[view],\n isHours = view === 'hours',\n unit = Math.PI / (isHours ? 6 : 30),\n radian = value * unit,\n radius = isHours && value > 0 && value < 13 ? this.options.innerRadius : this.options.outerRadius,\n x = Math.sin(radian) * radius,\n y = -Math.cos(radian) * radius,\n self = this;\n\n if (delay) {\n $(this.canvas).addClass('timepicker-canvas-out');\n setTimeout(function () {\n $(self.canvas).removeClass('timepicker-canvas-out');\n self.setHand(x, y);\n }, delay);\n } else {\n this.setHand(x, y);\n }\n }\n }, {\n key: \"setHand\",\n value: function setHand(x, y, roundBy5) {\n var _this60 = this;\n\n var radian = Math.atan2(x, -y),\n isHours = this.currentView === 'hours',\n unit = Math.PI / (isHours || roundBy5 ? 6 : 30),\n z = Math.sqrt(x * x + y * y),\n inner = isHours && z < (this.options.outerRadius + this.options.innerRadius) / 2,\n radius = inner ? this.options.innerRadius : this.options.outerRadius;\n\n if (this.options.twelveHour) {\n radius = this.options.outerRadius;\n }\n\n // Radian should in range [0, 2PI]\n if (radian < 0) {\n radian = Math.PI * 2 + radian;\n }\n\n // Get the round value\n var value = Math.round(radian / unit);\n\n // Get the round radian\n radian = value * unit;\n\n // Correct the hours or minutes\n if (this.options.twelveHour) {\n if (isHours) {\n if (value === 0) value = 12;\n } else {\n if (roundBy5) value *= 5;\n if (value === 60) value = 0;\n }\n } else {\n if (isHours) {\n if (value === 12) {\n value = 0;\n }\n value = inner ? value === 0 ? 12 : value : value === 0 ? 0 : value + 12;\n } else {\n if (roundBy5) {\n value *= 5;\n }\n if (value === 60) {\n value = 0;\n }\n }\n }\n\n // Once hours or minutes changed, vibrate the device\n if (this[this.currentView] !== value) {\n if (this.vibrate && this.options.vibrate) {\n // Do not vibrate too frequently\n if (!this.vibrateTimer) {\n navigator[this.vibrate](10);\n this.vibrateTimer = setTimeout(function () {\n _this60.vibrateTimer = null;\n }, 100);\n }\n }\n }\n\n this[this.currentView] = value;\n if (isHours) {\n this['spanHours'].innerHTML = value;\n } else {\n this['spanMinutes'].innerHTML = Timepicker._addLeadingZero(value);\n }\n\n // Set clock hand and others' position\n var cx1 = Math.sin(radian) * (radius - this.options.tickRadius),\n cy1 = -Math.cos(radian) * (radius - this.options.tickRadius),\n cx2 = Math.sin(radian) * radius,\n cy2 = -Math.cos(radian) * radius;\n this.hand.setAttribute('x2', cx1);\n this.hand.setAttribute('y2', cy1);\n this.bg.setAttribute('cx', cx2);\n this.bg.setAttribute('cy', cy2);\n }\n }, {\n key: \"open\",\n value: function open() {\n if (this.isOpen) {\n return;\n }\n\n this.isOpen = true;\n this._updateTimeFromInput();\n this.showView('hours');\n\n this.modal.open();\n }\n }, {\n key: \"close\",\n value: function close() {\n if (!this.isOpen) {\n return;\n }\n\n this.isOpen = false;\n this.modal.close();\n }\n\n /**\n * Finish timepicker selection.\n */\n\n }, {\n key: \"done\",\n value: function done(e, clearValue) {\n // Set input value\n var last = this.el.value;\n var value = clearValue ? '' : Timepicker._addLeadingZero(this.hours) + ':' + Timepicker._addLeadingZero(this.minutes);\n this.time = value;\n if (!clearValue && this.options.twelveHour) {\n value = value + \" \" + this.amOrPm;\n }\n this.el.value = value;\n\n // Trigger change event\n if (value !== last) {\n this.$el.trigger('change');\n }\n\n this.close();\n this.el.focus();\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.done(null, true);\n }\n }], [{\n key: \"init\",\n value: function init(els, options) {\n return _get(Timepicker.__proto__ || Object.getPrototypeOf(Timepicker), \"init\", this).call(this, this, els, options);\n }\n }, {\n key: \"_addLeadingZero\",\n value: function _addLeadingZero(num) {\n return (num < 10 ? '0' : '') + num;\n }\n }, {\n key: \"_createSVGEl\",\n value: function _createSVGEl(name) {\n var svgNS = 'http://www.w3.org/2000/svg';\n return document.createElementNS(svgNS, name);\n }\n\n /**\n * @typedef {Object} Point\n * @property {number} x The X Coordinate\n * @property {number} y The Y Coordinate\n */\n\n /**\n * Get x position of mouse or touch event\n * @param {Event} e\n * @return {Point} x and y location\n */\n\n }, {\n key: \"_Pos\",\n value: function _Pos(e) {\n if (e.targetTouches && e.targetTouches.length >= 1) {\n return { x: e.targetTouches[0].clientX, y: e.targetTouches[0].clientY };\n }\n // mouse event\n return { x: e.clientX, y: e.clientY };\n }\n\n /**\n * Get Instance\n */\n\n }, {\n key: \"getInstance\",\n value: function getInstance(el) {\n var domElem = !!el.jquery ? el[0] : el;\n return domElem.M_Timepicker;\n }\n }, {\n key: \"defaults\",\n get: function () {\n return _defaults;\n }\n }]);\n\n return Timepicker;\n }(Component);\n\n Timepicker._template = ['
', '
', '
', '
', '
', '', ':', '', '
', '
', '
', '
', '
', '
', '
', '
', '
', '
', '
', '
', '
', '
', '
', '
'].join('');\n\n M.Timepicker = Timepicker;\n\n if (M.jQueryLoaded) {\n M.initializeJqueryWrapper(Timepicker, 'timepicker', 'M_Timepicker');\n }\n})(cash);\n;(function ($) {\n 'use strict';\n\n var _defaults = {};\n\n /**\n * @class\n *\n */\n\n var CharacterCounter = function (_Component17) {\n _inherits(CharacterCounter, _Component17);\n\n /**\n * Construct CharacterCounter instance\n * @constructor\n * @param {Element} el\n * @param {Object} options\n */\n function CharacterCounter(el, options) {\n _classCallCheck(this, CharacterCounter);\n\n var _this61 = _possibleConstructorReturn(this, (CharacterCounter.__proto__ || Object.getPrototypeOf(CharacterCounter)).call(this, CharacterCounter, el, options));\n\n _this61.el.M_CharacterCounter = _this61;\n\n /**\n * Options for the character counter\n */\n _this61.options = $.extend({}, CharacterCounter.defaults, options);\n\n _this61.isInvalid = false;\n _this61.isValidLength = false;\n _this61._setupCounter();\n _this61._setupEventHandlers();\n return _this61;\n }\n\n _createClass(CharacterCounter, [{\n key: \"destroy\",\n\n\n /**\n * Teardown component\n */\n value: function destroy() {\n this._removeEventHandlers();\n this.el.CharacterCounter = undefined;\n this._removeCounter();\n }\n\n /**\n * Setup Event Handlers\n */\n\n }, {\n key: \"_setupEventHandlers\",\n value: function _setupEventHandlers() {\n this._handleUpdateCounterBound = this.updateCounter.bind(this);\n\n this.el.addEventListener('focus', this._handleUpdateCounterBound, true);\n this.el.addEventListener('input', this._handleUpdateCounterBound, true);\n }\n\n /**\n * Remove Event Handlers\n */\n\n }, {\n key: \"_removeEventHandlers\",\n value: function _removeEventHandlers() {\n this.el.removeEventListener('focus', this._handleUpdateCounterBound, true);\n this.el.removeEventListener('input', this._handleUpdateCounterBound, true);\n }\n\n /**\n * Setup counter element\n */\n\n }, {\n key: \"_setupCounter\",\n value: function _setupCounter() {\n this.counterEl = document.createElement('span');\n $(this.counterEl).addClass('character-counter').css({\n float: 'right',\n 'font-size': '12px',\n height: 1\n });\n\n this.$el.parent().append(this.counterEl);\n }\n\n /**\n * Remove counter element\n */\n\n }, {\n key: \"_removeCounter\",\n value: function _removeCounter() {\n $(this.counterEl).remove();\n }\n\n /**\n * Update counter\n */\n\n }, {\n key: \"updateCounter\",\n value: function updateCounter() {\n var maxLength = +this.$el.attr('data-length'),\n actualLength = this.el.value.length;\n this.isValidLength = actualLength <= maxLength;\n var counterString = actualLength;\n\n if (maxLength) {\n counterString += '/' + maxLength;\n this._validateInput();\n }\n\n $(this.counterEl).html(counterString);\n }\n\n /**\n * Add validation classes\n */\n\n }, {\n key: \"_validateInput\",\n value: function _validateInput() {\n if (this.isValidLength && this.isInvalid) {\n this.isInvalid = false;\n this.$el.removeClass('invalid');\n } else if (!this.isValidLength && !this.isInvalid) {\n this.isInvalid = true;\n this.$el.removeClass('valid');\n this.$el.addClass('invalid');\n }\n }\n }], [{\n key: \"init\",\n value: function init(els, options) {\n return _get(CharacterCounter.__proto__ || Object.getPrototypeOf(CharacterCounter), \"init\", this).call(this, this, els, options);\n }\n\n /**\n * Get Instance\n */\n\n }, {\n key: \"getInstance\",\n value: function getInstance(el) {\n var domElem = !!el.jquery ? el[0] : el;\n return domElem.M_CharacterCounter;\n }\n }, {\n key: \"defaults\",\n get: function () {\n return _defaults;\n }\n }]);\n\n return CharacterCounter;\n }(Component);\n\n M.CharacterCounter = CharacterCounter;\n\n if (M.jQueryLoaded) {\n M.initializeJqueryWrapper(CharacterCounter, 'characterCounter', 'M_CharacterCounter');\n }\n})(cash);\n;(function ($) {\n 'use strict';\n\n var _defaults = {\n duration: 200, // ms\n dist: -100, // zoom scale TODO: make this more intuitive as an option\n shift: 0, // spacing for center image\n padding: 0, // Padding between non center items\n numVisible: 5, // Number of visible items in carousel\n fullWidth: false, // Change to full width styles\n indicators: false, // Toggle indicators\n noWrap: false, // Don't wrap around and cycle through items.\n onCycleTo: null // Callback for when a new slide is cycled to.\n };\n\n /**\n * @class\n *\n */\n\n var Carousel = function (_Component18) {\n _inherits(Carousel, _Component18);\n\n /**\n * Construct Carousel instance\n * @constructor\n * @param {Element} el\n * @param {Object} options\n */\n function Carousel(el, options) {\n _classCallCheck(this, Carousel);\n\n var _this62 = _possibleConstructorReturn(this, (Carousel.__proto__ || Object.getPrototypeOf(Carousel)).call(this, Carousel, el, options));\n\n _this62.el.M_Carousel = _this62;\n\n /**\n * Options for the carousel\n * @member Carousel#options\n * @prop {Number} duration\n * @prop {Number} dist\n * @prop {Number} shift\n * @prop {Number} padding\n * @prop {Number} numVisible\n * @prop {Boolean} fullWidth\n * @prop {Boolean} indicators\n * @prop {Boolean} noWrap\n * @prop {Function} onCycleTo\n */\n _this62.options = $.extend({}, Carousel.defaults, options);\n\n // Setup\n _this62.hasMultipleSlides = _this62.$el.find('.carousel-item').length > 1;\n _this62.showIndicators = _this62.options.indicators && _this62.hasMultipleSlides;\n _this62.noWrap = _this62.options.noWrap || !_this62.hasMultipleSlides;\n _this62.pressed = false;\n _this62.dragged = false;\n _this62.offset = _this62.target = 0;\n _this62.images = [];\n _this62.itemWidth = _this62.$el.find('.carousel-item').first().innerWidth();\n _this62.itemHeight = _this62.$el.find('.carousel-item').first().innerHeight();\n _this62.dim = _this62.itemWidth * 2 + _this62.options.padding || 1; // Make sure dim is non zero for divisions.\n _this62._autoScrollBound = _this62._autoScroll.bind(_this62);\n _this62._trackBound = _this62._track.bind(_this62);\n\n // Full Width carousel setup\n if (_this62.options.fullWidth) {\n _this62.options.dist = 0;\n _this62._setCarouselHeight();\n\n // Offset fixed items when indicators.\n if (_this62.showIndicators) {\n _this62.$el.find('.carousel-fixed-item').addClass('with-indicators');\n }\n }\n\n // Iterate through slides\n _this62.$indicators = $('
    ');\n _this62.$el.find('.carousel-item').each(function (el, i) {\n _this62.images.push(el);\n if (_this62.showIndicators) {\n var $indicator = $('
  • ');\n\n // Add active to first by default.\n if (i === 0) {\n $indicator[0].classList.add('active');\n }\n\n _this62.$indicators.append($indicator);\n }\n });\n if (_this62.showIndicators) {\n _this62.$el.append(_this62.$indicators);\n }\n _this62.count = _this62.images.length;\n\n // Cap numVisible at count\n _this62.options.numVisible = Math.min(_this62.count, _this62.options.numVisible);\n\n // Setup cross browser string\n _this62.xform = 'transform';\n ['webkit', 'Moz', 'O', 'ms'].every(function (prefix) {\n var e = prefix + 'Transform';\n if (typeof document.body.style[e] !== 'undefined') {\n _this62.xform = e;\n return false;\n }\n return true;\n });\n\n _this62._setupEventHandlers();\n _this62._scroll(_this62.offset);\n return _this62;\n }\n\n _createClass(Carousel, [{\n key: \"destroy\",\n\n\n /**\n * Teardown component\n */\n value: function destroy() {\n this._removeEventHandlers();\n this.el.M_Carousel = undefined;\n }\n\n /**\n * Setup Event Handlers\n */\n\n }, {\n key: \"_setupEventHandlers\",\n value: function _setupEventHandlers() {\n var _this63 = this;\n\n this._handleCarouselTapBound = this._handleCarouselTap.bind(this);\n this._handleCarouselDragBound = this._handleCarouselDrag.bind(this);\n this._handleCarouselReleaseBound = this._handleCarouselRelease.bind(this);\n this._handleCarouselClickBound = this._handleCarouselClick.bind(this);\n\n if (typeof window.ontouchstart !== 'undefined') {\n this.el.addEventListener('touchstart', this._handleCarouselTapBound);\n this.el.addEventListener('touchmove', this._handleCarouselDragBound);\n this.el.addEventListener('touchend', this._handleCarouselReleaseBound);\n }\n\n this.el.addEventListener('mousedown', this._handleCarouselTapBound);\n this.el.addEventListener('mousemove', this._handleCarouselDragBound);\n this.el.addEventListener('mouseup', this._handleCarouselReleaseBound);\n this.el.addEventListener('mouseleave', this._handleCarouselReleaseBound);\n this.el.addEventListener('click', this._handleCarouselClickBound);\n\n if (this.showIndicators && this.$indicators) {\n this._handleIndicatorClickBound = this._handleIndicatorClick.bind(this);\n this.$indicators.find('.indicator-item').each(function (el, i) {\n el.addEventListener('click', _this63._handleIndicatorClickBound);\n });\n }\n\n // Resize\n var throttledResize = M.throttle(this._handleResize, 200);\n this._handleThrottledResizeBound = throttledResize.bind(this);\n\n window.addEventListener('resize', this._handleThrottledResizeBound);\n }\n\n /**\n * Remove Event Handlers\n */\n\n }, {\n key: \"_removeEventHandlers\",\n value: function _removeEventHandlers() {\n var _this64 = this;\n\n if (typeof window.ontouchstart !== 'undefined') {\n this.el.removeEventListener('touchstart', this._handleCarouselTapBound);\n this.el.removeEventListener('touchmove', this._handleCarouselDragBound);\n this.el.removeEventListener('touchend', this._handleCarouselReleaseBound);\n }\n this.el.removeEventListener('mousedown', this._handleCarouselTapBound);\n this.el.removeEventListener('mousemove', this._handleCarouselDragBound);\n this.el.removeEventListener('mouseup', this._handleCarouselReleaseBound);\n this.el.removeEventListener('mouseleave', this._handleCarouselReleaseBound);\n this.el.removeEventListener('click', this._handleCarouselClickBound);\n\n if (this.showIndicators && this.$indicators) {\n this.$indicators.find('.indicator-item').each(function (el, i) {\n el.removeEventListener('click', _this64._handleIndicatorClickBound);\n });\n }\n\n window.removeEventListener('resize', this._handleThrottledResizeBound);\n }\n\n /**\n * Handle Carousel Tap\n * @param {Event} e\n */\n\n }, {\n key: \"_handleCarouselTap\",\n value: function _handleCarouselTap(e) {\n // Fixes firefox draggable image bug\n if (e.type === 'mousedown' && $(e.target).is('img')) {\n e.preventDefault();\n }\n this.pressed = true;\n this.dragged = false;\n this.verticalDragged = false;\n this.reference = this._xpos(e);\n this.referenceY = this._ypos(e);\n\n this.velocity = this.amplitude = 0;\n this.frame = this.offset;\n this.timestamp = Date.now();\n clearInterval(this.ticker);\n this.ticker = setInterval(this._trackBound, 100);\n }\n\n /**\n * Handle Carousel Drag\n * @param {Event} e\n */\n\n }, {\n key: \"_handleCarouselDrag\",\n value: function _handleCarouselDrag(e) {\n var x = void 0,\n y = void 0,\n delta = void 0,\n deltaY = void 0;\n if (this.pressed) {\n x = this._xpos(e);\n y = this._ypos(e);\n delta = this.reference - x;\n deltaY = Math.abs(this.referenceY - y);\n if (deltaY < 30 && !this.verticalDragged) {\n // If vertical scrolling don't allow dragging.\n if (delta > 2 || delta < -2) {\n this.dragged = true;\n this.reference = x;\n this._scroll(this.offset + delta);\n }\n } else if (this.dragged) {\n // If dragging don't allow vertical scroll.\n e.preventDefault();\n e.stopPropagation();\n return false;\n } else {\n // Vertical scrolling.\n this.verticalDragged = true;\n }\n }\n\n if (this.dragged) {\n // If dragging don't allow vertical scroll.\n e.preventDefault();\n e.stopPropagation();\n return false;\n }\n }\n\n /**\n * Handle Carousel Release\n * @param {Event} e\n */\n\n }, {\n key: \"_handleCarouselRelease\",\n value: function _handleCarouselRelease(e) {\n if (this.pressed) {\n this.pressed = false;\n } else {\n return;\n }\n\n clearInterval(this.ticker);\n this.target = this.offset;\n if (this.velocity > 10 || this.velocity < -10) {\n this.amplitude = 0.9 * this.velocity;\n this.target = this.offset + this.amplitude;\n }\n this.target = Math.round(this.target / this.dim) * this.dim;\n\n // No wrap of items.\n if (this.noWrap) {\n if (this.target >= this.dim * (this.count - 1)) {\n this.target = this.dim * (this.count - 1);\n } else if (this.target < 0) {\n this.target = 0;\n }\n }\n this.amplitude = this.target - this.offset;\n this.timestamp = Date.now();\n requestAnimationFrame(this._autoScrollBound);\n\n if (this.dragged) {\n e.preventDefault();\n e.stopPropagation();\n }\n return false;\n }\n\n /**\n * Handle Carousel CLick\n * @param {Event} e\n */\n\n }, {\n key: \"_handleCarouselClick\",\n value: function _handleCarouselClick(e) {\n // Disable clicks if carousel was dragged.\n if (this.dragged) {\n e.preventDefault();\n e.stopPropagation();\n return false;\n } else if (!this.options.fullWidth) {\n var clickedIndex = $(e.target).closest('.carousel-item').index();\n var diff = this._wrap(this.center) - clickedIndex;\n\n // Disable clicks if carousel was shifted by click\n if (diff !== 0) {\n e.preventDefault();\n e.stopPropagation();\n }\n this._cycleTo(clickedIndex);\n }\n }\n\n /**\n * Handle Indicator CLick\n * @param {Event} e\n */\n\n }, {\n key: \"_handleIndicatorClick\",\n value: function _handleIndicatorClick(e) {\n e.stopPropagation();\n\n var indicator = $(e.target).closest('.indicator-item');\n if (indicator.length) {\n this._cycleTo(indicator.index());\n }\n }\n\n /**\n * Handle Throttle Resize\n * @param {Event} e\n */\n\n }, {\n key: \"_handleResize\",\n value: function _handleResize(e) {\n if (this.options.fullWidth) {\n this.itemWidth = this.$el.find('.carousel-item').first().innerWidth();\n this.imageHeight = this.$el.find('.carousel-item.active').height();\n this.dim = this.itemWidth * 2 + this.options.padding;\n this.offset = this.center * 2 * this.itemWidth;\n this.target = this.offset;\n this._setCarouselHeight(true);\n } else {\n this._scroll();\n }\n }\n\n /**\n * Set carousel height based on first slide\n * @param {Booleam} imageOnly - true for image slides\n */\n\n }, {\n key: \"_setCarouselHeight\",\n value: function _setCarouselHeight(imageOnly) {\n var _this65 = this;\n\n var firstSlide = this.$el.find('.carousel-item.active').length ? this.$el.find('.carousel-item.active').first() : this.$el.find('.carousel-item').first();\n var firstImage = firstSlide.find('img').first();\n if (firstImage.length) {\n if (firstImage[0].complete) {\n // If image won't trigger the load event\n var imageHeight = firstImage.height();\n if (imageHeight > 0) {\n this.$el.css('height', imageHeight + 'px');\n } else {\n // If image still has no height, use the natural dimensions to calculate\n var naturalWidth = firstImage[0].naturalWidth;\n var naturalHeight = firstImage[0].naturalHeight;\n var adjustedHeight = this.$el.width() / naturalWidth * naturalHeight;\n this.$el.css('height', adjustedHeight + 'px');\n }\n } else {\n // Get height when image is loaded normally\n firstImage.one('load', function (el, i) {\n _this65.$el.css('height', el.offsetHeight + 'px');\n });\n }\n } else if (!imageOnly) {\n var slideHeight = firstSlide.height();\n this.$el.css('height', slideHeight + 'px');\n }\n }\n\n /**\n * Get x position from event\n * @param {Event} e\n */\n\n }, {\n key: \"_xpos\",\n value: function _xpos(e) {\n // touch event\n if (e.targetTouches && e.targetTouches.length >= 1) {\n return e.targetTouches[0].clientX;\n }\n\n // mouse event\n return e.clientX;\n }\n\n /**\n * Get y position from event\n * @param {Event} e\n */\n\n }, {\n key: \"_ypos\",\n value: function _ypos(e) {\n // touch event\n if (e.targetTouches && e.targetTouches.length >= 1) {\n return e.targetTouches[0].clientY;\n }\n\n // mouse event\n return e.clientY;\n }\n\n /**\n * Wrap index\n * @param {Number} x\n */\n\n }, {\n key: \"_wrap\",\n value: function _wrap(x) {\n return x >= this.count ? x % this.count : x < 0 ? this._wrap(this.count + x % this.count) : x;\n }\n\n /**\n * Tracks scrolling information\n */\n\n }, {\n key: \"_track\",\n value: function _track() {\n var now = void 0,\n elapsed = void 0,\n delta = void 0,\n v = void 0;\n\n now = Date.now();\n elapsed = now - this.timestamp;\n this.timestamp = now;\n delta = this.offset - this.frame;\n this.frame = this.offset;\n\n v = 1000 * delta / (1 + elapsed);\n this.velocity = 0.8 * v + 0.2 * this.velocity;\n }\n\n /**\n * Auto scrolls to nearest carousel item.\n */\n\n }, {\n key: \"_autoScroll\",\n value: function _autoScroll() {\n var elapsed = void 0,\n delta = void 0;\n\n if (this.amplitude) {\n elapsed = Date.now() - this.timestamp;\n delta = this.amplitude * Math.exp(-elapsed / this.options.duration);\n if (delta > 2 || delta < -2) {\n this._scroll(this.target - delta);\n requestAnimationFrame(this._autoScrollBound);\n } else {\n this._scroll(this.target);\n }\n }\n }\n\n /**\n * Scroll to target\n * @param {Number} x\n */\n\n }, {\n key: \"_scroll\",\n value: function _scroll(x) {\n var _this66 = this;\n\n // Track scrolling state\n if (!this.$el.hasClass('scrolling')) {\n this.el.classList.add('scrolling');\n }\n if (this.scrollingTimeout != null) {\n window.clearTimeout(this.scrollingTimeout);\n }\n this.scrollingTimeout = window.setTimeout(function () {\n _this66.$el.removeClass('scrolling');\n }, this.options.duration);\n\n // Start actual scroll\n var i = void 0,\n half = void 0,\n delta = void 0,\n dir = void 0,\n tween = void 0,\n el = void 0,\n alignment = void 0,\n zTranslation = void 0,\n tweenedOpacity = void 0,\n centerTweenedOpacity = void 0;\n var lastCenter = this.center;\n var numVisibleOffset = 1 / this.options.numVisible;\n\n this.offset = typeof x === 'number' ? x : this.offset;\n this.center = Math.floor((this.offset + this.dim / 2) / this.dim);\n delta = this.offset - this.center * this.dim;\n dir = delta < 0 ? 1 : -1;\n tween = -dir * delta * 2 / this.dim;\n half = this.count >> 1;\n\n if (this.options.fullWidth) {\n alignment = 'translateX(0)';\n centerTweenedOpacity = 1;\n } else {\n alignment = 'translateX(' + (this.el.clientWidth - this.itemWidth) / 2 + 'px) ';\n alignment += 'translateY(' + (this.el.clientHeight - this.itemHeight) / 2 + 'px)';\n centerTweenedOpacity = 1 - numVisibleOffset * tween;\n }\n\n // Set indicator active\n if (this.showIndicators) {\n var diff = this.center % this.count;\n var activeIndicator = this.$indicators.find('.indicator-item.active');\n if (activeIndicator.index() !== diff) {\n activeIndicator.removeClass('active');\n this.$indicators.find('.indicator-item').eq(diff)[0].classList.add('active');\n }\n }\n\n // center\n // Don't show wrapped items.\n if (!this.noWrap || this.center >= 0 && this.center < this.count) {\n el = this.images[this._wrap(this.center)];\n\n // Add active class to center item.\n if (!$(el).hasClass('active')) {\n this.$el.find('.carousel-item').removeClass('active');\n el.classList.add('active');\n }\n var transformString = alignment + \" translateX(\" + -delta / 2 + \"px) translateX(\" + dir * this.options.shift * tween * i + \"px) translateZ(\" + this.options.dist * tween + \"px)\";\n this._updateItemStyle(el, centerTweenedOpacity, 0, transformString);\n }\n\n for (i = 1; i <= half; ++i) {\n // right side\n if (this.options.fullWidth) {\n zTranslation = this.options.dist;\n tweenedOpacity = i === half && delta < 0 ? 1 - tween : 1;\n } else {\n zTranslation = this.options.dist * (i * 2 + tween * dir);\n tweenedOpacity = 1 - numVisibleOffset * (i * 2 + tween * dir);\n }\n // Don't show wrapped items.\n if (!this.noWrap || this.center + i < this.count) {\n el = this.images[this._wrap(this.center + i)];\n var _transformString = alignment + \" translateX(\" + (this.options.shift + (this.dim * i - delta) / 2) + \"px) translateZ(\" + zTranslation + \"px)\";\n this._updateItemStyle(el, tweenedOpacity, -i, _transformString);\n }\n\n // left side\n if (this.options.fullWidth) {\n zTranslation = this.options.dist;\n tweenedOpacity = i === half && delta > 0 ? 1 - tween : 1;\n } else {\n zTranslation = this.options.dist * (i * 2 - tween * dir);\n tweenedOpacity = 1 - numVisibleOffset * (i * 2 - tween * dir);\n }\n // Don't show wrapped items.\n if (!this.noWrap || this.center - i >= 0) {\n el = this.images[this._wrap(this.center - i)];\n var _transformString2 = alignment + \" translateX(\" + (-this.options.shift + (-this.dim * i - delta) / 2) + \"px) translateZ(\" + zTranslation + \"px)\";\n this._updateItemStyle(el, tweenedOpacity, -i, _transformString2);\n }\n }\n\n // center\n // Don't show wrapped items.\n if (!this.noWrap || this.center >= 0 && this.center < this.count) {\n el = this.images[this._wrap(this.center)];\n var _transformString3 = alignment + \" translateX(\" + -delta / 2 + \"px) translateX(\" + dir * this.options.shift * tween + \"px) translateZ(\" + this.options.dist * tween + \"px)\";\n this._updateItemStyle(el, centerTweenedOpacity, 0, _transformString3);\n }\n\n // onCycleTo callback\n var $currItem = this.$el.find('.carousel-item').eq(this._wrap(this.center));\n if (lastCenter !== this.center && typeof this.options.onCycleTo === 'function') {\n this.options.onCycleTo.call(this, $currItem[0], this.dragged);\n }\n\n // One time callback\n if (typeof this.oneTimeCallback === 'function') {\n this.oneTimeCallback.call(this, $currItem[0], this.dragged);\n this.oneTimeCallback = null;\n }\n }\n\n /**\n * Cycle to target\n * @param {Element} el\n * @param {Number} opacity\n * @param {Number} zIndex\n * @param {String} transform\n */\n\n }, {\n key: \"_updateItemStyle\",\n value: function _updateItemStyle(el, opacity, zIndex, transform) {\n el.style[this.xform] = transform;\n el.style.zIndex = zIndex;\n el.style.opacity = opacity;\n el.style.visibility = 'visible';\n }\n\n /**\n * Cycle to target\n * @param {Number} n\n * @param {Function} callback\n */\n\n }, {\n key: \"_cycleTo\",\n value: function _cycleTo(n, callback) {\n var diff = this.center % this.count - n;\n\n // Account for wraparound.\n if (!this.noWrap) {\n if (diff < 0) {\n if (Math.abs(diff + this.count) < Math.abs(diff)) {\n diff += this.count;\n }\n } else if (diff > 0) {\n if (Math.abs(diff - this.count) < diff) {\n diff -= this.count;\n }\n }\n }\n\n this.target = this.dim * Math.round(this.offset / this.dim);\n // Next\n if (diff < 0) {\n this.target += this.dim * Math.abs(diff);\n\n // Prev\n } else if (diff > 0) {\n this.target -= this.dim * diff;\n }\n\n // Set one time callback\n if (typeof callback === 'function') {\n this.oneTimeCallback = callback;\n }\n\n // Scroll\n if (this.offset !== this.target) {\n this.amplitude = this.target - this.offset;\n this.timestamp = Date.now();\n requestAnimationFrame(this._autoScrollBound);\n }\n }\n\n /**\n * Cycle to next item\n * @param {Number} [n]\n */\n\n }, {\n key: \"next\",\n value: function next(n) {\n if (n === undefined || isNaN(n)) {\n n = 1;\n }\n\n var index = this.center + n;\n if (index >= this.count || index < 0) {\n if (this.noWrap) {\n return;\n }\n\n index = this._wrap(index);\n }\n this._cycleTo(index);\n }\n\n /**\n * Cycle to previous item\n * @param {Number} [n]\n */\n\n }, {\n key: \"prev\",\n value: function prev(n) {\n if (n === undefined || isNaN(n)) {\n n = 1;\n }\n\n var index = this.center - n;\n if (index >= this.count || index < 0) {\n if (this.noWrap) {\n return;\n }\n\n index = this._wrap(index);\n }\n\n this._cycleTo(index);\n }\n\n /**\n * Cycle to nth item\n * @param {Number} [n]\n * @param {Function} callback\n */\n\n }, {\n key: \"set\",\n value: function set(n, callback) {\n if (n === undefined || isNaN(n)) {\n n = 0;\n }\n\n if (n > this.count || n < 0) {\n if (this.noWrap) {\n return;\n }\n\n n = this._wrap(n);\n }\n\n this._cycleTo(n, callback);\n }\n }], [{\n key: \"init\",\n value: function init(els, options) {\n return _get(Carousel.__proto__ || Object.getPrototypeOf(Carousel), \"init\", this).call(this, this, els, options);\n }\n\n /**\n * Get Instance\n */\n\n }, {\n key: \"getInstance\",\n value: function getInstance(el) {\n var domElem = !!el.jquery ? el[0] : el;\n return domElem.M_Carousel;\n }\n }, {\n key: \"defaults\",\n get: function () {\n return _defaults;\n }\n }]);\n\n return Carousel;\n }(Component);\n\n M.Carousel = Carousel;\n\n if (M.jQueryLoaded) {\n M.initializeJqueryWrapper(Carousel, 'carousel', 'M_Carousel');\n }\n})(cash);\n;(function ($) {\n 'use strict';\n\n var _defaults = {\n onOpen: undefined,\n onClose: undefined\n };\n\n /**\n * @class\n *\n */\n\n var TapTarget = function (_Component19) {\n _inherits(TapTarget, _Component19);\n\n /**\n * Construct TapTarget instance\n * @constructor\n * @param {Element} el\n * @param {Object} options\n */\n function TapTarget(el, options) {\n _classCallCheck(this, TapTarget);\n\n var _this67 = _possibleConstructorReturn(this, (TapTarget.__proto__ || Object.getPrototypeOf(TapTarget)).call(this, TapTarget, el, options));\n\n _this67.el.M_TapTarget = _this67;\n\n /**\n * Options for the select\n * @member TapTarget#options\n * @prop {Function} onOpen - Callback function called when feature discovery is opened\n * @prop {Function} onClose - Callback function called when feature discovery is closed\n */\n _this67.options = $.extend({}, TapTarget.defaults, options);\n\n _this67.isOpen = false;\n\n // setup\n _this67.$origin = $('#' + _this67.$el.attr('data-target'));\n _this67._setup();\n\n _this67._calculatePositioning();\n _this67._setupEventHandlers();\n return _this67;\n }\n\n _createClass(TapTarget, [{\n key: \"destroy\",\n\n\n /**\n * Teardown component\n */\n value: function destroy() {\n this._removeEventHandlers();\n this.el.TapTarget = undefined;\n }\n\n /**\n * Setup Event Handlers\n */\n\n }, {\n key: \"_setupEventHandlers\",\n value: function _setupEventHandlers() {\n this._handleDocumentClickBound = this._handleDocumentClick.bind(this);\n this._handleTargetClickBound = this._handleTargetClick.bind(this);\n this._handleOriginClickBound = this._handleOriginClick.bind(this);\n\n this.el.addEventListener('click', this._handleTargetClickBound);\n this.originEl.addEventListener('click', this._handleOriginClickBound);\n\n // Resize\n var throttledResize = M.throttle(this._handleResize, 200);\n this._handleThrottledResizeBound = throttledResize.bind(this);\n\n window.addEventListener('resize', this._handleThrottledResizeBound);\n }\n\n /**\n * Remove Event Handlers\n */\n\n }, {\n key: \"_removeEventHandlers\",\n value: function _removeEventHandlers() {\n this.el.removeEventListener('click', this._handleTargetClickBound);\n this.originEl.removeEventListener('click', this._handleOriginClickBound);\n window.removeEventListener('resize', this._handleThrottledResizeBound);\n }\n\n /**\n * Handle Target Click\n * @param {Event} e\n */\n\n }, {\n key: \"_handleTargetClick\",\n value: function _handleTargetClick(e) {\n this.open();\n }\n\n /**\n * Handle Origin Click\n * @param {Event} e\n */\n\n }, {\n key: \"_handleOriginClick\",\n value: function _handleOriginClick(e) {\n this.close();\n }\n\n /**\n * Handle Resize\n * @param {Event} e\n */\n\n }, {\n key: \"_handleResize\",\n value: function _handleResize(e) {\n this._calculatePositioning();\n }\n\n /**\n * Handle Resize\n * @param {Event} e\n */\n\n }, {\n key: \"_handleDocumentClick\",\n value: function _handleDocumentClick(e) {\n if (!$(e.target).closest('.tap-target-wrapper').length) {\n this.close();\n e.preventDefault();\n e.stopPropagation();\n }\n }\n\n /**\n * Setup Tap Target\n */\n\n }, {\n key: \"_setup\",\n value: function _setup() {\n // Creating tap target\n this.wrapper = this.$el.parent()[0];\n this.waveEl = $(this.wrapper).find('.tap-target-wave')[0];\n this.originEl = $(this.wrapper).find('.tap-target-origin')[0];\n this.contentEl = this.$el.find('.tap-target-content')[0];\n\n // Creating wrapper\n if (!$(this.wrapper).hasClass('.tap-target-wrapper')) {\n this.wrapper = document.createElement('div');\n this.wrapper.classList.add('tap-target-wrapper');\n this.$el.before($(this.wrapper));\n this.wrapper.append(this.el);\n }\n\n // Creating content\n if (!this.contentEl) {\n this.contentEl = document.createElement('div');\n this.contentEl.classList.add('tap-target-content');\n this.$el.append(this.contentEl);\n }\n\n // Creating foreground wave\n if (!this.waveEl) {\n this.waveEl = document.createElement('div');\n this.waveEl.classList.add('tap-target-wave');\n\n // Creating origin\n if (!this.originEl) {\n this.originEl = this.$origin.clone(true, true);\n this.originEl.addClass('tap-target-origin');\n this.originEl.removeAttr('id');\n this.originEl.removeAttr('style');\n this.originEl = this.originEl[0];\n this.waveEl.append(this.originEl);\n }\n\n this.wrapper.append(this.waveEl);\n }\n }\n\n /**\n * Calculate positioning\n */\n\n }, {\n key: \"_calculatePositioning\",\n value: function _calculatePositioning() {\n // Element or parent is fixed position?\n var isFixed = this.$origin.css('position') === 'fixed';\n if (!isFixed) {\n var parents = this.$origin.parents();\n for (var i = 0; i < parents.length; i++) {\n isFixed = $(parents[i]).css('position') == 'fixed';\n if (isFixed) {\n break;\n }\n }\n }\n\n // Calculating origin\n var originWidth = this.$origin.outerWidth();\n var originHeight = this.$origin.outerHeight();\n var originTop = isFixed ? this.$origin.offset().top - M.getDocumentScrollTop() : this.$origin.offset().top;\n var originLeft = isFixed ? this.$origin.offset().left - M.getDocumentScrollLeft() : this.$origin.offset().left;\n\n // Calculating screen\n var windowWidth = window.innerWidth;\n var windowHeight = window.innerHeight;\n var centerX = windowWidth / 2;\n var centerY = windowHeight / 2;\n var isLeft = originLeft <= centerX;\n var isRight = originLeft > centerX;\n var isTop = originTop <= centerY;\n var isBottom = originTop > centerY;\n var isCenterX = originLeft >= windowWidth * 0.25 && originLeft <= windowWidth * 0.75;\n\n // Calculating tap target\n var tapTargetWidth = this.$el.outerWidth();\n var tapTargetHeight = this.$el.outerHeight();\n var tapTargetTop = originTop + originHeight / 2 - tapTargetHeight / 2;\n var tapTargetLeft = originLeft + originWidth / 2 - tapTargetWidth / 2;\n var tapTargetPosition = isFixed ? 'fixed' : 'absolute';\n\n // Calculating content\n var tapTargetTextWidth = isCenterX ? tapTargetWidth : tapTargetWidth / 2 + originWidth;\n var tapTargetTextHeight = tapTargetHeight / 2;\n var tapTargetTextTop = isTop ? tapTargetHeight / 2 : 0;\n var tapTargetTextBottom = 0;\n var tapTargetTextLeft = isLeft && !isCenterX ? tapTargetWidth / 2 - originWidth : 0;\n var tapTargetTextRight = 0;\n var tapTargetTextPadding = originWidth;\n var tapTargetTextAlign = isBottom ? 'bottom' : 'top';\n\n // Calculating wave\n var tapTargetWaveWidth = originWidth > originHeight ? originWidth * 2 : originWidth * 2;\n var tapTargetWaveHeight = tapTargetWaveWidth;\n var tapTargetWaveTop = tapTargetHeight / 2 - tapTargetWaveHeight / 2;\n var tapTargetWaveLeft = tapTargetWidth / 2 - tapTargetWaveWidth / 2;\n\n // Setting tap target\n var tapTargetWrapperCssObj = {};\n tapTargetWrapperCssObj.top = isTop ? tapTargetTop + 'px' : '';\n tapTargetWrapperCssObj.right = isRight ? windowWidth - tapTargetLeft - tapTargetWidth + 'px' : '';\n tapTargetWrapperCssObj.bottom = isBottom ? windowHeight - tapTargetTop - tapTargetHeight + 'px' : '';\n tapTargetWrapperCssObj.left = isLeft ? tapTargetLeft + 'px' : '';\n tapTargetWrapperCssObj.position = tapTargetPosition;\n $(this.wrapper).css(tapTargetWrapperCssObj);\n\n // Setting content\n $(this.contentEl).css({\n width: tapTargetTextWidth + 'px',\n height: tapTargetTextHeight + 'px',\n top: tapTargetTextTop + 'px',\n right: tapTargetTextRight + 'px',\n bottom: tapTargetTextBottom + 'px',\n left: tapTargetTextLeft + 'px',\n padding: tapTargetTextPadding + 'px',\n verticalAlign: tapTargetTextAlign\n });\n\n // Setting wave\n $(this.waveEl).css({\n top: tapTargetWaveTop + 'px',\n left: tapTargetWaveLeft + 'px',\n width: tapTargetWaveWidth + 'px',\n height: tapTargetWaveHeight + 'px'\n });\n }\n\n /**\n * Open TapTarget\n */\n\n }, {\n key: \"open\",\n value: function open() {\n if (this.isOpen) {\n return;\n }\n\n // onOpen callback\n if (typeof this.options.onOpen === 'function') {\n this.options.onOpen.call(this, this.$origin[0]);\n }\n\n this.isOpen = true;\n this.wrapper.classList.add('open');\n\n document.body.addEventListener('click', this._handleDocumentClickBound, true);\n document.body.addEventListener('touchend', this._handleDocumentClickBound);\n }\n\n /**\n * Close Tap Target\n */\n\n }, {\n key: \"close\",\n value: function close() {\n if (!this.isOpen) {\n return;\n }\n\n // onClose callback\n if (typeof this.options.onClose === 'function') {\n this.options.onClose.call(this, this.$origin[0]);\n }\n\n this.isOpen = false;\n this.wrapper.classList.remove('open');\n\n document.body.removeEventListener('click', this._handleDocumentClickBound, true);\n document.body.removeEventListener('touchend', this._handleDocumentClickBound);\n }\n }], [{\n key: \"init\",\n value: function init(els, options) {\n return _get(TapTarget.__proto__ || Object.getPrototypeOf(TapTarget), \"init\", this).call(this, this, els, options);\n }\n\n /**\n * Get Instance\n */\n\n }, {\n key: \"getInstance\",\n value: function getInstance(el) {\n var domElem = !!el.jquery ? el[0] : el;\n return domElem.M_TapTarget;\n }\n }, {\n key: \"defaults\",\n get: function () {\n return _defaults;\n }\n }]);\n\n return TapTarget;\n }(Component);\n\n M.TapTarget = TapTarget;\n\n if (M.jQueryLoaded) {\n M.initializeJqueryWrapper(TapTarget, 'tapTarget', 'M_TapTarget');\n }\n})(cash);\n;(function ($) {\n 'use strict';\n\n var _defaults = {\n classes: '',\n dropdownOptions: {}\n };\n\n /**\n * @class\n *\n */\n\n var FormSelect = function (_Component20) {\n _inherits(FormSelect, _Component20);\n\n /**\n * Construct FormSelect instance\n * @constructor\n * @param {Element} el\n * @param {Object} options\n */\n function FormSelect(el, options) {\n _classCallCheck(this, FormSelect);\n\n // Don't init if browser default version\n var _this68 = _possibleConstructorReturn(this, (FormSelect.__proto__ || Object.getPrototypeOf(FormSelect)).call(this, FormSelect, el, options));\n\n if (_this68.$el.hasClass('browser-default')) {\n return _possibleConstructorReturn(_this68);\n }\n\n _this68.el.M_FormSelect = _this68;\n\n /**\n * Options for the select\n * @member FormSelect#options\n */\n _this68.options = $.extend({}, FormSelect.defaults, options);\n\n _this68.isMultiple = _this68.$el.prop('multiple');\n\n // Setup\n _this68.el.tabIndex = -1;\n _this68._keysSelected = {};\n _this68._valueDict = {}; // Maps key to original and generated option element.\n _this68._setupDropdown();\n\n _this68._setupEventHandlers();\n return _this68;\n }\n\n _createClass(FormSelect, [{\n key: \"destroy\",\n\n\n /**\n * Teardown component\n */\n value: function destroy() {\n this._removeEventHandlers();\n this._removeDropdown();\n this.el.M_FormSelect = undefined;\n }\n\n /**\n * Setup Event Handlers\n */\n\n }, {\n key: \"_setupEventHandlers\",\n value: function _setupEventHandlers() {\n var _this69 = this;\n\n this._handleSelectChangeBound = this._handleSelectChange.bind(this);\n this._handleOptionClickBound = this._handleOptionClick.bind(this);\n this._handleInputClickBound = this._handleInputClick.bind(this);\n\n $(this.dropdownOptions).find('li:not(.optgroup)').each(function (el) {\n el.addEventListener('click', _this69._handleOptionClickBound);\n });\n this.el.addEventListener('change', this._handleSelectChangeBound);\n this.input.addEventListener('click', this._handleInputClickBound);\n }\n\n /**\n * Remove Event Handlers\n */\n\n }, {\n key: \"_removeEventHandlers\",\n value: function _removeEventHandlers() {\n var _this70 = this;\n\n $(this.dropdownOptions).find('li:not(.optgroup)').each(function (el) {\n el.removeEventListener('click', _this70._handleOptionClickBound);\n });\n this.el.removeEventListener('change', this._handleSelectChangeBound);\n this.input.removeEventListener('click', this._handleInputClickBound);\n }\n\n /**\n * Handle Select Change\n * @param {Event} e\n */\n\n }, {\n key: \"_handleSelectChange\",\n value: function _handleSelectChange(e) {\n this._setValueToInput();\n }\n\n /**\n * Handle Option Click\n * @param {Event} e\n */\n\n }, {\n key: \"_handleOptionClick\",\n value: function _handleOptionClick(e) {\n e.preventDefault();\n var option = $(e.target).closest('li')[0];\n var key = option.id;\n if (!$(option).hasClass('disabled') && !$(option).hasClass('optgroup') && key.length) {\n var selected = true;\n\n if (this.isMultiple) {\n // Deselect placeholder option if still selected.\n var placeholderOption = $(this.dropdownOptions).find('li.disabled.selected');\n if (placeholderOption.length) {\n placeholderOption.removeClass('selected');\n placeholderOption.find('input[type=\"checkbox\"]').prop('checked', false);\n this._toggleEntryFromArray(placeholderOption[0].id);\n }\n selected = this._toggleEntryFromArray(key);\n } else {\n $(this.dropdownOptions).find('li').removeClass('selected');\n $(option).toggleClass('selected', selected);\n }\n\n // Set selected on original select option\n // Only trigger if selected state changed\n var prevSelected = $(this._valueDict[key].el).prop('selected');\n if (prevSelected !== selected) {\n $(this._valueDict[key].el).prop('selected', selected);\n this.$el.trigger('change');\n }\n }\n\n e.stopPropagation();\n }\n\n /**\n * Handle Input Click\n */\n\n }, {\n key: \"_handleInputClick\",\n value: function _handleInputClick() {\n if (this.dropdown && this.dropdown.isOpen) {\n this._setValueToInput();\n this._setSelectedStates();\n }\n }\n\n /**\n * Setup dropdown\n */\n\n }, {\n key: \"_setupDropdown\",\n value: function _setupDropdown() {\n var _this71 = this;\n\n this.wrapper = document.createElement('div');\n $(this.wrapper).addClass('select-wrapper ' + this.options.classes);\n this.$el.before($(this.wrapper));\n this.wrapper.appendChild(this.el);\n\n if (this.el.disabled) {\n this.wrapper.classList.add('disabled');\n }\n\n // Create dropdown\n this.$selectOptions = this.$el.children('option, optgroup');\n this.dropdownOptions = document.createElement('ul');\n this.dropdownOptions.id = \"select-options-\" + M.guid();\n $(this.dropdownOptions).addClass('dropdown-content select-dropdown ' + (this.isMultiple ? 'multiple-select-dropdown' : ''));\n\n // Create dropdown structure.\n if (this.$selectOptions.length) {\n this.$selectOptions.each(function (el) {\n if ($(el).is('option')) {\n // Direct descendant option.\n var optionEl = void 0;\n if (_this71.isMultiple) {\n optionEl = _this71._appendOptionWithIcon(_this71.$el, el, 'multiple');\n } else {\n optionEl = _this71._appendOptionWithIcon(_this71.$el, el);\n }\n\n _this71._addOptionToValueDict(el, optionEl);\n } else if ($(el).is('optgroup')) {\n // Optgroup.\n var selectOptions = $(el).children('option');\n $(_this71.dropdownOptions).append($('
  • ' + el.getAttribute('label') + '
  • ')[0]);\n\n selectOptions.each(function (el) {\n var optionEl = _this71._appendOptionWithIcon(_this71.$el, el, 'optgroup-option');\n _this71._addOptionToValueDict(el, optionEl);\n });\n }\n });\n }\n\n this.$el.after(this.dropdownOptions);\n\n // Add input dropdown\n this.input = document.createElement('input');\n $(this.input).addClass('select-dropdown dropdown-trigger');\n this.input.setAttribute('type', 'text');\n this.input.setAttribute('readonly', 'true');\n this.input.setAttribute('data-target', this.dropdownOptions.id);\n if (this.el.disabled) {\n $(this.input).prop('disabled', 'true');\n }\n\n this.$el.before(this.input);\n this._setValueToInput();\n\n // Add caret\n var dropdownIcon = $('');\n this.$el.before(dropdownIcon[0]);\n\n // Initialize dropdown\n if (!this.el.disabled) {\n var dropdownOptions = $.extend({}, this.options.dropdownOptions);\n\n // Add callback for centering selected option when dropdown content is scrollable\n dropdownOptions.onOpenEnd = function (el) {\n var selectedOption = $(_this71.dropdownOptions).find('.selected').first();\n\n if (selectedOption.length) {\n // Focus selected option in dropdown\n M.keyDown = true;\n _this71.dropdown.focusedIndex = selectedOption.index();\n _this71.dropdown._focusFocusedItem();\n M.keyDown = false;\n\n // Handle scrolling to selected option\n if (_this71.dropdown.isScrollable) {\n var scrollOffset = selectedOption[0].getBoundingClientRect().top - _this71.dropdownOptions.getBoundingClientRect().top; // scroll to selected option\n scrollOffset -= _this71.dropdownOptions.clientHeight / 2; // center in dropdown\n _this71.dropdownOptions.scrollTop = scrollOffset;\n }\n }\n };\n\n if (this.isMultiple) {\n dropdownOptions.closeOnClick = false;\n }\n this.dropdown = M.Dropdown.init(this.input, dropdownOptions);\n }\n\n // Add initial selections\n this._setSelectedStates();\n }\n\n /**\n * Add option to value dict\n * @param {Element} el original option element\n * @param {Element} optionEl generated option element\n */\n\n }, {\n key: \"_addOptionToValueDict\",\n value: function _addOptionToValueDict(el, optionEl) {\n var index = Object.keys(this._valueDict).length;\n var key = this.dropdownOptions.id + index;\n var obj = {};\n optionEl.id = key;\n\n obj.el = el;\n obj.optionEl = optionEl;\n this._valueDict[key] = obj;\n }\n\n /**\n * Remove dropdown\n */\n\n }, {\n key: \"_removeDropdown\",\n value: function _removeDropdown() {\n $(this.wrapper).find('.caret').remove();\n $(this.input).remove();\n $(this.dropdownOptions).remove();\n $(this.wrapper).before(this.$el);\n $(this.wrapper).remove();\n }\n\n /**\n * Setup dropdown\n * @param {Element} select select element\n * @param {Element} option option element from select\n * @param {String} type\n * @return {Element} option element added\n */\n\n }, {\n key: \"_appendOptionWithIcon\",\n value: function _appendOptionWithIcon(select, option, type) {\n // Add disabled attr if disabled\n var disabledClass = option.disabled ? 'disabled ' : '';\n var optgroupClass = type === 'optgroup-option' ? 'optgroup-option ' : '';\n var multipleCheckbox = this.isMultiple ? \"\" : option.innerHTML;\n var liEl = $('
  • ');\n var spanEl = $('');\n spanEl.html(multipleCheckbox);\n liEl.addClass(disabledClass + \" \" + optgroupClass);\n liEl.append(spanEl);\n\n // add icons\n var iconUrl = option.getAttribute('data-icon');\n if (!!iconUrl) {\n var imgEl = $(\"\\\"\\\"\");\n liEl.prepend(imgEl);\n }\n\n // Check for multiple type.\n $(this.dropdownOptions).append(liEl[0]);\n return liEl[0];\n }\n\n /**\n * Toggle entry from option\n * @param {String} key Option key\n * @return {Boolean} if entry was added or removed\n */\n\n }, {\n key: \"_toggleEntryFromArray\",\n value: function _toggleEntryFromArray(key) {\n var notAdded = !this._keysSelected.hasOwnProperty(key);\n var $optionLi = $(this._valueDict[key].optionEl);\n\n if (notAdded) {\n this._keysSelected[key] = true;\n } else {\n delete this._keysSelected[key];\n }\n\n $optionLi.toggleClass('selected', notAdded);\n\n // Set checkbox checked value\n $optionLi.find('input[type=\"checkbox\"]').prop('checked', notAdded);\n\n // use notAdded instead of true (to detect if the option is selected or not)\n $optionLi.prop('selected', notAdded);\n\n return notAdded;\n }\n\n /**\n * Set text value to input\n */\n\n }, {\n key: \"_setValueToInput\",\n value: function _setValueToInput() {\n var values = [];\n var options = this.$el.find('option');\n\n options.each(function (el) {\n if ($(el).prop('selected')) {\n var text = $(el).text();\n values.push(text);\n }\n });\n\n if (!values.length) {\n var firstDisabled = this.$el.find('option:disabled').eq(0);\n if (firstDisabled.length && firstDisabled[0].value === '') {\n values.push(firstDisabled.text());\n }\n }\n\n this.input.value = values.join(', ');\n }\n\n /**\n * Set selected state of dropdown to match actual select element\n */\n\n }, {\n key: \"_setSelectedStates\",\n value: function _setSelectedStates() {\n this._keysSelected = {};\n\n for (var key in this._valueDict) {\n var option = this._valueDict[key];\n var optionIsSelected = $(option.el).prop('selected');\n $(option.optionEl).find('input[type=\"checkbox\"]').prop('checked', optionIsSelected);\n if (optionIsSelected) {\n this._activateOption($(this.dropdownOptions), $(option.optionEl));\n this._keysSelected[key] = true;\n } else {\n $(option.optionEl).removeClass('selected');\n }\n }\n }\n\n /**\n * Make option as selected and scroll to selected position\n * @param {jQuery} collection Select options jQuery element\n * @param {Element} newOption element of the new option\n */\n\n }, {\n key: \"_activateOption\",\n value: function _activateOption(collection, newOption) {\n if (newOption) {\n if (!this.isMultiple) {\n collection.find('li.selected').removeClass('selected');\n }\n var option = $(newOption);\n option.addClass('selected');\n }\n }\n\n /**\n * Get Selected Values\n * @return {Array} Array of selected values\n */\n\n }, {\n key: \"getSelectedValues\",\n value: function getSelectedValues() {\n var selectedValues = [];\n for (var key in this._keysSelected) {\n selectedValues.push(this._valueDict[key].el.value);\n }\n return selectedValues;\n }\n }], [{\n key: \"init\",\n value: function init(els, options) {\n return _get(FormSelect.__proto__ || Object.getPrototypeOf(FormSelect), \"init\", this).call(this, this, els, options);\n }\n\n /**\n * Get Instance\n */\n\n }, {\n key: \"getInstance\",\n value: function getInstance(el) {\n var domElem = !!el.jquery ? el[0] : el;\n return domElem.M_FormSelect;\n }\n }, {\n key: \"defaults\",\n get: function () {\n return _defaults;\n }\n }]);\n\n return FormSelect;\n }(Component);\n\n M.FormSelect = FormSelect;\n\n if (M.jQueryLoaded) {\n M.initializeJqueryWrapper(FormSelect, 'formSelect', 'M_FormSelect');\n }\n})(cash);\n;(function ($, anim) {\n 'use strict';\n\n var _defaults = {};\n\n /**\n * @class\n *\n */\n\n var Range = function (_Component21) {\n _inherits(Range, _Component21);\n\n /**\n * Construct Range instance\n * @constructor\n * @param {Element} el\n * @param {Object} options\n */\n function Range(el, options) {\n _classCallCheck(this, Range);\n\n var _this72 = _possibleConstructorReturn(this, (Range.__proto__ || Object.getPrototypeOf(Range)).call(this, Range, el, options));\n\n _this72.el.M_Range = _this72;\n\n /**\n * Options for the range\n * @member Range#options\n */\n _this72.options = $.extend({}, Range.defaults, options);\n\n _this72._mousedown = false;\n\n // Setup\n _this72._setupThumb();\n\n _this72._setupEventHandlers();\n return _this72;\n }\n\n _createClass(Range, [{\n key: \"destroy\",\n\n\n /**\n * Teardown component\n */\n value: function destroy() {\n this._removeEventHandlers();\n this._removeThumb();\n this.el.M_Range = undefined;\n }\n\n /**\n * Setup Event Handlers\n */\n\n }, {\n key: \"_setupEventHandlers\",\n value: function _setupEventHandlers() {\n this._handleRangeChangeBound = this._handleRangeChange.bind(this);\n this._handleRangeMousedownTouchstartBound = this._handleRangeMousedownTouchstart.bind(this);\n this._handleRangeInputMousemoveTouchmoveBound = this._handleRangeInputMousemoveTouchmove.bind(this);\n this._handleRangeMouseupTouchendBound = this._handleRangeMouseupTouchend.bind(this);\n this._handleRangeBlurMouseoutTouchleaveBound = this._handleRangeBlurMouseoutTouchleave.bind(this);\n\n this.el.addEventListener('change', this._handleRangeChangeBound);\n\n this.el.addEventListener('mousedown', this._handleRangeMousedownTouchstartBound);\n this.el.addEventListener('touchstart', this._handleRangeMousedownTouchstartBound);\n\n this.el.addEventListener('input', this._handleRangeInputMousemoveTouchmoveBound);\n this.el.addEventListener('mousemove', this._handleRangeInputMousemoveTouchmoveBound);\n this.el.addEventListener('touchmove', this._handleRangeInputMousemoveTouchmoveBound);\n\n this.el.addEventListener('mouseup', this._handleRangeMouseupTouchendBound);\n this.el.addEventListener('touchend', this._handleRangeMouseupTouchendBound);\n\n this.el.addEventListener('blur', this._handleRangeBlurMouseoutTouchleaveBound);\n this.el.addEventListener('mouseout', this._handleRangeBlurMouseoutTouchleaveBound);\n this.el.addEventListener('touchleave', this._handleRangeBlurMouseoutTouchleaveBound);\n }\n\n /**\n * Remove Event Handlers\n */\n\n }, {\n key: \"_removeEventHandlers\",\n value: function _removeEventHandlers() {\n this.el.removeEventListener('change', this._handleRangeChangeBound);\n\n this.el.removeEventListener('mousedown', this._handleRangeMousedownTouchstartBound);\n this.el.removeEventListener('touchstart', this._handleRangeMousedownTouchstartBound);\n\n this.el.removeEventListener('input', this._handleRangeInputMousemoveTouchmoveBound);\n this.el.removeEventListener('mousemove', this._handleRangeInputMousemoveTouchmoveBound);\n this.el.removeEventListener('touchmove', this._handleRangeInputMousemoveTouchmoveBound);\n\n this.el.removeEventListener('mouseup', this._handleRangeMouseupTouchendBound);\n this.el.removeEventListener('touchend', this._handleRangeMouseupTouchendBound);\n\n this.el.removeEventListener('blur', this._handleRangeBlurMouseoutTouchleaveBound);\n this.el.removeEventListener('mouseout', this._handleRangeBlurMouseoutTouchleaveBound);\n this.el.removeEventListener('touchleave', this._handleRangeBlurMouseoutTouchleaveBound);\n }\n\n /**\n * Handle Range Change\n * @param {Event} e\n */\n\n }, {\n key: \"_handleRangeChange\",\n value: function _handleRangeChange() {\n $(this.value).html(this.$el.val());\n\n if (!$(this.thumb).hasClass('active')) {\n this._showRangeBubble();\n }\n\n var offsetLeft = this._calcRangeOffset();\n $(this.thumb).addClass('active').css('left', offsetLeft + 'px');\n }\n\n /**\n * Handle Range Mousedown and Touchstart\n * @param {Event} e\n */\n\n }, {\n key: \"_handleRangeMousedownTouchstart\",\n value: function _handleRangeMousedownTouchstart(e) {\n // Set indicator value\n $(this.value).html(this.$el.val());\n\n this._mousedown = true;\n this.$el.addClass('active');\n\n if (!$(this.thumb).hasClass('active')) {\n this._showRangeBubble();\n }\n\n if (e.type !== 'input') {\n var offsetLeft = this._calcRangeOffset();\n $(this.thumb).addClass('active').css('left', offsetLeft + 'px');\n }\n }\n\n /**\n * Handle Range Input, Mousemove and Touchmove\n */\n\n }, {\n key: \"_handleRangeInputMousemoveTouchmove\",\n value: function _handleRangeInputMousemoveTouchmove() {\n if (this._mousedown) {\n if (!$(this.thumb).hasClass('active')) {\n this._showRangeBubble();\n }\n\n var offsetLeft = this._calcRangeOffset();\n $(this.thumb).addClass('active').css('left', offsetLeft + 'px');\n $(this.value).html(this.$el.val());\n }\n }\n\n /**\n * Handle Range Mouseup and Touchend\n */\n\n }, {\n key: \"_handleRangeMouseupTouchend\",\n value: function _handleRangeMouseupTouchend() {\n this._mousedown = false;\n this.$el.removeClass('active');\n }\n\n /**\n * Handle Range Blur, Mouseout and Touchleave\n */\n\n }, {\n key: \"_handleRangeBlurMouseoutTouchleave\",\n value: function _handleRangeBlurMouseoutTouchleave() {\n if (!this._mousedown) {\n var paddingLeft = parseInt(this.$el.css('padding-left'));\n var marginLeft = 7 + paddingLeft + 'px';\n\n if ($(this.thumb).hasClass('active')) {\n anim.remove(this.thumb);\n anim({\n targets: this.thumb,\n height: 0,\n width: 0,\n top: 10,\n easing: 'easeOutQuad',\n marginLeft: marginLeft,\n duration: 100\n });\n }\n $(this.thumb).removeClass('active');\n }\n }\n\n /**\n * Setup dropdown\n */\n\n }, {\n key: \"_setupThumb\",\n value: function _setupThumb() {\n this.thumb = document.createElement('span');\n this.value = document.createElement('span');\n $(this.thumb).addClass('thumb');\n $(this.value).addClass('value');\n $(this.thumb).append(this.value);\n this.$el.after(this.thumb);\n }\n\n /**\n * Remove dropdown\n */\n\n }, {\n key: \"_removeThumb\",\n value: function _removeThumb() {\n $(this.thumb).remove();\n }\n\n /**\n * morph thumb into bubble\n */\n\n }, {\n key: \"_showRangeBubble\",\n value: function _showRangeBubble() {\n var paddingLeft = parseInt($(this.thumb).parent().css('padding-left'));\n var marginLeft = -7 + paddingLeft + 'px'; // TODO: fix magic number?\n anim.remove(this.thumb);\n anim({\n targets: this.thumb,\n height: 30,\n width: 30,\n top: -30,\n marginLeft: marginLeft,\n duration: 300,\n easing: 'easeOutQuint'\n });\n }\n\n /**\n * Calculate the offset of the thumb\n * @return {Number} offset in pixels\n */\n\n }, {\n key: \"_calcRangeOffset\",\n value: function _calcRangeOffset() {\n var width = this.$el.width() - 15;\n var max = parseFloat(this.$el.attr('max')) || 100; // Range default max\n var min = parseFloat(this.$el.attr('min')) || 0; // Range default min\n var percent = (parseFloat(this.$el.val()) - min) / (max - min);\n return percent * width;\n }\n }], [{\n key: \"init\",\n value: function init(els, options) {\n return _get(Range.__proto__ || Object.getPrototypeOf(Range), \"init\", this).call(this, this, els, options);\n }\n\n /**\n * Get Instance\n */\n\n }, {\n key: \"getInstance\",\n value: function getInstance(el) {\n var domElem = !!el.jquery ? el[0] : el;\n return domElem.M_Range;\n }\n }, {\n key: \"defaults\",\n get: function () {\n return _defaults;\n }\n }]);\n\n return Range;\n }(Component);\n\n M.Range = Range;\n\n if (M.jQueryLoaded) {\n M.initializeJqueryWrapper(Range, 'range', 'M_Range');\n }\n\n Range.init($('input[type=range]'));\n})(cash, M.anime);\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n"],"sourceRoot":""}